@researai/deepscientist 1.5.14 → 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 (225) hide show
  1. package/README.md +336 -90
  2. package/assets/branding/logo-raster.png +0 -0
  3. package/bin/ds.js +816 -131
  4. package/docs/en/00_QUICK_START.md +36 -15
  5. package/docs/en/01_SETTINGS_REFERENCE.md +53 -4
  6. package/docs/en/02_START_RESEARCH_GUIDE.md +7 -0
  7. package/docs/en/03_QQ_CONNECTOR_GUIDE.md +19 -0
  8. package/docs/en/05_TUI_GUIDE.md +6 -0
  9. package/docs/en/06_RUNTIME_AND_CANVAS.md +4 -3
  10. package/docs/en/09_DOCTOR.md +11 -5
  11. package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +20 -0
  12. package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +65 -13
  13. package/docs/en/15_CODEX_PROVIDER_SETUP.md +25 -8
  14. package/docs/en/16_TELEGRAM_CONNECTOR_GUIDE.md +134 -0
  15. package/docs/en/17_WHATSAPP_CONNECTOR_GUIDE.md +126 -0
  16. package/docs/en/18_FEISHU_CONNECTOR_GUIDE.md +136 -0
  17. package/docs/en/19_EXTERNAL_CONTROLLER_GUIDE.md +226 -0
  18. package/docs/en/19_LOCAL_BROWSER_AUTH.md +70 -0
  19. package/docs/en/20_WORKSPACE_MODES_GUIDE.md +250 -0
  20. package/docs/en/README.md +24 -0
  21. package/docs/zh/00_QUICK_START.md +36 -15
  22. package/docs/zh/01_SETTINGS_REFERENCE.md +53 -4
  23. package/docs/zh/02_START_RESEARCH_GUIDE.md +7 -0
  24. package/docs/zh/03_QQ_CONNECTOR_GUIDE.md +19 -0
  25. package/docs/zh/05_TUI_GUIDE.md +6 -0
  26. package/docs/zh/09_DOCTOR.md +11 -5
  27. package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +20 -0
  28. package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +65 -13
  29. package/docs/zh/15_CODEX_PROVIDER_SETUP.md +25 -8
  30. package/docs/zh/16_TELEGRAM_CONNECTOR_GUIDE.md +134 -0
  31. package/docs/zh/17_WHATSAPP_CONNECTOR_GUIDE.md +126 -0
  32. package/docs/zh/18_FEISHU_CONNECTOR_GUIDE.md +136 -0
  33. package/docs/zh/19_EXTERNAL_CONTROLLER_GUIDE.md +226 -0
  34. package/docs/zh/19_LOCAL_BROWSER_AUTH.md +68 -0
  35. package/docs/zh/20_WORKSPACE_MODES_GUIDE.md +251 -0
  36. package/docs/zh/README.md +24 -0
  37. package/install.sh +2 -0
  38. package/package.json +1 -1
  39. package/pyproject.toml +1 -1
  40. package/src/deepscientist/__init__.py +1 -1
  41. package/src/deepscientist/acp/envelope.py +6 -0
  42. package/src/deepscientist/artifact/charts.py +567 -0
  43. package/src/deepscientist/artifact/guidance.py +50 -10
  44. package/src/deepscientist/artifact/metrics.py +228 -5
  45. package/src/deepscientist/artifact/schemas.py +3 -0
  46. package/src/deepscientist/artifact/service.py +4276 -308
  47. package/src/deepscientist/bash_exec/models.py +23 -0
  48. package/src/deepscientist/bash_exec/monitor.py +147 -67
  49. package/src/deepscientist/bash_exec/runtime.py +218 -156
  50. package/src/deepscientist/bash_exec/service.py +309 -69
  51. package/src/deepscientist/bash_exec/shells.py +87 -0
  52. package/src/deepscientist/bridges/connectors.py +51 -2
  53. package/src/deepscientist/cli.py +115 -19
  54. package/src/deepscientist/codex_cli_compat.py +232 -0
  55. package/src/deepscientist/config/models.py +8 -4
  56. package/src/deepscientist/config/service.py +38 -11
  57. package/src/deepscientist/connector/weixin_support.py +122 -1
  58. package/src/deepscientist/daemon/api/handlers.py +199 -9
  59. package/src/deepscientist/daemon/api/router.py +5 -0
  60. package/src/deepscientist/daemon/app.py +1458 -289
  61. package/src/deepscientist/doctor.py +51 -0
  62. package/src/deepscientist/file_lock.py +48 -0
  63. package/src/deepscientist/gitops/__init__.py +10 -1
  64. package/src/deepscientist/gitops/diff.py +296 -1
  65. package/src/deepscientist/gitops/service.py +4 -1
  66. package/src/deepscientist/mcp/server.py +212 -5
  67. package/src/deepscientist/process_control.py +161 -0
  68. package/src/deepscientist/prompts/builder.py +501 -453
  69. package/src/deepscientist/quest/layout.py +15 -2
  70. package/src/deepscientist/quest/service.py +2539 -195
  71. package/src/deepscientist/quest/stage_views.py +177 -1
  72. package/src/deepscientist/runners/base.py +2 -0
  73. package/src/deepscientist/runners/codex.py +169 -31
  74. package/src/deepscientist/runners/runtime_overrides.py +17 -1
  75. package/src/deepscientist/skills/__init__.py +2 -2
  76. package/src/deepscientist/skills/installer.py +196 -5
  77. package/src/deepscientist/skills/registry.py +66 -0
  78. package/src/prompts/connectors/qq.md +18 -8
  79. package/src/prompts/connectors/weixin.md +16 -6
  80. package/src/prompts/contracts/shared_interaction.md +24 -4
  81. package/src/prompts/system.md +921 -72
  82. package/src/prompts/system_copilot.md +43 -0
  83. package/src/skills/analysis-campaign/SKILL.md +32 -2
  84. package/src/skills/analysis-campaign/references/artifact-orchestration.md +1 -1
  85. package/src/skills/analysis-campaign/references/writing-facing-slice-examples.md +65 -0
  86. package/src/skills/baseline/SKILL.md +10 -0
  87. package/src/skills/decision/SKILL.md +27 -2
  88. package/src/skills/experiment/SKILL.md +16 -2
  89. package/src/skills/figure-polish/SKILL.md +1 -0
  90. package/src/skills/finalize/SKILL.md +19 -0
  91. package/src/skills/idea/SKILL.md +79 -0
  92. package/src/skills/idea/references/idea-generation-playbook.md +100 -0
  93. package/src/skills/idea/references/outline-seeding-example.md +60 -0
  94. package/src/skills/intake-audit/SKILL.md +9 -1
  95. package/src/skills/mentor/SKILL.md +217 -0
  96. package/src/skills/mentor/references/correction-rules.md +210 -0
  97. package/src/skills/mentor/references/knowledge-profile.md +91 -0
  98. package/src/skills/mentor/references/persona-profile.md +138 -0
  99. package/src/skills/mentor/references/taste-profile.md +128 -0
  100. package/src/skills/mentor/references/thought-style-profile.md +138 -0
  101. package/src/skills/mentor/references/work-profile.md +289 -0
  102. package/src/skills/mentor/references/workflow-profile.md +240 -0
  103. package/src/skills/optimize/SKILL.md +1645 -0
  104. package/src/skills/rebuttal/SKILL.md +3 -1
  105. package/src/skills/review/SKILL.md +3 -1
  106. package/src/skills/scout/SKILL.md +8 -0
  107. package/src/skills/write/SKILL.md +81 -12
  108. package/src/skills/write/references/outline-evidence-contract-example.md +107 -0
  109. package/src/tui/dist/app/AppContainer.js +22 -11
  110. package/src/tui/dist/index.js +4 -1
  111. package/src/tui/dist/lib/api.js +33 -3
  112. package/src/tui/package.json +1 -1
  113. package/src/ui/dist/assets/AiManusChatView-COFACy7V.js +204 -0
  114. package/src/ui/dist/assets/AnalysisPlugin-DnSm0GZn.js +1 -0
  115. package/src/ui/dist/assets/CliPlugin-CvwCmDQ5.js +109 -0
  116. package/src/ui/dist/assets/CodeEditorPlugin-cOqSa0xq.js +2 -0
  117. package/src/ui/dist/assets/CodeViewerPlugin-itb0tltR.js +270 -0
  118. package/src/ui/dist/assets/DocViewerPlugin-DqKkiCI6.js +7 -0
  119. package/src/ui/dist/assets/GitCommitViewerPlugin-DVgNHBCS.js +1 -0
  120. package/src/ui/dist/assets/GitDiffViewerPlugin-DxL2ezFG.js +6 -0
  121. package/src/ui/dist/assets/GitSnapshotViewer-B_RQm1YZ.js +30 -0
  122. package/src/ui/dist/assets/ImageViewerPlugin-tHqlXY3n.js +26 -0
  123. package/src/ui/dist/assets/LabCopilotPanel-ClMbq5Yu.js +14 -0
  124. package/src/ui/dist/assets/LabPlugin-L_SuE8ow.js +22 -0
  125. package/src/ui/dist/assets/LatexPlugin-B495DTXC.js +25 -0
  126. package/src/ui/dist/assets/MarkdownViewerPlugin-DG28-61B.js +128 -0
  127. package/src/ui/dist/assets/MarketplacePlugin-BiOGT-Kj.js +13 -0
  128. package/src/ui/dist/assets/{NotebookEditor-CccQYZjX.css → NotebookEditor-BHH8rdGj.css} +1 -1
  129. package/src/ui/dist/assets/NotebookEditor-BOr3x3Ej.css +1 -0
  130. package/src/ui/dist/assets/NotebookEditor-C-4Kt1p9.js +81 -0
  131. package/src/ui/dist/assets/NotebookEditor-CVsj8h_T.js +361 -0
  132. package/src/ui/dist/assets/PdfLoader-CASDQmxJ.js +16 -0
  133. package/src/ui/dist/assets/PdfLoader-Cy5jtWrr.css +1 -0
  134. package/src/ui/dist/assets/PdfMarkdownPlugin-BFhwoKsY.js +1 -0
  135. package/src/ui/dist/assets/PdfViewerPlugin-DcOzU9vd.js +17 -0
  136. package/src/ui/dist/assets/PdfViewerPlugin-nwwE-fjJ.css +1 -0
  137. package/src/ui/dist/assets/SearchPlugin-CHj7M58O.js +16 -0
  138. package/src/ui/dist/assets/SearchPlugin-DA4en4hK.css +1 -0
  139. package/src/ui/dist/assets/TextViewerPlugin-CB4DYfWO.js +54 -0
  140. package/src/ui/dist/assets/VNCViewer-CjlbyCB3.js +11 -0
  141. package/src/ui/dist/assets/bot-CFkZY-JP.js +6 -0
  142. package/src/ui/dist/assets/browser-CTB2jwNe.js +8 -0
  143. package/src/ui/dist/assets/chevron-up-Dq5ofbht.js +6 -0
  144. package/src/ui/dist/assets/code-DLC6G24T.js +6 -0
  145. package/src/ui/dist/assets/file-content-Dv4LoZec.js +1 -0
  146. package/src/ui/dist/assets/file-diff-panel-Denq-lC3.js +1 -0
  147. package/src/ui/dist/assets/file-jump-queue-DA-SdG__.js +1 -0
  148. package/src/ui/dist/assets/file-socket-Cu4Qln7Y.js +1 -0
  149. package/src/ui/dist/assets/git-commit-horizontal-BUh6G52n.js +6 -0
  150. package/src/ui/dist/assets/image-B9HUUddG.js +6 -0
  151. package/src/ui/dist/assets/index-B2B1sg-M.js +1 -0
  152. package/src/ui/dist/assets/index-Cgla8biy.css +33 -0
  153. package/src/ui/dist/assets/index-DRyx7vAc.js +1 -0
  154. package/src/ui/dist/assets/index-Gbl53BNp.js +2496 -0
  155. package/src/ui/dist/assets/index-wQ7RIIRd.js +11 -0
  156. package/src/ui/dist/assets/monaco-CiHMMNH_.js +1 -0
  157. package/src/ui/dist/assets/pdf-effect-queue-ZtnHFCAi.js +6 -0
  158. package/src/ui/dist/assets/plugin-monaco-C8UgLomw.js +19 -0
  159. package/src/ui/dist/assets/plugin-notebook-HbW2K-1c.js +169 -0
  160. package/src/ui/dist/assets/plugin-pdf-CR8hgQBV.js +357 -0
  161. package/src/ui/dist/assets/plugin-terminal-MXFIPun8.js +227 -0
  162. package/src/ui/dist/assets/popover-DL6h35vr.js +1 -0
  163. package/src/ui/dist/assets/project-sync-CsX08Qno.js +1 -0
  164. package/src/ui/dist/assets/select-DvmXt1yY.js +11 -0
  165. package/src/ui/dist/assets/sigma-7jpXazui.js +6 -0
  166. package/src/ui/dist/assets/trash-xA7kFt8i.js +11 -0
  167. package/src/ui/dist/assets/useCliAccess-DsMwDjOp.js +1 -0
  168. package/src/ui/dist/assets/useFileDiffOverlay-FuhcnKiw.js +1 -0
  169. package/src/ui/dist/assets/wrap-text-CwMn-iqb.js +11 -0
  170. package/src/ui/dist/assets/zoom-out-R-GWEhzS.js +11 -0
  171. package/src/ui/dist/index.html +5 -2
  172. package/src/ui/dist/assets/AiManusChatView-DaF9Nge_.js +0 -26597
  173. package/src/ui/dist/assets/AnalysisPlugin-BSVx6dXE.js +0 -123
  174. package/src/ui/dist/assets/CliPlugin-C9gzJX41.js +0 -5905
  175. package/src/ui/dist/assets/CodeEditorPlugin-DU9G0Tox.js +0 -427
  176. package/src/ui/dist/assets/CodeViewerPlugin-DoX_fI9l.js +0 -905
  177. package/src/ui/dist/assets/DocViewerPlugin-C4FWIXuU.js +0 -278
  178. package/src/ui/dist/assets/GitDiffViewerPlugin-BgfFMgtf.js +0 -2661
  179. package/src/ui/dist/assets/ImageViewerPlugin-tcPkfY_x.js +0 -500
  180. package/src/ui/dist/assets/LabCopilotPanel-_dKV60Bf.js +0 -4104
  181. package/src/ui/dist/assets/LabPlugin-Bje0ayoC.js +0 -2677
  182. package/src/ui/dist/assets/LatexPlugin-CVsBzAln.js +0 -1792
  183. package/src/ui/dist/assets/MarkdownViewerPlugin-xjmrqv_8.js +0 -308
  184. package/src/ui/dist/assets/MarketplacePlugin-mMM2A8wP.js +0 -413
  185. package/src/ui/dist/assets/NotebookEditor-3kVDSOBo.js +0 -4214
  186. package/src/ui/dist/assets/NotebookEditor-C3VQ7ylN.css +0 -1405
  187. package/src/ui/dist/assets/NotebookEditor-SoJ8X-MO.js +0 -84873
  188. package/src/ui/dist/assets/PdfLoader-C-Y707R3.css +0 -49
  189. package/src/ui/dist/assets/PdfLoader-DElVuHl9.js +0 -25468
  190. package/src/ui/dist/assets/PdfMarkdownPlugin-Bq88XT4G.js +0 -409
  191. package/src/ui/dist/assets/PdfViewerPlugin-CsCXMo9S.js +0 -3095
  192. package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +0 -3627
  193. package/src/ui/dist/assets/SearchPlugin-DDMrGDkh.css +0 -379
  194. package/src/ui/dist/assets/SearchPlugin-oUPvy19k.js +0 -741
  195. package/src/ui/dist/assets/TextViewerPlugin-CRkT9yNy.js +0 -472
  196. package/src/ui/dist/assets/VNCViewer-BgbuvWhR.js +0 -18821
  197. package/src/ui/dist/assets/awareness-C0NPR2Dj.js +0 -292
  198. package/src/ui/dist/assets/bot-v_RASACv.js +0 -21
  199. package/src/ui/dist/assets/browser-BAcuE0Xj.js +0 -2895
  200. package/src/ui/dist/assets/code-5hC9d0VH.js +0 -17
  201. package/src/ui/dist/assets/file-content-D1PxfOrp.js +0 -377
  202. package/src/ui/dist/assets/file-diff-panel-DG1oT_Hj.js +0 -92
  203. package/src/ui/dist/assets/file-jump-queue-r5XKgJEV.js +0 -16
  204. package/src/ui/dist/assets/file-socket-BmdFYQlk.js +0 -58
  205. package/src/ui/dist/assets/function-B5QZkkHC.js +0 -1895
  206. package/src/ui/dist/assets/image-Dqe2X2tW.js +0 -18
  207. package/src/ui/dist/assets/index-BQG-1s2o.css +0 -12553
  208. package/src/ui/dist/assets/index-DVsMKK_y.js +0 -25
  209. package/src/ui/dist/assets/index-Duvz8Ip0.js +0 -159
  210. package/src/ui/dist/assets/index-Nt9hS4ck.js +0 -244829
  211. package/src/ui/dist/assets/index-RDlNXXx1.js +0 -120
  212. package/src/ui/dist/assets/monaco-DIXge1CP.js +0 -623
  213. package/src/ui/dist/assets/pdf-effect-queue-BBTTQaO-.js +0 -47
  214. package/src/ui/dist/assets/pdf_viewer-e0g1is2C.js +0 -8206
  215. package/src/ui/dist/assets/popover-BWlolyxo.js +0 -476
  216. package/src/ui/dist/assets/project-sync-BM5PkFH4.js +0 -297
  217. package/src/ui/dist/assets/select-D4dAtrA8.js +0 -1690
  218. package/src/ui/dist/assets/sigma-CKbE5jJT.js +0 -22
  219. package/src/ui/dist/assets/square-check-big-CZNGMgiB.js +0 -17
  220. package/src/ui/dist/assets/trash-DaB37xAz.js +0 -32
  221. package/src/ui/dist/assets/useCliAccess-C2OmAcWe.js +0 -957
  222. package/src/ui/dist/assets/useFileDiffOverlay-Dowd1Ij4.js +0 -53
  223. package/src/ui/dist/assets/wrap-text-BGjAhAUq.js +0 -35
  224. package/src/ui/dist/assets/yjs-DncrqiZ8.js +0 -11243
  225. package/src/ui/dist/assets/zoom-out-dMZQMXzc.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 currently supports Linux and macOS only. Windows is not supported in the current release.
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
 
@@ -60,7 +60,7 @@ If you plan to use a provider-backed Codex profile instead of the default OpenAI
60
60
 
61
61
  ## 1. Install Node.js and DeepScientist
62
62
 
63
- DeepScientist currently supports Linux and macOS only.
63
+ 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
64
 
65
65
  Before installing DeepScientist itself, install Node.js from the official page:
66
66
 
@@ -85,6 +85,15 @@ DeepScientist depends on a working Codex CLI. It prefers the `codex` already ava
85
85
  npm install -g @openai/codex
86
86
  ```
87
87
 
88
+ If you want the most reliable path, verify the command immediately:
89
+
90
+ ```bash
91
+ which codex
92
+ codex --login
93
+ ```
94
+
95
+ 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`.
96
+
88
97
  If you want local PDF compilation later, also run:
89
98
 
90
99
  ```bash
@@ -148,18 +157,21 @@ ds --codex /absolute/path/to/codex --codex-profile m27
148
157
 
149
158
  `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
159
 
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.
160
+ 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
161
 
153
162
  MiniMax note:
154
163
 
155
164
  - if the current `@openai/codex` latest does not work with MiniMax, install `npm install -g @openai/codex@0.57.0`
165
+ - 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
166
  - 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`
167
+ - 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
168
  - use `https://api.minimaxi.com/v1`
159
169
  - 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`
170
+ - the locally verified DeepScientist model names are `MiniMax-M2.7` and `MiniMax-M2.5`
171
+ - for `m25`, use `MiniMax-M2.5`, not `codex-MiniMax-M2.5`
161
172
  - 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`
173
+ - DeepScientist also strips conflicting `OPENAI_*` auth variables automatically for providers that set `requires_openai_auth = false`
174
+ - 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
175
  - DeepScientist automatically downgrades `xhigh` to `high` when it detects an older Codex CLI that does not support `xhigh`
164
176
 
165
177
  ## 3. Start the Local Runtime
@@ -200,13 +212,14 @@ ds --port 21000
200
212
 
201
213
  This keeps everything the same, but serves the web UI on port `21000`.
202
214
 
203
- By default, the local web UI is:
215
+ By default, DeepScientist starts without a local browser password gate.
204
216
 
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.
217
+ - open the normal local URL manually if the browser does not open automatically, such as `http://127.0.0.1:20999`
218
+ - if you want a generated local browser password for one launch, run `ds --auth true`
219
+ - on authenticated launches, DeepScientist prints the generated password in the terminal
220
+ - if the browser is not authenticated yet, DeepScientist shows a password modal before loading the landing page and workspace
221
+ - after the first successful login, the browser keeps the local session and later visits usually do not need the password again
222
+ - if you need to look up the password again for an authenticated launch, check the launch terminal or run `ds --status`
210
223
 
211
224
  ## 4. Open the Home Page
212
225
 
@@ -220,10 +233,18 @@ After 12 hours of running, the projects surface will often look more like this:
220
233
 
221
234
  The two main entry points are:
222
235
 
223
- - `Start Research`: create a new project and launch a new research run
236
+ - `Start Research` or `Start Experiment`: begin a new project flow
224
237
  - `Open Project`: reopen an existing project
225
238
 
226
- For your first run, click `Start Research`.
239
+ For your first run, click `Start Research` or `Start Experiment`.
240
+
241
+ Important update:
242
+
243
+ - the product now asks you to choose a start style first
244
+ - `Copilot` creates a quieter project that waits for your first instruction
245
+ - `Autonomous` creates the standard DeepScientist project and starts moving immediately
246
+
247
+ If you are unsure which one to choose, read [20 Workspace Modes Guide](./20_WORKSPACE_MODES_GUIDE.md) first.
227
248
 
228
249
  ## 5. Create Your First Project With A Worked Example
229
250
 
@@ -236,7 +257,7 @@ The example task is:
236
257
  - study how to improve truth-preserving collaboration under mixed correct and incorrect social signals
237
258
  - use two local inference endpoints to keep throughput high
238
259
 
239
- Click `Start Research` to open the dialog.
260
+ Click `Start Research` / `Start Experiment`, then choose `Autonomous Mode` to follow the flow below.
240
261
 
241
262
  ![Start Research dialog](../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:
@@ -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
 
@@ -395,8 +428,8 @@ codex:
395
428
  profile: ""
396
429
  model: gpt-5.4
397
430
  model_reasoning_effort: xhigh
398
- approval_policy: on-request
399
- sandbox_mode: workspace-write
431
+ approval_policy: never
432
+ sandbox_mode: danger-full-access
400
433
  retry_on_failure: true
401
434
  retry_max_attempts: 5
402
435
  retry_initial_backoff_sec: 1.0
@@ -473,19 +506,35 @@ claude:
473
506
  **`approval_policy`**
474
507
 
475
508
  - Type: `string`
476
- - Default: `on-request`
509
+ - Default: `never`
477
510
  - UI label: `Approval policy`
478
511
  - Allowed values: `never`, `on-failure`, `on-request`, `untrusted`
479
512
  - Meaning: how the runner should ask for permission on privileged actions.
513
+ - Runtime note: the launcher now starts Codex in YOLO mode by default. Passing `ds --yolo false` temporarily restores the non-YOLO pair `approval_policy=on-request` and `sandbox_mode=workspace-write`.
480
514
 
481
515
  **`sandbox_mode`**
482
516
 
483
517
  - Type: `string`
484
- - Default: `workspace-write`
518
+ - Default: `danger-full-access`
485
519
  - UI label: `Sandbox mode`
486
520
  - Allowed values: `read-only`, `workspace-write`, `danger-full-access`
487
521
  - Meaning: filesystem / process access mode for the runner.
488
522
 
523
+ **`env`**
524
+
525
+ - Type: `mapping<string, string>`
526
+ - Default: `{}`
527
+ - UI availability:
528
+ - global settings: editable in the `runners` structured form as `env`
529
+ - project settings: `Project settings -> Codex environment`
530
+ - Project-settings behavior:
531
+ - click `Add` to create a new variable row
532
+ - `OPENAI_BASE_URL` and `OPENAI_API_KEY` are shown by default
533
+ - changes are not auto-saved; click `Save env vars`
534
+ - empty values are ignored and are not injected into the Codex process
535
+ - Meaning: extra environment variables passed to Codex when DeepScientist starts a Codex run.
536
+ - Common use: provider-backed Codex setups that need API keys or custom base URLs.
537
+
489
538
  **`retry_on_failure`**
490
539
 
491
540
  - Type: `boolean`
@@ -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`**
@@ -20,6 +20,7 @@ After finishing this guide, you should be able to:
20
20
  - use `/new`, `/use latest`, `/status`, and related commands from QQ
21
21
  - see the detected `openid` in the `Settings` page
22
22
  - run safe readiness checks and send probes from the `Settings` page
23
+ - receive auto-generated metric timeline images after each recorded main experiment when QQ is the bound quest connector
23
24
 
24
25
  ### Deployment checklist before you start
25
26
 
@@ -221,6 +222,24 @@ When the connector is fully working, you should usually see all of these:
221
222
  - clicking `Send probe` again no longer reports an empty delivery target
222
223
  - if a latest project already exists, plain text continues that project automatically; if no project exists yet, the bot returns help instead
223
224
 
225
+ ## 5.3 Automatic main-experiment metric charts
226
+
227
+ When QQ is the bound quest connector, DeepScientist now auto-sends metric timeline charts after each recorded main experiment.
228
+
229
+ Current behavior:
230
+
231
+ - one chart per metric
232
+ - the baseline is drawn as a horizontal dashed reference line when a baseline value exists
233
+ - the system automatically respects whether the metric is `higher is better` or `lower is better`
234
+ - any point that beats baseline gets a star marker
235
+ - the latest point is filled with a deep Morandi red
236
+ - earlier points are filled with a deep Morandi blue
237
+ - if multiple metrics are present, DeepScientist sends them sequentially with about a 2 second gap
238
+
239
+ These charts are generated from quest-local files and delivered as native QQ images.
240
+
241
+ If you need to disable this automatic chart delivery, turn off `auto_send_main_experiment_png` in the QQ connector config.
242
+
224
243
  ### 5.2 Error quick decoder
225
244
 
226
245
  | Message | What it usually means | What to do |
@@ -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:
@@ -114,13 +114,16 @@ Also check:
114
114
  MiniMax-specific note:
115
115
 
116
116
  - if MiniMax fails on the current `@openai/codex` latest, install `npm install -g @openai/codex@0.57.0`
117
+ - 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
118
  - 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`
119
+ - 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
120
  - use `https://api.minimaxi.com/v1`
120
121
  - 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`
122
+ - the locally verified DeepScientist model names are `MiniMax-M2.7` and `MiniMax-M2.5`
123
+ - for `m25`, use `MiniMax-M2.5`, not `codex-MiniMax-M2.5`
122
124
  - 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`
125
+ - DeepScientist also strips conflicting `OPENAI_*` auth variables automatically for providers that set `requires_openai_auth = false`
126
+ - 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
127
  - DeepScientist automatically downgrades `xhigh` to `high` when it detects a Codex CLI older than `0.63.0`
125
128
 
126
129
  ### The configured Codex model is unavailable
@@ -147,7 +150,7 @@ Normally `ds` will bootstrap a local `uv` automatically. If that bootstrap fails
147
150
  curl -LsSf https://astral.sh/uv/install.sh | sh
148
151
  ```
149
152
 
150
- On Windows PowerShell:
153
+ On Windows PowerShell (still strongly recommend WSL2 for regular DeepScientist use):
151
154
 
152
155
  ```powershell
153
156
  powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
@@ -229,4 +232,7 @@ Set it back to disabled in:
229
232
  ## Notes
230
233
 
231
234
  - `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`.
235
+ - The default browser URL stays in the plain local form, for example `http://127.0.0.1:20999`.
236
+ - When local browser auth is enabled, DeepScientist shows a password modal before loading the workspace.
237
+ - You can view the current password in the launch terminal or through `ds --status`.
238
+ - By default the password modal is disabled; use `ds --auth true` when you want the local browser password gate for one launch.
@@ -20,6 +20,7 @@ After binding succeeds, DeepScientist can:
20
20
  - copy inbound attachments into the active quest under `userfiles/weixin/...`
21
21
  - send text replies back to the same WeChat context
22
22
  - send native WeChat images, videos, and files when the agent attaches a real local file
23
+ - send auto-generated metric timeline images after each recorded main experiment when WeChat is the bound quest connector
23
24
 
24
25
  Inbound media is materialized into the quest, not kept only in an ephemeral connector cache. The current path shape is:
25
26
 
@@ -87,7 +88,10 @@ Current behavior:
87
88
  - inbound image, video, and file attachments are downloaded and copied into quest-local `userfiles/weixin/...`
88
89
  - media-only inbound messages are no longer dropped
89
90
  - outbound text replies use the runtime-managed `context_token`
91
+ - if the WeChat `context_token` is missing or goes stale, low-priority outbound updates are queued instead of being dropped
92
+ - after the next inbound WeChat message refreshes the session, DeepScientist replays only the latest `5` queued updates, with a `2s` gap between sends
90
93
  - outbound image, video, and file delivery works when the agent sends a real local file path
94
+ - outbound main-experiment metric charts are sent automatically as native WeChat images
91
95
 
92
96
  ![Quest-local media flow](../images/weixin/weixin-quest-media-flow.svg)
93
97
 
@@ -109,6 +113,22 @@ userfiles/...
109
113
 
110
114
  instead of depending on an arbitrary external URL.
111
115
 
116
+ ## 5.1 Automatic main-experiment metric charts
117
+
118
+ When WeChat is the bound quest connector, DeepScientist now auto-sends metric timeline charts after each recorded main experiment.
119
+
120
+ Current behavior:
121
+
122
+ - one chart per metric
123
+ - the baseline is drawn as a horizontal dashed reference line when a baseline value exists
124
+ - the system automatically respects whether the metric is `higher is better` or `lower is better`
125
+ - any point that beats baseline gets a star marker
126
+ - the latest point is filled with a deep Morandi red
127
+ - earlier points are filled with a deep Morandi blue
128
+ - if multiple metrics are present, DeepScientist sends them sequentially with about a 2 second gap
129
+
130
+ These charts are generated from quest-local files and delivered as native WeChat images in the bound thread.
131
+
112
132
  ## 6. Troubleshooting
113
133
 
114
134
  ### QR code keeps waiting
@@ -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
 
@@ -100,6 +109,7 @@ It defines things like:
100
109
  - do not end a quest early
101
110
  - treat web, TUI, and connectors as one quest
102
111
  - user-facing reporting style
112
+ - baseline confirmation discipline, including preserving the richer metric surface instead of keeping only one headline scalar when the source baseline exposes multiple comparable metrics or variants
103
113
 
104
114
  If the agent starts sounding wrong everywhere, `system.md` is one of the first places to inspect.
105
115
 
@@ -113,6 +123,7 @@ It tells the agent:
113
123
  - queued inbound user messages must be acknowledged and handled first
114
124
  - blocking replies are for real decisions only
115
125
  - progress updates should be concise and human-readable
126
+ - the real user-facing interaction message should stay complete; the runtime may derive a shorter preview separately, so the agent should not manually truncate the actual connector answer with `...` / `…`
116
127
 
117
128
  If the model is bad at staying in the same long-running thread, this file matters a lot.
118
129
 
@@ -208,6 +219,16 @@ If `Start Research` behavior feels wrong, you usually need to inspect:
208
219
  - `src/deepscientist/prompts/builder.py`
209
220
  - the stage skill the quest is currently using
210
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
+
211
232
  ### 4.8 Interaction style
212
233
 
213
234
  This block tells the model how to speak on this turn.
@@ -227,7 +248,27 @@ This is why DeepScientist can keep the same runtime but behave differently acros
227
248
  - writing stages
228
249
  - waiting-for-decision stages
229
250
 
230
- ### 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
231
272
 
232
273
  DeepScientist does not inject memory randomly.
233
274
 
@@ -244,22 +285,33 @@ This means the prompt is stage-biased on purpose.
244
285
 
245
286
  The agent should not see the same memory bundle on every turn.
246
287
 
247
- ## 5. What can be overridden locally
288
+ ## 5. Managed local prompt copies and historical versions
248
289
 
249
- Prompt fragments can be overridden per quest under:
290
+ The active quest-local prompt tree lives under:
250
291
 
251
292
  - `.codex/prompts/system.md`
252
293
  - `.codex/prompts/contracts/shared_interaction.md`
253
294
  - `.codex/prompts/connectors/<connector>.md`
254
295
 
255
- 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> ...`
256
309
 
257
- - repo defaults live under `src/prompts/`
258
- - 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.
259
311
 
260
- 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.
261
313
 
262
- 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.
263
315
 
264
316
  ## 6. How skills are structured
265
317
 
@@ -61,7 +61,7 @@ codex:
61
61
  Important:
62
62
 
63
63
  - keep `model: inherit` for provider-backed Codex profiles unless you are certain the provider accepts the explicit model id you plan to send
64
- - DeepScientist will reuse the same `~/.codex/config.toml` and environment that your terminal Codex already uses
64
+ - DeepScientist now launches Codex from an isolated runtime home under `.ds/codex-home`, but that runtime copy inherits your configured `~/.codex` auth, config, skills, agents, and prompts first
65
65
 
66
66
  ## Provider matrix
67
67
 
@@ -108,13 +108,13 @@ Official doc:
108
108
 
109
109
  ### Verified compatibility note
110
110
 
111
- Checked against MiniMax's current Codex CLI doc and local compatibility validation on 2026-03-25:
111
+ Checked against MiniMax's current Codex CLI doc and local compatibility validation on 2026-04-04:
112
112
 
113
113
  - MiniMax's Codex CLI page currently recommends `@openai/codex@0.57.0`
114
114
  - the Coding Plan endpoint to use is `https://api.minimaxi.com/v1`
115
115
  - MiniMax's official page uses `m21` as the profile name, but that profile name is only a local alias; this repo uses `m27` consistently in examples
116
116
  - the `codex-MiniMax-*` model names shown on MiniMax's page did not pass reliably through Codex CLI in local testing with the provided key
117
- - the locally verified working path was `MiniMax-M2.7` + `m27` + `model: inherit` + Codex CLI `0.57.0`
117
+ - the locally verified DeepScientist working paths were `MiniMax-M2.7` + `m27` + Codex CLI `0.57.0` and `MiniMax-M2.5` + `m25` + Codex CLI `0.57.0`
118
118
  - the current `@openai/codex` latest release still does not line up cleanly with MiniMax's current guide
119
119
 
120
120
  If you want the most reproducible DeepScientist + MiniMax path today, use Codex CLI `0.57.0`.
@@ -124,7 +124,7 @@ If you want the most reproducible DeepScientist + MiniMax path today, use Codex
124
124
  - Codex CLI `0.57.0`
125
125
  - a MiniMax `Coding Plan Key`
126
126
  - `MINIMAX_API_KEY` available in the shell that starts Codex and DeepScientist
127
- - the current shell cleared of `OPENAI_API_KEY` and `OPENAI_BASE_URL`
127
+ - for plain terminal `codex --profile <name>` checks, the current shell cleared of `OPENAI_API_KEY` and `OPENAI_BASE_URL`
128
128
  - a working Codex profile in `~/.codex/config.toml`
129
129
 
130
130
  ### Install Codex CLI `0.57.0`
@@ -144,6 +144,8 @@ codex-cli 0.57.0
144
144
 
145
145
  If you want to keep another Codex version elsewhere, create a small wrapper script and point `runners.codex.binary` at that absolute path.
146
146
 
147
+ When DeepScientist detects a MiniMax profile at startup and the active Codex CLI is not `0.57.0`, it now prompts to reinstall `@openai/codex@0.57.0` automatically in interactive terminal launches.
148
+
147
149
  ### Codex-side setup
148
150
 
149
151
  Use `https://api.minimaxi.com/v1`, not `https://api.minimax.io/v1`.
@@ -156,15 +158,19 @@ unset OPENAI_BASE_URL
156
158
  export MINIMAX_API_KEY="..."
157
159
  ```
158
160
 
161
+ For plain terminal validation, keep doing that exactly as shown above.
162
+ For the DeepScientist path, when the selected provider sets `requires_openai_auth = false`, DeepScientist now strips `OPENAI_API_KEY` and `OPENAI_BASE_URL` automatically during the startup probe and real runner execution.
163
+
159
164
  MiniMax's official page uses `m21` as the example profile name. Since the profile name is only a local alias, this repo rewrites that example to `m27`.
160
165
 
161
166
  The important difference is the model name:
162
167
 
163
168
  - MiniMax's page currently shows `codex-MiniMax-M2.5`
164
- - in local testing, direct MiniMax API calls worked with `MiniMax-M2.7`
165
- - with the same key, `codex-MiniMax-M2.5` and `codex-MiniMax-M2.7` both failed through Codex CLI
169
+ - in local testing, direct MiniMax API calls worked with `MiniMax-M2.7` and `MiniMax-M2.5`
170
+ - the reproducible DeepScientist paths were `MiniMax-M2.7` on profile `m27` and `MiniMax-M2.5` on profile `m25`
171
+ - for the `m25` path, use `MiniMax-M2.5`, not `codex-MiniMax-M2.5`
166
172
 
167
- So the config below is the currently recommended DeepScientist working configuration:
173
+ So the config below is the currently recommended DeepScientist configuration:
168
174
 
169
175
  ```toml
170
176
  [model_providers.minimax]
@@ -182,9 +188,19 @@ model = "MiniMax-M2.7"
182
188
  model_provider = "minimax"
183
189
  ```
184
190
 
191
+ If you want the same DeepScientist path on `m25`, keep the provider block unchanged and use:
192
+
193
+ ```toml
194
+ [profiles.m25]
195
+ model = "MiniMax-M2.5"
196
+ model_provider = "minimax"
197
+ ```
198
+
185
199
  What DeepScientist supports now:
186
200
 
187
- - if you use this profile-only MiniMax config with Codex CLI `0.57.0`, DeepScientist automatically promotes the selected profile's `model_provider` and `model` to the top level inside its probe/runtime copy of `.codex/config.toml`
201
+ - if you use this profile-only MiniMax config with Codex CLI `0.57.0`, DeepScientist automatically promotes the selected profile's `model_provider` and `model` to the top level inside its probe/runtime copy of `config.toml`
202
+ - DeepScientist forces provider-backed MiniMax runs to use `model: inherit`, so it does not accidentally override the profile with a hard-coded OpenAI model
203
+ - when `requires_openai_auth = false`, DeepScientist strips conflicting `OPENAI_API_KEY` and `OPENAI_BASE_URL` values from the probe/runtime environment
188
204
  - this means DeepScientist can start even when plain terminal `codex --profile m27` still fails on that exact profile-only shape
189
205
 
190
206
  If you want plain terminal `codex --profile <name>` to work too, use the explicit top-level compatibility form instead:
@@ -247,6 +263,7 @@ DeepScientist now does two MiniMax-specific compatibility steps for the `0.57.0`
247
263
 
248
264
  - it downgrades `xhigh` to `high` automatically when the Codex CLI does not support `xhigh`
249
265
  - it auto-adapts MiniMax's profile-only `model_provider` / `model` shape inside the temporary DeepScientist Codex home when needed
266
+ - it removes conflicting `OPENAI_*` auth variables automatically when the provider explicitly says `requires_openai_auth = false`
250
267
 
251
268
  ## GLM
252
269