@researai/deepscientist 1.5.15 → 1.5.16

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 (193) hide show
  1. package/README.md +336 -98
  2. package/bin/ds.js +691 -91
  3. package/docs/en/00_QUICK_START.md +36 -15
  4. package/docs/en/01_SETTINGS_REFERENCE.md +33 -0
  5. package/docs/en/02_START_RESEARCH_GUIDE.md +7 -0
  6. package/docs/en/05_TUI_GUIDE.md +6 -0
  7. package/docs/en/06_RUNTIME_AND_CANVAS.md +4 -3
  8. package/docs/en/09_DOCTOR.md +11 -5
  9. package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +63 -13
  10. package/docs/en/15_CODEX_PROVIDER_SETUP.md +25 -8
  11. package/docs/en/19_EXTERNAL_CONTROLLER_GUIDE.md +226 -0
  12. package/docs/en/19_LOCAL_BROWSER_AUTH.md +70 -0
  13. package/docs/en/20_WORKSPACE_MODES_GUIDE.md +250 -0
  14. package/docs/en/README.md +18 -0
  15. package/docs/zh/00_QUICK_START.md +36 -15
  16. package/docs/zh/01_SETTINGS_REFERENCE.md +33 -0
  17. package/docs/zh/02_START_RESEARCH_GUIDE.md +7 -0
  18. package/docs/zh/05_TUI_GUIDE.md +6 -0
  19. package/docs/zh/09_DOCTOR.md +11 -5
  20. package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +63 -13
  21. package/docs/zh/15_CODEX_PROVIDER_SETUP.md +25 -8
  22. package/docs/zh/19_EXTERNAL_CONTROLLER_GUIDE.md +226 -0
  23. package/docs/zh/19_LOCAL_BROWSER_AUTH.md +68 -0
  24. package/docs/zh/20_WORKSPACE_MODES_GUIDE.md +251 -0
  25. package/docs/zh/README.md +18 -0
  26. package/package.json +1 -1
  27. package/pyproject.toml +1 -1
  28. package/src/deepscientist/__init__.py +1 -1
  29. package/src/deepscientist/acp/envelope.py +6 -0
  30. package/src/deepscientist/artifact/service.py +647 -22
  31. package/src/deepscientist/bash_exec/service.py +234 -9
  32. package/src/deepscientist/cli.py +115 -19
  33. package/src/deepscientist/codex_cli_compat.py +232 -0
  34. package/src/deepscientist/config/models.py +2 -1
  35. package/src/deepscientist/config/service.py +31 -9
  36. package/src/deepscientist/daemon/api/handlers.py +125 -6
  37. package/src/deepscientist/daemon/api/router.py +4 -0
  38. package/src/deepscientist/daemon/app.py +715 -98
  39. package/src/deepscientist/gitops/__init__.py +10 -1
  40. package/src/deepscientist/gitops/diff.py +129 -0
  41. package/src/deepscientist/gitops/service.py +4 -1
  42. package/src/deepscientist/mcp/server.py +39 -0
  43. package/src/deepscientist/prompts/builder.py +255 -32
  44. package/src/deepscientist/quest/layout.py +15 -2
  45. package/src/deepscientist/quest/service.py +295 -43
  46. package/src/deepscientist/quest/stage_views.py +6 -1
  47. package/src/deepscientist/runners/codex.py +86 -31
  48. package/src/deepscientist/skills/__init__.py +2 -2
  49. package/src/deepscientist/skills/installer.py +196 -5
  50. package/src/deepscientist/skills/registry.py +66 -0
  51. package/src/prompts/connectors/qq.md +18 -8
  52. package/src/prompts/connectors/weixin.md +16 -6
  53. package/src/prompts/contracts/shared_interaction.md +12 -1
  54. package/src/prompts/system.md +10 -5
  55. package/src/prompts/system_copilot.md +43 -0
  56. package/src/skills/analysis-campaign/SKILL.md +1 -0
  57. package/src/skills/baseline/SKILL.md +8 -0
  58. package/src/skills/decision/SKILL.md +8 -0
  59. package/src/skills/experiment/SKILL.md +8 -0
  60. package/src/skills/figure-polish/SKILL.md +1 -0
  61. package/src/skills/finalize/SKILL.md +1 -0
  62. package/src/skills/idea/SKILL.md +1 -0
  63. package/src/skills/intake-audit/SKILL.md +8 -0
  64. package/src/skills/mentor/SKILL.md +217 -0
  65. package/src/skills/mentor/references/correction-rules.md +210 -0
  66. package/src/skills/mentor/references/knowledge-profile.md +91 -0
  67. package/src/skills/mentor/references/persona-profile.md +138 -0
  68. package/src/skills/mentor/references/taste-profile.md +128 -0
  69. package/src/skills/mentor/references/thought-style-profile.md +138 -0
  70. package/src/skills/mentor/references/work-profile.md +289 -0
  71. package/src/skills/mentor/references/workflow-profile.md +240 -0
  72. package/src/skills/optimize/SKILL.md +1 -0
  73. package/src/skills/rebuttal/SKILL.md +1 -0
  74. package/src/skills/review/SKILL.md +1 -0
  75. package/src/skills/scout/SKILL.md +8 -0
  76. package/src/skills/write/SKILL.md +1 -0
  77. package/src/tui/dist/app/AppContainer.js +19 -11
  78. package/src/tui/dist/index.js +4 -1
  79. package/src/tui/dist/lib/api.js +33 -3
  80. package/src/tui/package.json +1 -1
  81. package/src/ui/dist/assets/AiManusChatView-COFACy7V.js +204 -0
  82. package/src/ui/dist/assets/AnalysisPlugin-DnSm0GZn.js +1 -0
  83. package/src/ui/dist/assets/CliPlugin-CvwCmDQ5.js +109 -0
  84. package/src/ui/dist/assets/CodeEditorPlugin-cOqSa0xq.js +2 -0
  85. package/src/ui/dist/assets/CodeViewerPlugin-itb0tltR.js +270 -0
  86. package/src/ui/dist/assets/DocViewerPlugin-DqKkiCI6.js +7 -0
  87. package/src/ui/dist/assets/GitCommitViewerPlugin-DVgNHBCS.js +1 -0
  88. package/src/ui/dist/assets/GitDiffViewerPlugin-DxL2ezFG.js +6 -0
  89. package/src/ui/dist/assets/GitSnapshotViewer-B_RQm1YZ.js +30 -0
  90. package/src/ui/dist/assets/ImageViewerPlugin-tHqlXY3n.js +26 -0
  91. package/src/ui/dist/assets/LabCopilotPanel-ClMbq5Yu.js +14 -0
  92. package/src/ui/dist/assets/LabPlugin-L_SuE8ow.js +22 -0
  93. package/src/ui/dist/assets/LatexPlugin-B495DTXC.js +25 -0
  94. package/src/ui/dist/assets/MarkdownViewerPlugin-DG28-61B.js +128 -0
  95. package/src/ui/dist/assets/MarketplacePlugin-BiOGT-Kj.js +13 -0
  96. package/src/ui/dist/assets/{NotebookEditor-CccQYZjX.css → NotebookEditor-BHH8rdGj.css} +1 -1
  97. package/src/ui/dist/assets/NotebookEditor-BOr3x3Ej.css +1 -0
  98. package/src/ui/dist/assets/NotebookEditor-C-4Kt1p9.js +81 -0
  99. package/src/ui/dist/assets/NotebookEditor-CVsj8h_T.js +361 -0
  100. package/src/ui/dist/assets/PdfLoader-CASDQmxJ.js +16 -0
  101. package/src/ui/dist/assets/PdfLoader-Cy5jtWrr.css +1 -0
  102. package/src/ui/dist/assets/PdfMarkdownPlugin-BFhwoKsY.js +1 -0
  103. package/src/ui/dist/assets/PdfViewerPlugin-DcOzU9vd.js +17 -0
  104. package/src/ui/dist/assets/PdfViewerPlugin-nwwE-fjJ.css +1 -0
  105. package/src/ui/dist/assets/SearchPlugin-CHj7M58O.js +16 -0
  106. package/src/ui/dist/assets/SearchPlugin-DA4en4hK.css +1 -0
  107. package/src/ui/dist/assets/TextViewerPlugin-CB4DYfWO.js +54 -0
  108. package/src/ui/dist/assets/VNCViewer-CjlbyCB3.js +11 -0
  109. package/src/ui/dist/assets/bot-CFkZY-JP.js +6 -0
  110. package/src/ui/dist/assets/browser-CTB2jwNe.js +8 -0
  111. package/src/ui/dist/assets/chevron-up-Dq5ofbht.js +6 -0
  112. package/src/ui/dist/assets/code-DLC6G24T.js +6 -0
  113. package/src/ui/dist/assets/file-content-Dv4LoZec.js +1 -0
  114. package/src/ui/dist/assets/file-diff-panel-Denq-lC3.js +1 -0
  115. package/src/ui/dist/assets/file-jump-queue-DA-SdG__.js +1 -0
  116. package/src/ui/dist/assets/file-socket-Cu4Qln7Y.js +1 -0
  117. package/src/ui/dist/assets/git-commit-horizontal-BUh6G52n.js +6 -0
  118. package/src/ui/dist/assets/image-B9HUUddG.js +6 -0
  119. package/src/ui/dist/assets/index-B2B1sg-M.js +1 -0
  120. package/src/ui/dist/assets/index-Cgla8biy.css +33 -0
  121. package/src/ui/dist/assets/index-DRyx7vAc.js +1 -0
  122. package/src/ui/dist/assets/index-Gbl53BNp.js +2496 -0
  123. package/src/ui/dist/assets/index-wQ7RIIRd.js +11 -0
  124. package/src/ui/dist/assets/monaco-CiHMMNH_.js +1 -0
  125. package/src/ui/dist/assets/pdf-effect-queue-ZtnHFCAi.js +6 -0
  126. package/src/ui/dist/assets/plugin-monaco-C8UgLomw.js +19 -0
  127. package/src/ui/dist/assets/plugin-notebook-HbW2K-1c.js +169 -0
  128. package/src/ui/dist/assets/plugin-pdf-CR8hgQBV.js +357 -0
  129. package/src/ui/dist/assets/plugin-terminal-MXFIPun8.js +227 -0
  130. package/src/ui/dist/assets/popover-DL6h35vr.js +1 -0
  131. package/src/ui/dist/assets/project-sync-CsX08Qno.js +1 -0
  132. package/src/ui/dist/assets/select-DvmXt1yY.js +11 -0
  133. package/src/ui/dist/assets/sigma-7jpXazui.js +6 -0
  134. package/src/ui/dist/assets/trash-xA7kFt8i.js +11 -0
  135. package/src/ui/dist/assets/useCliAccess-DsMwDjOp.js +1 -0
  136. package/src/ui/dist/assets/useFileDiffOverlay-FuhcnKiw.js +1 -0
  137. package/src/ui/dist/assets/wrap-text-CwMn-iqb.js +11 -0
  138. package/src/ui/dist/assets/zoom-out-R-GWEhzS.js +11 -0
  139. package/src/ui/dist/index.html +5 -2
  140. package/src/ui/dist/assets/AiManusChatView-DDjbFnbt.js +0 -26597
  141. package/src/ui/dist/assets/AnalysisPlugin-Yb5IdmaU.js +0 -123
  142. package/src/ui/dist/assets/CliPlugin-e64sreyu.js +0 -31037
  143. package/src/ui/dist/assets/CodeEditorPlugin-C4D2TIkU.js +0 -427
  144. package/src/ui/dist/assets/CodeViewerPlugin-BVoNZIvC.js +0 -905
  145. package/src/ui/dist/assets/DocViewerPlugin-CLChbllo.js +0 -278
  146. package/src/ui/dist/assets/GitDiffViewerPlugin-C4xeFyFQ.js +0 -2661
  147. package/src/ui/dist/assets/ImageViewerPlugin-OiMUAcLi.js +0 -500
  148. package/src/ui/dist/assets/LabCopilotPanel-BjD2ThQF.js +0 -4104
  149. package/src/ui/dist/assets/LabPlugin-DQPg-NrB.js +0 -2677
  150. package/src/ui/dist/assets/LatexPlugin-CI05XAV9.js +0 -1792
  151. package/src/ui/dist/assets/MarkdownViewerPlugin-DpeBLYZf.js +0 -308
  152. package/src/ui/dist/assets/MarketplacePlugin-DolE58Q2.js +0 -413
  153. package/src/ui/dist/assets/NotebookEditor-7Qm2rSWD.js +0 -4214
  154. package/src/ui/dist/assets/NotebookEditor-C1kWaxKi.js +0 -84873
  155. package/src/ui/dist/assets/NotebookEditor-C3VQ7ylN.css +0 -1405
  156. package/src/ui/dist/assets/PdfLoader-BfOHw8Zw.js +0 -25468
  157. package/src/ui/dist/assets/PdfLoader-C-Y707R3.css +0 -49
  158. package/src/ui/dist/assets/PdfMarkdownPlugin-BulDREv1.js +0 -409
  159. package/src/ui/dist/assets/PdfViewerPlugin-C-daaOaL.js +0 -3095
  160. package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +0 -3627
  161. package/src/ui/dist/assets/SearchPlugin-CjpaiJ3A.js +0 -741
  162. package/src/ui/dist/assets/SearchPlugin-DDMrGDkh.css +0 -379
  163. package/src/ui/dist/assets/TextViewerPlugin-BxIyqPQC.js +0 -472
  164. package/src/ui/dist/assets/VNCViewer-HAg9mF7M.js +0 -18821
  165. package/src/ui/dist/assets/awareness-C0NPR2Dj.js +0 -292
  166. package/src/ui/dist/assets/bot-0DYntytV.js +0 -21
  167. package/src/ui/dist/assets/browser-BAcuE0Xj.js +0 -2895
  168. package/src/ui/dist/assets/code-B20Slj_w.js +0 -17
  169. package/src/ui/dist/assets/file-content-DT24KFma.js +0 -377
  170. package/src/ui/dist/assets/file-diff-panel-DK13YPql.js +0 -92
  171. package/src/ui/dist/assets/file-jump-queue-r5XKgJEV.js +0 -16
  172. package/src/ui/dist/assets/file-socket-B4T2o4nR.js +0 -58
  173. package/src/ui/dist/assets/function-B5QZkkHC.js +0 -1895
  174. package/src/ui/dist/assets/image-DSeR_sDS.js +0 -18
  175. package/src/ui/dist/assets/index-BrFje2Uk.js +0 -120
  176. package/src/ui/dist/assets/index-BwRJaoTl.js +0 -25
  177. package/src/ui/dist/assets/index-D_E4281X.js +0 -221322
  178. package/src/ui/dist/assets/index-DnYB3xb1.js +0 -159
  179. package/src/ui/dist/assets/index-G7AcWcMu.css +0 -12594
  180. package/src/ui/dist/assets/monaco-LExaAN3Y.js +0 -623
  181. package/src/ui/dist/assets/pdf-effect-queue-BJk5okWJ.js +0 -47
  182. package/src/ui/dist/assets/pdf_viewer-e0g1is2C.js +0 -8206
  183. package/src/ui/dist/assets/popover-D3Gg_FoV.js +0 -476
  184. package/src/ui/dist/assets/project-sync-C_ygLlVU.js +0 -297
  185. package/src/ui/dist/assets/select-CpAK6uWm.js +0 -1690
  186. package/src/ui/dist/assets/sigma-DEccaSgk.js +0 -22
  187. package/src/ui/dist/assets/square-check-big-uUfyVsbD.js +0 -17
  188. package/src/ui/dist/assets/trash-CXvwwSe8.js +0 -32
  189. package/src/ui/dist/assets/useCliAccess-Bnop4mgR.js +0 -957
  190. package/src/ui/dist/assets/useFileDiffOverlay-B8eUAX0I.js +0 -53
  191. package/src/ui/dist/assets/wrap-text-9vbOBpkW.js +0 -35
  192. package/src/ui/dist/assets/yjs-DncrqiZ8.js +0 -11243
  193. package/src/ui/dist/assets/zoom-out-BgVMmOW4.js +0 -34
@@ -13,7 +13,7 @@
13
13
 
14
14
  本文中的截图直接使用当前在线页面 `deepscientist.cc:20999` 作为示例。你本地运行后的页面 `127.0.0.1:20999` 通常会与它保持一致或非常接近。
15
15
 
16
- 当前平台支持:DeepScientist 目前完整支持 Linux 和 macOS。原生 Windows 支持目前仍处于实验阶段;如果你希望获得最接近 Linux 的终端行为,仍然建议优先使用 WSL2。
16
+ 当前平台支持:DeepScientist 目前完整支持 Linux 和 macOS。原生 Windows 支持目前仍处于实验阶段(强烈建议优先使用 WSL2,尤其是在你希望获得最接近 Linux 的终端行为时)。
17
17
 
18
18
  ## 安全建议:先隔离,再启动
19
19
 
@@ -60,7 +60,7 @@
60
60
 
61
61
  ## 1. 先安装 Node.js,再安装 DeepScientist
62
62
 
63
- DeepScientist 目前完整支持 Linux 和 macOS。原生 Windows 支持目前仍处于实验阶段;如果你希望获得更接近 Linux 的 shell 行为,仍然建议优先使用 WSL2。
63
+ DeepScientist 目前完整支持 Linux 和 macOS。原生 Windows 支持目前仍处于实验阶段(强烈建议优先使用 WSL2,尤其是在你希望获得更稳定、更接近 Linux 的 shell 行为时)。
64
64
 
65
65
  在安装 DeepScientist 本身之前,请先从 Node.js 官方页面安装 Node.js:
66
66
 
@@ -85,6 +85,15 @@ DeepScientist 依赖一个可用的 Codex CLI。它会优先使用你机器上
85
85
  npm install -g @openai/codex
86
86
  ```
87
87
 
88
+ 最稳妥的做法是立刻验证命令是否真的可用:
89
+
90
+ ```bash
91
+ which codex
92
+ codex --login
93
+ ```
94
+
95
+ 如果 `which codex` 没有输出,问题通常不是 DeepScientist 本身,而是 npm 全局 bin 目录没有正确进入 shell 的 PATH。先修复 PATH,再重新执行 `npm install -g @openai/codex`。
96
+
88
97
  如果你后面还要在本地编译论文 PDF,可以再运行:
89
98
 
90
99
  ```bash
@@ -148,18 +157,21 @@ ds --codex /absolute/path/to/codex --codex-profile m27
148
157
 
149
158
  这里的 `m27` 是本仓库统一使用的 MiniMax profile 示例名。MiniMax 官方页面当前示例名是 `m21`,但 profile 名只是本地别名;如果你自己用了别的名字,就把命令里的名字一起改掉。
150
159
 
151
- DeepScientist 会在启动前强制做一次真实的 Codex hello 探测。默认情况下,`~/DeepScientist/config/runners.yaml` 里的 runner 模型还是 `gpt-5.4`。如果你的 profile 希望模型由 profile 自己决定,请把 `runners.yaml` 里的 `model` 改成 `inherit`;或者直接使用 `--codex-profile <name>`,让这一轮启动自动继承 profile 对应的模型。
160
+ DeepScientist 会在启动前强制做一次真实的 Codex hello 探测。当前 `~/DeepScientist/config/runners.yaml` 里的默认 runner 模型已经是 `inherit`。如果你的旧配置里还固定写着某个显式模型,而你的 provider 又希望模型由 profile 自己决定,请把 `model` 改成 `inherit`;或者直接使用 `--codex-profile <name>`,让这一轮启动自动继承 profile 对应的模型。
152
161
 
153
162
  MiniMax 额外说明:
154
163
 
155
164
  - 如果当前最新版 `@openai/codex` 和 MiniMax 走不通,直接安装 `npm install -g @openai/codex@0.57.0`
165
+ - 如果 DeepScientist 在启动时检测到 MiniMax profile,但当前 Codex CLI 不是 `0.57.0`,现在会在交互式终端里主动提示是否自动安装 `0.57.0`
156
166
  - 先创建 MiniMax `Coding Plan Key`
157
- - 在当前 shell 里先执行 `unset OPENAI_API_KEY` 和 `unset OPENAI_BASE_URL`
167
+ - 如果你要单独在终端里验证 `codex --profile <name>`,先在当前 shell 里执行 `unset OPENAI_API_KEY` 和 `unset OPENAI_BASE_URL`
158
168
  - 使用 `https://api.minimaxi.com/v1`
159
169
  - MiniMax 官方 Codex CLI 页面当前给出的 `codex-MiniMax-*` 模型名,在本地用提供的 key 实测并不能稳定通过 Codex CLI
160
- - 当前本地实测可用的模型名是 `MiniMax-M2.7`
170
+ - 当前本地实测可用于 DeepScientist 的模型名是 `MiniMax-M2.7` 和 `MiniMax-M2.5`
171
+ - 如果你要走 `m25`,请使用 `MiniMax-M2.5`,不要写成 `codex-MiniMax-M2.5`
161
172
  - DeepScientist 现在可以在 probe 和运行时自动适配 MiniMax profile-only 的 `model_provider` / `model` 配置形态
162
- - 如果你还希望终端里的 `codex --profile <name>` 也直接可用,再在 `~/.codex/config.toml` 顶层补上 `model_provider = "minimax"` `model = "MiniMax-M2.7"`
173
+ - provider 设置了 `requires_openai_auth = false` 时,DeepScientist 也会自动移除冲突的 `OPENAI_*` 认证环境变量
174
+ - 如果你还希望终端里的 `codex --profile <name>` 也直接可用,再在 `~/.codex/config.toml` 顶层补上 `model_provider = "minimax"`,以及对应的顶层 `model`,例如 `MiniMax-M2.7` 或 `MiniMax-M2.5`
163
175
  - 当 DeepScientist 检测到旧版 Codex CLI 不支持 `xhigh` 时,会自动把它降级成 `high`
164
176
 
165
177
  ## 3. 启动本地运行时
@@ -200,13 +212,14 @@ ds --port 21000
200
212
 
201
213
  这会把网页界面放到 `21000` 端口。
202
214
 
203
- 默认情况下,本地网页地址是:
215
+ 默认情况下,DeepScientist 启动时不会开启本地浏览器密码门禁。
204
216
 
205
- ```text
206
- http://127.0.0.1:20999
207
- ```
208
-
209
- 如果浏览器没有自动打开,就手动访问这个地址。
217
+ - 如果浏览器没有自动打开,就手动访问普通本地地址,例如 `http://127.0.0.1:20999`
218
+ - 如果你想在某次启动里启用本地浏览器密码,可以用 `ds --auth true`
219
+ - 在启用密码模式的启动中,终端会直接打印这次启动生成的密码
220
+ - 如果当前浏览器还没有登录,本地首页会先弹出密码框,再继续显示后续界面
221
+ - 第一次成功进入后,浏览器会保存这次本地登录,之后再次访问通常不需要重复输入
222
+ - 如果你之后忘了某次启用密码启动的密码,可以回到启动终端查看,或者执行 `ds --status`
210
223
 
211
224
  ## 4. 打开首页
212
225
 
@@ -220,10 +233,18 @@ http://127.0.0.1:20999
220
233
 
221
234
  你最先会看到两个入口:
222
235
 
223
- - `Start Research`:创建一个新项目,并立刻开始新的研究任务
236
+ - `Start Research` 或 `Start Experiment`:进入新项目创建流程
224
237
  - `Open Project`:重新打开已有项目
225
238
 
226
- 第一次使用时,先点击 `Start Research`。
239
+ 第一次使用时,先点击 `Start Research` 或 `Start Experiment`。
240
+
241
+ 这里有一个重要变化:
242
+
243
+ - 现在系统会先让你选择启动方式
244
+ - `Copilot`:先创建一个安静待命的项目,等你发第一条明确指令
245
+ - `Autonomous`:标准版 DeepScientist,创建后直接开始推进
246
+
247
+ 如果你还不确定该选哪一个,先看 [20 工作区模式指南](./20_WORKSPACE_MODES_GUIDE.md)。
227
248
 
228
249
  ## 5. 用一个真实示例创建第一个项目
229
250
 
@@ -236,7 +257,7 @@ http://127.0.0.1:20999
236
257
  - 研究在混合正确 / 错误社会信号下,如何实现更强的 truth-preserving collaboration
237
258
  - 使用两个本地推理端点提高吞吐量
238
259
 
239
- 点击 `Start Research`,打开启动弹窗。
260
+ 点击 `Start Research` / `Start Experiment`,然后选择 `Autonomous Mode`,再进入下面这条标准创建流程。
240
261
 
241
262
  ![Start Research 弹窗](../images/quickstart/01-start-research.png)
242
263
 
@@ -52,6 +52,7 @@ daemon:
52
52
  ui:
53
53
  host: 0.0.0.0
54
54
  port: 20999
55
+ auth_enabled: false
55
56
  auto_open_browser: true
56
57
  default_mode: both
57
58
  logging:
@@ -172,6 +173,17 @@ acp:
172
173
  - 作用:本地 UI 服务监听端口。
173
174
  - 何时修改:端口冲突时。
174
175
 
176
+ **`ui.auth_enabled`**
177
+
178
+ - 类型:`boolean`
179
+ - 默认值:`false`
180
+ - 页面标签:`Require local password`
181
+ - 作用:为 Web 工作区和所有 `/api/*` 路由启用本地 16 位浏览器访问密码。
182
+ - 行为:
183
+ - `true`:`ds` 会在终端打印这次启动生成的密码;如果浏览器里没有有效登录态,就必须先输入密码;登录成功后会在浏览器中持久化。
184
+ - `false`:关闭本地密码门禁,保持普通本地地址直连行为。
185
+ - CLI 覆盖:`ds --auth true` 或 `ds --auth false`
186
+
175
187
  **`ui.auto_open_browser`**
176
188
 
177
189
  - 类型:`boolean`
@@ -274,6 +286,7 @@ acp:
274
286
  - 默认值:`true`
275
287
  - 页面标签:`Sync project skills on create`
276
288
  - 作用:创建项目时,把技能镜像到项目本地 `.codex/skills` / `.claude/agents`。
289
+ - Prompt 说明:同时会初始化 quest 本地的受管 prompt 镜像 `.codex/prompts/`。
277
290
 
278
291
  **`skills.sync_quest_on_open`**
279
292
 
@@ -281,6 +294,26 @@ acp:
281
294
  - 默认值:`true`
282
295
  - 页面标签:`Sync project skills on open`
283
296
  - 作用:打开已有项目时刷新本地技能镜像。
297
+ - Prompt 说明:会刷新当前 DeepScientist home 下已发现 quest 的本地技能与 prompt 镜像。
298
+
299
+ 受管 prompt 行为:
300
+
301
+ - `.codex/prompts/` 现在应被视为“当前 active prompt 树”的受管副本,而不是长期手工维护的 override。
302
+ - 每次真实 runner turn 开始前,DeepScientist 都会把 quest 本地 active prompt 树和仓库当前 `src/prompts/` 做比较,并自动修复漂移。
303
+ - 如果 active prompt 树与仓库源不同,系统会先把旧树备份到 `.codex/prompt_versions/<backup_id>/`,再写入新的 active 副本。
304
+ - 这个运行前同步是针对“本次 turn 实际使用的 quest_root”执行的,所以即使 quest 不在默认 `home/quests` 下面,也仍然会更新。
305
+ - 运行时覆盖:`ds daemon --prompt-version latest` 使用当前受管 active prompt;`ds daemon --prompt-version <official_version>` 会优先选择该正式版本号下最新的一份 prompt 备份。
306
+ - 如果你不是想用“这个正式版本下最新的一份”,而是想精确回放某一次备份,也仍然可以直接传 `.codex/prompt_versions/` 里的精确目录名。
307
+ - 同样的覆盖也支持一次性 CLI run:`ds run --prompt-version <official_version> ...`。
308
+
309
+ 受管 auto-continue 行为:
310
+
311
+ - `workspace_mode = copilot`
312
+ - 完成当前请求单元后,DeepScientist 通常停驻,等待下一条用户消息或 `/resume`
313
+ - `workspace_mode = autonomous`
314
+ - 如果真实外部长任务还没跑起来,就继续用后续 turns 做准备、启动或耐久路由
315
+ - 一旦真实外部长任务已经在跑,auto-continue 就切成低频巡检,默认大约每 `240` 秒一轮
316
+ - auto-continue prompt 现在还会带上一个紧凑的 resume spine:最近用户消息、最近 assistant checkpoint、最近 run 摘要、少量 memory cues,以及当前 `bash_exec` 状态
284
317
 
285
318
  ### Connector policy
286
319
 
@@ -326,9 +326,16 @@ type StartResearchContractFields = {
326
326
 
327
327
  - `autonomous`
328
328
  - 普通路线由 agent 自行决定
329
+ - 一轮结束后默认继续:如果真实长时间外部任务还没跑起来,就继续准备或启动;一旦真实长任务已经在跑,后台监控应切成低频,而不是亚分钟轮询
329
330
  - `user_gated`
330
331
  - 只有真正依赖用户偏好时,才允许阻塞式决策请求
331
332
 
333
+ 关于 workspace mode 的实际含义:
334
+
335
+ - DeepScientist 还会区分用户导向的 `copilot` 模式和默认的 `autonomous` 模式。
336
+ - 在 `copilot` 下,当前请求单元完成后通常应该停驻,等待下一条用户消息或 `/resume`。
337
+ - 在 `autonomous` 下,不能因为“当前还没有长任务在跑”就停住;系统应继续推进,直到下一个真实长任务被准备好或启动起来。
338
+
332
339
  ### 启动模式
333
340
 
334
341
  **`launch_mode`**
@@ -58,6 +58,7 @@ ds --stop
58
58
  含义:
59
59
 
60
60
  - `ds`:启动 daemon,打印本地 Web 地址,尝试打开浏览器,然后退出。
61
+ 如果你是用 `ds --auth true` 启动,DeepScientist 也会同时打印这次启动生成的本地浏览器密码。
61
62
  - `ds --tui`:启动 daemon,并进入终端工作区。
62
63
  - `ds --both`:同时开 Web 和 TUI。
63
64
  - `ds --status`:查看 daemon 状态。
@@ -71,6 +72,11 @@ ds --stop
71
72
  - 当前本地 Web 地址
72
73
  - 当前有哪些 quest 可以切换
73
74
 
75
+ 如果本地浏览器密码模式是开启的,那么终端里打印出来的 Web 地址就是你应该优先使用的地址。
76
+
77
+ - 第一次优先打开终端里打印的完整 URL
78
+ - 当 TUI 已经拿到本地密码 token 时,`Ctrl+O` 重新打开 Web 也会带上同一个 token
79
+
74
80
  如果欢迎区显示的是 `request mode`,说明你还没有绑定 quest。
75
81
 
76
82
  这时正确动作不是直接输入普通文本,而是先做下面两件事之一:
@@ -116,13 +116,16 @@ ds --codex /absolute/path/to/codex --codex-profile m27
116
116
  MiniMax 补充说明:
117
117
 
118
118
  - 如果 MiniMax 在当前最新版 `@openai/codex` 上失败,直接安装 `npm install -g @openai/codex@0.57.0`
119
+ - 如果 DeepScientist 在启动时检测到 MiniMax profile,但当前 Codex CLI 不是 `0.57.0`,现在会在交互式终端里主动提示是否自动安装 `0.57.0`
119
120
  - 先创建 MiniMax `Coding Plan Key`
120
- - 在当前 shell 里先执行 `unset OPENAI_API_KEY` 和 `unset OPENAI_BASE_URL`
121
+ - 如果你要单独在终端里验证 `codex --profile <name>`,先在当前 shell 里执行 `unset OPENAI_API_KEY` 和 `unset OPENAI_BASE_URL`
121
122
  - 使用 `https://api.minimaxi.com/v1`
122
123
  - MiniMax 官方 Codex CLI 页面当前给出的 `codex-MiniMax-*` 模型名,在本地用提供的 key 实测并不能稳定通过 Codex CLI
123
- - 当前本地实测可用的模型名是 `MiniMax-M2.7`
124
+ - 当前本地实测可用于 DeepScientist 的模型名是 `MiniMax-M2.7` 和 `MiniMax-M2.5`
125
+ - 如果你要走 `m25`,请使用 `MiniMax-M2.5`,不要写成 `codex-MiniMax-M2.5`
124
126
  - DeepScientist 现在可以在 probe 和运行时自动适配 MiniMax profile-only 的 `model_provider` / `model` 配置形态
125
- - 如果你还希望终端里的 `codex --profile <name>` 也直接可用,再在 `~/.codex/config.toml` 顶层补上 `model_provider = "minimax"` `model = "MiniMax-M2.7"`
127
+ - provider 设置了 `requires_openai_auth = false` 时,DeepScientist 也会自动移除冲突的 `OPENAI_*` 认证环境变量
128
+ - 如果你还希望终端里的 `codex --profile <name>` 也直接可用,再在 `~/.codex/config.toml` 顶层补上 `model_provider = "minimax"`,以及对应的顶层 `model`,例如 `MiniMax-M2.7` 或 `MiniMax-M2.5`
126
129
  - 当 DeepScientist 检测到 Codex CLI 版本低于 `0.63.0` 时,会自动把 `xhigh` 降级成 `high`
127
130
 
128
131
  ### 当前配置的 Codex 模型不可用
@@ -149,7 +152,7 @@ ds doctor
149
152
  curl -LsSf https://astral.sh/uv/install.sh | sh
150
153
  ```
151
154
 
152
- 如果你在 Windows PowerShell
155
+ 如果你在 Windows PowerShell(但日常使用 DeepScientist 仍然强烈建议优先使用 WSL2):
153
156
 
154
157
  ```powershell
155
158
  powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
@@ -233,4 +236,7 @@ git config --global user.email "you@example.com"
233
236
  ## 说明
234
237
 
235
238
  - `ds docker` 保留为兼容别名,但正式命令是 `ds doctor`。
236
- - 默认浏览器访问地址是 `http://127.0.0.1:20999`。
239
+ - 默认情况下,浏览器访问地址保持普通本地形式,例如 `http://127.0.0.1:20999`。
240
+ - 如果启用了本地浏览器密码模式,首页会先弹出密码框,再继续进入工作区。
241
+ - 你可以回到启动终端查看当前密码,或者执行 `ds --status`。
242
+ - 默认情况下不会出现密码弹窗;如果你想在某次启动中启用本地浏览器密码模式,可以使用 `ds --auth true`。
@@ -56,6 +56,14 @@ DeepScientist 不是靠一份静态大 prompt 工作的。
56
56
  - `SKILL.md`:定义各个阶段的执行纪律
57
57
  - `mcp/server.py`:定义内建工具面
58
58
 
59
+ 受管 quest-local prompt 镜像:
60
+
61
+ - DeepScientist 仍然会优先读取 `quest_root/.codex/prompts/` 下存在的 prompt 片段。
62
+ - 但这棵树现在是“自动维护的受管副本”,不再默认视为永久手工 fork。
63
+ - 每次真实 runner turn 开始前,DeepScientist 都会把当前 active quest-local prompt 树与仓库 `src/prompts/` 做比较;只要仓库源变了,或者 quest 本地副本漂移了,就会刷新 active 副本。
64
+ - 刷新之前,旧的 active prompt 树会先备份到 `quest_root/.codex/prompt_versions/<backup_id>/`。
65
+ - 所以默认情况下,旧 quest 也会吃到最新 prompt 合同;如果你需要回放历史 prompt,再显式选择某个备份版本。
66
+
59
67
  ## 3. 一轮 prompt 是怎么组装的
60
68
 
61
69
  当前运行时大致按下面顺序组装 turn prompt:
@@ -72,11 +80,12 @@ DeepScientist 不是靠一份静态大 prompt 工作的。
72
80
  10. research delivery policy
73
81
  11. paper and evidence snapshot
74
82
  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
83
+ 13. 如果是 auto-continue turn,则加入 resume context spine
84
+ 14. interaction style
85
+ 15. priority memory for this turn
86
+ 16. recent conversation window
87
+ 17. current turn attachments
88
+ 18. current user message
80
89
 
81
90
  这个顺序不是随便排的。
82
91
 
@@ -210,6 +219,16 @@ builder 会直接把这些 quest 文件读进 prompt:
210
219
  - `src/deepscientist/prompts/builder.py`
211
220
  - 当前 quest 所处的 stage skill
212
221
 
222
+ 它现在还明确承载了 continuation 的模式分叉:
223
+
224
+ - `workspace_mode = copilot`
225
+ - 以当前请求为单位提供帮助
226
+ - 做完这一小段之后,通常停驻,等待下一条用户消息或 `/resume`
227
+ - `workspace_mode = autonomous`
228
+ - 默认继续往前推进
229
+ - 如果真实长任务还没跑起来,就继续用接下来的 turns 做准备、启动或耐久决策
230
+ - 一旦真实长任务已经在跑,后台 auto-continue 就切成低频巡检
231
+
213
232
  ### 4.8 Interaction style
214
233
 
215
234
  这个 block 决定这轮该怎么“说话”。
@@ -229,7 +248,27 @@ builder 会直接把这些 quest 文件读进 prompt:
229
248
  - 写作阶段
230
249
  - 等待用户决策的阶段
231
250
 
232
- ### 4.9 Priority memory
251
+ 它现在也编码了 auto-continue 的节奏分叉:
252
+
253
+ - autonomous 下,如果还在准备 / 启动真实长任务,可以较快地连续推进
254
+ - 如果真实外部长任务已经在跑,则默认切成低频检查,默认大约每 `240` 秒一轮
255
+ - copilot 模式则通常在当前请求单元完成后停驻,不继续自动扩展
256
+
257
+ ### 4.9 Resume context spine
258
+
259
+ 现在在 auto-continue turn 中,prompt 会额外注入一个紧凑的 resume spine,避免模型只凭一个 stage 名称硬续。
260
+
261
+ 里面包括:
262
+
263
+ - 最近一条持久化用户消息
264
+ - 最近一条 assistant checkpoint
265
+ - 最近一条 run result 摘要
266
+ - 少量最近 memory cues
267
+ - 当前 `bash_exec` 状态,包括是否有长时间 shell 会话正在运行
268
+
269
+ 这也是为什么 auto-continue 能更贴着“最新用户意图 + 最新检查点”继续,而不是漂回泛泛的 stage narration。
270
+
271
+ ### 4.10 Priority memory
233
272
 
234
273
  DeepScientist 不是随机往 prompt 里塞 memory 的。
235
274
 
@@ -246,22 +285,33 @@ DeepScientist 不是随机往 prompt 里塞 memory 的。
246
285
 
247
286
  agent 不应该在每一轮都看到完全同一批 memory。
248
287
 
249
- ## 5. 哪些 prompt 可以本地覆盖
288
+ ## 5. 本地 active prompt 与历史版本
250
289
 
251
- 当前支持按 quest 在下面路径覆盖 prompt 片段:
290
+ 当前 quest active prompt 树仍在这些路径下:
252
291
 
253
292
  - `.codex/prompts/system.md`
254
293
  - `.codex/prompts/contracts/shared_interaction.md`
255
294
  - `.codex/prompts/connectors/<connector>.md`
256
295
 
257
- 也就是说:
296
+ 仓库默认 prompt 仍然在 `src/prompts/`。
297
+
298
+ 但现在有一个关键变化:
299
+
300
+ - `.codex/prompts/` 不应再理解为长期手工维护的 override 树。
301
+ - 每次真实运行前,DeepScientist 都会把 active quest-local copy 修回当前仓库 prompt 真相。
302
+ - 所以如果你手工改了 active copy,这种改动会在下次运行时被视为漂移:先备份,再替换。
303
+ - 历史 prompt 会保存在 `.codex/prompt_versions/<backup_id>/`。
304
+
305
+ 如果你确实想让某个 quest 临时按旧 prompt 跑,启动时优先传正式版本号即可:
306
+
307
+ - `ds daemon --prompt-version <official_version>`
308
+ - `ds run --prompt-version <official_version> ...`
258
309
 
259
- - 仓库默认 prompt 在 `src/prompts/`
260
- - quest 私有覆盖在 `.codex/prompts/`
310
+ DeepScientist 会把它解析成“该正式版本号下最新的一份 prompt 备份”。如果你想精确回放某一次具体备份,而不是该版本下最新的一份,也仍然可以直接传备份目录名。
261
311
 
262
- 只有当某个 quest 确实需要局部特殊合同,才建议这样覆盖。
312
+ 如果只是想继续使用当前受管 active prompt,就用 `latest`。
263
313
 
264
- 如果这个改动应该影响整个产品,就不该做 quest-local override,而应该直接改仓库默认 prompt。
314
+ 如果这个改动应该影响正常未来行为,就不该只改 quest-local active copy,而应该直接改仓库默认 prompt。
265
315
 
266
316
  ## 6. Skills 是怎么分层的
267
317
 
@@ -62,7 +62,7 @@ codex:
62
62
 
63
63
  - 对 provider-backed 的 Codex profile,建议优先使用 `model: inherit`
64
64
  - 除非你非常确定该 provider 接受你要显式传入的模型名,否则不要再额外硬写一个模型
65
- - DeepScientist 会复用你终端里同一个 `~/.codex/config.toml` 与环境变量
65
+ - DeepScientist 现在会在 `.ds/codex-home` 下启动一个隔离的运行时 home,但会先继承你配置的 `~/.codex` 里的 auth、config、skills、agents 与 prompts
66
66
 
67
67
  ## Provider 一览
68
68
 
@@ -109,13 +109,13 @@ MiniMax 是最典型的 profile 模式。它的官方 Codex CLI 文档直接给
109
109
 
110
110
  ### 已验证的兼容性说明
111
111
 
112
- 按 2026-03-25 对 MiniMax 官方 Codex CLI 页面和本地兼容性测试的核对结果:
112
+ 按 2026-04-04 对 MiniMax 官方 Codex CLI 页面和本地兼容性测试的核对结果:
113
113
 
114
114
  - MiniMax 官方 Codex CLI 页面当前建议使用 `@openai/codex@0.57.0`
115
115
  - MiniMax 当前应使用的 Coding Plan endpoint 是 `https://api.minimaxi.com/v1`
116
116
  - MiniMax 官方页面示例 profile 名是 `m21`,但 profile 名本身只是本地别名;本仓库统一用 `m27` 作为示例名
117
117
  - MiniMax 官方页面当前给出的 `codex-MiniMax-*` 模型名,在本地使用你提供的 key 实测并不能稳定通过 Codex CLI
118
- - 本地实测能稳定跑通的组合是 `MiniMax-M2.7` + `m27` + `model: inherit` + Codex CLI `0.57.0`
118
+ - 本地实测 DeepScientist 可稳定跑通的组合包括 `MiniMax-M2.7` + `m27` + Codex CLI `0.57.0`,以及 `MiniMax-M2.5` + `m25` + Codex CLI `0.57.0`
119
119
  - 当前最新版 `@openai/codex` 和 MiniMax 官方文档并不能稳定直接对齐
120
120
 
121
121
  如果你现在要走最稳的 DeepScientist + MiniMax 路径,建议直接使用 Codex CLI `0.57.0`。
@@ -125,7 +125,7 @@ MiniMax 是最典型的 profile 模式。它的官方 Codex CLI 文档直接给
125
125
  - 已安装 Codex CLI `0.57.0`
126
126
  - 已创建 MiniMax `Coding Plan Key`
127
127
  - 在启动 Codex 和 DeepScientist 的 shell 中可见的 `MINIMAX_API_KEY`
128
- - 当前 shell 已清理 `OPENAI_API_KEY` 和 `OPENAI_BASE_URL`
128
+ - 如果你要单独在终端里验证 `codex --profile <name>`,当前 shell 需要先清理 `OPENAI_API_KEY` 和 `OPENAI_BASE_URL`
129
129
  - `~/.codex/config.toml` 中已经配置好的 Codex profile
130
130
 
131
131
  ### 安装 Codex CLI `0.57.0`
@@ -145,6 +145,8 @@ codex-cli 0.57.0
145
145
 
146
146
  如果你还想保留另一个 Codex 版本,也可以单独写一个 wrapper 脚本,再把 `runners.codex.binary` 指向那个绝对路径。
147
147
 
148
+ 现在如果 DeepScientist 在启动时检测到 MiniMax profile,但当前 `codex` 版本不是 `0.57.0`,在交互式终端里会主动提示是否自动安装 `@openai/codex@0.57.0`。
149
+
148
150
  ### Codex 侧配置
149
151
 
150
152
  请使用 `https://api.minimaxi.com/v1`,不要用 `https://api.minimax.io/v1`。
@@ -157,15 +159,19 @@ unset OPENAI_BASE_URL
157
159
  export MINIMAX_API_KEY="..."
158
160
  ```
159
161
 
162
+ 如果你是在终端里单独验证 `codex --profile <name>`,就按上面的方式处理。
163
+ 如果你走的是 DeepScientist 路径,那么当所选 provider 明确写了 `requires_openai_auth = false` 时,DeepScientist 现在会在 startup probe 和真实 runner 执行时自动剥离 `OPENAI_API_KEY` 和 `OPENAI_BASE_URL`。
164
+
160
165
  MiniMax 官方页面示例 profile 名是 `m21`。由于 profile 名只是本地别名,本仓库统一改写成 `m27`。
161
166
 
162
167
  先说明差异:
163
168
 
164
169
  - 官方页面当前展示的是 `codex-MiniMax-M2.5`
165
- - 但本地实测里,直接请求 MiniMax API 能稳定跑通的是 `MiniMax-M2.7`
166
- - 同一把 key 下,`codex-MiniMax-M2.5` / `codex-MiniMax-M2.7` 通过 Codex CLI 都会失败
170
+ - 但本地实测里,直接请求 MiniMax API 能稳定跑通的是 `MiniMax-M2.7` 和 `MiniMax-M2.5`
171
+ - 可复现的 DeepScientist 路径是:`MiniMax-M2.7` `m27`,以及 `MiniMax-M2.5` `m25`
172
+ - 对 `m25` 这条路径,请使用 `MiniMax-M2.5`,不要写成 `codex-MiniMax-M2.5`
167
173
 
168
- 因此,下面给的是当前 DeepScientist 推荐的可运行配置:
174
+ 因此,下面给的是当前 DeepScientist 推荐配置:
169
175
 
170
176
  ```toml
171
177
  [model_providers.minimax]
@@ -183,9 +189,19 @@ model = "MiniMax-M2.7"
183
189
  model_provider = "minimax"
184
190
  ```
185
191
 
192
+ 如果你想走同样的 DeepScientist 路径但使用 `m25`,保持上面的 provider 配置不变,再把 profile 写成:
193
+
194
+ ```toml
195
+ [profiles.m25]
196
+ model = "MiniMax-M2.5"
197
+ model_provider = "minimax"
198
+ ```
199
+
186
200
  DeepScientist 现在对它的支持方式是:
187
201
 
188
- - 如果你使用的是这类 profile-only MiniMax 配置,再配合 Codex CLI `0.57.0`,DeepScientist 会在自己的 probe / 运行时临时 `.codex/config.toml` 里,把所选 profile 的 `model_provider` 和 `model` 自动提升到顶层
202
+ - 如果你使用的是这类 profile-only MiniMax 配置,再配合 Codex CLI `0.57.0`,DeepScientist 会在自己的 probe / 运行时临时 `config.toml` 副本里,把所选 profile 的 `model_provider` 和 `model` 自动提升到顶层
203
+ - 对 provider-backed 的 MiniMax profile,DeepScientist 会强制使用 `model: inherit`,避免再被硬编码的 OpenAI 模型覆盖
204
+ - 当 `requires_openai_auth = false` 时,DeepScientist 会自动移除冲突的 `OPENAI_API_KEY` 和 `OPENAI_BASE_URL`
189
205
  - 这意味着即使终端里原样执行 `codex --profile m27` 还会失败,DeepScientist 也可以先兼容跑起来
190
206
 
191
207
  如果你还希望终端里的 `codex --profile <name>` 也直接可用,请使用显式顶层兼容写法:
@@ -248,6 +264,7 @@ DeepScientist 现在会为 MiniMax 的 `0.57.0` 路径额外做两层兼容:
248
264
 
249
265
  - 当检测到旧版 Codex CLI 不支持 `xhigh` 时,自动把 `xhigh` 降级成 `high`
250
266
  - 当检测到 MiniMax 使用 profile-only 的 `model_provider` / `model` 配置形态时,在临时 DeepScientist Codex home 里自动补齐顶层字段
267
+ - 当 provider 明确声明 `requires_openai_auth = false` 时,自动移除冲突的 `OPENAI_*` 认证环境变量
251
268
 
252
269
  ## GLM
253
270