@researai/deepscientist 1.5.15 → 1.5.17

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 (202) hide show
  1. package/README.md +385 -104
  2. package/bin/ds.js +1241 -110
  3. package/docs/en/00_QUICK_START.md +100 -19
  4. package/docs/en/01_SETTINGS_REFERENCE.md +34 -1
  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 +25 -8
  9. package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +63 -13
  10. package/docs/en/15_CODEX_PROVIDER_SETUP.md +37 -11
  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/21_LOCAL_MODEL_BACKENDS_GUIDE.md +283 -0
  15. package/docs/en/91_DEVELOPMENT.md +237 -0
  16. package/docs/en/README.md +24 -2
  17. package/docs/zh/00_QUICK_START.md +89 -19
  18. package/docs/zh/01_SETTINGS_REFERENCE.md +34 -1
  19. package/docs/zh/02_START_RESEARCH_GUIDE.md +7 -0
  20. package/docs/zh/05_TUI_GUIDE.md +6 -0
  21. package/docs/zh/09_DOCTOR.md +26 -9
  22. package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +63 -13
  23. package/docs/zh/15_CODEX_PROVIDER_SETUP.md +37 -11
  24. package/docs/zh/19_EXTERNAL_CONTROLLER_GUIDE.md +226 -0
  25. package/docs/zh/19_LOCAL_BROWSER_AUTH.md +68 -0
  26. package/docs/zh/20_WORKSPACE_MODES_GUIDE.md +251 -0
  27. package/docs/zh/21_LOCAL_MODEL_BACKENDS_GUIDE.md +281 -0
  28. package/docs/zh/README.md +24 -2
  29. package/install.sh +46 -4
  30. package/package.json +2 -1
  31. package/pyproject.toml +1 -1
  32. package/src/deepscientist/__init__.py +1 -1
  33. package/src/deepscientist/acp/envelope.py +6 -0
  34. package/src/deepscientist/artifact/service.py +647 -22
  35. package/src/deepscientist/bash_exec/service.py +234 -9
  36. package/src/deepscientist/bridges/connectors.py +8 -2
  37. package/src/deepscientist/cli.py +115 -19
  38. package/src/deepscientist/codex_cli_compat.py +367 -22
  39. package/src/deepscientist/config/models.py +2 -1
  40. package/src/deepscientist/config/service.py +183 -13
  41. package/src/deepscientist/daemon/api/handlers.py +255 -31
  42. package/src/deepscientist/daemon/api/router.py +9 -0
  43. package/src/deepscientist/daemon/app.py +1146 -105
  44. package/src/deepscientist/diagnostics/__init__.py +6 -0
  45. package/src/deepscientist/diagnostics/runner_failures.py +130 -0
  46. package/src/deepscientist/doctor.py +207 -3
  47. package/src/deepscientist/gitops/__init__.py +10 -1
  48. package/src/deepscientist/gitops/diff.py +129 -0
  49. package/src/deepscientist/gitops/service.py +4 -1
  50. package/src/deepscientist/mcp/server.py +39 -0
  51. package/src/deepscientist/prompts/builder.py +275 -34
  52. package/src/deepscientist/quest/layout.py +15 -2
  53. package/src/deepscientist/quest/service.py +707 -55
  54. package/src/deepscientist/quest/stage_views.py +6 -1
  55. package/src/deepscientist/runners/codex.py +143 -43
  56. package/src/deepscientist/shared.py +19 -0
  57. package/src/deepscientist/skills/__init__.py +2 -2
  58. package/src/deepscientist/skills/installer.py +196 -5
  59. package/src/deepscientist/skills/registry.py +66 -0
  60. package/src/prompts/connectors/qq.md +18 -8
  61. package/src/prompts/connectors/weixin.md +16 -6
  62. package/src/prompts/contracts/shared_interaction.md +14 -2
  63. package/src/prompts/system.md +23 -5
  64. package/src/prompts/system_copilot.md +56 -0
  65. package/src/skills/analysis-campaign/SKILL.md +1 -0
  66. package/src/skills/baseline/SKILL.md +8 -0
  67. package/src/skills/decision/SKILL.md +8 -0
  68. package/src/skills/experiment/SKILL.md +8 -0
  69. package/src/skills/figure-polish/SKILL.md +1 -0
  70. package/src/skills/finalize/SKILL.md +1 -0
  71. package/src/skills/idea/SKILL.md +1 -0
  72. package/src/skills/intake-audit/SKILL.md +8 -0
  73. package/src/skills/mentor/SKILL.md +217 -0
  74. package/src/skills/mentor/references/correction-rules.md +210 -0
  75. package/src/skills/mentor/references/knowledge-profile.md +91 -0
  76. package/src/skills/mentor/references/persona-profile.md +138 -0
  77. package/src/skills/mentor/references/taste-profile.md +128 -0
  78. package/src/skills/mentor/references/thought-style-profile.md +138 -0
  79. package/src/skills/mentor/references/work-profile.md +289 -0
  80. package/src/skills/mentor/references/workflow-profile.md +240 -0
  81. package/src/skills/optimize/SKILL.md +1 -0
  82. package/src/skills/rebuttal/SKILL.md +1 -0
  83. package/src/skills/review/SKILL.md +1 -0
  84. package/src/skills/scout/SKILL.md +8 -0
  85. package/src/skills/write/SKILL.md +1 -0
  86. package/src/tui/dist/app/AppContainer.js +19 -11
  87. package/src/tui/dist/index.js +4 -1
  88. package/src/tui/dist/lib/api.js +33 -3
  89. package/src/tui/package.json +1 -1
  90. package/src/ui/dist/assets/AiManusChatView-Bv-Z8YpU.js +204 -0
  91. package/src/ui/dist/assets/AnalysisPlugin-BCKAfjba.js +1 -0
  92. package/src/ui/dist/assets/CliPlugin-BCKcpc35.js +109 -0
  93. package/src/ui/dist/assets/CodeEditorPlugin-DbOfSJ8K.js +2 -0
  94. package/src/ui/dist/assets/CodeViewerPlugin-CbaFRrUU.js +270 -0
  95. package/src/ui/dist/assets/DocViewerPlugin-DAjLVeQD.js +7 -0
  96. package/src/ui/dist/assets/GitCommitViewerPlugin-CIUqbUDO.js +1 -0
  97. package/src/ui/dist/assets/GitDiffViewerPlugin-CQACjoAA.js +6 -0
  98. package/src/ui/dist/assets/GitSnapshotViewer-0r4nLPke.js +30 -0
  99. package/src/ui/dist/assets/ImageViewerPlugin-nBOmI2v_.js +26 -0
  100. package/src/ui/dist/assets/LabCopilotPanel-BHxOxF4z.js +14 -0
  101. package/src/ui/dist/assets/LabPlugin-BKoZGs95.js +22 -0
  102. package/src/ui/dist/assets/LatexPlugin-ZwtV8pIp.js +25 -0
  103. package/src/ui/dist/assets/MarkdownViewerPlugin-DKqVfKyW.js +128 -0
  104. package/src/ui/dist/assets/MarketplacePlugin-BwxStZ9D.js +13 -0
  105. package/src/ui/dist/assets/NotebookEditor-BEQhaQbt.js +81 -0
  106. package/src/ui/dist/assets/{NotebookEditor-CccQYZjX.css → NotebookEditor-BHH8rdGj.css} +1 -1
  107. package/src/ui/dist/assets/NotebookEditor-BOr3x3Ej.css +1 -0
  108. package/src/ui/dist/assets/NotebookEditor-DB9N_T9q.js +361 -0
  109. package/src/ui/dist/assets/PdfLoader-Cy5jtWrr.css +1 -0
  110. package/src/ui/dist/assets/PdfLoader-eWBONbQP.js +16 -0
  111. package/src/ui/dist/assets/PdfMarkdownPlugin-D22YOZL3.js +1 -0
  112. package/src/ui/dist/assets/PdfViewerPlugin-c-RK9DLM.js +17 -0
  113. package/src/ui/dist/assets/PdfViewerPlugin-nwwE-fjJ.css +1 -0
  114. package/src/ui/dist/assets/SearchPlugin-CxF9ytAx.js +16 -0
  115. package/src/ui/dist/assets/SearchPlugin-DA4en4hK.css +1 -0
  116. package/src/ui/dist/assets/TextViewerPlugin-C5xqeeUH.js +54 -0
  117. package/src/ui/dist/assets/VNCViewer-BoLGLnHz.js +11 -0
  118. package/src/ui/dist/assets/bot-DREQOxzP.js +6 -0
  119. package/src/ui/dist/assets/browser-CTB2jwNe.js +8 -0
  120. package/src/ui/dist/assets/chevron-up-C9Qpx4DE.js +6 -0
  121. package/src/ui/dist/assets/code-WlFHE7z_.js +6 -0
  122. package/src/ui/dist/assets/file-content-BZMz3RYp.js +1 -0
  123. package/src/ui/dist/assets/file-diff-panel-CQhw0jS2.js +1 -0
  124. package/src/ui/dist/assets/file-jump-queue-DA-SdG__.js +1 -0
  125. package/src/ui/dist/assets/file-socket-CfQPKQKj.js +1 -0
  126. package/src/ui/dist/assets/git-commit-horizontal-DxZ8DCZh.js +6 -0
  127. package/src/ui/dist/assets/image-Bgl4VIyx.js +6 -0
  128. package/src/ui/dist/assets/index-BpV6lusQ.css +33 -0
  129. package/src/ui/dist/assets/index-CBNVuWcP.js +2496 -0
  130. package/src/ui/dist/assets/index-CwNu1aH4.js +11 -0
  131. package/src/ui/dist/assets/index-DrUnlf6K.js +1 -0
  132. package/src/ui/dist/assets/index-NW-h8VzN.js +1 -0
  133. package/src/ui/dist/assets/monaco-CiHMMNH_.js +1 -0
  134. package/src/ui/dist/assets/pdf-effect-queue-J8OnM0jE.js +6 -0
  135. package/src/ui/dist/assets/plugin-monaco-C8UgLomw.js +19 -0
  136. package/src/ui/dist/assets/plugin-notebook-HbW2K-1c.js +169 -0
  137. package/src/ui/dist/assets/plugin-pdf-CR8hgQBV.js +357 -0
  138. package/src/ui/dist/assets/plugin-terminal-MXFIPun8.js +227 -0
  139. package/src/ui/dist/assets/popover-CLc0pPP8.js +1 -0
  140. package/src/ui/dist/assets/project-sync-C9IdzdZW.js +1 -0
  141. package/src/ui/dist/assets/select-Cs2PmzwL.js +11 -0
  142. package/src/ui/dist/assets/sigma-ClKcHAXm.js +6 -0
  143. package/src/ui/dist/assets/trash-DwpbFr3w.js +11 -0
  144. package/src/ui/dist/assets/useCliAccess-NQ8m0Let.js +1 -0
  145. package/src/ui/dist/assets/useFileDiffOverlay-FuhcnKiw.js +1 -0
  146. package/src/ui/dist/assets/wrap-text-BC-Hltpd.js +11 -0
  147. package/src/ui/dist/assets/zoom-out-E_gaeAxL.js +11 -0
  148. package/src/ui/dist/index.html +5 -2
  149. package/src/ui/dist/assets/AiManusChatView-DDjbFnbt.js +0 -26597
  150. package/src/ui/dist/assets/AnalysisPlugin-Yb5IdmaU.js +0 -123
  151. package/src/ui/dist/assets/CliPlugin-e64sreyu.js +0 -31037
  152. package/src/ui/dist/assets/CodeEditorPlugin-C4D2TIkU.js +0 -427
  153. package/src/ui/dist/assets/CodeViewerPlugin-BVoNZIvC.js +0 -905
  154. package/src/ui/dist/assets/DocViewerPlugin-CLChbllo.js +0 -278
  155. package/src/ui/dist/assets/GitDiffViewerPlugin-C4xeFyFQ.js +0 -2661
  156. package/src/ui/dist/assets/ImageViewerPlugin-OiMUAcLi.js +0 -500
  157. package/src/ui/dist/assets/LabCopilotPanel-BjD2ThQF.js +0 -4104
  158. package/src/ui/dist/assets/LabPlugin-DQPg-NrB.js +0 -2677
  159. package/src/ui/dist/assets/LatexPlugin-CI05XAV9.js +0 -1792
  160. package/src/ui/dist/assets/MarkdownViewerPlugin-DpeBLYZf.js +0 -308
  161. package/src/ui/dist/assets/MarketplacePlugin-DolE58Q2.js +0 -413
  162. package/src/ui/dist/assets/NotebookEditor-7Qm2rSWD.js +0 -4214
  163. package/src/ui/dist/assets/NotebookEditor-C1kWaxKi.js +0 -84873
  164. package/src/ui/dist/assets/NotebookEditor-C3VQ7ylN.css +0 -1405
  165. package/src/ui/dist/assets/PdfLoader-BfOHw8Zw.js +0 -25468
  166. package/src/ui/dist/assets/PdfLoader-C-Y707R3.css +0 -49
  167. package/src/ui/dist/assets/PdfMarkdownPlugin-BulDREv1.js +0 -409
  168. package/src/ui/dist/assets/PdfViewerPlugin-C-daaOaL.js +0 -3095
  169. package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +0 -3627
  170. package/src/ui/dist/assets/SearchPlugin-CjpaiJ3A.js +0 -741
  171. package/src/ui/dist/assets/SearchPlugin-DDMrGDkh.css +0 -379
  172. package/src/ui/dist/assets/TextViewerPlugin-BxIyqPQC.js +0 -472
  173. package/src/ui/dist/assets/VNCViewer-HAg9mF7M.js +0 -18821
  174. package/src/ui/dist/assets/awareness-C0NPR2Dj.js +0 -292
  175. package/src/ui/dist/assets/bot-0DYntytV.js +0 -21
  176. package/src/ui/dist/assets/browser-BAcuE0Xj.js +0 -2895
  177. package/src/ui/dist/assets/code-B20Slj_w.js +0 -17
  178. package/src/ui/dist/assets/file-content-DT24KFma.js +0 -377
  179. package/src/ui/dist/assets/file-diff-panel-DK13YPql.js +0 -92
  180. package/src/ui/dist/assets/file-jump-queue-r5XKgJEV.js +0 -16
  181. package/src/ui/dist/assets/file-socket-B4T2o4nR.js +0 -58
  182. package/src/ui/dist/assets/function-B5QZkkHC.js +0 -1895
  183. package/src/ui/dist/assets/image-DSeR_sDS.js +0 -18
  184. package/src/ui/dist/assets/index-BrFje2Uk.js +0 -120
  185. package/src/ui/dist/assets/index-BwRJaoTl.js +0 -25
  186. package/src/ui/dist/assets/index-D_E4281X.js +0 -221322
  187. package/src/ui/dist/assets/index-DnYB3xb1.js +0 -159
  188. package/src/ui/dist/assets/index-G7AcWcMu.css +0 -12594
  189. package/src/ui/dist/assets/monaco-LExaAN3Y.js +0 -623
  190. package/src/ui/dist/assets/pdf-effect-queue-BJk5okWJ.js +0 -47
  191. package/src/ui/dist/assets/pdf_viewer-e0g1is2C.js +0 -8206
  192. package/src/ui/dist/assets/popover-D3Gg_FoV.js +0 -476
  193. package/src/ui/dist/assets/project-sync-C_ygLlVU.js +0 -297
  194. package/src/ui/dist/assets/select-CpAK6uWm.js +0 -1690
  195. package/src/ui/dist/assets/sigma-DEccaSgk.js +0 -22
  196. package/src/ui/dist/assets/square-check-big-uUfyVsbD.js +0 -17
  197. package/src/ui/dist/assets/trash-CXvwwSe8.js +0 -32
  198. package/src/ui/dist/assets/useCliAccess-Bnop4mgR.js +0 -957
  199. package/src/ui/dist/assets/useFileDiffOverlay-B8eUAX0I.js +0 -53
  200. package/src/ui/dist/assets/wrap-text-9vbOBpkW.js +0 -35
  201. package/src/ui/dist/assets/yjs-DncrqiZ8.js +0 -11243
  202. 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
 
@@ -37,7 +37,7 @@
37
37
 
38
38
  - 安装好 Node.js `>=18.18` 和 npm `>=9`;请优先参考官方页面安装:https://nodejs.org/en/download
39
39
  - 一条已经可用的 Codex 路径:
40
- - 默认 OpenAI 登录路径:`codex --login`(或 `codex`)
40
+ - 默认 OpenAI 登录路径:`codex login`(或直接运行 `codex`)
41
41
  - provider-backed 路径:一个已经可用的 Codex profile,例如 `minimax`、`glm`、`ark`、`bailian`
42
42
  - 模型或 API 凭证
43
43
  - 如果任务比较重,准备好 GPU 或远程服务器
@@ -47,6 +47,7 @@
47
47
 
48
48
  如果你还在选择合适的 Coding Plan / 订阅方案,可以先看这些官方页面:
49
49
 
50
+ - 如果你只是想先有一个简单直接的推荐起点,优先从 GPT-5.4 + `xhigh` reasoning effort 开始;如果你更偏向 Google 路线,可以使用 Gemini 3 Pro,对应模型名 `gemini-3-pro-preview`。
50
51
  - ChatGPT 定价:https://openai.com/chatgpt/pricing/
51
52
  - ChatGPT Plus 帮助页:https://help.openai.com/en/articles/6950777-what-is-chatgpt-plus%3F.eps
52
53
  - MiniMax Coding Plan:https://platform.minimaxi.com/docs/guides/pricing-codingplan
@@ -54,13 +55,15 @@
54
55
  - 阿里百炼 Coding Plan:https://help.aliyun.com/zh/model-studio/coding-plan
55
56
  - 火山引擎 Ark Coding Plan:https://www.volcengine.com/docs/82379/1925115?lang=zh
56
57
 
58
+ 如果你要通过阿里百炼使用 Qwen,请只使用百炼 **Coding Plan** endpoint。普通百炼 / DashScope 平台的 Qwen API,不在当前 Codex-backed DeepScientist 支持范围内。
59
+
57
60
  如果你准备使用 provider-backed 的 Codex profile,而不是默认 OpenAI 登录流,请继续看:
58
61
 
59
62
  - [15 Codex Provider 配置](./15_CODEX_PROVIDER_SETUP.md)
60
63
 
61
64
  ## 1. 先安装 Node.js,再安装 DeepScientist
62
65
 
63
- DeepScientist 目前完整支持 Linux 和 macOS。原生 Windows 支持目前仍处于实验阶段;如果你希望获得更接近 Linux 的 shell 行为,仍然建议优先使用 WSL2。
66
+ DeepScientist 目前完整支持 Linux 和 macOS。原生 Windows 支持目前仍处于实验阶段(强烈建议优先使用 WSL2,尤其是在你希望获得更稳定、更接近 Linux 的 shell 行为时)。
64
67
 
65
68
  在安装 DeepScientist 本身之前,请先从 Node.js 官方页面安装 Node.js:
66
69
 
@@ -85,6 +88,15 @@ DeepScientist 依赖一个可用的 Codex CLI。它会优先使用你机器上
85
88
  npm install -g @openai/codex
86
89
  ```
87
90
 
91
+ 最稳妥的做法是立刻验证命令是否真的可用:
92
+
93
+ ```bash
94
+ which codex
95
+ codex login
96
+ ```
97
+
98
+ 如果 `which codex` 没有输出,问题通常不是 DeepScientist 本身,而是 npm 全局 bin 目录没有正确进入 shell 的 PATH。先修复 PATH,再重新执行 `npm install -g @openai/codex`。
99
+
88
100
  如果你后面还要在本地编译论文 PDF,可以再运行:
89
101
 
90
102
  ```bash
@@ -102,10 +114,10 @@ ds latex install-runtime
102
114
  运行:
103
115
 
104
116
  ```bash
105
- codex --login
117
+ codex login
106
118
  ```
107
119
 
108
- 如果你的 Codex CLI 版本没有 `--login`,就运行:
120
+ 如果你更喜欢交互式首次配置,就运行:
109
121
 
110
122
  ```bash
111
123
  codex
@@ -121,7 +133,7 @@ ds doctor
121
133
 
122
134
  ### 2.2 provider-backed 的 Codex profile 路径
123
135
 
124
- 如果你已经在 MiniMax、GLM、火山方舟、阿里百炼或其他 provider 上配置了一个命名的 Codex profile,请先在终端里确认这个 profile 本身可用:
136
+ 如果你已经在 MiniMax、GLM、火山方舟、阿里百炼 Coding Plan 或其他 provider 上配置了一个命名的 Codex profile,请先在终端里确认这个 profile 本身可用:
125
137
 
126
138
  ```bash
127
139
  codex --profile m27
@@ -148,18 +160,21 @@ ds --codex /absolute/path/to/codex --codex-profile m27
148
160
 
149
161
  这里的 `m27` 是本仓库统一使用的 MiniMax profile 示例名。MiniMax 官方页面当前示例名是 `m21`,但 profile 名只是本地别名;如果你自己用了别的名字,就把命令里的名字一起改掉。
150
162
 
151
- DeepScientist 会在启动前强制做一次真实的 Codex hello 探测。默认情况下,`~/DeepScientist/config/runners.yaml` 里的 runner 模型还是 `gpt-5.4`。如果你的 profile 希望模型由 profile 自己决定,请把 `runners.yaml` 里的 `model` 改成 `inherit`;或者直接使用 `--codex-profile <name>`,让这一轮启动自动继承 profile 对应的模型。
163
+ DeepScientist 会在启动前强制做一次真实的 Codex hello 探测。当前 `~/DeepScientist/config/runners.yaml` 里的默认 runner 模型已经是 `inherit`。如果你的旧配置里还固定写着某个显式模型,而你的 provider 又希望模型由 profile 自己决定,请把 `model` 改成 `inherit`;或者直接使用 `--codex-profile <name>`,让这一轮启动自动继承 profile 对应的模型。
152
164
 
153
165
  MiniMax 额外说明:
154
166
 
155
167
  - 如果当前最新版 `@openai/codex` 和 MiniMax 走不通,直接安装 `npm install -g @openai/codex@0.57.0`
168
+ - 如果 DeepScientist 在启动时检测到 MiniMax profile,但当前 Codex CLI 不是 `0.57.0`,现在会在交互式终端里主动提示是否自动安装 `0.57.0`
156
169
  - 先创建 MiniMax `Coding Plan Key`
157
- - 在当前 shell 里先执行 `unset OPENAI_API_KEY` 和 `unset OPENAI_BASE_URL`
170
+ - 如果你要单独在终端里验证 `codex --profile <name>`,先在当前 shell 里执行 `unset OPENAI_API_KEY` 和 `unset OPENAI_BASE_URL`
158
171
  - 使用 `https://api.minimaxi.com/v1`
159
172
  - MiniMax 官方 Codex CLI 页面当前给出的 `codex-MiniMax-*` 模型名,在本地用提供的 key 实测并不能稳定通过 Codex CLI
160
- - 当前本地实测可用的模型名是 `MiniMax-M2.7`
173
+ - 当前本地实测可用于 DeepScientist 的模型名是 `MiniMax-M2.7` 和 `MiniMax-M2.5`
174
+ - 如果你要走 `m25`,请使用 `MiniMax-M2.5`,不要写成 `codex-MiniMax-M2.5`
161
175
  - DeepScientist 现在可以在 probe 和运行时自动适配 MiniMax profile-only 的 `model_provider` / `model` 配置形态
162
- - 如果你还希望终端里的 `codex --profile <name>` 也直接可用,再在 `~/.codex/config.toml` 顶层补上 `model_provider = "minimax"` `model = "MiniMax-M2.7"`
176
+ - provider 设置了 `requires_openai_auth = false` 时,DeepScientist 也会自动移除冲突的 `OPENAI_*` 认证环境变量
177
+ - 如果你还希望终端里的 `codex --profile <name>` 也直接可用,再在 `~/.codex/config.toml` 顶层补上 `model_provider = "minimax"`,以及对应的顶层 `model`,例如 `MiniMax-M2.7` 或 `MiniMax-M2.5`
163
178
  - 当 DeepScientist 检测到旧版 Codex CLI 不支持 `xhigh` 时,会自动把它降级成 `high`
164
179
 
165
180
  ## 3. 启动本地运行时
@@ -192,6 +207,19 @@ ds --here
192
207
 
193
208
  它等价于 `ds --home "$PWD/DeepScientist"`。
194
209
 
210
+ 重要提醒:
211
+
212
+ - 如果你是通过 `ds --here` 或显式的 `--home <path>` 启动 DeepScientist,后续像 `ds --status`、`ds --stop` 这样的管理命令,也应该使用同一个 DeepScientist home
213
+ - 如果你是通过 `DEEPSCIENTIST_HOME` 或 `DS_HOME` 环境变量固定 home,只要后续命令继续使用同一个环境变量配置,也可以
214
+ - 否则 CLI 可能会回退到默认的 `~/DeepScientist`,从而把一个实际上可访问的 daemon 误判成“不是当前 home 下的受管 daemon”
215
+
216
+ 例如,当你使用的是非默认 home 时,应这样执行:
217
+
218
+ ```bash
219
+ ds --status --home /path/to/DeepScientist
220
+ ds --stop --home /path/to/DeepScientist
221
+ ```
222
+
195
223
  如果你想换一个端口,可以运行:
196
224
 
197
225
  ```bash
@@ -200,13 +228,14 @@ ds --port 21000
200
228
 
201
229
  这会把网页界面放到 `21000` 端口。
202
230
 
203
- 默认情况下,本地网页地址是:
231
+ 默认情况下,DeepScientist 启动时不会开启本地浏览器密码门禁。
204
232
 
205
- ```text
206
- http://127.0.0.1:20999
207
- ```
208
-
209
- 如果浏览器没有自动打开,就手动访问这个地址。
233
+ - 如果浏览器没有自动打开,就手动访问普通本地地址,例如 `http://127.0.0.1:20999`
234
+ - 如果你想在某次启动里启用本地浏览器密码,可以用 `ds --auth true`
235
+ - 在启用密码模式的启动中,终端会直接打印这次启动生成的密码
236
+ - 如果当前浏览器还没有登录,本地首页会先弹出密码框,再继续显示后续界面
237
+ - 第一次成功进入后,浏览器会保存这次本地登录,之后再次访问通常不需要重复输入
238
+ - 如果你之后忘了某次启用密码启动的密码,可以回到启动终端查看,或者执行 `ds --status`
210
239
 
211
240
  ## 4. 打开首页
212
241
 
@@ -220,10 +249,18 @@ http://127.0.0.1:20999
220
249
 
221
250
  你最先会看到两个入口:
222
251
 
223
- - `Start Research`:创建一个新项目,并立刻开始新的研究任务
252
+ - `Start Research` 或 `Start Experiment`:进入新项目创建流程
224
253
  - `Open Project`:重新打开已有项目
225
254
 
226
- 第一次使用时,先点击 `Start Research`。
255
+ 第一次使用时,先点击 `Start Research` 或 `Start Experiment`。
256
+
257
+ 这里有一个重要变化:
258
+
259
+ - 现在系统会先让你选择启动方式
260
+ - `Copilot`:先创建一个安静待命的项目,等你发第一条明确指令
261
+ - `Autonomous`:标准版 DeepScientist,创建后直接开始推进
262
+
263
+ 如果你还不确定该选哪一个,先看 [20 工作区模式指南](./20_WORKSPACE_MODES_GUIDE.md)。
227
264
 
228
265
  ## 5. 用一个真实示例创建第一个项目
229
266
 
@@ -236,7 +273,7 @@ http://127.0.0.1:20999
236
273
  - 研究在混合正确 / 错误社会信号下,如何实现更强的 truth-preserving collaboration
237
274
  - 使用两个本地推理端点提高吞吐量
238
275
 
239
- 点击 `Start Research`,打开启动弹窗。
276
+ 点击 `Start Research` / `Start Experiment`,然后选择 `Autonomous Mode`,再进入下面这条标准创建流程。
240
277
 
241
278
  ![Start Research 弹窗](../images/quickstart/01-start-research.png)
242
279
 
@@ -413,6 +450,39 @@ ds --stop
413
450
 
414
451
  这会停止当前本地 DeepScientist daemon。
415
452
 
453
+ 卸载代码和运行时,但保留本地数据:
454
+
455
+ ```bash
456
+ ds uninstall
457
+ ```
458
+
459
+ 如果你使用的是非默认 home,可以显式指定:
460
+
461
+ ```bash
462
+ ds uninstall --home /path/to/DeepScientist --yes
463
+ ```
464
+
465
+ 这会删除 launcher wrapper、本地运行时代码,以及 install-local 安装树,但会保留:
466
+
467
+ - `quests/`
468
+ - `memory/`
469
+ - `config/`
470
+ - `logs/`
471
+ - `plugins/`
472
+ - `cache/`
473
+
474
+ 如果你是通过 npm 安装的,并且还想把全局 npm 包本体一起移除,请在 `ds uninstall` 之后再执行:
475
+
476
+ ```bash
477
+ npm uninstall -g @researai/deepscientist
478
+ ```
479
+
480
+ 如果你真的想把本地数据一起删掉,请在卸载后手动删除 DeepScientist home:
481
+
482
+ ```bash
483
+ rm -rf /path/to/DeepScientist
484
+ ```
485
+
416
486
  运行诊断:
417
487
 
418
488
  ```bash
@@ -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
 
@@ -446,7 +479,7 @@ claude:
446
479
  - `Test` 行为:检查该二进制是否在 `PATH` 上。
447
480
  - `codex` 的解析顺序:环境变量覆盖、显式路径、本机 `PATH`、最后才是 bundled fallback。
448
481
  - 临时使用说明:你也可以直接用 `ds --codex /absolute/path/to/codex` 临时覆盖这里的设置。
449
- - 首次使用说明:DeepScientist 不会替你完成 Codex 认证。第一次运行 `ds` 前,必须先确保 `codex --login`(或 `codex`)已经成功完成。
482
+ - 首次使用说明:DeepScientist 不会替你完成 Codex 认证。第一次运行 `ds` 前,必须先确保 `codex login`(或直接运行 `codex`)已经成功完成。
450
483
  - 修复说明:如果执行 `npm install -g @researai/deepscientist` 之后 bundled Codex 依赖仍然缺失,请显式安装 `npm install -g @openai/codex`。
451
484
 
452
485
  **`config_dir`**
@@ -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
  这时正确动作不是直接输入普通文本,而是先做下面两件事之一:
@@ -15,7 +15,7 @@
15
15
  默认 OpenAI 路径:
16
16
 
17
17
  ```bash
18
- codex --login
18
+ codex login
19
19
  ```
20
20
 
21
21
  provider-backed profile 路径:
@@ -30,7 +30,7 @@
30
30
  npm install -g @openai/codex
31
31
  ```
32
32
 
33
- 如果你的 Codex CLI 版本没有 `--login`,就运行 `codex` 并在交互式界面里完成认证。
33
+ 如果你更喜欢交互式首次配置,就运行 `codex` 并在交互式界面里完成认证。
34
34
 
35
35
  3. 先直接尝试启动:
36
36
 
@@ -57,10 +57,18 @@
57
57
  - 必需配置文件是否有效
58
58
  - 当前开源版本是否仍然使用 `codex` 作为可运行 runner
59
59
  - Codex CLI 是否存在并通过启动探测
60
+ - 最近一次 quest 真实运行失败是否已经能指向已知的 provider / 协议 / retry 问题
60
61
  - 是否已经具备可选的本地 `pdflatex` 运行时,以便编译论文 PDF
61
62
  - Web / TUI bundle 是否存在
62
63
  - 当前 Web 端口是否空闲,或者是否已运行正确的 daemon
63
64
 
65
+ 现在 `ds doctor` 会尽量把失败项渲染成更可执行的结构:
66
+
67
+ - `Problem`:出了什么问题
68
+ - `Why`:为什么系统认为它是这个问题
69
+ - `Fix`:现在应该先做什么修复动作
70
+ - `Evidence`:命中的 quest/run/request 线索
71
+
64
72
  ## 常见修复方式
65
73
 
66
74
  ### 没有安装 Codex
@@ -82,10 +90,10 @@ npm install -g @openai/codex
82
90
  运行:
83
91
 
84
92
  ```bash
85
- codex --login
93
+ codex login
86
94
  ```
87
95
 
88
- 如果你的 Codex CLI 版本没有 `--login`,就运行 `codex` 并在交互式界面里完成认证。
96
+ 如果你更喜欢交互式首次配置,就运行 `codex` 并在交互式界面里完成认证。
89
97
 
90
98
  先完成一次登录,再重新执行 `ds doctor`。
91
99
 
@@ -111,19 +119,25 @@ ds --codex /absolute/path/to/codex --codex-profile m27
111
119
 
112
120
  - 启动 DeepScientist 的这个 shell 中,provider API key 仍然可见
113
121
  - 该 profile 指向的是 provider 的 Coding Plan endpoint,而不是普通通用 API endpoint
122
+ - 如果你走的是阿里百炼上的 Qwen,只能使用百炼 Coding Plan endpoint;普通百炼 / DashScope 平台的 Qwen API 这里不支持
114
123
  - 如果模型应该由 profile 自己决定,请在 `~/DeepScientist/config/runners.yaml` 中使用 `model: inherit`
115
124
 
116
125
  MiniMax 补充说明:
117
126
 
118
127
  - 如果 MiniMax 在当前最新版 `@openai/codex` 上失败,直接安装 `npm install -g @openai/codex@0.57.0`
128
+ - 如果 DeepScientist 在启动时检测到 MiniMax profile,但当前 Codex CLI 不是 `0.57.0`,现在会在交互式终端里主动提示是否自动安装 `0.57.0`
119
129
  - 先创建 MiniMax `Coding Plan Key`
120
- - 在当前 shell 里先执行 `unset OPENAI_API_KEY` 和 `unset OPENAI_BASE_URL`
130
+ - 如果你要单独在终端里验证 `codex --profile <name>`,先在当前 shell 里执行 `unset OPENAI_API_KEY` 和 `unset OPENAI_BASE_URL`
121
131
  - 使用 `https://api.minimaxi.com/v1`
122
132
  - MiniMax 官方 Codex CLI 页面当前给出的 `codex-MiniMax-*` 模型名,在本地用提供的 key 实测并不能稳定通过 Codex CLI
123
- - 当前本地实测可用的模型名是 `MiniMax-M2.7`
133
+ - 当前本地实测可用于 DeepScientist 的模型名是 `MiniMax-M2.7` 和 `MiniMax-M2.5`
134
+ - 如果你要走 `m25`,请使用 `MiniMax-M2.5`,不要写成 `codex-MiniMax-M2.5`
124
135
  - DeepScientist 现在可以在 probe 和运行时自动适配 MiniMax profile-only 的 `model_provider` / `model` 配置形态
125
- - 如果你还希望终端里的 `codex --profile <name>` 也直接可用,再在 `~/.codex/config.toml` 顶层补上 `model_provider = "minimax"` `model = "MiniMax-M2.7"`
136
+ - provider 设置了 `requires_openai_auth = false` 时,DeepScientist 也会自动移除冲突的 `OPENAI_*` 认证环境变量
137
+ - 如果你还希望终端里的 `codex --profile <name>` 也直接可用,再在 `~/.codex/config.toml` 顶层补上 `model_provider = "minimax"`,以及对应的顶层 `model`,例如 `MiniMax-M2.7` 或 `MiniMax-M2.5`
126
138
  - 当 DeepScientist 检测到 Codex CLI 版本低于 `0.63.0` 时,会自动把 `xhigh` 降级成 `high`
139
+ - 如果 provider 返回 `tool call result does not follow tool call (2013)`,应优先把它当作 tool call / tool result 顺序错误,而不是普通网络抖动
140
+ - 如果 provider 返回 `invalid function arguments json string` 或 `failed to parse tool call arguments` 这类错误,应该先修正 tool 调用串行化/参数编码路径,再继续重试
127
141
 
128
142
  ### 当前配置的 Codex 模型不可用
129
143
 
@@ -149,7 +163,7 @@ ds doctor
149
163
  curl -LsSf https://astral.sh/uv/install.sh | sh
150
164
  ```
151
165
 
152
- 如果你在 Windows PowerShell
166
+ 如果你在 Windows PowerShell(但日常使用 DeepScientist 仍然强烈建议优先使用 WSL2):
153
167
 
154
168
  ```powershell
155
169
  powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
@@ -233,4 +247,7 @@ git config --global user.email "you@example.com"
233
247
  ## 说明
234
248
 
235
249
  - `ds docker` 保留为兼容别名,但正式命令是 `ds doctor`。
236
- - 默认浏览器访问地址是 `http://127.0.0.1:20999`。
250
+ - 默认情况下,浏览器访问地址保持普通本地形式,例如 `http://127.0.0.1:20999`。
251
+ - 如果启用了本地浏览器密码模式,首页会先弹出密码框,再继续进入工作区。
252
+ - 你可以回到启动终端查看当前密码,或者执行 `ds --status`。
253
+ - 默认情况下不会出现密码弹窗;如果你想在某次启动中启用本地浏览器密码模式,可以使用 `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