@researai/deepscientist 1.5.8 → 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.
- package/LICENSE +186 -21
- package/README.md +108 -95
- package/assets/branding/connector-qq.png +0 -0
- package/assets/branding/connector-rokid.png +0 -0
- package/assets/branding/connector-weixin.png +0 -0
- package/assets/branding/projects.png +0 -0
- package/bin/ds.js +172 -13
- package/docs/assets/branding/projects.png +0 -0
- package/docs/en/00_QUICK_START.md +308 -70
- package/docs/en/01_SETTINGS_REFERENCE.md +3 -0
- package/docs/en/02_START_RESEARCH_GUIDE.md +112 -0
- package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +62 -179
- package/docs/en/09_DOCTOR.md +41 -5
- package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +137 -0
- package/docs/en/11_LICENSE_AND_RISK.md +256 -0
- package/docs/en/12_GUIDED_WORKFLOW_TOUR.md +427 -0
- package/docs/en/13_CORE_ARCHITECTURE_GUIDE.md +297 -0
- package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
- package/docs/en/99_ACKNOWLEDGEMENTS.md +4 -1
- package/docs/en/README.md +79 -0
- package/docs/images/lingzhu/rokid-agent-platform-create.png +0 -0
- package/docs/images/weixin/weixin-plugin-entry.png +0 -0
- package/docs/images/weixin/weixin-plugin-entry.svg +33 -0
- package/docs/images/weixin/weixin-qr-confirm.svg +30 -0
- package/docs/images/weixin/weixin-quest-media-flow.svg +44 -0
- package/docs/images/weixin/weixin-settings-bind.svg +57 -0
- package/docs/zh/00_QUICK_START.md +315 -74
- package/docs/zh/01_SETTINGS_REFERENCE.md +3 -0
- package/docs/zh/02_START_RESEARCH_GUIDE.md +112 -0
- package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +62 -193
- package/docs/zh/09_DOCTOR.md +41 -5
- package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +144 -0
- package/docs/zh/11_LICENSE_AND_RISK.md +256 -0
- package/docs/zh/12_GUIDED_WORKFLOW_TOUR.md +423 -0
- package/docs/zh/13_CORE_ARCHITECTURE_GUIDE.md +296 -0
- package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
- package/docs/zh/99_ACKNOWLEDGEMENTS.md +4 -1
- package/docs/zh/README.md +126 -0
- package/install.sh +0 -34
- package/package.json +3 -3
- package/pyproject.toml +2 -2
- package/src/deepscientist/__init__.py +1 -1
- package/src/deepscientist/annotations.py +343 -0
- package/src/deepscientist/artifact/arxiv.py +484 -37
- package/src/deepscientist/artifact/metrics.py +1 -3
- package/src/deepscientist/artifact/service.py +1347 -111
- package/src/deepscientist/arxiv_library.py +275 -0
- package/src/deepscientist/bash_exec/service.py +9 -0
- package/src/deepscientist/bridges/builtins.py +2 -0
- package/src/deepscientist/bridges/connectors.py +447 -0
- package/src/deepscientist/channels/__init__.py +2 -0
- package/src/deepscientist/channels/builtins.py +3 -1
- package/src/deepscientist/channels/qq.py +1 -1
- package/src/deepscientist/channels/qq_gateway.py +1 -1
- package/src/deepscientist/channels/relay.py +7 -1
- package/src/deepscientist/channels/weixin.py +59 -0
- package/src/deepscientist/channels/weixin_ilink.py +317 -0
- package/src/deepscientist/config/models.py +22 -2
- package/src/deepscientist/config/service.py +431 -60
- package/src/deepscientist/connector/__init__.py +4 -0
- package/src/deepscientist/connector/connector_profiles.py +481 -0
- package/src/deepscientist/connector/lingzhu_support.py +668 -0
- package/src/deepscientist/connector/qq_profiles.py +206 -0
- package/src/deepscientist/connector/weixin_support.py +663 -0
- package/src/deepscientist/connector_profiles.py +1 -374
- package/src/deepscientist/connector_runtime.py +2 -0
- package/src/deepscientist/daemon/api/handlers.py +295 -5
- package/src/deepscientist/daemon/api/router.py +16 -1
- package/src/deepscientist/daemon/app.py +1130 -61
- package/src/deepscientist/doctor.py +5 -2
- package/src/deepscientist/gitops/diff.py +120 -29
- package/src/deepscientist/lingzhu_support.py +1 -182
- package/src/deepscientist/mcp/server.py +14 -5
- package/src/deepscientist/prompts/builder.py +29 -1
- package/src/deepscientist/qq_profiles.py +1 -196
- package/src/deepscientist/quest/node_traces.py +152 -2
- package/src/deepscientist/quest/service.py +169 -43
- package/src/deepscientist/quest/stage_views.py +172 -9
- package/src/deepscientist/registries/baseline.py +56 -4
- package/src/deepscientist/runners/codex.py +55 -3
- package/src/deepscientist/weixin_support.py +1 -0
- package/src/prompts/connectors/lingzhu.md +3 -1
- package/src/prompts/connectors/weixin.md +230 -0
- package/src/prompts/system.md +9 -0
- package/src/skills/idea/SKILL.md +16 -0
- package/src/skills/idea/references/literature-survey-template.md +24 -0
- package/src/skills/idea/references/related-work-playbook.md +4 -0
- package/src/skills/idea/references/selection-gate.md +9 -0
- package/src/skills/write/SKILL.md +1 -1
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/{AiManusChatView-m2FNtwbn.js → AiManusChatView-D0mTXG4-.js} +156 -48
- package/src/ui/dist/assets/{AnalysisPlugin-BMTF8EGL.js → AnalysisPlugin-Db0cTXxm.js} +1 -1
- package/src/ui/dist/assets/{CliPlugin-BEOWgxCI.js → CliPlugin-DrV8je02.js} +164 -9
- package/src/ui/dist/assets/{CodeEditorPlugin-BCXvjqmb.js → CodeEditorPlugin-QXMSCH71.js} +8 -8
- package/src/ui/dist/assets/{CodeViewerPlugin-DaJcy3nD.js → CodeViewerPlugin-7hhtWj_E.js} +5 -5
- package/src/ui/dist/assets/{DocViewerPlugin-ByfeIq4K.js → DocViewerPlugin-BWMSnRJe.js} +3 -3
- package/src/ui/dist/assets/{GitDiffViewerPlugin-Cksf3VZ-.js → GitDiffViewerPlugin-7J9h9Vy_.js} +20 -21
- package/src/ui/dist/assets/{ImageViewerPlugin-CFz-OsTS.js → ImageViewerPlugin-CHJl_0lr.js} +5 -5
- package/src/ui/dist/assets/{LabCopilotPanel-CJ1cJzoX.js → LabCopilotPanel-1qSow1es.js} +11 -11
- package/src/ui/dist/assets/{LabPlugin-BF3dVJwa.js → LabPlugin-eQpPPCEp.js} +2 -1
- package/src/ui/dist/assets/{LatexPlugin-DDkwZ6Sj.js → LatexPlugin-BwRfi89Z.js} +7 -7
- package/src/ui/dist/assets/{MarkdownViewerPlugin-HAuvurcT.js → MarkdownViewerPlugin-836PVQWV.js} +4 -4
- package/src/ui/dist/assets/{MarketplacePlugin-BtoTYy2C.js → MarketplacePlugin-C2y_556i.js} +3 -3
- package/src/ui/dist/assets/{NotebookEditor-CSJYx7b-.js → NotebookEditor-BRzJbGsn.js} +12 -12
- package/src/ui/dist/assets/{NotebookEditor-DQgRezm_.js → NotebookEditor-DIX7Mlzu.js} +1 -1
- package/src/ui/dist/assets/{PdfLoader-DPa_-fv6.js → PdfLoader-DzRaTAlq.js} +14 -7
- package/src/ui/dist/assets/{PdfMarkdownPlugin-BZpXOEjm.js → PdfMarkdownPlugin-DZUfIUnp.js} +73 -6
- package/src/ui/dist/assets/{PdfViewerPlugin-BT8a6wGR.js → PdfViewerPlugin-BwtICzue.js} +103 -34
- package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +3627 -0
- package/src/ui/dist/assets/{SearchPlugin-D_blveZi.js → SearchPlugin-DHeIAMsx.js} +1 -1
- package/src/ui/dist/assets/{TextViewerPlugin-Btx0M3hX.js → TextViewerPlugin-C3tCmFox.js} +5 -4
- package/src/ui/dist/assets/{VNCViewer-DImJO4rO.js → VNCViewer-CQsKVm3t.js} +10 -10
- package/src/ui/dist/assets/bot-BEA2vWuK.js +21 -0
- package/src/ui/dist/assets/branding/logo-rokid.png +0 -0
- package/src/ui/dist/assets/browser-BAcuE0Xj.js +2895 -0
- package/src/ui/dist/assets/{code-BUfXGJSl.js → code-XfbSR8K2.js} +1 -1
- package/src/ui/dist/assets/{file-content-VqamwI3X.js → file-content-BjxNaIfy.js} +1 -1
- package/src/ui/dist/assets/{file-diff-panel-C_wOoS7a.js → file-diff-panel-D_lLVQk0.js} +1 -1
- package/src/ui/dist/assets/{file-socket-D2bTuMVP.js → file-socket-D9x_5vlY.js} +1 -1
- package/src/ui/dist/assets/{image-BZkGJ4mM.js → image-BhWT33W1.js} +1 -1
- package/src/ui/dist/assets/{index-DdRW6RMJ.js → index--c4iXtuy.js} +12 -12
- package/src/ui/dist/assets/{index-CxkvSeKw.js → index-BDxipwrC.js} +2 -2
- package/src/ui/dist/assets/{index-DjggJovS.js → index-DZTZ8mWP.js} +14934 -9613
- package/src/ui/dist/assets/{index-DXZ1daiJ.css → index-Dqj-Mjb4.css} +2 -13
- package/src/ui/dist/assets/index-PJbSbPTy.js +25 -0
- package/src/ui/dist/assets/{monaco-DHMc7kKM.js → monaco-K8izTGgo.js} +1 -1
- package/src/ui/dist/assets/{pdf-effect-queue-DSw_D3RV.js → pdf-effect-queue-DfBors6y.js} +16 -1
- package/src/ui/dist/assets/pdf.worker.min-yatZIOMy.mjs +21 -0
- package/src/ui/dist/assets/{popover-B85oCgCS.js → popover-yFK1J4fL.js} +1 -1
- package/src/ui/dist/assets/{project-sync-DOMCcPac.js → project-sync-PENr2zcz.js} +1 -74
- package/src/ui/dist/assets/select-CAbJDfYv.js +1690 -0
- package/src/ui/dist/assets/{sigma-BO2rQrl3.js → sigma-DEuYJqTl.js} +1 -1
- package/src/ui/dist/assets/{index-D9QIGcmc.js → square-check-big-omoSUmcd.js} +2 -13
- package/src/ui/dist/assets/{trash-BsVEH_dV.js → trash--F119N47.js} +1 -1
- package/src/ui/dist/assets/{useCliAccess-b8L6JuZm.js → useCliAccess-D31UR23I.js} +1 -1
- package/src/ui/dist/assets/{useFileDiffOverlay-BY7uA9hV.js → useFileDiffOverlay-BH6KcMzq.js} +1 -1
- package/src/ui/dist/assets/{wrap-text-BwyVuUIK.js → wrap-text-CZ613PM5.js} +1 -1
- package/src/ui/dist/assets/{zoom-out-RDpLugQP.js → zoom-out-BgDLAv3z.js} +1 -1
- package/src/ui/dist/index.html +2 -2
- package/src/ui/dist/assets/AutoFigurePlugin-BGxN8Umr.css +0 -3056
- package/src/ui/dist/assets/AutoFigurePlugin-DxPdMUNb.js +0 -8149
- package/src/ui/dist/assets/PdfViewerPlugin-BJXtIwj_.css +0 -260
- package/src/ui/dist/assets/Stepper-DH2k75Vo.js +0 -158
- package/src/ui/dist/assets/bibtex-B-Hqu0Sg.js +0 -189
- package/src/ui/dist/assets/file-utils--zJCPN1i.js +0 -109
- package/src/ui/dist/assets/message-square-FUIPIhU2.js +0 -16
- package/src/ui/dist/assets/pdfjs-DU1YE8WO.js +0 -3
- package/src/ui/dist/assets/tooltip-B1OspAkx.js +0 -108
|
@@ -0,0 +1,506 @@
|
|
|
1
|
+
# 14 Prompt、Skills 与 MCP 指南
|
|
2
|
+
|
|
3
|
+
这篇文档解释的是:DeepScientist 每一轮到底是怎么被驱动起来的。
|
|
4
|
+
|
|
5
|
+
适合这些场景:
|
|
6
|
+
|
|
7
|
+
- 你想理解每轮 prompt 是怎么拼出来的
|
|
8
|
+
- 你想知道每个 skill 到底负责什么
|
|
9
|
+
- 你想弄清楚内建 MCP 工具的结构
|
|
10
|
+
- 你发现系统行为不对,想知道该改 prompt、skill 还是工具代码
|
|
11
|
+
|
|
12
|
+
如果你只想先看面向用户的系统概览,请先看 [13 核心架构说明](./13_CORE_ARCHITECTURE_GUIDE.md)。
|
|
13
|
+
|
|
14
|
+
如果你只想进一步看 `memory/artifact/bash_exec` 的使用纪律,请接着看 [07 Memory 与 MCP](./07_MEMORY_AND_MCP.md)。
|
|
15
|
+
|
|
16
|
+
## 1. 一句话总结
|
|
17
|
+
|
|
18
|
+
DeepScientist 不是靠一份静态大 prompt 工作的。
|
|
19
|
+
|
|
20
|
+
每一轮 turn,系统都会重新根据下面这些内容组装 prompt:
|
|
21
|
+
|
|
22
|
+
- 核心 system prompt
|
|
23
|
+
- 共享交互合同
|
|
24
|
+
- 当前运行时状态
|
|
25
|
+
- quest 持久文件
|
|
26
|
+
- startup contract
|
|
27
|
+
- 当前优先 memory
|
|
28
|
+
- 必要时的 connector 专属规则
|
|
29
|
+
- 当前 skill 结构
|
|
30
|
+
|
|
31
|
+
然后 agent 只通过三个内建 MCP namespace 工作:
|
|
32
|
+
|
|
33
|
+
- `memory`
|
|
34
|
+
- `artifact`
|
|
35
|
+
- `bash_exec`
|
|
36
|
+
|
|
37
|
+
## 2. 哪些文件是 prompt 的主要真相来源
|
|
38
|
+
|
|
39
|
+
最关键的文件包括:
|
|
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
|
+
它们各自的作用大致是:
|
|
51
|
+
|
|
52
|
+
- `system.md`:全局行为准则
|
|
53
|
+
- `shared_interaction.md`:统一交互连续性规则
|
|
54
|
+
- `connectors/*.md`:只在对应 connector 生效时才注入的专属规则
|
|
55
|
+
- `builder.py`:决定 prompt 组装顺序与运行时上下文
|
|
56
|
+
- `SKILL.md`:定义各个阶段的执行纪律
|
|
57
|
+
- `mcp/server.py`:定义内建工具面
|
|
58
|
+
|
|
59
|
+
## 3. 一轮 prompt 是怎么组装的
|
|
60
|
+
|
|
61
|
+
当前运行时大致按下面顺序组装 turn prompt:
|
|
62
|
+
|
|
63
|
+
1. `system.md`
|
|
64
|
+
2. `contracts/shared_interaction.md`
|
|
65
|
+
3. runtime context
|
|
66
|
+
4. active communication surface
|
|
67
|
+
5. 可选的 connector contract
|
|
68
|
+
6. turn driver 与 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 turn,则加入 retry recovery packet
|
|
75
|
+
13. interaction style
|
|
76
|
+
14. priority memory for this turn
|
|
77
|
+
15. recent conversation window
|
|
78
|
+
16. current turn attachments
|
|
79
|
+
17. current user message
|
|
80
|
+
|
|
81
|
+
这个顺序不是随便排的。
|
|
82
|
+
|
|
83
|
+
系统本质上想先回答三个问题:
|
|
84
|
+
|
|
85
|
+
1. 这个 quest 这一轮现在到底要做什么
|
|
86
|
+
2. 已经有哪些持久状态不能被忽略
|
|
87
|
+
3. 这一轮在当前 surface 和当前 stage 下应该遵守什么规则
|
|
88
|
+
|
|
89
|
+
## 4. 各个主要 prompt block 到底在做什么
|
|
90
|
+
|
|
91
|
+
### 4.1 `system.md`
|
|
92
|
+
|
|
93
|
+
这是全局 DeepScientist 行为合同。
|
|
94
|
+
|
|
95
|
+
它会定义:
|
|
96
|
+
|
|
97
|
+
- 长周期、证据优先的工作方式
|
|
98
|
+
- shell 类执行必须走 `bash_exec`
|
|
99
|
+
- 文件、日志、artifact 才是历史真相
|
|
100
|
+
- 不要过早结束 quest
|
|
101
|
+
- Web、TUI、connector 属于同一个 quest
|
|
102
|
+
- 用户可见的汇报风格
|
|
103
|
+
|
|
104
|
+
如果你发现 agent 在所有场景里行为都不对,`system.md` 一定是首要检查点之一。
|
|
105
|
+
|
|
106
|
+
### 4.2 `shared_interaction.md`
|
|
107
|
+
|
|
108
|
+
这个文件统一规定 `artifact.interact(...)` 相关的连续性交互规则。
|
|
109
|
+
|
|
110
|
+
它告诉 agent:
|
|
111
|
+
|
|
112
|
+
- `artifact.interact(...)` 是主要的长对话脊柱
|
|
113
|
+
- 排队中的用户消息必须优先确认和处理
|
|
114
|
+
- `blocking` 只该用于真实用户决策
|
|
115
|
+
- 进展汇报应该简洁且可读
|
|
116
|
+
|
|
117
|
+
如果模型经常在长任务里“断线”或者不会接住用户后续消息,这个文件非常关键。
|
|
118
|
+
|
|
119
|
+
### 4.3 Active communication surface
|
|
120
|
+
|
|
121
|
+
prompt builder 每轮都会加一个当前 surface 的说明块。
|
|
122
|
+
|
|
123
|
+
它会告诉模型:
|
|
124
|
+
|
|
125
|
+
- 当前这轮是本地、QQ、微信还是其他 connector
|
|
126
|
+
- 当前 quest 绑定了几个外部 connector
|
|
127
|
+
- 此时真正活跃的是哪个 surface
|
|
128
|
+
- 这个 surface 上应该说多少细节
|
|
129
|
+
|
|
130
|
+
这也是为什么 connector 行为不应该被硬编码进全局 prompt。
|
|
131
|
+
|
|
132
|
+
同一个 quest 可以同时被 Web、TUI 和 connector 看到,但回复形态应该随 surface 变化。
|
|
133
|
+
|
|
134
|
+
### 4.4 Connector contract
|
|
135
|
+
|
|
136
|
+
connector 专属 prompt 片段只在需要时才会被加载。
|
|
137
|
+
|
|
138
|
+
当前对应文件有:
|
|
139
|
+
|
|
140
|
+
- `src/prompts/connectors/qq.md`
|
|
141
|
+
- `src/prompts/connectors/weixin.md`
|
|
142
|
+
- `src/prompts/connectors/lingzhu.md`
|
|
143
|
+
|
|
144
|
+
这些文件主要控制:
|
|
145
|
+
|
|
146
|
+
- 回复长度
|
|
147
|
+
- 文本优先还是支持媒体
|
|
148
|
+
- 附件该如何发
|
|
149
|
+
- 哪些内部细节不该在聊天面里暴露
|
|
150
|
+
|
|
151
|
+
例如:
|
|
152
|
+
|
|
153
|
+
- QQ 被当作里程碑式 operator surface
|
|
154
|
+
- Weixin 被当作简洁的手机侧 operator surface,并依赖 `context_token` 连续性
|
|
155
|
+
- Lingzhu 被当作更短、更受限的 surface
|
|
156
|
+
|
|
157
|
+
如果只有某个 connector 的行为需要调整,优先改它自己的 connector prompt,而不是把逻辑塞进全局 system prompt。
|
|
158
|
+
|
|
159
|
+
### 4.5 Runtime context 与 durable quest state
|
|
160
|
+
|
|
161
|
+
builder 会注入很多运行时事实,例如:
|
|
162
|
+
|
|
163
|
+
- `quest_id`
|
|
164
|
+
- `quest_root`
|
|
165
|
+
- 当前工作分支
|
|
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
|
+
这正是 prompt 变成 quest-aware 的原因,而不是普通通用对话。
|
|
176
|
+
|
|
177
|
+
### 4.6 Quest context
|
|
178
|
+
|
|
179
|
+
builder 会直接把这些 quest 文件读进 prompt:
|
|
180
|
+
|
|
181
|
+
- `brief.md`
|
|
182
|
+
- `plan.md`
|
|
183
|
+
- `status.md`
|
|
184
|
+
- `SUMMARY.md`
|
|
185
|
+
|
|
186
|
+
这一点很重要:
|
|
187
|
+
|
|
188
|
+
- 当前 live prompt 并不只依赖聊天记录
|
|
189
|
+
- 持久 quest 文档本身就是一等真相面
|
|
190
|
+
|
|
191
|
+
### 4.7 Research delivery policy
|
|
192
|
+
|
|
193
|
+
这个 block 会把启动时的选择,转成具体执行规则。
|
|
194
|
+
|
|
195
|
+
它主要包括:
|
|
196
|
+
|
|
197
|
+
- 是否要求 paper delivery
|
|
198
|
+
- launch mode
|
|
199
|
+
- custom profile
|
|
200
|
+
- baseline 路由规则
|
|
201
|
+
- idea 路由规则
|
|
202
|
+
- paper branch 行为
|
|
203
|
+
- review gate 行为
|
|
204
|
+
|
|
205
|
+
如果你感觉 `Start Research` 后行为不对,通常要检查:
|
|
206
|
+
|
|
207
|
+
- `startup_contract`
|
|
208
|
+
- `src/deepscientist/prompts/builder.py`
|
|
209
|
+
- 当前 quest 所处的 stage skill
|
|
210
|
+
|
|
211
|
+
### 4.8 Interaction style
|
|
212
|
+
|
|
213
|
+
这个 block 决定这轮该怎么“说话”。
|
|
214
|
+
|
|
215
|
+
它会控制:
|
|
216
|
+
|
|
217
|
+
- 语言偏置
|
|
218
|
+
- blocking 还是 threaded
|
|
219
|
+
- 长时间运行时的汇报节奏
|
|
220
|
+
- mailbox 消息要怎么确认
|
|
221
|
+
- 如何把进展压缩成人类可读的更新
|
|
222
|
+
|
|
223
|
+
所以 DeepScientist 虽然是同一套 runtime,但在这些场景里可以表现不同:
|
|
224
|
+
|
|
225
|
+
- 长实验
|
|
226
|
+
- connector 回复
|
|
227
|
+
- 写作阶段
|
|
228
|
+
- 等待用户决策的阶段
|
|
229
|
+
|
|
230
|
+
### 4.9 Priority memory
|
|
231
|
+
|
|
232
|
+
DeepScientist 不是随机往 prompt 里塞 memory 的。
|
|
233
|
+
|
|
234
|
+
`PromptBuilder` 会根据 stage 使用不同的 memory plan。
|
|
235
|
+
|
|
236
|
+
例如:
|
|
237
|
+
|
|
238
|
+
- `scout` 更偏向 `papers`、`knowledge`、`decisions`
|
|
239
|
+
- `baseline` 更偏向 `papers`、`decisions`、`episodes`、`knowledge`
|
|
240
|
+
- `idea` 更偏向 `papers`、`ideas`、`decisions`、`knowledge`
|
|
241
|
+
- `experiment` 更偏向 `ideas`、`decisions`、`episodes`、`knowledge`
|
|
242
|
+
|
|
243
|
+
也就是说,prompt 会有明确的 stage bias。
|
|
244
|
+
|
|
245
|
+
agent 不应该在每一轮都看到完全同一批 memory。
|
|
246
|
+
|
|
247
|
+
## 5. 哪些 prompt 可以本地覆盖
|
|
248
|
+
|
|
249
|
+
当前支持按 quest 在下面路径覆盖 prompt 片段:
|
|
250
|
+
|
|
251
|
+
- `.codex/prompts/system.md`
|
|
252
|
+
- `.codex/prompts/contracts/shared_interaction.md`
|
|
253
|
+
- `.codex/prompts/connectors/<connector>.md`
|
|
254
|
+
|
|
255
|
+
也就是说:
|
|
256
|
+
|
|
257
|
+
- 仓库默认 prompt 在 `src/prompts/`
|
|
258
|
+
- quest 私有覆盖在 `.codex/prompts/`
|
|
259
|
+
|
|
260
|
+
只有当某个 quest 确实需要局部特殊合同,才建议这样覆盖。
|
|
261
|
+
|
|
262
|
+
如果这个改动应该影响整个产品,就不该做 quest-local override,而应该直接改仓库默认 prompt。
|
|
263
|
+
|
|
264
|
+
## 6. Skills 是怎么分层的
|
|
265
|
+
|
|
266
|
+
DeepScientist 当前有两层 skill:
|
|
267
|
+
|
|
268
|
+
1. 标准 stage skills
|
|
269
|
+
2. companion skills
|
|
270
|
+
|
|
271
|
+
### 6.1 标准 stage skills
|
|
272
|
+
|
|
273
|
+
这些是主研究锚点:
|
|
274
|
+
|
|
275
|
+
| Skill | 什么时候用 | 主要职责 | 通常交给谁 |
|
|
276
|
+
|---|---|---|---|
|
|
277
|
+
| `scout` | 任务框架还不清楚 | 定义问题、找 baseline、确认数据集和 metric 合同 | `baseline` 或 `idea` |
|
|
278
|
+
| `baseline` | 还没有可信 baseline | attach、import、复现、修复和验证 baseline | `idea` |
|
|
279
|
+
| `idea` | baseline 清楚,但下一条研究路线不清楚 | 生成、比较并选择可持久化的新方向 | `experiment` |
|
|
280
|
+
| `experiment` | 已经有选中的 idea | 在单条 durable 线路上实现并跑主实验 | `analysis-campaign`、`write` 或 `decision` |
|
|
281
|
+
| `analysis-campaign` | 需要补充实验 | 跑 slice、ablation、robustness 或 reviewer-facing supplement | `write`、`decision` 或 `finalize` |
|
|
282
|
+
| `write` | 证据已经足够写作 | 把证据转成 outline、draft 和 paper bundle | `review` 或 `finalize` |
|
|
283
|
+
| `finalize` | quest 接近收尾 | 汇总 claims、总结状态并做关闭前检查 | quest completion approval |
|
|
284
|
+
| `decision` | 需要做 durable route choice | 基于证据做 go/stop/branch/reuse 决策 | 交给下一个 anchor |
|
|
285
|
+
|
|
286
|
+
### 6.2 Companion skills
|
|
287
|
+
|
|
288
|
+
这些是辅助入口或质量控制技能:
|
|
289
|
+
|
|
290
|
+
| Skill | 什么时候用 | 主要职责 |
|
|
291
|
+
|---|---|---|
|
|
292
|
+
| `figure-polish` | 某张图已经不只是 debug 图 | 对 milestone 或 paper figure 做 render-inspect-revise |
|
|
293
|
+
| `intake-audit` | quest 里已经有不少历史状态 | 给旧资产做 trust-rank,并决定下一个 anchor |
|
|
294
|
+
| `review` | 已经有比较完整的 draft | 在宣布完成前做一次 skeptical audit |
|
|
295
|
+
| `rebuttal` | 已经有 reviewer comments 或 revision request | 把 reviewer pressure 映射成实验、文字修改和 response artifact |
|
|
296
|
+
|
|
297
|
+
### 6.3 最关键的设计点
|
|
298
|
+
|
|
299
|
+
DeepScientist 的 daemon 不应该变成一个巨大的硬编码科研调度器。
|
|
300
|
+
|
|
301
|
+
真正的分工是:
|
|
302
|
+
|
|
303
|
+
- prompt 定义总合同
|
|
304
|
+
- skill 定义当前阶段纪律
|
|
305
|
+
- runtime 负责持久化状态与路由 turn
|
|
306
|
+
|
|
307
|
+
这就是 DeepScientist 最核心的设计选择之一。
|
|
308
|
+
|
|
309
|
+
## 7. 每个 skill 通常会留下什么 durable 输出
|
|
310
|
+
|
|
311
|
+
你可以期待的大致持久化产物如下:
|
|
312
|
+
|
|
313
|
+
| Skill | 常见 durable outputs |
|
|
314
|
+
|---|---|
|
|
315
|
+
| `scout` | 更新后的 `brief.md`、更新后的 `plan.md`、文献笔记、framing memory |
|
|
316
|
+
| `baseline` | `PLAN.md`、`CHECKLIST.md`、baseline 验证记录、confirmed 或 waived baseline 状态 |
|
|
317
|
+
| `idea` | durable idea draft、选中路线包、为什么这条路线胜出的理由 |
|
|
318
|
+
| `experiment` | 实现改动、run logs、`record_main_experiment(...)`、结果证据 |
|
|
319
|
+
| `analysis-campaign` | campaign manifest、slice 记录、综合分析说明 |
|
|
320
|
+
| `write` | selected outline、writing plan、draft、references、claim-evidence map、paper bundle |
|
|
321
|
+
| `finalize` | 最终 summary、closure state、关闭前健康检查 |
|
|
322
|
+
| `decision` | durable route decision、next-anchor recommendation |
|
|
323
|
+
| `intake-audit` | trusted 与 untrusted 资产映射、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` | 最终 polished figure 资产和已检查过的导出结果 |
|
|
327
|
+
|
|
328
|
+
## 8. 内建 MCP 结构
|
|
329
|
+
|
|
330
|
+
DeepScientist 故意把内建 MCP 面压得很小。
|
|
331
|
+
|
|
332
|
+
只有下面三个 namespace 是内建的:
|
|
333
|
+
|
|
334
|
+
- `memory`
|
|
335
|
+
- `artifact`
|
|
336
|
+
- `bash_exec`
|
|
337
|
+
|
|
338
|
+
没有单独公开的内建 `git` namespace。
|
|
339
|
+
|
|
340
|
+
所有 Git-aware 行为都通过 `artifact` 暴露。
|
|
341
|
+
|
|
342
|
+
### 8.1 `memory`
|
|
343
|
+
|
|
344
|
+
作用:
|
|
345
|
+
|
|
346
|
+
- 保存可复用知识
|
|
347
|
+
- 保存应该跨 turn 保留下来的经验
|
|
348
|
+
- 管理 quest-local 或 global memory cards
|
|
349
|
+
|
|
350
|
+
当前内建工具有:
|
|
351
|
+
|
|
352
|
+
- `memory.write(...)`
|
|
353
|
+
- `memory.read(...)`
|
|
354
|
+
- `memory.search(...)`
|
|
355
|
+
- `memory.list_recent(...)`
|
|
356
|
+
- `memory.promote_to_global(...)`
|
|
357
|
+
|
|
358
|
+
当输出应该被后续轮次继续复用时,用 `memory`。
|
|
359
|
+
|
|
360
|
+
不要把瞬时进度消息塞到 memory 里。
|
|
361
|
+
|
|
362
|
+
### 8.2 `artifact`
|
|
363
|
+
|
|
364
|
+
作用:
|
|
365
|
+
|
|
366
|
+
- quest control plane
|
|
367
|
+
- durable research state
|
|
368
|
+
- Git-aware branch / worktree 路由
|
|
369
|
+
- experiment 与 paper 记录
|
|
370
|
+
- 用户可见交互连续性
|
|
371
|
+
|
|
372
|
+
artifact 名字虽然多,但本质上还是一个家族。
|
|
373
|
+
|
|
374
|
+
#### A. 通用持久记录
|
|
375
|
+
|
|
376
|
+
- `artifact.record(...)`
|
|
377
|
+
- `artifact.refresh_summary(...)`
|
|
378
|
+
- `artifact.render_git_graph(...)`
|
|
379
|
+
|
|
380
|
+
#### B. 分支与路线控制
|
|
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 生命周期
|
|
390
|
+
|
|
391
|
+
- `artifact.publish_baseline(...)`
|
|
392
|
+
- `artifact.attach_baseline(...)`
|
|
393
|
+
- `artifact.confirm_baseline(...)`
|
|
394
|
+
- `artifact.waive_baseline(...)`
|
|
395
|
+
|
|
396
|
+
#### D. 实验与分析生命周期
|
|
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 生命周期
|
|
404
|
+
|
|
405
|
+
- `artifact.submit_paper_outline(...)`
|
|
406
|
+
- `artifact.list_paper_outlines(...)`
|
|
407
|
+
- `artifact.submit_paper_bundle(...)`
|
|
408
|
+
|
|
409
|
+
#### F. 阅读与交互连续性
|
|
410
|
+
|
|
411
|
+
- `artifact.arxiv(...)`
|
|
412
|
+
- `artifact.interact(...)`
|
|
413
|
+
- `artifact.complete_quest(...)`
|
|
414
|
+
|
|
415
|
+
对长时间协作来说,最重要的 artifact 工具是:
|
|
416
|
+
|
|
417
|
+
- `artifact.interact(...)`
|
|
418
|
+
|
|
419
|
+
因为它会把这些事情连接起来:
|
|
420
|
+
|
|
421
|
+
- 用户可见更新
|
|
422
|
+
- mailbox 消息轮询
|
|
423
|
+
- connector 投递
|
|
424
|
+
- threaded continuity
|
|
425
|
+
- 附件发送
|
|
426
|
+
|
|
427
|
+
### 8.3 `bash_exec`
|
|
428
|
+
|
|
429
|
+
作用:
|
|
430
|
+
|
|
431
|
+
- 持久化 shell 执行
|
|
432
|
+
- 监控长任务
|
|
433
|
+
- 保存 durable logs
|
|
434
|
+
- 允许停止和回读执行会话
|
|
435
|
+
|
|
436
|
+
当前内建工具只有一个:
|
|
437
|
+
|
|
438
|
+
- `bash_exec.bash_exec(...)`
|
|
439
|
+
|
|
440
|
+
但是它支持多种 mode:
|
|
441
|
+
|
|
442
|
+
- `detach`
|
|
443
|
+
- `await`
|
|
444
|
+
- `read`
|
|
445
|
+
- `kill`
|
|
446
|
+
- `list`
|
|
447
|
+
- `history`
|
|
448
|
+
|
|
449
|
+
设计原则很简单:
|
|
450
|
+
|
|
451
|
+
- 任何 shell-like 的执行都应该走 `bash_exec`
|
|
452
|
+
- 不要把关键执行藏在一次性 shell 片段里
|
|
453
|
+
|
|
454
|
+
## 9. 这三个 MCP namespace 是怎么分工的
|
|
455
|
+
|
|
456
|
+
可以这样记:
|
|
457
|
+
|
|
458
|
+
- `memory`:记住
|
|
459
|
+
- `artifact`:决策并记录
|
|
460
|
+
- `bash_exec`:执行并监控
|
|
461
|
+
|
|
462
|
+
例如:
|
|
463
|
+
|
|
464
|
+
- 从失败实验里抽出可复用经验 -> `memory.write(...)`
|
|
465
|
+
- 确认 baseline -> `artifact.confirm_baseline(...)`
|
|
466
|
+
- 启动训练 -> `bash_exec.bash_exec(mode='detach', ...)`
|
|
467
|
+
- 给用户回传下一次 checkpoint -> `artifact.interact(...)`
|
|
468
|
+
|
|
469
|
+
如果这三类职责混用得太乱,quest 就会变得难以恢复,也难以审计。
|
|
470
|
+
|
|
471
|
+
## 10. 一轮真实 turn 通常怎么流动
|
|
472
|
+
|
|
473
|
+
一个典型 turn 大致如下:
|
|
474
|
+
|
|
475
|
+
1. 用户或 connector 发来一条消息
|
|
476
|
+
2. daemon 恢复 quest snapshot 和 history
|
|
477
|
+
3. `PromptBuilder` 组装当前 turn prompt
|
|
478
|
+
4. 当前 active skill 定义这一轮的阶段纪律
|
|
479
|
+
5. 注入 priority memory
|
|
480
|
+
6. agent 使用 `memory`、`artifact` 和 `bash_exec`
|
|
481
|
+
7. 输出被持久化进文件、artifact、memory cards、logs 和 Git 状态
|
|
482
|
+
8. `artifact.interact(...)` 保持用户可见线程不断线
|
|
483
|
+
|
|
484
|
+
这也是 DeepScientist 更像一个持续科研工作坊,而不是无状态聊天的原因。
|
|
485
|
+
|
|
486
|
+
## 11. 什么时候该改 prompt、skill 或 MCP 代码
|
|
487
|
+
|
|
488
|
+
可以用下面这个快速判断:
|
|
489
|
+
|
|
490
|
+
- 全局行为准则错了 -> 改 `src/prompts/system.md`
|
|
491
|
+
- 连续性交互不对 -> 改 `src/prompts/contracts/shared_interaction.md`
|
|
492
|
+
- 某个 connector 表现不对 -> 改 `src/prompts/connectors/*.md`
|
|
493
|
+
- 某个 stage 的工作纪律不对 -> 改 `src/skills/<skill>/SKILL.md`
|
|
494
|
+
- prompt 组装顺序或 runtime context 选择错了 -> 改 `src/deepscientist/prompts/builder.py`
|
|
495
|
+
- 内建工具面本身不对 -> 改 `src/deepscientist/mcp/server.py`
|
|
496
|
+
|
|
497
|
+
不要试图用一大段 prompt patch 去修一个真正的 MCP contract bug。
|
|
498
|
+
|
|
499
|
+
也不要为了修 stage discipline 问题,去新增一个本该属于 skill 的 MCP 工具。
|
|
500
|
+
|
|
501
|
+
## 12. 下一步建议阅读
|
|
502
|
+
|
|
503
|
+
- [07 Memory 与 MCP](./07_MEMORY_AND_MCP.md)
|
|
504
|
+
- [13 核心架构说明](./13_CORE_ARCHITECTURE_GUIDE.md)
|
|
505
|
+
- [06 Runtime 与 Canvas](./06_RUNTIME_AND_CANVAS.md)
|
|
506
|
+
- [01 设置参考](./01_SETTINGS_REFERENCE.md)
|
|
@@ -13,8 +13,11 @@ DeepScientist 的构思、架构设计与实现过程中,受到了许多优秀
|
|
|
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
|
-
|
|
20
|
+
这些项目在自动化科研、开放式探索、进化式搜索、实验组织、智能研究代理、协作式 LaTeX 编辑工作流、浏览器端代码编辑体验,以及富文本 notebook 式写作交互等方向上的探索,为 DeepScientist 的设计提供了重要参照。
|
|
18
21
|
|
|
19
22
|
## 个人致谢
|
|
20
23
|
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# DeepScientist 文档总览
|
|
2
|
+
|
|
3
|
+
DeepScientist 不仅仅是一个可长期运行的自动化科学发现系统,更是一个真正持续保存在你自己机器里的科研地图。
|
|
4
|
+
|
|
5
|
+
2 分钟安装,2 分钟配置微信,2 分钟启动。极快、方便、易用。
|
|
6
|
+
|
|
7
|
+
它也是一种工作坊式协作环境:可以长期自主推进,也允许你随时接管、协作、改代码、自己跑终端,亦或者用 Notion 式方式记录笔记、计划与协作内容。
|
|
8
|
+
|
|
9
|
+
DeepScientist 灵活且易于使用,支持:
|
|
10
|
+
|
|
11
|
+
- 本地优先、开源、一条命令安装
|
|
12
|
+
- Git 驱动的 quest 仓库、Web 工作区、Studio / Canvas 与 TUI
|
|
13
|
+
- 工作坊式协作:可长期自主推进,也可随时接管、协作、改代码、跑终端或记录 Notion 式笔记
|
|
14
|
+
- 默认使用 Codex + `gpt-5.4`
|
|
15
|
+
- 兼容外部 OpenAI-compatible 模型端点
|
|
16
|
+
- 你可以在任何地方使用 DeepScientist:服务器(TUI)、浏览器(Web)、手机(微信或 QQ),甚至眼镜(Rokid Glasses)
|
|
17
|
+
- 每个 quest 绑定一个外部 connector
|
|
18
|
+
- 支持 [微信](./10_WEIXIN_CONNECTOR_GUIDE.md)、[QQ](./03_QQ_CONNECTOR_GUIDE.md)、Telegram、Discord、Slack、Feishu、WhatsApp、[灵珠 / Rokid](./04_LINGZHU_CONNECTOR_GUIDE.md)
|
|
19
|
+
- 一题一仓库
|
|
20
|
+
- 分支与 worktree 是原生科研结构
|
|
21
|
+
- Studio 与 Canvas 从持久状态实时重建
|
|
22
|
+
- baseline 可复用,不是一次性跑分
|
|
23
|
+
- `bash_exec` 是持久化 shell 会话
|
|
24
|
+
- 支持会议扩展期刊与 rebuttal 工作流
|
|
25
|
+
|
|
26
|
+
## 端到端自治科研系统
|
|
27
|
+
|
|
28
|
+
以下是基于公开仓库、论文、demo 与公开报道整理的保守快照,检查日期为 `2026/03/23`。打勾表示该能力在公开材料中被清晰呈现为一等能力,而不是用户自行拼装后才可能实现。
|
|
29
|
+
|
|
30
|
+
| 系统 | 系统类型 | E2E | Research Map | Workshop | Keeps Growing | Channels | Figure & Rebuttal & Review |
|
|
31
|
+
|---|---|---|---|---|---|---|---|
|
|
32
|
+
| [autoresearch](https://github.com/karpathy/autoresearch) | Open-source | | | ✓ | | | |
|
|
33
|
+
| [RD-Agent](https://github.com/microsoft/RD-Agent) | Open-source | | | | ✓ | | |
|
|
34
|
+
| [Agent Laboratory](https://github.com/SamuelSchmidgall/AgentLaboratory) | Open-source | ✓ | | ✓ | ✓ | | |
|
|
35
|
+
| [AI-Scientist](https://github.com/SakanaAI/AI-Scientist) | Open-source | ✓ | | | | | |
|
|
36
|
+
| [AI-Scientist-v2](https://github.com/SakanaAI/AI-Scientist-v2) | Open-source | ✓ | | | | | |
|
|
37
|
+
| [AutoResearchClaw](https://github.com/aiming-lab/AutoResearchClaw) | Open-source | ✓ | | | ✓ | ✓ | |
|
|
38
|
+
| [ClawPhD](https://github.com/ZhihaoAIRobotic/ClawPhD) | Open-source | | | ✓ | | ✓ | |
|
|
39
|
+
| [Dr. Claw](https://github.com/OpenLAIR/dr-claw) | Open-source | ✓ | | ✓ | | ✓ | |
|
|
40
|
+
| [FARS](https://analemma.ai/fars/) | Closed-source | ✓ | | | | | |
|
|
41
|
+
| [EvoScientist](https://github.com/EvoScientist/EvoScientist) | Open-source | ✓ | | ✓ | ✓ | ✓ | |
|
|
42
|
+
| [PaperClaw](https://github.com/meowscles69/PaperClaw) | Open-source | | | | | | ✓ |
|
|
43
|
+
| [ScienceClaw](https://github.com/beita6969/ScienceClaw) | Open-source | | | | ✓ | ✓ | |
|
|
44
|
+
| [claude-scholar](https://github.com/Galaxy-Dawn/claude-scholar) | Open-source | ✓ | | ✓ | ✓ | | |
|
|
45
|
+
| [Research-Claw](https://github.com/wentorai/Research-Claw) | Open-source | ✓ | | ✓ | ✓ | ✓ | |
|
|
46
|
+
| [DeepScientist](https://github.com/ResearAI/DeepScientist) | Open-source | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
|
|
47
|
+
|
|
48
|
+
列含义:
|
|
49
|
+
|
|
50
|
+
- `系统类型`:系统本体是开源还是闭源。
|
|
51
|
+
- `E2E`:是否覆盖从想法或文献到实验与写作的完整链路。
|
|
52
|
+
- `Research Map`:是否把研究过程显式组织成可回看的地图,而不只是日志或聊天记录。
|
|
53
|
+
- `Workshop`:人类是否可以随时接管、改计划、改代码、跑命令、继续推进。
|
|
54
|
+
- `Keeps Growing`:后续轮次是否能基于持久记忆、经验与产物持续累积。
|
|
55
|
+
- `Channels`:是否能通过消息或会议式外部协作面持续推进同一研究会话。
|
|
56
|
+
- `Figure & Rebuttal & Review`:是否把图表生成、审稿、rebuttal 或 review 工作流做成明确能力。
|
|
57
|
+
|
|
58
|
+
## 动态
|
|
59
|
+
|
|
60
|
+
- `2026/03/24`:DeepScientist 正式发布 `v1.5` 版本。
|
|
61
|
+
- `2026/02/01`:DeepScientist 论文已上线 [OpenReview](https://openreview.net/forum?id=cZFgsLq8Gs),对应 `ICLR 2026`。
|
|
62
|
+
|
|
63
|
+
## ResearAI 相关项目
|
|
64
|
+
|
|
65
|
+
这里聚焦与 DeepScientist 关联最强的一组 AI Scientist 与 AutoFigure 项目。
|
|
66
|
+
|
|
67
|
+
| 项目 | 用途 |
|
|
68
|
+
|---|---|
|
|
69
|
+
| [AutoFigure](https://github.com/ResearAI/AutoFigure) | 生成论文级图像 |
|
|
70
|
+
| [AutoFigure-Edit](https://github.com/ResearAI/AutoFigure-Edit) | 可编辑矢量论文图 |
|
|
71
|
+
| [DeepReviewer-v2](https://github.com/ResearAI/DeepReviewer-v2) | 审稿与论文建议 |
|
|
72
|
+
| [Awesome-AI-Scientist](https://github.com/ResearAI/Awesome-AI-Scientist) | AI Scientist 导航 |
|
|
73
|
+
|
|
74
|
+
这页的目标很简单:帮你最快找到该看的那篇文档。
|
|
75
|
+
|
|
76
|
+
## 如果你是第一次使用
|
|
77
|
+
|
|
78
|
+
- [00 快速开始](./00_QUICK_START.md)
|
|
79
|
+
从安装、启动,到创建第一个项目,先看这一篇。
|
|
80
|
+
- [12 引导式工作流教程](./12_GUIDED_WORKFLOW_TOUR.md)
|
|
81
|
+
按真实产品流程,逐步理解从首页到工作区应该怎么使用。
|
|
82
|
+
- [02 Start Research 参考](./02_START_RESEARCH_GUIDE.md)
|
|
83
|
+
如果你想真正理解 `Start Research` 弹窗里每个字段该怎么填、会提交什么,就接着看这篇。
|
|
84
|
+
|
|
85
|
+
## 如果你想把项目启动得更稳
|
|
86
|
+
|
|
87
|
+
- [02 Start Research 参考](./02_START_RESEARCH_GUIDE.md)
|
|
88
|
+
解释当前前端字段、自动推导合同字段,以及实际可照抄的例子。
|
|
89
|
+
- [01 设置参考](./01_SETTINGS_REFERENCE.md)
|
|
90
|
+
当你需要配置 runner、connector、运行时默认值或主目录路径时,看这一篇。
|
|
91
|
+
- [11 协议与风险说明](./11_LICENSE_AND_RISK.md)
|
|
92
|
+
如果你关心开源协议、责任边界、服务器安全、结果伪造风险和 connector 泄露风险,先看这一篇。
|
|
93
|
+
|
|
94
|
+
## 如果你想通过外部协作面继续推进
|
|
95
|
+
|
|
96
|
+
- [10 微信连接器指南](./10_WEIXIN_CONNECTOR_GUIDE.md)
|
|
97
|
+
适合通过 DeepScientist 内置扫码流程,把个人微信直接绑定进来。
|
|
98
|
+
- [03 QQ 连接器指南](./03_QQ_CONNECTOR_GUIDE.md)
|
|
99
|
+
适合把 QQ 当作日常协作、里程碑通知和命令入口。
|
|
100
|
+
- [04 灵珠 / Rokid 指南](./04_LINGZHU_CONNECTOR_GUIDE.md)
|
|
101
|
+
适合绑定灵珠 / Rokid Glasses。
|
|
102
|
+
|
|
103
|
+
## 如果你想理解系统是怎么工作的
|
|
104
|
+
|
|
105
|
+
- [13 核心架构说明](./13_CORE_ARCHITECTURE_GUIDE.md)
|
|
106
|
+
先看这篇,理解 launcher、daemon、quest、Canvas、memory 与 connector 是怎样拼起来的。
|
|
107
|
+
- [14 Prompt、Skills 与 MCP 指南](./14_PROMPT_SKILLS_AND_MCP_GUIDE.md)
|
|
108
|
+
适合你想直接弄清楚每轮 prompt 组装顺序、各个 skill 分工,以及内建 MCP 工具家族结构的时候阅读。
|
|
109
|
+
- [06 Runtime 与 Canvas](./06_RUNTIME_AND_CANVAS.md)
|
|
110
|
+
说明 daemon、工作区、canvas 和 connector 视图之间的关系。
|
|
111
|
+
- [07 Memory 与 MCP](./07_MEMORY_AND_MCP.md)
|
|
112
|
+
说明 memory、artifact 和内置 MCP 的行为。
|
|
113
|
+
|
|
114
|
+
## 如果你遇到了问题
|
|
115
|
+
|
|
116
|
+
- [09 启动诊断](./09_DOCTOR.md)
|
|
117
|
+
启动诊断、排查常见运行问题,先看这篇。
|
|
118
|
+
- [01 设置参考](./01_SETTINGS_REFERENCE.md)
|
|
119
|
+
如果问题可能和配置、凭据或 connector 有关,再查这篇。
|
|
120
|
+
|
|
121
|
+
## 如果你在维护 DeepScientist
|
|
122
|
+
|
|
123
|
+
- [90 Architecture](../en/90_ARCHITECTURE.md)
|
|
124
|
+
说明系统级约束、核心契约和仓库结构。
|
|
125
|
+
- [91 Development](../en/91_DEVELOPMENT.md)
|
|
126
|
+
面向维护者的开发工作流和实现说明。
|
package/install.sh
CHANGED
|
@@ -421,40 +421,6 @@ write_global_wrapper() {
|
|
|
421
421
|
cat >"$target_path" <<EOF
|
|
422
422
|
#!/usr/bin/env bash
|
|
423
423
|
set -euo pipefail
|
|
424
|
-
WRAPPER_PATH="\${BASH_SOURCE[0]}"
|
|
425
|
-
WRAPPER_DIR="\$(cd "\$(dirname "\$WRAPPER_PATH")" && pwd)"
|
|
426
|
-
PREFERRED_COMMAND="$command_name"
|
|
427
|
-
LOOKUP_PATH=""
|
|
428
|
-
OLD_IFS="\$IFS"
|
|
429
|
-
IFS=:
|
|
430
|
-
for ENTRY in \$PATH; do
|
|
431
|
-
if [ -z "\$ENTRY" ]; then
|
|
432
|
-
continue
|
|
433
|
-
fi
|
|
434
|
-
ENTRY_REAL="\$ENTRY"
|
|
435
|
-
if ENTRY_CANONICAL="\$(cd "\$ENTRY" 2>/dev/null && pwd)"; then
|
|
436
|
-
ENTRY_REAL="\$ENTRY_CANONICAL"
|
|
437
|
-
fi
|
|
438
|
-
if [ "\$ENTRY_REAL" = "\$WRAPPER_DIR" ]; then
|
|
439
|
-
continue
|
|
440
|
-
fi
|
|
441
|
-
if [ -z "\$LOOKUP_PATH" ]; then
|
|
442
|
-
LOOKUP_PATH="\$ENTRY"
|
|
443
|
-
else
|
|
444
|
-
LOOKUP_PATH="\$LOOKUP_PATH:\$ENTRY"
|
|
445
|
-
fi
|
|
446
|
-
done
|
|
447
|
-
IFS="\$OLD_IFS"
|
|
448
|
-
if [ -n "\$LOOKUP_PATH" ]; then
|
|
449
|
-
if RESOLVED_LAUNCHER="\$(PATH="\$LOOKUP_PATH" command -v "\$PREFERRED_COMMAND" 2>/dev/null)"; then
|
|
450
|
-
if [ -n "\$RESOLVED_LAUNCHER" ] && [ "\$RESOLVED_LAUNCHER" != "\$WRAPPER_PATH" ]; then
|
|
451
|
-
if [ -z "\${DEEPSCIENTIST_HOME:-}" ]; then
|
|
452
|
-
export DEEPSCIENTIST_HOME="$BASE_DIR"
|
|
453
|
-
fi
|
|
454
|
-
exec "\$RESOLVED_LAUNCHER" "\$@"
|
|
455
|
-
fi
|
|
456
|
-
fi
|
|
457
|
-
fi
|
|
458
424
|
if [ -z "\${DEEPSCIENTIST_HOME:-}" ]; then
|
|
459
425
|
export DEEPSCIENTIST_HOME="$BASE_DIR"
|
|
460
426
|
fi
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@researai/deepscientist",
|
|
3
|
-
"version": "1.5.
|
|
4
|
-
"description": "
|
|
5
|
-
"license": "
|
|
3
|
+
"version": "1.5.11",
|
|
4
|
+
"description": "DeepScientist is not just a fully open-source autonomous scientific discovery system. It is also a research map that keeps growing from every round.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
6
|
"files": [
|
|
7
7
|
"AGENTS.md",
|
|
8
8
|
"README.md",
|