@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.
- package/README.md +336 -90
- package/assets/branding/logo-raster.png +0 -0
- package/bin/ds.js +816 -131
- package/docs/en/00_QUICK_START.md +36 -15
- package/docs/en/01_SETTINGS_REFERENCE.md +53 -4
- package/docs/en/02_START_RESEARCH_GUIDE.md +7 -0
- package/docs/en/03_QQ_CONNECTOR_GUIDE.md +19 -0
- package/docs/en/05_TUI_GUIDE.md +6 -0
- package/docs/en/06_RUNTIME_AND_CANVAS.md +4 -3
- package/docs/en/09_DOCTOR.md +11 -5
- package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +20 -0
- package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +65 -13
- package/docs/en/15_CODEX_PROVIDER_SETUP.md +25 -8
- package/docs/en/16_TELEGRAM_CONNECTOR_GUIDE.md +134 -0
- package/docs/en/17_WHATSAPP_CONNECTOR_GUIDE.md +126 -0
- package/docs/en/18_FEISHU_CONNECTOR_GUIDE.md +136 -0
- package/docs/en/19_EXTERNAL_CONTROLLER_GUIDE.md +226 -0
- package/docs/en/19_LOCAL_BROWSER_AUTH.md +70 -0
- package/docs/en/20_WORKSPACE_MODES_GUIDE.md +250 -0
- package/docs/en/README.md +24 -0
- package/docs/zh/00_QUICK_START.md +36 -15
- package/docs/zh/01_SETTINGS_REFERENCE.md +53 -4
- package/docs/zh/02_START_RESEARCH_GUIDE.md +7 -0
- package/docs/zh/03_QQ_CONNECTOR_GUIDE.md +19 -0
- package/docs/zh/05_TUI_GUIDE.md +6 -0
- package/docs/zh/09_DOCTOR.md +11 -5
- package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +20 -0
- package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +65 -13
- package/docs/zh/15_CODEX_PROVIDER_SETUP.md +25 -8
- package/docs/zh/16_TELEGRAM_CONNECTOR_GUIDE.md +134 -0
- package/docs/zh/17_WHATSAPP_CONNECTOR_GUIDE.md +126 -0
- package/docs/zh/18_FEISHU_CONNECTOR_GUIDE.md +136 -0
- package/docs/zh/19_EXTERNAL_CONTROLLER_GUIDE.md +226 -0
- package/docs/zh/19_LOCAL_BROWSER_AUTH.md +68 -0
- package/docs/zh/20_WORKSPACE_MODES_GUIDE.md +251 -0
- package/docs/zh/README.md +24 -0
- package/install.sh +2 -0
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/src/deepscientist/__init__.py +1 -1
- package/src/deepscientist/acp/envelope.py +6 -0
- package/src/deepscientist/artifact/charts.py +567 -0
- package/src/deepscientist/artifact/guidance.py +50 -10
- package/src/deepscientist/artifact/metrics.py +228 -5
- package/src/deepscientist/artifact/schemas.py +3 -0
- package/src/deepscientist/artifact/service.py +4276 -308
- package/src/deepscientist/bash_exec/models.py +23 -0
- package/src/deepscientist/bash_exec/monitor.py +147 -67
- package/src/deepscientist/bash_exec/runtime.py +218 -156
- package/src/deepscientist/bash_exec/service.py +309 -69
- package/src/deepscientist/bash_exec/shells.py +87 -0
- package/src/deepscientist/bridges/connectors.py +51 -2
- package/src/deepscientist/cli.py +115 -19
- package/src/deepscientist/codex_cli_compat.py +232 -0
- package/src/deepscientist/config/models.py +8 -4
- package/src/deepscientist/config/service.py +38 -11
- package/src/deepscientist/connector/weixin_support.py +122 -1
- package/src/deepscientist/daemon/api/handlers.py +199 -9
- package/src/deepscientist/daemon/api/router.py +5 -0
- package/src/deepscientist/daemon/app.py +1458 -289
- package/src/deepscientist/doctor.py +51 -0
- package/src/deepscientist/file_lock.py +48 -0
- package/src/deepscientist/gitops/__init__.py +10 -1
- package/src/deepscientist/gitops/diff.py +296 -1
- package/src/deepscientist/gitops/service.py +4 -1
- package/src/deepscientist/mcp/server.py +212 -5
- package/src/deepscientist/process_control.py +161 -0
- package/src/deepscientist/prompts/builder.py +501 -453
- package/src/deepscientist/quest/layout.py +15 -2
- package/src/deepscientist/quest/service.py +2539 -195
- package/src/deepscientist/quest/stage_views.py +177 -1
- package/src/deepscientist/runners/base.py +2 -0
- package/src/deepscientist/runners/codex.py +169 -31
- package/src/deepscientist/runners/runtime_overrides.py +17 -1
- package/src/deepscientist/skills/__init__.py +2 -2
- package/src/deepscientist/skills/installer.py +196 -5
- package/src/deepscientist/skills/registry.py +66 -0
- package/src/prompts/connectors/qq.md +18 -8
- package/src/prompts/connectors/weixin.md +16 -6
- package/src/prompts/contracts/shared_interaction.md +24 -4
- package/src/prompts/system.md +921 -72
- package/src/prompts/system_copilot.md +43 -0
- package/src/skills/analysis-campaign/SKILL.md +32 -2
- package/src/skills/analysis-campaign/references/artifact-orchestration.md +1 -1
- package/src/skills/analysis-campaign/references/writing-facing-slice-examples.md +65 -0
- package/src/skills/baseline/SKILL.md +10 -0
- package/src/skills/decision/SKILL.md +27 -2
- package/src/skills/experiment/SKILL.md +16 -2
- package/src/skills/figure-polish/SKILL.md +1 -0
- package/src/skills/finalize/SKILL.md +19 -0
- package/src/skills/idea/SKILL.md +79 -0
- package/src/skills/idea/references/idea-generation-playbook.md +100 -0
- package/src/skills/idea/references/outline-seeding-example.md +60 -0
- package/src/skills/intake-audit/SKILL.md +9 -1
- package/src/skills/mentor/SKILL.md +217 -0
- package/src/skills/mentor/references/correction-rules.md +210 -0
- package/src/skills/mentor/references/knowledge-profile.md +91 -0
- package/src/skills/mentor/references/persona-profile.md +138 -0
- package/src/skills/mentor/references/taste-profile.md +128 -0
- package/src/skills/mentor/references/thought-style-profile.md +138 -0
- package/src/skills/mentor/references/work-profile.md +289 -0
- package/src/skills/mentor/references/workflow-profile.md +240 -0
- package/src/skills/optimize/SKILL.md +1645 -0
- package/src/skills/rebuttal/SKILL.md +3 -1
- package/src/skills/review/SKILL.md +3 -1
- package/src/skills/scout/SKILL.md +8 -0
- package/src/skills/write/SKILL.md +81 -12
- package/src/skills/write/references/outline-evidence-contract-example.md +107 -0
- package/src/tui/dist/app/AppContainer.js +22 -11
- package/src/tui/dist/index.js +4 -1
- package/src/tui/dist/lib/api.js +33 -3
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/AiManusChatView-COFACy7V.js +204 -0
- package/src/ui/dist/assets/AnalysisPlugin-DnSm0GZn.js +1 -0
- package/src/ui/dist/assets/CliPlugin-CvwCmDQ5.js +109 -0
- package/src/ui/dist/assets/CodeEditorPlugin-cOqSa0xq.js +2 -0
- package/src/ui/dist/assets/CodeViewerPlugin-itb0tltR.js +270 -0
- package/src/ui/dist/assets/DocViewerPlugin-DqKkiCI6.js +7 -0
- package/src/ui/dist/assets/GitCommitViewerPlugin-DVgNHBCS.js +1 -0
- package/src/ui/dist/assets/GitDiffViewerPlugin-DxL2ezFG.js +6 -0
- package/src/ui/dist/assets/GitSnapshotViewer-B_RQm1YZ.js +30 -0
- package/src/ui/dist/assets/ImageViewerPlugin-tHqlXY3n.js +26 -0
- package/src/ui/dist/assets/LabCopilotPanel-ClMbq5Yu.js +14 -0
- package/src/ui/dist/assets/LabPlugin-L_SuE8ow.js +22 -0
- package/src/ui/dist/assets/LatexPlugin-B495DTXC.js +25 -0
- package/src/ui/dist/assets/MarkdownViewerPlugin-DG28-61B.js +128 -0
- package/src/ui/dist/assets/MarketplacePlugin-BiOGT-Kj.js +13 -0
- package/src/ui/dist/assets/{NotebookEditor-CccQYZjX.css → NotebookEditor-BHH8rdGj.css} +1 -1
- package/src/ui/dist/assets/NotebookEditor-BOr3x3Ej.css +1 -0
- package/src/ui/dist/assets/NotebookEditor-C-4Kt1p9.js +81 -0
- package/src/ui/dist/assets/NotebookEditor-CVsj8h_T.js +361 -0
- package/src/ui/dist/assets/PdfLoader-CASDQmxJ.js +16 -0
- package/src/ui/dist/assets/PdfLoader-Cy5jtWrr.css +1 -0
- package/src/ui/dist/assets/PdfMarkdownPlugin-BFhwoKsY.js +1 -0
- package/src/ui/dist/assets/PdfViewerPlugin-DcOzU9vd.js +17 -0
- package/src/ui/dist/assets/PdfViewerPlugin-nwwE-fjJ.css +1 -0
- package/src/ui/dist/assets/SearchPlugin-CHj7M58O.js +16 -0
- package/src/ui/dist/assets/SearchPlugin-DA4en4hK.css +1 -0
- package/src/ui/dist/assets/TextViewerPlugin-CB4DYfWO.js +54 -0
- package/src/ui/dist/assets/VNCViewer-CjlbyCB3.js +11 -0
- package/src/ui/dist/assets/bot-CFkZY-JP.js +6 -0
- package/src/ui/dist/assets/browser-CTB2jwNe.js +8 -0
- package/src/ui/dist/assets/chevron-up-Dq5ofbht.js +6 -0
- package/src/ui/dist/assets/code-DLC6G24T.js +6 -0
- package/src/ui/dist/assets/file-content-Dv4LoZec.js +1 -0
- package/src/ui/dist/assets/file-diff-panel-Denq-lC3.js +1 -0
- package/src/ui/dist/assets/file-jump-queue-DA-SdG__.js +1 -0
- package/src/ui/dist/assets/file-socket-Cu4Qln7Y.js +1 -0
- package/src/ui/dist/assets/git-commit-horizontal-BUh6G52n.js +6 -0
- package/src/ui/dist/assets/image-B9HUUddG.js +6 -0
- package/src/ui/dist/assets/index-B2B1sg-M.js +1 -0
- package/src/ui/dist/assets/index-Cgla8biy.css +33 -0
- package/src/ui/dist/assets/index-DRyx7vAc.js +1 -0
- package/src/ui/dist/assets/index-Gbl53BNp.js +2496 -0
- package/src/ui/dist/assets/index-wQ7RIIRd.js +11 -0
- package/src/ui/dist/assets/monaco-CiHMMNH_.js +1 -0
- package/src/ui/dist/assets/pdf-effect-queue-ZtnHFCAi.js +6 -0
- package/src/ui/dist/assets/plugin-monaco-C8UgLomw.js +19 -0
- package/src/ui/dist/assets/plugin-notebook-HbW2K-1c.js +169 -0
- package/src/ui/dist/assets/plugin-pdf-CR8hgQBV.js +357 -0
- package/src/ui/dist/assets/plugin-terminal-MXFIPun8.js +227 -0
- package/src/ui/dist/assets/popover-DL6h35vr.js +1 -0
- package/src/ui/dist/assets/project-sync-CsX08Qno.js +1 -0
- package/src/ui/dist/assets/select-DvmXt1yY.js +11 -0
- package/src/ui/dist/assets/sigma-7jpXazui.js +6 -0
- package/src/ui/dist/assets/trash-xA7kFt8i.js +11 -0
- package/src/ui/dist/assets/useCliAccess-DsMwDjOp.js +1 -0
- package/src/ui/dist/assets/useFileDiffOverlay-FuhcnKiw.js +1 -0
- package/src/ui/dist/assets/wrap-text-CwMn-iqb.js +11 -0
- package/src/ui/dist/assets/zoom-out-R-GWEhzS.js +11 -0
- package/src/ui/dist/index.html +5 -2
- package/src/ui/dist/assets/AiManusChatView-DaF9Nge_.js +0 -26597
- package/src/ui/dist/assets/AnalysisPlugin-BSVx6dXE.js +0 -123
- package/src/ui/dist/assets/CliPlugin-C9gzJX41.js +0 -5905
- package/src/ui/dist/assets/CodeEditorPlugin-DU9G0Tox.js +0 -427
- package/src/ui/dist/assets/CodeViewerPlugin-DoX_fI9l.js +0 -905
- package/src/ui/dist/assets/DocViewerPlugin-C4FWIXuU.js +0 -278
- package/src/ui/dist/assets/GitDiffViewerPlugin-BgfFMgtf.js +0 -2661
- package/src/ui/dist/assets/ImageViewerPlugin-tcPkfY_x.js +0 -500
- package/src/ui/dist/assets/LabCopilotPanel-_dKV60Bf.js +0 -4104
- package/src/ui/dist/assets/LabPlugin-Bje0ayoC.js +0 -2677
- package/src/ui/dist/assets/LatexPlugin-CVsBzAln.js +0 -1792
- package/src/ui/dist/assets/MarkdownViewerPlugin-xjmrqv_8.js +0 -308
- package/src/ui/dist/assets/MarketplacePlugin-mMM2A8wP.js +0 -413
- package/src/ui/dist/assets/NotebookEditor-3kVDSOBo.js +0 -4214
- package/src/ui/dist/assets/NotebookEditor-C3VQ7ylN.css +0 -1405
- package/src/ui/dist/assets/NotebookEditor-SoJ8X-MO.js +0 -84873
- package/src/ui/dist/assets/PdfLoader-C-Y707R3.css +0 -49
- package/src/ui/dist/assets/PdfLoader-DElVuHl9.js +0 -25468
- package/src/ui/dist/assets/PdfMarkdownPlugin-Bq88XT4G.js +0 -409
- package/src/ui/dist/assets/PdfViewerPlugin-CsCXMo9S.js +0 -3095
- package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +0 -3627
- package/src/ui/dist/assets/SearchPlugin-DDMrGDkh.css +0 -379
- package/src/ui/dist/assets/SearchPlugin-oUPvy19k.js +0 -741
- package/src/ui/dist/assets/TextViewerPlugin-CRkT9yNy.js +0 -472
- package/src/ui/dist/assets/VNCViewer-BgbuvWhR.js +0 -18821
- package/src/ui/dist/assets/awareness-C0NPR2Dj.js +0 -292
- package/src/ui/dist/assets/bot-v_RASACv.js +0 -21
- package/src/ui/dist/assets/browser-BAcuE0Xj.js +0 -2895
- package/src/ui/dist/assets/code-5hC9d0VH.js +0 -17
- package/src/ui/dist/assets/file-content-D1PxfOrp.js +0 -377
- package/src/ui/dist/assets/file-diff-panel-DG1oT_Hj.js +0 -92
- package/src/ui/dist/assets/file-jump-queue-r5XKgJEV.js +0 -16
- package/src/ui/dist/assets/file-socket-BmdFYQlk.js +0 -58
- package/src/ui/dist/assets/function-B5QZkkHC.js +0 -1895
- package/src/ui/dist/assets/image-Dqe2X2tW.js +0 -18
- package/src/ui/dist/assets/index-BQG-1s2o.css +0 -12553
- package/src/ui/dist/assets/index-DVsMKK_y.js +0 -25
- package/src/ui/dist/assets/index-Duvz8Ip0.js +0 -159
- package/src/ui/dist/assets/index-Nt9hS4ck.js +0 -244829
- package/src/ui/dist/assets/index-RDlNXXx1.js +0 -120
- package/src/ui/dist/assets/monaco-DIXge1CP.js +0 -623
- package/src/ui/dist/assets/pdf-effect-queue-BBTTQaO-.js +0 -47
- package/src/ui/dist/assets/pdf_viewer-e0g1is2C.js +0 -8206
- package/src/ui/dist/assets/popover-BWlolyxo.js +0 -476
- package/src/ui/dist/assets/project-sync-BM5PkFH4.js +0 -297
- package/src/ui/dist/assets/select-D4dAtrA8.js +0 -1690
- package/src/ui/dist/assets/sigma-CKbE5jJT.js +0 -22
- package/src/ui/dist/assets/square-check-big-CZNGMgiB.js +0 -17
- package/src/ui/dist/assets/trash-DaB37xAz.js +0 -32
- package/src/ui/dist/assets/useCliAccess-C2OmAcWe.js +0 -957
- package/src/ui/dist/assets/useFileDiffOverlay-Dowd1Ij4.js +0 -53
- package/src/ui/dist/assets/wrap-text-BGjAhAUq.js +0 -35
- package/src/ui/dist/assets/yjs-DncrqiZ8.js +0 -11243
- 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
|
|
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
|
|
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.
|
|
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
|
|
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
|
-
-
|
|
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,
|
|
215
|
+
By default, DeepScientist starts without a local browser password gate.
|
|
204
216
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
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
|
|
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
|
|
260
|
+
Click `Start Research` / `Start Experiment`, then choose `Autonomous Mode` to follow the flow below.
|
|
240
261
|
|
|
241
262
|

|
|
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:
|
|
399
|
-
sandbox_mode:
|
|
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: `
|
|
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: `
|
|
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 |
|
package/docs/en/05_TUI_GUIDE.md
CHANGED
|
@@ -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
|
|
250
|
-
-
|
|
251
|
-
-
|
|
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:
|
package/docs/en/09_DOCTOR.md
CHANGED
|
@@ -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
|
|
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
|
-
-
|
|
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
|
|
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
|

|
|
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.
|
|
76
|
-
14.
|
|
77
|
-
15.
|
|
78
|
-
16.
|
|
79
|
-
17. current
|
|
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
|
-
|
|
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.
|
|
288
|
+
## 5. Managed local prompt copies and historical versions
|
|
248
289
|
|
|
249
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
312
|
+
Use `latest` to stay on the managed active prompt tree.
|
|
261
313
|
|
|
262
|
-
|
|
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
|
|
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-
|
|
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
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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
|
|