@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 @@ You will do four things:
13
13
 
14
14
  The screenshots in this guide use the current live web UI at `deepscientist.cc:20999` as an example. Your local UI at `127.0.0.1:20999` should look the same or very close.
15
15
 
16
- Current platform support: DeepScientist fully supports Linux and macOS. Native Windows support is currently experimental; WSL2 remains the most battle-tested option when you need the closest Linux-like terminal behavior.
16
+ Current platform support: DeepScientist fully supports Linux and macOS. Native Windows support is currently experimental (strongly recommend WSL2 when you want the closest Linux-like terminal behavior).
17
17
 
18
18
  ## Safety First: Isolate Before You Start
19
19
 
@@ -37,7 +37,7 @@ Prepare these first:
37
37
 
38
38
  - Node.js `>=18.18` and npm `>=9`; install them from the official download page: https://nodejs.org/en/download
39
39
  - one working Codex path:
40
- - default OpenAI login path: `codex --login` (or `codex`)
40
+ - default OpenAI login path: `codex login` (or just `codex`)
41
41
  - provider-backed path: one working Codex profile such as `minimax`, `glm`, `ark`, or `bailian`
42
42
  - a model or API credential if your project needs external inference
43
43
  - GPU or server access if your experiments are compute-heavy
@@ -47,6 +47,7 @@ Prepare these first:
47
47
 
48
48
  If you are still choosing a coding plan or subscription, these are practical starting points:
49
49
 
50
+ - If you just want one simple starting recommendation, start with GPT-5.4 using `xhigh` reasoning effort, or Gemini 3 Pro using `gemini-3-pro-preview`.
50
51
  - ChatGPT pricing: https://openai.com/chatgpt/pricing/
51
52
  - ChatGPT Plus help: 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 @@ If you are still choosing a coding plan or subscription, these are practical sta
54
55
  - Alibaba Cloud Bailian Coding Plan: https://help.aliyun.com/zh/model-studio/coding-plan
55
56
  - Volcengine Ark Coding Plan: https://www.volcengine.com/docs/82379/1925115?lang=zh
56
57
 
58
+ If you plan to use Qwen through Alibaba Bailian, use the Bailian **Coding Plan** endpoint only. The generic Bailian or DashScope Qwen API is not supported in the Codex-backed DeepScientist path.
59
+
57
60
  If you plan to use a provider-backed Codex profile instead of the default OpenAI login flow, read this next:
58
61
 
59
62
  - [15 Codex Provider Setup](./15_CODEX_PROVIDER_SETUP.md)
60
63
 
61
64
  ## 1. Install Node.js and DeepScientist
62
65
 
63
- DeepScientist fully supports Linux and macOS. Native Windows support is currently experimental, and WSL2 is still the most battle-tested option when you want Linux-like shell behavior.
66
+ DeepScientist fully supports Linux and macOS. Native Windows support is currently experimental (strongly recommend WSL2 when you want the most reliable Linux-like shell behavior).
64
67
 
65
68
  Before installing DeepScientist itself, install Node.js from the official page:
66
69
 
@@ -85,6 +88,15 @@ DeepScientist depends on a working Codex CLI. It prefers the `codex` already ava
85
88
  npm install -g @openai/codex
86
89
  ```
87
90
 
91
+ If you want the most reliable path, verify the command immediately:
92
+
93
+ ```bash
94
+ which codex
95
+ codex login
96
+ ```
97
+
98
+ If `which codex` prints nothing, the issue is usually the npm global bin path rather than DeepScientist itself. Fix the shell PATH first, then rerun `npm install -g @openai/codex`.
99
+
88
100
  If you want local PDF compilation later, also run:
89
101
 
90
102
  ```bash
@@ -102,10 +114,10 @@ Choose one of these two paths.
102
114
  Run:
103
115
 
104
116
  ```bash
105
- codex --login
117
+ codex login
106
118
  ```
107
119
 
108
- If your Codex CLI version does not expose `--login`, run:
120
+ If you prefer the interactive first-run flow, run:
109
121
 
110
122
  ```bash
111
123
  codex
@@ -121,7 +133,7 @@ ds doctor
121
133
 
122
134
  ### 2.2 Provider-backed Codex profile path
123
135
 
124
- If you already use a named Codex profile for MiniMax, GLM, Volcengine Ark, Alibaba Bailian, or another provider-backed path, verify that profile first in a terminal:
136
+ If you already use a named Codex profile for MiniMax, GLM, Volcengine Ark, Alibaba Bailian Coding Plan, or another provider-backed path, verify that profile first in a terminal:
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` is the MiniMax profile name used consistently in this repo. MiniMax's own page currently uses `m21`, but the profile name is only a local alias; if you created a different name, use that same name in all commands.
150
162
 
151
- DeepScientist blocks startup until Codex can pass a real hello probe. By default, the runner model in `~/DeepScientist/config/runners.yaml` is `gpt-5.4`. If your profile expects the model to come from the profile itself, use `model: inherit` in `runners.yaml`, or simply launch with `--codex-profile <name>` and let that session inherit the profile-defined model.
163
+ DeepScientist blocks startup until Codex can pass a real hello probe. The current default runner model in `~/DeepScientist/config/runners.yaml` is `inherit`. If your existing config still pins an explicit model while your provider expects the model to come from the profile itself, change it to `model: inherit`, or simply launch with `--codex-profile <name>` and let that session inherit the profile-defined model.
152
164
 
153
165
  MiniMax note:
154
166
 
155
167
  - if the current `@openai/codex` latest does not work with MiniMax, install `npm install -g @openai/codex@0.57.0`
168
+ - when DeepScientist detects a MiniMax profile on startup and the installed Codex CLI is not `0.57.0`, it now offers to reinstall `0.57.0` automatically in interactive terminal launches
156
169
  - create a MiniMax `Coding Plan Key` first
157
- - clear `OPENAI_API_KEY` and `OPENAI_BASE_URL` in the current shell before exporting `MINIMAX_API_KEY`
170
+ - for plain terminal `codex --profile <name>` checks, clear `OPENAI_API_KEY` and `OPENAI_BASE_URL` in the current shell before exporting `MINIMAX_API_KEY`
158
171
  - use `https://api.minimaxi.com/v1`
159
172
  - the `codex-MiniMax-*` model names shown on MiniMax's current Codex CLI page did not pass reliably through Codex CLI in local testing with the provided key
160
- - the locally verified working model name is `MiniMax-M2.7`
173
+ - the locally verified DeepScientist model names are `MiniMax-M2.7` and `MiniMax-M2.5`
174
+ - for `m25`, use `MiniMax-M2.5`, not `codex-MiniMax-M2.5`
161
175
  - DeepScientist can auto-adapt MiniMax's profile-only `model_provider` / `model` config shape during probe and runtime
162
- - if you also want plain terminal `codex --profile <name>` to work directly, add `model_provider = "minimax"` and `model = "MiniMax-M2.7"` at the top level of `~/.codex/config.toml`
176
+ - DeepScientist also strips conflicting `OPENAI_*` auth variables automatically for providers that set `requires_openai_auth = false`
177
+ - if you also want plain terminal `codex --profile <name>` to work directly, add `model_provider = "minimax"` and the matching top-level model such as `MiniMax-M2.7` or `MiniMax-M2.5` to `~/.codex/config.toml`
163
178
  - DeepScientist automatically downgrades `xhigh` to `high` when it detects an older Codex CLI that does not support `xhigh`
164
179
 
165
180
  ## 3. Start the Local Runtime
@@ -192,6 +207,18 @@ ds --here
192
207
 
193
208
  This is equivalent to `ds --home "$PWD/DeepScientist"`.
194
209
 
210
+ Important:
211
+ * if you start DeepScientist with `ds --here` or an explicit `--home <path>`, later management commands such as `ds --status` and `ds --stop` should use the same DeepScientist home
212
+ * using the same `DEEPSCIENTIST_HOME` or `DS_HOME` environment variable for those commands is also fine
213
+ * otherwise, the CLI may fall back to the default `~/DeepScientist`, which can make a reachable daemon look like an unverified one
214
+
215
+ For example, when using a non-default home, run:
216
+
217
+ ```bash
218
+ ds --status --home /path/to/DeepScientist
219
+ ds --stop --home /path/to/DeepScientist
220
+ ```
221
+
195
222
  If you want another port, run:
196
223
 
197
224
  ```bash
@@ -200,13 +227,14 @@ ds --port 21000
200
227
 
201
228
  This keeps everything the same, but serves the web UI on port `21000`.
202
229
 
203
- By default, the local web UI is:
230
+ By default, DeepScientist starts without a local browser password gate.
204
231
 
205
- ```text
206
- http://127.0.0.1:20999
207
- ```
208
-
209
- If the browser does not open automatically, paste that address into your browser manually.
232
+ - open the normal local URL manually if the browser does not open automatically, such as `http://127.0.0.1:20999`
233
+ - if you want a generated local browser password for one launch, run `ds --auth true`
234
+ - on authenticated launches, DeepScientist prints the generated password in the terminal
235
+ - if the browser is not authenticated yet, DeepScientist shows a password modal before loading the landing page and workspace
236
+ - after the first successful login, the browser keeps the local session and later visits usually do not need the password again
237
+ - if you need to look up the password again for an authenticated launch, check the launch terminal or run `ds --status`
210
238
 
211
239
  ## 4. Open the Home Page
212
240
 
@@ -220,10 +248,18 @@ After 12 hours of running, the projects surface will often look more like this:
220
248
 
221
249
  The two main entry points are:
222
250
 
223
- - `Start Research`: create a new project and launch a new research run
251
+ - `Start Research` or `Start Experiment`: begin a new project flow
224
252
  - `Open Project`: reopen an existing project
225
253
 
226
- For your first run, click `Start Research`.
254
+ For your first run, click `Start Research` or `Start Experiment`.
255
+
256
+ Important update:
257
+
258
+ - the product now asks you to choose a start style first
259
+ - `Copilot` creates a quieter project that waits for your first instruction
260
+ - `Autonomous` creates the standard DeepScientist project and starts moving immediately
261
+
262
+ If you are unsure which one to choose, read [20 Workspace Modes Guide](./20_WORKSPACE_MODES_GUIDE.md) first.
227
263
 
228
264
  ## 5. Create Your First Project With A Worked Example
229
265
 
@@ -236,7 +272,7 @@ The example task is:
236
272
  - study how to improve truth-preserving collaboration under mixed correct and incorrect social signals
237
273
  - use two local inference endpoints to keep throughput high
238
274
 
239
- Click `Start Research` to open the dialog.
275
+ Click `Start Research` / `Start Experiment`, then choose `Autonomous Mode` to follow the flow below.
240
276
 
241
277
  ![Start Research dialog](../images/quickstart/01-start-research.png)
242
278
 
@@ -400,6 +436,12 @@ Check status:
400
436
  ds --status
401
437
  ```
402
438
 
439
+ If you started DeepScientist with a non-default home, specify it explicitly:
440
+
441
+ ```bash
442
+ ds --status --home /path/to/DeepScientist
443
+ ```
444
+
403
445
  This shows whether the local runtime is up.
404
446
 
405
447
  Stop the daemon:
@@ -408,8 +450,47 @@ Stop the daemon:
408
450
  ds --stop
409
451
  ```
410
452
 
453
+ If you started DeepScientist with a non-default home, specify it explicitly:
454
+
455
+ ```bash
456
+ ds --stop --home /path/to/DeepScientist
457
+ ```
458
+
411
459
  This stops the local DeepScientist daemon.
412
460
 
461
+ Uninstall code and runtime, but keep local data:
462
+
463
+ ```bash
464
+ ds uninstall
465
+ ```
466
+
467
+ If you started DeepScientist with a non-default home, specify it explicitly:
468
+
469
+ ```bash
470
+ ds uninstall --home /path/to/DeepScientist --yes
471
+ ```
472
+
473
+ This removes launcher wrappers, local runtime code, and install-local code trees, but preserves:
474
+
475
+ - `quests/`
476
+ - `memory/`
477
+ - `config/`
478
+ - `logs/`
479
+ - `plugins/`
480
+ - `cache/`
481
+
482
+ If you installed DeepScientist from npm and also want to remove the global npm package itself, run this after `ds uninstall`:
483
+
484
+ ```bash
485
+ npm uninstall -g @researai/deepscientist
486
+ ```
487
+
488
+ If you really want to delete local data too, remove the DeepScientist home manually after uninstall:
489
+
490
+ ```bash
491
+ rm -rf /path/to/DeepScientist
492
+ ```
493
+
413
494
  Run diagnostics:
414
495
 
415
496
  ```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:
@@ -165,6 +166,17 @@ acp:
165
166
  - UI label: `UI port`
166
167
  - Meaning: listening port for the local UI server.
167
168
 
169
+ **`ui.auth_enabled`**
170
+
171
+ - Type: `boolean`
172
+ - Default: `false`
173
+ - UI label: `Require local password`
174
+ - Meaning: require a locally generated 16-character browser password for the web workspace and all `/api/*` routes.
175
+ - Behavior:
176
+ - `true`: `ds` prints the generated password in the terminal, the browser prompts for the password if no valid local login exists, and successful login persists in the browser.
177
+ - `false`: disable the local password gate and keep the plain local URL behavior.
178
+ - CLI override: `ds --auth true` or `ds --auth false`
179
+
168
180
  **`ui.auto_open_browser`**
169
181
 
170
182
  - Type: `boolean`
@@ -263,6 +275,7 @@ Palette selection is no longer exposed in `Settings` or `config.yaml`.
263
275
  - Default: `true`
264
276
  - UI label: `Sync project skills on create`
265
277
  - Meaning: mirror skills into project-local runner homes when a project is created.
278
+ - Prompt note: this also seeds the managed quest-local prompt mirror under `.codex/prompts/`.
266
279
 
267
280
  **`skills.sync_quest_on_open`**
268
281
 
@@ -270,6 +283,26 @@ Palette selection is no longer exposed in `Settings` or `config.yaml`.
270
283
  - Default: `true`
271
284
  - UI label: `Sync project skills on open`
272
285
  - Meaning: refresh project-local skill mirrors when an existing project is opened.
286
+ - Prompt note: this refreshes quest-local skill and prompt mirrors for quests discovered under the configured DeepScientist home.
287
+
288
+ Managed prompt behavior:
289
+
290
+ - DeepScientist now treats `.codex/prompts/` as a managed active prompt tree rather than as a permanent hand-edited override.
291
+ - Before each real runner turn, it compares the active quest-local prompt tree against the current repository `src/prompts/` tree and automatically repairs drift.
292
+ - If the active prompt tree differs, the previous tree is backed up under `.codex/prompt_versions/<backup_id>/` before the new active copy is written.
293
+ - This run-time prompt sync happens against the actual quest root used for the turn, so it still works even when a quest lives outside the default `home/quests` path.
294
+ - Runtime override: `ds daemon --prompt-version latest` uses the managed active tree, while `ds daemon --prompt-version <official_version>` runs that daemon session against the newest backup recorded for that formal DeepScientist version.
295
+ - If you need one exact historical backup rather than the newest backup for that version, you may still pass the exact backup directory name from `.codex/prompt_versions/`.
296
+ - The same override also exists for one-off CLI runs: `ds run --prompt-version <official_version> ...`.
297
+
298
+ Managed auto-continue behavior:
299
+
300
+ - `workspace_mode = copilot`
301
+ - after the current requested unit, DeepScientist normally parks and waits for the next user message or `/resume`
302
+ - `workspace_mode = autonomous`
303
+ - if no real external long-running task exists yet, DeepScientist keeps using the next turns to prepare, launch, or durably route that real task
304
+ - once a real external long-running task exists, auto-continue becomes low-frequency monitoring, roughly every `240` seconds by default
305
+ - Auto-continue prompts now also carry a compact resume spine: latest user message, latest assistant checkpoint, latest run summary, recent memory cues, and current `bash_exec` state
273
306
 
274
307
  ### Connector policy
275
308
 
@@ -432,7 +465,7 @@ claude:
432
465
  - `Test` behavior: checks whether the binary is on `PATH`.
433
466
  - Resolution order for `codex`: env override, explicit path, local `PATH`, then bundled fallback.
434
467
  - One-off note: you can temporarily override this with `ds --codex /absolute/path/to/codex`.
435
- - First-run note: DeepScientist does not finish Codex authentication for you. Before the first `ds`, make sure `codex --login` (or `codex`) has completed successfully.
468
+ - First-run note: DeepScientist does not finish Codex authentication for you. Before the first `ds`, make sure `codex login` (or just `codex`) has completed successfully.
436
469
  - Repair note: if the bundled dependency is missing after `npm install -g @researai/deepscientist`, install Codex explicitly with `npm install -g @openai/codex`.
437
470
 
438
471
  **`config_dir`**
@@ -316,9 +316,16 @@ This is the main public knob for round depth.
316
316
 
317
317
  - `autonomous`
318
318
  - the agent should keep choosing ordinary routes on its own
319
+ - after one turn finishes, it should keep moving automatically: if no real long-running external task exists yet, keep preparing or launching it; once a real long-running external task exists, background monitoring should become low-frequency instead of sub-minute polling
319
320
  - `user_gated`
320
321
  - the agent may raise a blocking decision only when continuation truly depends on the user
321
322
 
323
+ Practical note on workspace mode:
324
+
325
+ - DeepScientist also distinguishes a user-directed `copilot` workspace mode from the default `autonomous` mode.
326
+ - In `copilot`, completing the current requested unit should normally park and wait for the next user message or `/resume`.
327
+ - In `autonomous`, the quest should not park just because no long-running task is active yet; it should keep pushing toward the next real long-running unit of work.
328
+
322
329
  ### Launch mode
323
330
 
324
331
  **`launch_mode`**
@@ -58,6 +58,7 @@ ds --stop
58
58
  Meaning:
59
59
 
60
60
  - `ds`: start the daemon, print the local Web URL, try to open the browser, then exit.
61
+ If you launch with `ds --auth true`, DeepScientist also prints the generated local browser password for that launch.
61
62
  - `ds --tui`: start the daemon and enter the terminal workspace.
62
63
  - `ds --both`: open Web and TUI together.
63
64
  - `ds --status`: inspect daemon status.
@@ -71,6 +72,11 @@ When the TUI opens, the first useful signals are:
71
72
  - the local Web URL
72
73
  - which quests are available to switch to
73
74
 
75
+ If local browser auth is enabled, treat that printed Web URL as the source of truth.
76
+
77
+ - open the exact printed URL first
78
+ - `Ctrl+O` reopens the Web workspace with the same local password token when TUI already has it
79
+
74
80
  If the welcome area says `request mode`, the current terminal session is not bound to a quest yet.
75
81
 
76
82
  The correct next move is not plain text. Do one of these first:
@@ -246,9 +246,10 @@ The current authoritative runner path is Codex.
246
246
 
247
247
  The Codex runner:
248
248
 
249
- - prepares a quest-local `.codex/`
250
- - copies local auth/config if needed
251
- - injects DeepScientist built-in MCP servers into `.codex/config.toml`
249
+ - prepares an isolated runtime home under `.ds/codex-home/`
250
+ - inherits the configured Codex home semantics (`config.toml`, `auth.json`, `skills/`, `agents/`, `prompts/`)
251
+ - overlays quest-local `.codex/skills/` and `.codex/prompts/` on top of that runtime copy
252
+ - injects DeepScientist built-in MCP servers into `.ds/codex-home/config.toml`
252
253
  - runs `codex --search exec --json --cd <quest_root> --skip-git-repo-check --model <model> -`
253
254
 
254
255
  The injected built-in MCP namespaces are exactly:
@@ -15,7 +15,7 @@ Use `ds doctor` when DeepScientist does not start cleanly after installation.
15
15
  Default OpenAI path:
16
16
 
17
17
  ```bash
18
- codex --login
18
+ codex login
19
19
  ```
20
20
 
21
21
  Provider-backed profile path:
@@ -55,10 +55,18 @@ Use `ds doctor` when DeepScientist does not start cleanly after installation.
55
55
  - whether required config files are valid
56
56
  - whether the current release is still using `codex` as the runnable runner
57
57
  - whether the Codex CLI can be found and passes a startup probe
58
+ - whether a recent quest runtime failure already points to a known provider / protocol / retry problem
58
59
  - whether an optional local `pdflatex` runtime is available for paper PDF compilation
59
60
  - whether the web and TUI bundles exist
60
61
  - whether the configured web port is free or already running the correct daemon
61
62
 
63
+ `ds doctor` now tries to render failed checks in a more operational form:
64
+
65
+ - `Problem`: what failed
66
+ - `Why`: why DeepScientist believes it failed
67
+ - `Fix`: the concrete next steps to try
68
+ - `Evidence`: the quest/run/request clues that matched the diagnosis
69
+
62
70
  ## Common fixes
63
71
 
64
72
  ### Codex is missing
@@ -80,10 +88,10 @@ npm install -g @openai/codex
80
88
  Run:
81
89
 
82
90
  ```bash
83
- codex --login
91
+ codex login
84
92
  ```
85
93
 
86
- If your Codex CLI version does not expose `--login`, run `codex` and finish the interactive setup there.
94
+ If you prefer the interactive first-run flow, run `codex` and finish the setup there.
87
95
 
88
96
  Finish login once, then rerun `ds doctor`.
89
97
 
@@ -109,19 +117,25 @@ Also check:
109
117
 
110
118
  - the same shell still exports the provider API key
111
119
  - the profile points at the provider's Coding Plan endpoint, not the generic API endpoint
120
+ - if you are using Qwen through Alibaba Bailian, use the Bailian Coding Plan endpoint only; the generic Bailian or DashScope Qwen API is not supported here
112
121
  - `~/DeepScientist/config/runners.yaml` uses `model: inherit` if the provider expects the model to come from the profile itself
113
122
 
114
123
  MiniMax-specific note:
115
124
 
116
125
  - if MiniMax fails on the current `@openai/codex` latest, install `npm install -g @openai/codex@0.57.0`
126
+ - when DeepScientist detects a MiniMax profile on startup and the installed Codex CLI is not `0.57.0`, it now offers to reinstall `0.57.0` automatically in interactive terminal launches
117
127
  - create a MiniMax `Coding Plan Key` first
118
- - clear `OPENAI_API_KEY` and `OPENAI_BASE_URL` in the current shell before exporting `MINIMAX_API_KEY`
128
+ - for plain terminal `codex --profile <name>` checks, clear `OPENAI_API_KEY` and `OPENAI_BASE_URL` in the current shell before exporting `MINIMAX_API_KEY`
119
129
  - use `https://api.minimaxi.com/v1`
120
130
  - the `codex-MiniMax-*` model names shown on MiniMax's current Codex CLI page did not pass reliably through Codex CLI in local testing with the provided key
121
- - the locally verified working model name is `MiniMax-M2.7`
131
+ - the locally verified DeepScientist model names are `MiniMax-M2.7` and `MiniMax-M2.5`
132
+ - for `m25`, use `MiniMax-M2.5`, not `codex-MiniMax-M2.5`
122
133
  - DeepScientist can auto-adapt MiniMax's profile-only `model_provider` / `model` config shape during probe and runtime
123
- - if you also want plain terminal `codex --profile <name>` to work directly, put `model_provider = "minimax"` and `model = "MiniMax-M2.7"` at the top level of `~/.codex/config.toml`
134
+ - DeepScientist also strips conflicting `OPENAI_*` auth variables automatically for providers that set `requires_openai_auth = false`
135
+ - if you also want plain terminal `codex --profile <name>` to work directly, put `model_provider = "minimax"` and the matching top-level model such as `MiniMax-M2.7` or `MiniMax-M2.5` in `~/.codex/config.toml`
124
136
  - DeepScientist automatically downgrades `xhigh` to `high` when it detects a Codex CLI older than `0.63.0`
137
+ - if the provider returns `tool call result does not follow tool call (2013)`, treat it as a request-ordering/protocol error rather than a transient network failure
138
+ - if the provider returns malformed tool-call argument errors such as `invalid function arguments json string` or `failed to parse tool call arguments`, fix the tool-call serialization path before retrying again
125
139
 
126
140
  ### The configured Codex model is unavailable
127
141
 
@@ -147,7 +161,7 @@ Normally `ds` will bootstrap a local `uv` automatically. If that bootstrap fails
147
161
  curl -LsSf https://astral.sh/uv/install.sh | sh
148
162
  ```
149
163
 
150
- On Windows PowerShell:
164
+ On Windows PowerShell (still strongly recommend WSL2 for regular DeepScientist use):
151
165
 
152
166
  ```powershell
153
167
  powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
@@ -229,4 +243,7 @@ Set it back to disabled in:
229
243
  ## Notes
230
244
 
231
245
  - `ds docker` is kept as a compatibility alias, but the official command is `ds doctor`.
232
- - The normal browser URL is `http://127.0.0.1:20999`.
246
+ - The default browser URL stays in the plain local form, for example `http://127.0.0.1:20999`.
247
+ - When local browser auth is enabled, DeepScientist shows a password modal before loading the workspace.
248
+ - You can view the current password in the launch terminal or through `ds --status`.
249
+ - By default the password modal is disabled; use `ds --auth true` when you want the local browser password gate for one launch.
@@ -56,6 +56,14 @@ In practice:
56
56
  - `SKILL.md` files define stage-specific execution discipline
57
57
  - `mcp/server.py` defines the built-in tool surface
58
58
 
59
+ Managed quest-local prompt mirror:
60
+
61
+ - DeepScientist still reads prompt fragments from `quest_root/.codex/prompts/` first when they exist.
62
+ - But that tree is now managed automatically rather than assumed to be a permanent manual fork.
63
+ - Before each real runner turn, DeepScientist compares the active quest-local prompt tree against the repository `src/prompts/` tree and refreshes the active copy when the source changed or the local copy drifted.
64
+ - Before that refresh, the previous active tree is backed up under `quest_root/.codex/prompt_versions/<backup_id>/`.
65
+ - This means an old quest uses the latest prompt contracts by default, while historical prompt trees remain available for explicit replay.
66
+
59
67
  ## 3. How one turn prompt is assembled
60
68
 
61
69
  The current runtime assembles the turn prompt in roughly this order:
@@ -72,11 +80,12 @@ The current runtime assembles the turn prompt in roughly this order:
72
80
  10. research delivery policy
73
81
  11. paper and evidence snapshot
74
82
  12. retry recovery packet when this is a retry turn
75
- 13. interaction style block
76
- 14. priority memory for this turn
77
- 15. recent conversation window
78
- 16. current turn attachments
79
- 17. current user message
83
+ 13. resume context spine when this is an auto-continue turn
84
+ 14. interaction style block
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
  That order matters.
82
91
 
@@ -210,6 +219,16 @@ If `Start Research` behavior feels wrong, you usually need to inspect:
210
219
  - `src/deepscientist/prompts/builder.py`
211
220
  - the stage skill the quest is currently using
212
221
 
222
+ It also carries the key mode split for continuation:
223
+
224
+ - `workspace_mode = copilot`
225
+ - request-scoped help
226
+ - complete one useful unit, then normally park and wait for the next user message or `/resume`
227
+ - `workspace_mode = autonomous`
228
+ - keep advancing without waiting for the user
229
+ - if no real long-running external task exists yet, keep using the next turns to prepare, launch, or durably decide that real unit of work
230
+ - once a real long-running external task exists, background auto-continue turns become low-frequency monitoring passes
231
+
213
232
  ### 4.8 Interaction style
214
233
 
215
234
  This block tells the model how to speak on this turn.
@@ -229,7 +248,27 @@ This is why DeepScientist can keep the same runtime but behave differently acros
229
248
  - writing stages
230
249
  - waiting-for-decision stages
231
250
 
232
- ### 4.9 Priority memory
251
+ It now also encodes the auto-continue cadence split:
252
+
253
+ - autonomous preparation / launch work may continue quickly across turns
254
+ - monitoring an already-running external task should switch to low-frequency checks, roughly every `240` seconds by default
255
+ - copilot mode should usually stop after the current requested unit instead of auto-continuing
256
+
257
+ ### 4.9 Resume context spine
258
+
259
+ On auto-continue turns, the prompt now injects a compact resume spine so the model does not restart from a vague stage label alone.
260
+
261
+ It includes:
262
+
263
+ - the latest durable user message
264
+ - the latest assistant checkpoint
265
+ - the latest run result summary
266
+ - a few recent memory cues
267
+ - current `bash_exec` state, including whether a long-running shell session is active
268
+
269
+ This is the main reason auto-continue turns can stay grounded in the latest intent and latest checkpoint instead of drifting into generic stage narration.
270
+
271
+ ### 4.10 Priority memory
233
272
 
234
273
  DeepScientist does not inject memory randomly.
235
274
 
@@ -246,22 +285,33 @@ This means the prompt is stage-biased on purpose.
246
285
 
247
286
  The agent should not see the same memory bundle on every turn.
248
287
 
249
- ## 5. What can be overridden locally
288
+ ## 5. Managed local prompt copies and historical versions
250
289
 
251
- Prompt fragments can be overridden per quest under:
290
+ The active quest-local prompt tree lives under:
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
- This means:
296
+ Repository defaults still live under `src/prompts/`.
297
+
298
+ Important behavior change:
299
+
300
+ - `.codex/prompts/` is no longer best understood as a permanent hand-maintained override tree.
301
+ - On each real run, DeepScientist repairs the active quest-local copy back to the current repository prompt source when they differ.
302
+ - Manual edits to the active copy are therefore treated as drift: they are backed up and then replaced on the next run.
303
+ - Historical copies are preserved under `.codex/prompt_versions/<backup_id>/`.
304
+
305
+ If you need to run a quest against an older prompt version intentionally, start the daemon or one-off run with the official DeepScientist version number:
306
+
307
+ - `ds daemon --prompt-version <official_version>`
308
+ - `ds run --prompt-version <official_version> ...`
258
309
 
259
- - repo defaults live under `src/prompts/`
260
- - quest-local prompt overrides live under `.codex/prompts/`
310
+ DeepScientist resolves that to the newest backup recorded for that formal version. If you need one exact backup rather than “latest backup for version X”, you may still pass the exact backup directory name.
261
311
 
262
- Use quest-local prompt overrides only when the quest truly needs a different local contract.
312
+ Use `latest` to stay on the managed active prompt tree.
263
313
 
264
- Do not fork the repo-level prompt unless the change should affect the product globally.
314
+ If a prompt change should affect normal future behavior, change the repository prompt source instead of editing only one quest-local active copy.
265
315
 
266
316
  ## 6. How skills are structured
267
317