@researai/deepscientist 1.5.9 → 1.5.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/README.md +107 -94
  2. package/assets/branding/connector-qq.png +0 -0
  3. package/assets/branding/connector-rokid.png +0 -0
  4. package/assets/branding/connector-weixin.png +0 -0
  5. package/assets/branding/projects.png +0 -0
  6. package/bin/ds.js +168 -9
  7. package/docs/assets/branding/projects.png +0 -0
  8. package/docs/en/00_QUICK_START.md +308 -70
  9. package/docs/en/01_SETTINGS_REFERENCE.md +3 -0
  10. package/docs/en/02_START_RESEARCH_GUIDE.md +112 -0
  11. package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +62 -179
  12. package/docs/en/09_DOCTOR.md +41 -5
  13. package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +137 -0
  14. package/docs/en/11_LICENSE_AND_RISK.md +256 -0
  15. package/docs/en/12_GUIDED_WORKFLOW_TOUR.md +427 -0
  16. package/docs/en/13_CORE_ARCHITECTURE_GUIDE.md +297 -0
  17. package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
  18. package/docs/en/99_ACKNOWLEDGEMENTS.md +4 -1
  19. package/docs/en/README.md +79 -0
  20. package/docs/images/lingzhu/rokid-agent-platform-create.png +0 -0
  21. package/docs/images/weixin/weixin-plugin-entry.png +0 -0
  22. package/docs/images/weixin/weixin-plugin-entry.svg +33 -0
  23. package/docs/images/weixin/weixin-qr-confirm.svg +30 -0
  24. package/docs/images/weixin/weixin-quest-media-flow.svg +44 -0
  25. package/docs/images/weixin/weixin-settings-bind.svg +57 -0
  26. package/docs/zh/00_QUICK_START.md +315 -74
  27. package/docs/zh/01_SETTINGS_REFERENCE.md +3 -0
  28. package/docs/zh/02_START_RESEARCH_GUIDE.md +112 -0
  29. package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +62 -193
  30. package/docs/zh/09_DOCTOR.md +41 -5
  31. package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +144 -0
  32. package/docs/zh/11_LICENSE_AND_RISK.md +256 -0
  33. package/docs/zh/12_GUIDED_WORKFLOW_TOUR.md +423 -0
  34. package/docs/zh/13_CORE_ARCHITECTURE_GUIDE.md +296 -0
  35. package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
  36. package/docs/zh/99_ACKNOWLEDGEMENTS.md +4 -1
  37. package/docs/zh/README.md +126 -0
  38. package/install.sh +0 -34
  39. package/package.json +2 -2
  40. package/pyproject.toml +1 -1
  41. package/src/deepscientist/__init__.py +1 -1
  42. package/src/deepscientist/annotations.py +343 -0
  43. package/src/deepscientist/artifact/arxiv.py +484 -37
  44. package/src/deepscientist/artifact/service.py +574 -108
  45. package/src/deepscientist/arxiv_library.py +275 -0
  46. package/src/deepscientist/bash_exec/service.py +9 -0
  47. package/src/deepscientist/bridges/builtins.py +2 -0
  48. package/src/deepscientist/bridges/connectors.py +447 -0
  49. package/src/deepscientist/channels/__init__.py +2 -0
  50. package/src/deepscientist/channels/builtins.py +3 -1
  51. package/src/deepscientist/channels/qq.py +1 -1
  52. package/src/deepscientist/channels/qq_gateway.py +1 -1
  53. package/src/deepscientist/channels/relay.py +7 -1
  54. package/src/deepscientist/channels/weixin.py +59 -0
  55. package/src/deepscientist/channels/weixin_ilink.py +317 -0
  56. package/src/deepscientist/config/models.py +22 -2
  57. package/src/deepscientist/config/service.py +431 -60
  58. package/src/deepscientist/connector/__init__.py +4 -0
  59. package/src/deepscientist/connector/connector_profiles.py +481 -0
  60. package/src/deepscientist/connector/lingzhu_support.py +668 -0
  61. package/src/deepscientist/connector/qq_profiles.py +206 -0
  62. package/src/deepscientist/connector/weixin_support.py +663 -0
  63. package/src/deepscientist/connector_profiles.py +1 -374
  64. package/src/deepscientist/connector_runtime.py +2 -0
  65. package/src/deepscientist/daemon/api/handlers.py +165 -5
  66. package/src/deepscientist/daemon/api/router.py +13 -1
  67. package/src/deepscientist/daemon/app.py +1130 -61
  68. package/src/deepscientist/doctor.py +5 -2
  69. package/src/deepscientist/gitops/diff.py +120 -29
  70. package/src/deepscientist/lingzhu_support.py +1 -182
  71. package/src/deepscientist/mcp/server.py +11 -4
  72. package/src/deepscientist/prompts/builder.py +15 -0
  73. package/src/deepscientist/qq_profiles.py +1 -196
  74. package/src/deepscientist/quest/node_traces.py +23 -0
  75. package/src/deepscientist/quest/service.py +112 -43
  76. package/src/deepscientist/quest/stage_views.py +71 -5
  77. package/src/deepscientist/runners/codex.py +55 -3
  78. package/src/deepscientist/weixin_support.py +1 -0
  79. package/src/prompts/connectors/lingzhu.md +3 -1
  80. package/src/prompts/connectors/weixin.md +230 -0
  81. package/src/prompts/system.md +2 -0
  82. package/src/tui/package.json +1 -1
  83. package/src/ui/dist/assets/{AiManusChatView-BKZ103sn.js → AiManusChatView-D0mTXG4-.js} +156 -48
  84. package/src/ui/dist/assets/{AnalysisPlugin-mTTzGAlK.js → AnalysisPlugin-Db0cTXxm.js} +1 -1
  85. package/src/ui/dist/assets/{CliPlugin-BH58n3GY.js → CliPlugin-DrV8je02.js} +164 -9
  86. package/src/ui/dist/assets/{CodeEditorPlugin-BKGRUH7e.js → CodeEditorPlugin-QXMSCH71.js} +8 -8
  87. package/src/ui/dist/assets/{CodeViewerPlugin-BMADwFWJ.js → CodeViewerPlugin-7hhtWj_E.js} +5 -5
  88. package/src/ui/dist/assets/{DocViewerPlugin-ZOnTIHLN.js → DocViewerPlugin-BWMSnRJe.js} +3 -3
  89. package/src/ui/dist/assets/{GitDiffViewerPlugin-CQ7h1Djm.js → GitDiffViewerPlugin-7J9h9Vy_.js} +20 -21
  90. package/src/ui/dist/assets/{ImageViewerPlugin-GVS5MsnC.js → ImageViewerPlugin-CHJl_0lr.js} +5 -5
  91. package/src/ui/dist/assets/{LabCopilotPanel-BZNv1JML.js → LabCopilotPanel-1qSow1es.js} +11 -11
  92. package/src/ui/dist/assets/{LabPlugin-TWcJsdQA.js → LabPlugin-eQpPPCEp.js} +2 -1
  93. package/src/ui/dist/assets/{LatexPlugin-DIjHiR2x.js → LatexPlugin-BwRfi89Z.js} +7 -7
  94. package/src/ui/dist/assets/{MarkdownViewerPlugin-D3ooGAH0.js → MarkdownViewerPlugin-836PVQWV.js} +4 -4
  95. package/src/ui/dist/assets/{MarketplacePlugin-DfVfE9hN.js → MarketplacePlugin-C2y_556i.js} +3 -3
  96. package/src/ui/dist/assets/{NotebookEditor-s8JhzuX1.js → NotebookEditor-BRzJbGsn.js} +12 -12
  97. package/src/ui/dist/assets/{NotebookEditor-DDl0_Mc0.js → NotebookEditor-DIX7Mlzu.js} +1 -1
  98. package/src/ui/dist/assets/{PdfLoader-C2Sf6SJM.js → PdfLoader-DzRaTAlq.js} +14 -7
  99. package/src/ui/dist/assets/{PdfMarkdownPlugin-CXFLoIsa.js → PdfMarkdownPlugin-DZUfIUnp.js} +73 -6
  100. package/src/ui/dist/assets/{PdfViewerPlugin-BYTmz2fK.js → PdfViewerPlugin-BwtICzue.js} +103 -34
  101. package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +3627 -0
  102. package/src/ui/dist/assets/{SearchPlugin-CjWBI1O9.js → SearchPlugin-DHeIAMsx.js} +1 -1
  103. package/src/ui/dist/assets/{TextViewerPlugin-DdOBU3-S.js → TextViewerPlugin-C3tCmFox.js} +5 -4
  104. package/src/ui/dist/assets/{VNCViewer-B8HGgLwQ.js → VNCViewer-CQsKVm3t.js} +10 -10
  105. package/src/ui/dist/assets/bot-BEA2vWuK.js +21 -0
  106. package/src/ui/dist/assets/branding/logo-rokid.png +0 -0
  107. package/src/ui/dist/assets/browser-BAcuE0Xj.js +2895 -0
  108. package/src/ui/dist/assets/{code-BWAY76JP.js → code-XfbSR8K2.js} +1 -1
  109. package/src/ui/dist/assets/{file-content-C1NwU5oQ.js → file-content-BjxNaIfy.js} +1 -1
  110. package/src/ui/dist/assets/{file-diff-panel-CywslwB9.js → file-diff-panel-D_lLVQk0.js} +1 -1
  111. package/src/ui/dist/assets/{file-socket-B4kzuOBQ.js → file-socket-D9x_5vlY.js} +1 -1
  112. package/src/ui/dist/assets/{image-D-NZM-6P.js → image-BhWT33W1.js} +1 -1
  113. package/src/ui/dist/assets/{index-DHZJ_0TI.js → index--c4iXtuy.js} +12 -12
  114. package/src/ui/dist/assets/{index-BdM1Gqfr.js → index-BDxipwrC.js} +2 -2
  115. package/src/ui/dist/assets/{index-7Chr1g9c.js → index-DZTZ8mWP.js} +14221 -9523
  116. package/src/ui/dist/assets/{index-DGIYDuTv.css → index-Dqj-Mjb4.css} +2 -13
  117. package/src/ui/dist/assets/index-PJbSbPTy.js +25 -0
  118. package/src/ui/dist/assets/{monaco-Cb2uKKe6.js → monaco-K8izTGgo.js} +1 -1
  119. package/src/ui/dist/assets/{pdf-effect-queue-DSw_D3RV.js → pdf-effect-queue-DfBors6y.js} +16 -1
  120. package/src/ui/dist/assets/pdf.worker.min-yatZIOMy.mjs +21 -0
  121. package/src/ui/dist/assets/{popover-Bg72DGgT.js → popover-yFK1J4fL.js} +1 -1
  122. package/src/ui/dist/assets/{project-sync-Ce_0BglY.js → project-sync-PENr2zcz.js} +1 -74
  123. package/src/ui/dist/assets/select-CAbJDfYv.js +1690 -0
  124. package/src/ui/dist/assets/{sigma-DPaACDrh.js → sigma-DEuYJqTl.js} +1 -1
  125. package/src/ui/dist/assets/{index-CDxNdQdz.js → square-check-big-omoSUmcd.js} +2 -13
  126. package/src/ui/dist/assets/{trash-BvTgE5__.js → trash--F119N47.js} +1 -1
  127. package/src/ui/dist/assets/{useCliAccess-CgPeMOwP.js → useCliAccess-D31UR23I.js} +1 -1
  128. package/src/ui/dist/assets/{useFileDiffOverlay-xPhz7P5B.js → useFileDiffOverlay-BH6KcMzq.js} +1 -1
  129. package/src/ui/dist/assets/{wrap-text-C3Un3YQr.js → wrap-text-CZ613PM5.js} +1 -1
  130. package/src/ui/dist/assets/{zoom-out-BgxLa0Ri.js → zoom-out-BgDLAv3z.js} +1 -1
  131. package/src/ui/dist/index.html +2 -2
  132. package/src/ui/dist/assets/AutoFigurePlugin-BGxN8Umr.css +0 -3056
  133. package/src/ui/dist/assets/AutoFigurePlugin-C_wWw4AP.js +0 -8149
  134. package/src/ui/dist/assets/PdfViewerPlugin-BJXtIwj_.css +0 -260
  135. package/src/ui/dist/assets/Stepper-B0Dd8CxK.js +0 -158
  136. package/src/ui/dist/assets/bibtex-CKaefIN2.js +0 -189
  137. package/src/ui/dist/assets/file-utils-H2fjA46S.js +0 -109
  138. package/src/ui/dist/assets/message-square-BzjLiXir.js +0 -16
  139. package/src/ui/dist/assets/pdfjs-DU1YE8WO.js +0 -3
  140. package/src/ui/dist/assets/tooltip-C_mA6R0w.js +0 -108
@@ -0,0 +1,506 @@
1
+ # 14 Prompt, Skills, and MCP Guide
2
+
3
+ This guide explains how one DeepScientist turn is actually driven.
4
+
5
+ Use it when you want to understand:
6
+
7
+ - how the runtime builds the prompt for each turn
8
+ - what each stage skill is for
9
+ - how the built-in MCP tools are structured
10
+ - which file or tool you should change when behavior feels wrong
11
+
12
+ If you only want the user-facing product overview, read [13 Core Architecture Guide](./13_CORE_ARCHITECTURE_GUIDE.md) first.
13
+
14
+ If you only want the built-in memory contract, read [07 Memory and MCP](./07_MEMORY_AND_MCP.md) after this page.
15
+
16
+ ## 1. One-sentence summary
17
+
18
+ DeepScientist does not run from one static mega-prompt.
19
+
20
+ For every turn, it rebuilds a prompt from:
21
+
22
+ - the core system prompt
23
+ - a shared interaction contract
24
+ - runtime state
25
+ - quest files
26
+ - startup contract
27
+ - selected memory
28
+ - connector-specific rules when needed
29
+ - the active skill structure
30
+
31
+ Then the agent works through three built-in MCP namespaces only:
32
+
33
+ - `memory`
34
+ - `artifact`
35
+ - `bash_exec`
36
+
37
+ ## 2. What files are the main prompt truth sources
38
+
39
+ The most important files are:
40
+
41
+ - `src/prompts/system.md`
42
+ - `src/prompts/contracts/shared_interaction.md`
43
+ - `src/prompts/connectors/qq.md`
44
+ - `src/prompts/connectors/weixin.md`
45
+ - `src/prompts/connectors/lingzhu.md`
46
+ - `src/deepscientist/prompts/builder.py`
47
+ - `src/skills/*/SKILL.md`
48
+ - `src/deepscientist/mcp/server.py`
49
+
50
+ In practice:
51
+
52
+ - `system.md` defines the global operating stance
53
+ - `shared_interaction.md` defines user-visible continuity rules
54
+ - `connectors/*.md` inject connector-specific behavior only when that connector is active or bound
55
+ - `builder.py` decides prompt assembly order and runtime context sections
56
+ - `SKILL.md` files define stage-specific execution discipline
57
+ - `mcp/server.py` defines the built-in tool surface
58
+
59
+ ## 3. How one turn prompt is assembled
60
+
61
+ The current runtime assembles the turn prompt in roughly this order:
62
+
63
+ 1. `system.md`
64
+ 2. `contracts/shared_interaction.md`
65
+ 3. runtime context block
66
+ 4. active communication surface block
67
+ 5. optional connector contract block
68
+ 6. turn driver and continuation guard
69
+ 7. active user requirements
70
+ 8. quest context
71
+ 9. recent durable state
72
+ 10. research delivery policy
73
+ 11. paper and evidence snapshot
74
+ 12. retry recovery packet when this is a retry turn
75
+ 13. interaction style block
76
+ 14. priority memory for this turn
77
+ 15. recent conversation window
78
+ 16. current turn attachments
79
+ 17. current user message
80
+
81
+ That order matters.
82
+
83
+ The runtime is trying to answer three questions before the model acts:
84
+
85
+ 1. what is the quest trying to do now
86
+ 2. what durable state already exists
87
+ 3. what behavior rules apply on this surface and in this stage
88
+
89
+ ## 4. What the major prompt blocks actually do
90
+
91
+ ### 4.1 `system.md`
92
+
93
+ This is the global DeepScientist operating contract.
94
+
95
+ It defines things like:
96
+
97
+ - long-horizon evidence-first behavior
98
+ - use `bash_exec` for shell-like execution
99
+ - use durable files, logs, and artifacts as truth
100
+ - do not end a quest early
101
+ - treat web, TUI, and connectors as one quest
102
+ - user-facing reporting style
103
+
104
+ If the agent starts sounding wrong everywhere, `system.md` is one of the first places to inspect.
105
+
106
+ ### 4.2 `shared_interaction.md`
107
+
108
+ This file defines the common continuity spine around `artifact.interact(...)`.
109
+
110
+ It tells the agent:
111
+
112
+ - `artifact.interact(...)` is the main user-visible thread
113
+ - queued inbound user messages must be acknowledged and handled first
114
+ - blocking replies are for real decisions only
115
+ - progress updates should be concise and human-readable
116
+
117
+ If the model is bad at staying in the same long-running thread, this file matters a lot.
118
+
119
+ ### 4.3 Active communication surface
120
+
121
+ The prompt builder adds a surface block each turn.
122
+
123
+ This tells the model:
124
+
125
+ - whether the current turn is local, QQ, Weixin, or another connector
126
+ - how many external connectors are bound
127
+ - which surface is active right now
128
+ - how much detail is appropriate on that surface
129
+
130
+ This is why connector behavior should not be hard-coded globally.
131
+
132
+ The same quest may be viewed from the web UI, TUI, or a connector, but the reply shape should adapt.
133
+
134
+ ### 4.4 Connector contract
135
+
136
+ Connector prompt fragments are loaded only when needed.
137
+
138
+ Current connector prompt files are:
139
+
140
+ - `src/prompts/connectors/qq.md`
141
+ - `src/prompts/connectors/weixin.md`
142
+ - `src/prompts/connectors/lingzhu.md`
143
+
144
+ These files define surface-specific rules such as:
145
+
146
+ - reply length
147
+ - text-first versus media-enabled behavior
148
+ - how attachments should be sent
149
+ - what not to expose in chat
150
+
151
+ For example:
152
+
153
+ - QQ is treated as a milestone operator surface
154
+ - Weixin is treated as a concise phone-side operator surface with `context_token` continuity
155
+ - Lingzhu is treated as an even shorter, more constrained surface
156
+
157
+ If one connector needs behavior changes, change its connector prompt first before bloating the global system prompt.
158
+
159
+ ### 4.5 Runtime context and durable quest state
160
+
161
+ The builder injects runtime facts such as:
162
+
163
+ - `quest_id`
164
+ - `quest_root`
165
+ - current workspace branch
166
+ - active idea id
167
+ - active analysis campaign id
168
+ - bound conversations
169
+ - startup contract
170
+ - baseline gate
171
+ - active interactions
172
+ - recent artifacts
173
+ - recent runs
174
+
175
+ This is what makes the prompt quest-aware instead of generic.
176
+
177
+ ### 4.6 Quest context
178
+
179
+ The builder reads these quest files directly into the prompt:
180
+
181
+ - `brief.md`
182
+ - `plan.md`
183
+ - `status.md`
184
+ - `SUMMARY.md`
185
+
186
+ This is important:
187
+
188
+ - the live prompt is not only based on chat history
189
+ - durable quest docs are treated as first-class truth surfaces
190
+
191
+ ### 4.7 Research delivery policy
192
+
193
+ This block converts startup choices into concrete execution rules.
194
+
195
+ It includes logic around:
196
+
197
+ - whether paper delivery is required
198
+ - launch mode
199
+ - custom profile
200
+ - baseline routing
201
+ - idea routing
202
+ - paper branch behavior
203
+ - review gate behavior
204
+
205
+ If `Start Research` behavior feels wrong, you usually need to inspect:
206
+
207
+ - the `startup_contract`
208
+ - `src/deepscientist/prompts/builder.py`
209
+ - the stage skill the quest is currently using
210
+
211
+ ### 4.8 Interaction style
212
+
213
+ This block tells the model how to speak on this turn.
214
+
215
+ It includes:
216
+
217
+ - locale bias
218
+ - blocking versus threaded behavior
219
+ - long-run update cadence
220
+ - how to acknowledge mailbox messages
221
+ - how to compress progress into human-readable updates
222
+
223
+ This is why DeepScientist can keep the same runtime but behave differently across:
224
+
225
+ - long experiments
226
+ - connector replies
227
+ - writing stages
228
+ - waiting-for-decision stages
229
+
230
+ ### 4.9 Priority memory
231
+
232
+ DeepScientist does not inject memory randomly.
233
+
234
+ `PromptBuilder` uses a stage-specific memory plan.
235
+
236
+ Examples:
237
+
238
+ - `scout` prefers `papers`, `knowledge`, `decisions`
239
+ - `baseline` prefers `papers`, `decisions`, `episodes`, `knowledge`
240
+ - `idea` prefers `papers`, `ideas`, `decisions`, `knowledge`
241
+ - `experiment` prefers `ideas`, `decisions`, `episodes`, `knowledge`
242
+
243
+ This means the prompt is stage-biased on purpose.
244
+
245
+ The agent should not see the same memory bundle on every turn.
246
+
247
+ ## 5. What can be overridden locally
248
+
249
+ Prompt fragments can be overridden per quest under:
250
+
251
+ - `.codex/prompts/system.md`
252
+ - `.codex/prompts/contracts/shared_interaction.md`
253
+ - `.codex/prompts/connectors/<connector>.md`
254
+
255
+ This means:
256
+
257
+ - repo defaults live under `src/prompts/`
258
+ - quest-local prompt overrides live under `.codex/prompts/`
259
+
260
+ Use quest-local prompt overrides only when the quest truly needs a different local contract.
261
+
262
+ Do not fork the repo-level prompt unless the change should affect the product globally.
263
+
264
+ ## 6. How skills are structured
265
+
266
+ DeepScientist currently has two skill layers:
267
+
268
+ 1. standard stage skills
269
+ 2. companion skills
270
+
271
+ ### 6.1 Standard stage skills
272
+
273
+ These are the main research anchors:
274
+
275
+ | Skill | Use when | Main job | Usually hands off to |
276
+ |---|---|---|---|
277
+ | `scout` | the task frame is still unclear | task framing, baseline discovery, metric and dataset clarification | `baseline` or `idea` |
278
+ | `baseline` | a trustworthy baseline does not yet exist | attach, import, reproduce, repair, and verify the baseline | `idea` |
279
+ | `idea` | the baseline is clear but the next direction is not | generate, compare, and select durable research directions | `experiment` |
280
+ | `experiment` | one selected idea is ready to run | implement and evaluate the main run on one durable line | `analysis-campaign`, `write`, or `decision` |
281
+ | `analysis-campaign` | follow-up experiments are needed | run slices, ablations, robustness checks, or reviewer-facing supplements | `write`, `decision`, or `finalize` |
282
+ | `write` | there is enough evidence to draft | turn accepted evidence into outline, draft, and paper bundle work | `review` or `finalize` |
283
+ | `finalize` | the quest is near closure | consolidate claims, summaries, final state, and closure checks | quest completion approval |
284
+ | `decision` | a durable route choice is needed | make a clear go/stop/branch/reuse decision from evidence | another anchor |
285
+
286
+ ### 6.2 Companion skills
287
+
288
+ These are auxiliary entry or quality-control skills:
289
+
290
+ | Skill | Use when | Main job |
291
+ |---|---|---|
292
+ | `figure-polish` | a figure is important beyond debug use | render-inspect-revise a milestone or paper figure |
293
+ | `intake-audit` | the quest already has meaningful prior state | trust-rank old assets and choose the correct next anchor |
294
+ | `review` | a substantial draft already exists | run a skeptical paper-like audit before claiming done |
295
+ | `rebuttal` | reviewer comments or revision requests exist | map reviewer pressure into experiments, text deltas, and response artifacts |
296
+
297
+ ### 6.3 The important design point
298
+
299
+ The daemon is not supposed to contain a giant hard-coded research scheduler.
300
+
301
+ Instead:
302
+
303
+ - the prompt defines the operating contract
304
+ - the skill defines stage-specific discipline
305
+ - the runtime persists state and routes turns
306
+
307
+ That is the core DeepScientist design choice.
308
+
309
+ ## 7. What each skill usually leaves behind
310
+
311
+ These are the durable outputs you should expect:
312
+
313
+ | Skill | Typical durable outputs |
314
+ |---|---|
315
+ | `scout` | updated `brief.md`, updated `plan.md`, literature notes, framing memory |
316
+ | `baseline` | `PLAN.md`, `CHECKLIST.md`, baseline verification notes, confirmed or waived baseline state |
317
+ | `idea` | durable idea draft, selected idea package, rationale for why this route won |
318
+ | `experiment` | implementation changes, run logs, `record_main_experiment(...)`, result evidence |
319
+ | `analysis-campaign` | campaign manifest, slice records, synthesis notes |
320
+ | `write` | selected outline, writing plan, draft, references, claim-evidence map, paper bundle |
321
+ | `finalize` | final summary, closure state, final quest health check |
322
+ | `decision` | durable route decision, next-anchor recommendation |
323
+ | `intake-audit` | trusted-versus-untrusted asset map, next anchor recommendation |
324
+ | `review` | review report, revision log, experiment TODO list |
325
+ | `rebuttal` | review matrix, response letter, text deltas, evidence-update plan |
326
+ | `figure-polish` | final polished figure assets and render-checked outputs |
327
+
328
+ ## 8. Built-in MCP structure
329
+
330
+ DeepScientist keeps the built-in MCP surface intentionally small.
331
+
332
+ Only these namespaces are built in:
333
+
334
+ - `memory`
335
+ - `artifact`
336
+ - `bash_exec`
337
+
338
+ There is no separate public built-in `git` namespace.
339
+
340
+ Git-aware behavior is exposed through `artifact`.
341
+
342
+ ### 8.1 `memory`
343
+
344
+ Purpose:
345
+
346
+ - reusable knowledge
347
+ - lessons that should survive beyond one turn
348
+ - quest-local or global memory cards
349
+
350
+ Current built-in tools:
351
+
352
+ - `memory.write(...)`
353
+ - `memory.read(...)`
354
+ - `memory.search(...)`
355
+ - `memory.list_recent(...)`
356
+ - `memory.promote_to_global(...)`
357
+
358
+ Use `memory` when the output should be remembered and reused later.
359
+
360
+ Do not use it for transient progress chatter.
361
+
362
+ ### 8.2 `artifact`
363
+
364
+ Purpose:
365
+
366
+ - quest control plane
367
+ - durable research state
368
+ - Git-aware branch and worktree routing
369
+ - experiment and paper records
370
+ - user-visible interaction continuity
371
+
372
+ The artifact namespace is large, but it is still one family.
373
+
374
+ #### A. Generic durable records
375
+
376
+ - `artifact.record(...)`
377
+ - `artifact.refresh_summary(...)`
378
+ - `artifact.render_git_graph(...)`
379
+
380
+ #### B. Branch and route control
381
+
382
+ - `artifact.checkpoint(...)`
383
+ - `artifact.prepare_branch(...)`
384
+ - `artifact.activate_branch(...)`
385
+ - `artifact.submit_idea(...)`
386
+ - `artifact.list_research_branches(...)`
387
+ - `artifact.resolve_runtime_refs(...)`
388
+
389
+ #### C. Baseline lifecycle
390
+
391
+ - `artifact.publish_baseline(...)`
392
+ - `artifact.attach_baseline(...)`
393
+ - `artifact.confirm_baseline(...)`
394
+ - `artifact.waive_baseline(...)`
395
+
396
+ #### D. Experiment and analysis lifecycle
397
+
398
+ - `artifact.record_main_experiment(...)`
399
+ - `artifact.create_analysis_campaign(...)`
400
+ - `artifact.get_analysis_campaign(...)`
401
+ - `artifact.record_analysis_slice(...)`
402
+
403
+ #### E. Paper lifecycle
404
+
405
+ - `artifact.submit_paper_outline(...)`
406
+ - `artifact.list_paper_outlines(...)`
407
+ - `artifact.submit_paper_bundle(...)`
408
+
409
+ #### F. Reading and interaction continuity
410
+
411
+ - `artifact.arxiv(...)`
412
+ - `artifact.interact(...)`
413
+ - `artifact.complete_quest(...)`
414
+
415
+ The most important artifact tool for long-running collaboration is:
416
+
417
+ - `artifact.interact(...)`
418
+
419
+ Because it keeps together:
420
+
421
+ - user-visible updates
422
+ - mailbox polling
423
+ - connector delivery
424
+ - threaded continuity
425
+ - attachment delivery
426
+
427
+ ### 8.3 `bash_exec`
428
+
429
+ Purpose:
430
+
431
+ - durable shell execution
432
+ - monitored long runs
433
+ - durable logs
434
+ - stoppable and readable sessions
435
+
436
+ Current built-in tool:
437
+
438
+ - `bash_exec.bash_exec(...)`
439
+
440
+ This one tool supports multiple modes:
441
+
442
+ - `detach`
443
+ - `await`
444
+ - `read`
445
+ - `kill`
446
+ - `list`
447
+ - `history`
448
+
449
+ The design rule is simple:
450
+
451
+ - anything shell-like should go through `bash_exec`
452
+ - do not hide important execution in transient shell snippets
453
+
454
+ ## 9. How the three MCP namespaces divide responsibility
455
+
456
+ Use this mental model:
457
+
458
+ - `memory`: remember
459
+ - `artifact`: decide and record
460
+ - `bash_exec`: run and monitor
461
+
462
+ Examples:
463
+
464
+ - a reusable lesson from a failed run -> `memory.write(...)`
465
+ - confirming a baseline -> `artifact.confirm_baseline(...)`
466
+ - launching training -> `bash_exec.bash_exec(mode='detach', ...)`
467
+ - notifying the user about the next checkpoint -> `artifact.interact(...)`
468
+
469
+ If you mix these roles badly, the quest becomes harder to resume and audit.
470
+
471
+ ## 10. How one real turn usually works
472
+
473
+ A typical turn looks like this:
474
+
475
+ 1. a user or connector message arrives
476
+ 2. the daemon restores quest snapshot and history
477
+ 3. `PromptBuilder` assembles the current turn prompt
478
+ 4. the active skill defines the stage discipline
479
+ 5. priority memory is injected
480
+ 6. the agent uses `memory`, `artifact`, and `bash_exec`
481
+ 7. outputs are persisted into files, artifacts, memory cards, logs, and Git state
482
+ 8. `artifact.interact(...)` keeps the user-facing thread continuous
483
+
484
+ That is why DeepScientist feels more like a persistent workshop than a stateless chat.
485
+
486
+ ## 11. When to change prompt, skill, or MCP code
487
+
488
+ Use this quick rule:
489
+
490
+ - change `src/prompts/system.md` when the global operating stance is wrong
491
+ - change `src/prompts/contracts/shared_interaction.md` when continuity behavior is wrong
492
+ - change `src/prompts/connectors/*.md` when one connector behaves wrong
493
+ - change `src/skills/<skill>/SKILL.md` when one stage behaves wrong
494
+ - change `src/deepscientist/prompts/builder.py` when prompt assembly or runtime context selection is wrong
495
+ - change `src/deepscientist/mcp/server.py` when the built-in tool surface itself is wrong
496
+
497
+ Do not use a giant prompt patch to fix a real MCP contract bug.
498
+
499
+ Do not use a new MCP tool to fix a stage-discipline problem that belongs in a skill.
500
+
501
+ ## 12. What to read next
502
+
503
+ - [07 Memory and MCP](./07_MEMORY_AND_MCP.md)
504
+ - [13 Core Architecture Guide](./13_CORE_ARCHITECTURE_GUIDE.md)
505
+ - [06 Runtime and Canvas](./06_RUNTIME_AND_CANVAS.md)
506
+ - [01 Settings Reference](./01_SETTINGS_REFERENCE.md)
@@ -13,8 +13,11 @@ We especially thank the following projects for their ideas, research direction,
13
13
  - EvoScientist
14
14
  - Orchestra-Research
15
15
  - Orchestra-Research/AI-Research-SKILLs
16
+ - Overleaf / overleaf/overleaf
17
+ - Monaco Editor / microsoft/monaco-editor
18
+ - Novel / steven-tey/novel
16
19
 
17
- These projects have been important references for thinking about automated research, open-ended exploration, evolutionary search, experiment organization, and long-horizon research agents.
20
+ These projects have been important references for thinking about automated research, open-ended exploration, evolutionary search, experiment organization, long-horizon research agents, collaborative LaTeX editing workflows, browser-based code editing experiences, and rich notebook-style writing interactions.
18
21
 
19
22
  ## Personal acknowledgements
20
23
 
@@ -0,0 +1,79 @@
1
+ # DeepScientist Docs
2
+
3
+ DeepScientist is not just a long-running autonomous scientific discovery system. It is also a persistent research map that lives on your own machine.
4
+
5
+ 2 minutes to install. 2 minutes to bind Weixin. 2 minutes to launch. Extremely fast and easy to use.
6
+
7
+ It is also a workshop-style collaboration environment: let it keep moving autonomously, or step in anytime to collaborate, edit code, run the terminal yourself, or keep notes and plans in a Notion-style workspace.
8
+
9
+ Use DeepScientist anywhere: on the server through TUI, in the browser through Web, on the phone through Weixin or QQ, and even on glasses through Rokid Glasses.
10
+
11
+ ## News
12
+
13
+ - `2026/03/24`: DeepScientist officially releases `v1.5`.
14
+ - `2026/02/01`: the DeepScientist paper is available on [OpenReview](https://openreview.net/forum?id=cZFgsLq8Gs) for `ICLR 2026`.
15
+
16
+ ## More From ResearAI
17
+
18
+ AI Scientist and AutoFigure projects worth exploring alongside DeepScientist:
19
+
20
+ | Project | What it does |
21
+ |---|---|
22
+ | [AutoFigure](https://github.com/ResearAI/AutoFigure) | generate paper-ready figures |
23
+ | [AutoFigure-Edit](https://github.com/ResearAI/AutoFigure-Edit) | editable vector paper figures |
24
+ | [DeepReviewer-v2](https://github.com/ResearAI/DeepReviewer-v2) | review papers and drafts |
25
+ | [Awesome-AI-Scientist](https://github.com/ResearAI/Awesome-AI-Scientist) | curated AI scientist landscape |
26
+
27
+ This page is the shortest path to the right document.
28
+
29
+ ## If you are new
30
+
31
+ - [00 Quick Start](./00_QUICK_START.md)
32
+ Start here if you want to install DeepScientist, launch it locally, and create your first project.
33
+ - [12 Guided Workflow Tour](./12_GUIDED_WORKFLOW_TOUR.md)
34
+ Follow the real product flow from landing page to workspace, step by step.
35
+ - [02 Start Research Guide](./02_START_RESEARCH_GUIDE.md)
36
+ Read this next if you want to understand each field in the `Start Research` dialog and what it actually submits.
37
+
38
+ ## If you want to launch a project well
39
+
40
+ - [02 Start Research Guide](./02_START_RESEARCH_GUIDE.md)
41
+ Explains the current frontend fields, derived contract fields, and practical examples.
42
+ - [01 Settings Reference](./01_SETTINGS_REFERENCE.md)
43
+ Use this when you need to configure runners, connectors, runtime defaults, or home paths.
44
+ - [11 License And Risk Notice](./11_LICENSE_AND_RISK.md)
45
+ Read this first if you care about the license boundary, server safety, fabricated outputs, connector leakage, and public exposure risk.
46
+
47
+ ## If you want to collaborate through external surfaces
48
+
49
+ - [10 Weixin Connector Guide](./10_WEIXIN_CONNECTOR_GUIDE.md)
50
+ Bind personal WeChat through DeepScientist's built-in QR login and iLink runtime.
51
+ - [03 QQ Connector Guide](./03_QQ_CONNECTOR_GUIDE.md)
52
+ Use QQ as a practical collaboration surface for progress, commands, and milestone delivery.
53
+ - [04 Lingzhu Connector Guide](./04_LINGZHU_CONNECTOR_GUIDE.md)
54
+ Bind Lingzhu / Rokid Glasses to DeepScientist.
55
+
56
+ ## If you want to understand how the system works
57
+
58
+ - [13 Core Architecture Guide](./13_CORE_ARCHITECTURE_GUIDE.md)
59
+ Read this first if you want a user-facing overview of launcher, daemon, quests, Canvas, memory, and connectors.
60
+ - [14 Prompt, Skills, and MCP Guide](./14_PROMPT_SKILLS_AND_MCP_GUIDE.md)
61
+ Read this when you want the real turn-time structure: prompt assembly order, stage skills, and built-in MCP tool families.
62
+ - [06 Runtime and Canvas](./06_RUNTIME_AND_CANVAS.md)
63
+ Explains how the daemon, workspace, canvas, and connector views fit together.
64
+ - [07 Memory and MCP](./07_MEMORY_AND_MCP.md)
65
+ Explains memory, artifacts, and built-in MCP behavior.
66
+
67
+ ## If something is broken
68
+
69
+ - [09 Doctor](./09_DOCTOR.md)
70
+ Start here for diagnostics and common runtime problems.
71
+ - [01 Settings Reference](./01_SETTINGS_REFERENCE.md)
72
+ Check this if the problem is likely caused by config, credentials, or connector setup.
73
+
74
+ ## If you are developing DeepScientist
75
+
76
+ - [90 Architecture](./90_ARCHITECTURE.md)
77
+ High-level system contracts and repository structure.
78
+ - [91 Development](./91_DEVELOPMENT.md)
79
+ Maintainer-facing workflow and implementation notes.
@@ -0,0 +1,33 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1280" height="720" viewBox="0 0 1280 720" fill="none">
2
+ <rect width="1280" height="720" rx="32" fill="#FAFBFF"/>
3
+ <rect x="40" y="40" width="1200" height="640" rx="28" fill="#FFFFFF" stroke="#DAE2F3" stroke-width="2"/>
4
+ <circle cx="108" cy="108" r="34" fill="#2563EB"/>
5
+ <path d="M92 108C92 99.16 99.16 92 108 92C116.84 92 124 99.16 124 108C124 116.84 116.84 124 108 124C99.16 124 92 116.84 92 108Z" fill="#fff" fill-opacity=".2"/>
6
+ <path d="M101 116V100H115" stroke="#fff" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
7
+ <text x="164" y="98" fill="#0F172A" font-family="Arial, sans-serif" font-size="34" font-weight="700">WeChat Version And Plugin Entry Check</text>
8
+ <text x="164" y="138" fill="#475569" font-family="Arial, sans-serif" font-size="20">Reference precheck from the personal WeChat guide before you bind in DeepScientist</text>
9
+
10
+ <rect x="88" y="196" width="492" height="430" rx="28" fill="#F8FAFF" stroke="#D5DDF0" stroke-width="2"/>
11
+ <text x="120" y="252" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Compatibility checklist</text>
12
+ <rect x="120" y="292" width="428" height="88" rx="20" fill="#EEF2FF"/>
13
+ <text x="150" y="326" fill="#3730A3" font-family="Arial, sans-serif" font-size="20" font-weight="700">WeChat for iOS</text>
14
+ <text x="150" y="356" fill="#334155" font-family="Arial, sans-serif" font-size="18">Use 8.0.70 or newer if you need the plugin entry.</text>
15
+ <rect x="120" y="398" width="428" height="180" rx="20" fill="#fff" stroke="#E1E7F5"/>
16
+ <text x="150" y="434" fill="#0F172A" font-family="Arial, sans-serif" font-size="20" font-weight="700">Expected path in the reference flow</text>
17
+ <text x="150" y="474" fill="#334155" font-family="Arial, sans-serif" font-size="18">1. Me</text>
18
+ <text x="150" y="508" fill="#334155" font-family="Arial, sans-serif" font-size="18">2. Settings</text>
19
+ <text x="150" y="542" fill="#334155" font-family="Arial, sans-serif" font-size="18">3. Plugins</text>
20
+ <text x="150" y="576" fill="#475569" font-family="Arial, sans-serif" font-size="16">If this entry is missing, update WeChat first.</text>
21
+
22
+ <rect x="640" y="168" width="520" height="486" rx="34" fill="#ECFDF5" stroke="#C3EED3" stroke-width="2"/>
23
+ <rect x="760" y="204" width="280" height="420" rx="42" fill="#FFFFFF" stroke="#D7EAD9" stroke-width="2"/>
24
+ <rect x="786" y="246" width="228" height="42" rx="16" fill="#DCFCE7"/>
25
+ <text x="847" y="273" fill="#166534" font-family="Arial, sans-serif" font-size="20" font-weight="700">WeChat</text>
26
+ <rect x="786" y="318" width="228" height="54" rx="18" fill="#F8FAFC"/>
27
+ <text x="818" y="352" fill="#0F172A" font-family="Arial, sans-serif" font-size="18">Me</text>
28
+ <rect x="786" y="388" width="228" height="54" rx="18" fill="#F8FAFC"/>
29
+ <text x="818" y="422" fill="#0F172A" font-family="Arial, sans-serif" font-size="18">Settings</text>
30
+ <rect x="786" y="458" width="228" height="54" rx="18" fill="#DCFCE7" stroke="#22C55E"/>
31
+ <text x="818" y="492" fill="#166534" font-family="Arial, sans-serif" font-size="18" font-weight="700">Plugins</text>
32
+ <text x="702" y="616" fill="#475569" font-family="Arial, sans-serif" font-size="17">DeepScientist still binds from its own QR modal.</text>
33
+ </svg>
@@ -0,0 +1,30 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1280" height="720" viewBox="0 0 1280 720" fill="none">
2
+ <rect width="1280" height="720" rx="32" fill="#F7FBF8"/>
3
+ <rect x="40" y="40" width="1200" height="640" rx="28" fill="#FFFFFF" stroke="#D7E9DC" stroke-width="2"/>
4
+ <circle cx="108" cy="108" r="34" fill="#16A34A"/>
5
+ <path d="M97 108L105 116L119 100" stroke="#fff" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
6
+ <text x="164" y="98" fill="#0F172A" font-family="Arial, sans-serif" font-size="34" font-weight="700">Weixin QR Login Confirmation</text>
7
+ <text x="164" y="138" fill="#475569" font-family="Arial, sans-serif" font-size="20">One QR image in the modal, phone-side confirmation, automatic persistence</text>
8
+
9
+ <rect x="86" y="190" width="484" height="456" rx="28" fill="#FBFCFF" stroke="#DCE4F4" stroke-width="2"/>
10
+ <text x="118" y="244" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">DeepScientist modal</text>
11
+ <rect x="158" y="288" width="340" height="340" rx="26" fill="#fff" stroke="#CBD5E1" stroke-width="2"/>
12
+ <rect x="198" y="328" width="260" height="260" fill="#111827"/>
13
+ <rect x="220" y="350" width="60" height="60" fill="#fff"/>
14
+ <rect x="378" y="350" width="60" height="60" fill="#fff"/>
15
+ <rect x="220" y="508" width="60" height="60" fill="#fff"/>
16
+ <rect x="300" y="430" width="40" height="40" fill="#fff"/>
17
+ <rect x="364" y="494" width="28" height="28" fill="#fff"/>
18
+ <text x="136" y="660" fill="#475569" font-family="Arial, sans-serif" font-size="17">The popup only needs the QR image and a short hint.</text>
19
+
20
+ <rect x="708" y="164" width="472" height="500" rx="36" fill="#ECFDF5" stroke="#C6EDD2" stroke-width="2"/>
21
+ <rect x="846" y="202" width="196" height="414" rx="34" fill="#FFFFFF" stroke="#D3E7D6" stroke-width="2"/>
22
+ <text x="889" y="242" fill="#166534" font-family="Arial, sans-serif" font-size="22" font-weight="700">Phone</text>
23
+ <rect x="874" y="284" width="140" height="82" rx="18" fill="#DCFCE7"/>
24
+ <text x="908" y="332" fill="#166534" font-family="Arial, sans-serif" font-size="18" font-weight="700">Scan</text>
25
+ <rect x="874" y="392" width="140" height="82" rx="18" fill="#BBF7D0"/>
26
+ <text x="896" y="440" fill="#166534" font-family="Arial, sans-serif" font-size="18" font-weight="700">Confirm login</text>
27
+ <rect x="874" y="500" width="140" height="82" rx="18" fill="#86EFAC"/>
28
+ <text x="895" y="548" fill="#14532D" font-family="Arial, sans-serif" font-size="18" font-weight="700">Saved automatically</text>
29
+ <text x="742" y="638" fill="#475569" font-family="Arial, sans-serif" font-size="17">DeepScientist persists the returned token and account ids.</text>
30
+ </svg>