@researai/deepscientist 1.5.11 → 1.5.12

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 (102) hide show
  1. package/README.md +8 -8
  2. package/bin/ds.js +358 -61
  3. package/docs/en/00_QUICK_START.md +35 -3
  4. package/docs/en/01_SETTINGS_REFERENCE.md +11 -0
  5. package/docs/en/02_START_RESEARCH_GUIDE.md +68 -4
  6. package/docs/en/09_DOCTOR.md +28 -3
  7. package/docs/en/12_GUIDED_WORKFLOW_TOUR.md +21 -2
  8. package/docs/en/15_CODEX_PROVIDER_SETUP.md +284 -0
  9. package/docs/en/README.md +4 -0
  10. package/docs/zh/00_QUICK_START.md +34 -2
  11. package/docs/zh/01_SETTINGS_REFERENCE.md +11 -0
  12. package/docs/zh/02_START_RESEARCH_GUIDE.md +69 -3
  13. package/docs/zh/09_DOCTOR.md +28 -1
  14. package/docs/zh/12_GUIDED_WORKFLOW_TOUR.md +21 -2
  15. package/docs/zh/15_CODEX_PROVIDER_SETUP.md +285 -0
  16. package/docs/zh/README.md +4 -1
  17. package/package.json +1 -1
  18. package/pyproject.toml +1 -1
  19. package/src/deepscientist/__init__.py +1 -1
  20. package/src/deepscientist/bash_exec/monitor.py +7 -5
  21. package/src/deepscientist/bash_exec/service.py +84 -21
  22. package/src/deepscientist/channels/local.py +3 -3
  23. package/src/deepscientist/channels/qq.py +7 -7
  24. package/src/deepscientist/channels/relay.py +7 -7
  25. package/src/deepscientist/channels/weixin_ilink.py +90 -19
  26. package/src/deepscientist/config/models.py +1 -0
  27. package/src/deepscientist/config/service.py +121 -20
  28. package/src/deepscientist/daemon/app.py +314 -6
  29. package/src/deepscientist/doctor.py +1 -5
  30. package/src/deepscientist/mcp/server.py +124 -3
  31. package/src/deepscientist/prompts/builder.py +113 -11
  32. package/src/deepscientist/quest/service.py +247 -31
  33. package/src/deepscientist/runners/codex.py +121 -22
  34. package/src/deepscientist/runners/runtime_overrides.py +6 -0
  35. package/src/deepscientist/shared.py +33 -14
  36. package/src/prompts/connectors/qq.md +2 -1
  37. package/src/prompts/connectors/weixin.md +2 -1
  38. package/src/prompts/contracts/shared_interaction.md +4 -1
  39. package/src/prompts/system.md +59 -9
  40. package/src/skills/analysis-campaign/SKILL.md +46 -6
  41. package/src/skills/analysis-campaign/references/campaign-plan-template.md +21 -8
  42. package/src/skills/baseline/SKILL.md +1 -1
  43. package/src/skills/decision/SKILL.md +1 -1
  44. package/src/skills/experiment/SKILL.md +1 -1
  45. package/src/skills/finalize/SKILL.md +1 -1
  46. package/src/skills/idea/SKILL.md +1 -1
  47. package/src/skills/intake-audit/SKILL.md +1 -1
  48. package/src/skills/rebuttal/SKILL.md +74 -1
  49. package/src/skills/rebuttal/references/response-letter-template.md +55 -11
  50. package/src/skills/review/SKILL.md +118 -1
  51. package/src/skills/review/references/experiment-todo-template.md +23 -0
  52. package/src/skills/review/references/review-report-template.md +16 -0
  53. package/src/skills/review/references/revision-log-template.md +4 -0
  54. package/src/skills/scout/SKILL.md +1 -1
  55. package/src/skills/write/SKILL.md +168 -7
  56. package/src/skills/write/references/paper-experiment-matrix-template.md +131 -0
  57. package/src/tui/package.json +1 -1
  58. package/src/ui/dist/assets/{AiManusChatView-D0mTXG4-.js → AiManusChatView-CnJcXynW.js} +12 -12
  59. package/src/ui/dist/assets/{AnalysisPlugin-Db0cTXxm.js → AnalysisPlugin-DeyzPEhV.js} +1 -1
  60. package/src/ui/dist/assets/{CliPlugin-DrV8je02.js → CliPlugin-CB1YODQn.js} +9 -9
  61. package/src/ui/dist/assets/{CodeEditorPlugin-QXMSCH71.js → CodeEditorPlugin-B-xicq1e.js} +8 -8
  62. package/src/ui/dist/assets/{CodeViewerPlugin-7hhtWj_E.js → CodeViewerPlugin-DT54ysXa.js} +5 -5
  63. package/src/ui/dist/assets/{DocViewerPlugin-BWMSnRJe.js → DocViewerPlugin-DQtKT-VD.js} +3 -3
  64. package/src/ui/dist/assets/{GitDiffViewerPlugin-7J9h9Vy_.js → GitDiffViewerPlugin-hqHbCfnv.js} +20 -20
  65. package/src/ui/dist/assets/{ImageViewerPlugin-CHJl_0lr.js → ImageViewerPlugin-OcVo33jV.js} +5 -5
  66. package/src/ui/dist/assets/{LabCopilotPanel-1qSow1es.js → LabCopilotPanel-DdGwhEUV.js} +11 -11
  67. package/src/ui/dist/assets/{LabPlugin-eQpPPCEp.js → LabPlugin-Ciz1gDaX.js} +2 -2
  68. package/src/ui/dist/assets/{LatexPlugin-BwRfi89Z.js → LatexPlugin-BhmjNQRC.js} +37 -11
  69. package/src/ui/dist/assets/{MarkdownViewerPlugin-836PVQWV.js → MarkdownViewerPlugin-BzdVH9Bx.js} +4 -4
  70. package/src/ui/dist/assets/{MarketplacePlugin-C2y_556i.js → MarketplacePlugin-DmyHspXt.js} +3 -3
  71. package/src/ui/dist/assets/{NotebookEditor-DIX7Mlzu.js → NotebookEditor-BMXKrDRk.js} +1 -1
  72. package/src/ui/dist/assets/{NotebookEditor-BRzJbGsn.js → NotebookEditor-BTVYRGkm.js} +11 -11
  73. package/src/ui/dist/assets/{PdfLoader-DzRaTAlq.js → PdfLoader-CvcjJHXv.js} +1 -1
  74. package/src/ui/dist/assets/{PdfMarkdownPlugin-DZUfIUnp.js → PdfMarkdownPlugin-DW2ej8Vk.js} +2 -2
  75. package/src/ui/dist/assets/{PdfViewerPlugin-BwtICzue.js → PdfViewerPlugin-CmlDxbhU.js} +10 -10
  76. package/src/ui/dist/assets/{SearchPlugin-DHeIAMsx.js → SearchPlugin-DAjQZPSv.js} +1 -1
  77. package/src/ui/dist/assets/{TextViewerPlugin-C3tCmFox.js → TextViewerPlugin-C-nVAZb_.js} +5 -5
  78. package/src/ui/dist/assets/{VNCViewer-CQsKVm3t.js → VNCViewer-D7-dIYon.js} +10 -10
  79. package/src/ui/dist/assets/{bot-BEA2vWuK.js → bot-C_G4WtNI.js} +1 -1
  80. package/src/ui/dist/assets/{code-XfbSR8K2.js → code-Cd7WfiWq.js} +1 -1
  81. package/src/ui/dist/assets/{file-content-BjxNaIfy.js → file-content-B57zsL9y.js} +1 -1
  82. package/src/ui/dist/assets/{file-diff-panel-D_lLVQk0.js → file-diff-panel-DVoheLFq.js} +1 -1
  83. package/src/ui/dist/assets/{file-socket-D9x_5vlY.js → file-socket-B5kXFxZP.js} +1 -1
  84. package/src/ui/dist/assets/{image-BhWT33W1.js → image-LLOjkMHF.js} +1 -1
  85. package/src/ui/dist/assets/{index-Dqj-Mjb4.css → index-BQG-1s2o.css} +40 -2
  86. package/src/ui/dist/assets/{index--c4iXtuy.js → index-C3r2iGrp.js} +12 -12
  87. package/src/ui/dist/assets/{index-DZTZ8mWP.js → index-CLQauncb.js} +911 -120
  88. package/src/ui/dist/assets/{index-PJbSbPTy.js → index-Dxa2eYMY.js} +1 -1
  89. package/src/ui/dist/assets/{index-BDxipwrC.js → index-hOUOWbW2.js} +2 -2
  90. package/src/ui/dist/assets/{monaco-K8izTGgo.js → monaco-BGGAEii3.js} +1 -1
  91. package/src/ui/dist/assets/{pdf-effect-queue-DfBors6y.js → pdf-effect-queue-DlEr1_y5.js} +1 -1
  92. package/src/ui/dist/assets/{popover-yFK1J4fL.js → popover-CWJbJuYY.js} +1 -1
  93. package/src/ui/dist/assets/{project-sync-PENr2zcz.js → project-sync-CRJiucYO.js} +18 -4
  94. package/src/ui/dist/assets/{select-CAbJDfYv.js → select-CoHB7pvH.js} +2 -2
  95. package/src/ui/dist/assets/{sigma-DEuYJqTl.js → sigma-D5aJWR8J.js} +1 -1
  96. package/src/ui/dist/assets/{square-check-big-omoSUmcd.js → square-check-big-DUK_mnkS.js} +1 -1
  97. package/src/ui/dist/assets/{trash--F119N47.js → trash-ChU3SEE3.js} +1 -1
  98. package/src/ui/dist/assets/{useCliAccess-D31UR23I.js → useCliAccess-BrJBV3tY.js} +1 -1
  99. package/src/ui/dist/assets/{useFileDiffOverlay-BH6KcMzq.js → useFileDiffOverlay-C2OQaVWc.js} +1 -1
  100. package/src/ui/dist/assets/{wrap-text-CZ613PM5.js → wrap-text-C7Qqh-om.js} +1 -1
  101. package/src/ui/dist/assets/{zoom-out-BgDLAv3z.js → zoom-out-rtX0FKya.js} +1 -1
  102. package/src/ui/dist/index.html +2 -2
@@ -115,13 +115,21 @@ type StartResearchTemplate = {
115
115
  baseline_variant_id: string
116
116
  baseline_urls: string
117
117
  paper_urls: string
118
+ review_materials: string
118
119
  runtime_constraints: string
119
120
  objectives: string
120
121
  need_research_paper: boolean
121
122
  research_intensity: 'light' | 'balanced' | 'sprint'
122
123
  decision_policy: 'autonomous' | 'user_gated'
123
124
  launch_mode: 'standard' | 'custom'
124
- custom_profile: 'continue_existing_state' | 'revision_rebuttal' | 'freeform'
125
+ custom_profile: 'continue_existing_state' | 'review_audit' | 'revision_rebuttal' | 'freeform'
126
+ review_followup_policy: 'audit_only' | 'auto_execute_followups' | 'user_gated_followups'
127
+ baseline_execution_policy:
128
+ | 'auto'
129
+ | 'must_reproduce_or_verify'
130
+ | 'reuse_existing_only'
131
+ | 'skip_unless_blocking'
132
+ manuscript_edit_mode: 'none' | 'copy_ready_text' | 'latex_required'
125
133
  entry_state_summary: string
126
134
  review_summary: string
127
135
  custom_brief: string
@@ -179,6 +187,9 @@ The dialog submits:
179
187
  decision_policy,
180
188
  launch_mode,
181
189
  custom_profile,
190
+ review_followup_policy,
191
+ baseline_execution_policy,
192
+ manuscript_edit_mode,
182
193
  scope,
183
194
  baseline_mode,
184
195
  resource_policy,
@@ -188,6 +199,7 @@ The dialog submits:
188
199
  objectives: string[],
189
200
  baseline_urls: string[],
190
201
  paper_urls: string[],
202
+ review_materials: string[],
191
203
  entry_state_summary,
192
204
  review_summary,
193
205
  custom_brief,
@@ -256,12 +268,18 @@ The dialog submits:
256
268
 
257
269
  **`baseline_urls`**
258
270
 
259
- - Fallback source links when there is no registered reusable baseline.
271
+ - Fallback source links or absolute local file/folder paths when there is no registered reusable baseline.
260
272
  - Submitted as `string[]`.
261
273
 
262
274
  **`paper_urls`**
263
275
 
264
- - Papers, repos, benchmarks, or leaderboards that shape early scouting.
276
+ - Papers, repos, manuscripts, benchmarks, leaderboards, or absolute local file/folder paths that shape early scouting or writing work.
277
+ - Submitted as `string[]`.
278
+
279
+ **`review_materials`**
280
+
281
+ - Only meaningful for `review_audit` or `revision_rebuttal`.
282
+ - Use one URL or one absolute local file/folder path per line for reviewer comments, decision letters, meta-review notes, or revision packets.
265
283
  - Submitted as `string[]`.
266
284
 
267
285
  ### Constraints and objectives
@@ -317,12 +335,49 @@ Only meaningful when `launch_mode = custom`.
317
335
  - `continue_existing_state`
318
336
  - start by auditing existing baselines, results, drafts, or mixed project assets
319
337
  - prompt builder should steer the agent toward `intake-audit`
338
+ - `review_audit`
339
+ - start from a substantial draft or paper package that needs an independent skeptical audit
340
+ - prompt builder should steer the agent toward `review`
320
341
  - `revision_rebuttal`
321
342
  - start from reviewer comments, revision packets, or a rebuttal task
322
343
  - prompt builder should steer the agent toward `rebuttal`
323
344
  - `freeform`
345
+ - use this as the “Other” path
324
346
  - follow a custom brief with minimal forced workflow assumptions
325
347
 
348
+ **`baseline_execution_policy`**
349
+
350
+ - Only meaningful when `launch_mode = custom`.
351
+ - `auto`
352
+ - let the startup contract and current evidence decide
353
+ - `must_reproduce_or_verify`
354
+ - verify or recover the rebuttal-critical baseline/comparator before reviewer-linked follow-up work
355
+ - `reuse_existing_only`
356
+ - trust the current baseline/results unless they are inconsistent or unusable
357
+ - `skip_unless_blocking`
358
+ - skip baseline reruns unless a named review/rebuttal item truly depends on a missing comparator
359
+
360
+ **`review_followup_policy`**
361
+
362
+ - Mainly meaningful for `review_audit`.
363
+ - `audit_only`
364
+ - stop after the audit artifacts and route recommendation
365
+ - `auto_execute_followups`
366
+ - continue automatically into the justified experiments and manuscript deltas after the audit
367
+ - `user_gated_followups`
368
+ - finish the audit first, then ask for approval before expensive follow-up work
369
+
370
+ **`manuscript_edit_mode`**
371
+
372
+ - Mainly meaningful for `review_audit` and `revision_rebuttal`.
373
+ - `none`
374
+ - planning artifacts only
375
+ - `copy_ready_text`
376
+ - produce section-level revision text that is ready to paste into the manuscript
377
+ - `latex_required`
378
+ - prefer the provided LaTeX tree as the writing surface and produce LaTeX-ready replacement text
379
+ - if you choose this mode, it is best to provide the LaTeX source tree via local path / folder input
380
+
326
381
  **`entry_state_summary`**
327
382
 
328
383
  - Plain-language summary of what already exists.
@@ -378,6 +433,9 @@ Custom launch behavior is explicit:
378
433
  - `custom + continue_existing_state`
379
434
  - tells the agent to audit and normalize existing assets first
380
435
  - explicitly prefers `intake-audit`
436
+ - `custom + review_audit`
437
+ - tells the agent that the current draft/paper state is the active contract
438
+ - explicitly prefers `review`
381
439
  - `custom + revision_rebuttal`
382
440
  - tells the agent to interpret reviewer comments and current paper state first
383
441
  - explicitly prefers `rebuttal`
@@ -477,6 +535,9 @@ Custom launch behavior is explicit:
477
535
  "decision_policy": "user_gated",
478
536
  "launch_mode": "custom",
479
537
  "custom_profile": "revision_rebuttal",
538
+ "review_followup_policy": "audit_only",
539
+ "baseline_execution_policy": "skip_unless_blocking",
540
+ "manuscript_edit_mode": "latex_required",
480
541
  "scope": "baseline_plus_direction",
481
542
  "baseline_mode": "restore_from_url",
482
543
  "resource_policy": "balanced",
@@ -490,6 +551,9 @@ Custom launch behavior is explicit:
490
551
  ],
491
552
  "baseline_urls": [],
492
553
  "paper_urls": [],
554
+ "review_materials": [
555
+ "/absolute/path/to/review-comments.md"
556
+ ],
493
557
  "entry_state_summary": "A draft and previous experiment outputs already exist.",
494
558
  "review_summary": "Reviewers asked for one stronger ablation, one extra baseline, and a clearer limitation paragraph.",
495
559
  "custom_brief": "Treat the current manuscript and review packet as the active contract."
@@ -500,7 +564,7 @@ Custom launch behavior is explicit:
500
564
  ## Operational implications
501
565
 
502
566
  - The startup contract is durable project state, not only UI state.
503
- - Prompt building later reads `launch_mode`, `custom_profile`, and related summaries again.
567
+ - Prompt building later reads `launch_mode`, `custom_profile`, `review_followup_policy`, `baseline_execution_policy`, `manuscript_edit_mode`, `entry_state_summary`, `review_summary`, `review_materials`, and `custom_brief` again.
504
568
  - This means `Start Research` shapes not just the first turn, but later routing decisions too.
505
569
 
506
570
  ## Validation checklist
@@ -10,20 +10,26 @@ Use `ds doctor` when DeepScientist does not start cleanly after installation.
10
10
  npm install -g @researai/deepscientist
11
11
  ```
12
12
 
13
- 2. Make sure Codex is installed and authenticated:
13
+ 2. Make sure Codex itself is working first:
14
+
15
+ Default OpenAI path:
14
16
 
15
17
  ```bash
16
18
  codex --login
17
19
  ```
18
20
 
21
+ Provider-backed profile path:
22
+
23
+ ```bash
24
+ codex --profile minimax
25
+ ```
26
+
19
27
  If `codex` is missing, repair it explicitly with:
20
28
 
21
29
  ```bash
22
30
  npm install -g @openai/codex
23
31
  ```
24
32
 
25
- If your Codex CLI version does not expose `--login`, run `codex` and finish the interactive setup there.
26
-
27
33
  3. Try to start DeepScientist:
28
34
 
29
35
  ```bash
@@ -81,6 +87,23 @@ If your Codex CLI version does not expose `--login`, run `codex` and finish the
81
87
 
82
88
  Finish login once, then rerun `ds doctor`.
83
89
 
90
+ ### Codex profile works in the terminal, but DeepScientist still fails
91
+
92
+ Run DeepScientist with the same profile explicitly:
93
+
94
+ ```bash
95
+ ds doctor --codex-profile minimax
96
+ ds --codex-profile minimax
97
+ ```
98
+
99
+ Replace `minimax` with your real profile name such as `m27`, `glm`, `ark`, or `bailian`.
100
+
101
+ Also check:
102
+
103
+ - the same shell still exports the provider API key
104
+ - the profile points at the provider's Coding Plan endpoint, not the generic API endpoint
105
+ - `~/DeepScientist/config/runners.yaml` uses `model: inherit` if the provider expects the model to come from the profile itself
106
+
84
107
  ### The configured Codex model is unavailable
85
108
 
86
109
  DeepScientist blocks startup until Codex passes a real startup hello probe. In the current release, that probe first uses the runner model configured in:
@@ -95,6 +118,8 @@ The default is `gpt-5.4`. If your Codex account or CLI config cannot access that
95
118
  ds doctor
96
119
  ```
97
120
 
121
+ For provider-backed Codex profiles, `model: inherit` is usually the right default.
122
+
98
123
  ### `uv` is missing
99
124
 
100
125
  Normally `ds` will bootstrap a local `uv` automatically. If that bootstrap fails, install it manually:
@@ -118,12 +118,12 @@ Good pattern:
118
118
 
119
119
  Use these fields to reduce ambiguity before the first round starts.
120
120
 
121
- Put repositories in `Baseline links` when:
121
+ Put repositories or absolute local file/folder paths in `Baseline links` when:
122
122
 
123
123
  - the quest should restore a known repo
124
124
  - the baseline must come from a specific official implementation
125
125
 
126
- Put papers or important external references in `Reference papers / repos` when:
126
+ Put papers, manuscript paths, or important external references in `Paper / reference sources` when:
127
127
 
128
128
  - the task is defined by a paper
129
129
  - the expected protocol comes from prior work
@@ -131,6 +131,9 @@ Put papers or important external references in `Reference papers / repos` when:
131
131
 
132
132
  If you already know the baseline and paper, do not hide them in the main request. Put them in the dedicated fields.
133
133
 
134
+ These reference fields are not web-only.
135
+ You can use network links, absolute local file paths, or absolute local folder paths.
136
+
134
137
  ### 4.5 Reusable baseline
135
138
 
136
139
  Use this only when you already imported a trusted reusable baseline into the registry.
@@ -177,6 +180,22 @@ Why these defaults are usually correct:
177
180
  - `Standard` keeps the workflow on the ordinary path
178
181
  - `Research paper = On` keeps analysis and writing in scope
179
182
 
183
+ If you switch `Launch mode` to `Custom`, choose the custom task type explicitly:
184
+
185
+ - `Continue existing state`
186
+ - for reuse-first work on an existing quest state
187
+ - `Review`
188
+ - for an independent skeptical audit of a substantial draft or paper package
189
+ - `Rebuttal / revision`
190
+ - for reviewer-driven work where comments must be mapped into experiments, manuscript deltas, and a response letter
191
+ - `Other / freeform`
192
+ - for everything else that does not fit the standard custom types
193
+
194
+ If you choose `Review`, also decide:
195
+
196
+ - whether the system should stop after the audit or continue automatically into follow-up experiments and manuscript updates
197
+ - whether manuscript-facing output should be ordinary copy-ready text or LaTeX-ready text
198
+
180
199
  ### 4.8 Runtime constraints
181
200
 
182
201
  Use this field for hard rules, not wishes.
@@ -0,0 +1,284 @@
1
+ # 15 Codex Provider Setup
2
+
3
+ DeepScientist does not implement separate provider adapters for MiniMax, GLM, Volcengine Ark, or Alibaba Bailian.
4
+
5
+ Instead, it reuses the same Codex CLI setup that already works in your terminal.
6
+
7
+ The recommended order is always:
8
+
9
+ 1. make Codex itself work first
10
+ 2. confirm `codex` or `codex --profile <name>` works in a terminal
11
+ 3. run `ds doctor`
12
+ 4. run `ds` or `ds --codex-profile <name>`
13
+
14
+ ## Three supported patterns
15
+
16
+ ### 1. Default OpenAI login path
17
+
18
+ Use this when your Codex CLI works through the standard OpenAI login flow.
19
+
20
+ ```bash
21
+ codex --login
22
+ ds doctor
23
+ ds
24
+ ```
25
+
26
+ ### 2. One-off provider profile
27
+
28
+ Use this when you already have a named Codex profile such as `minimax`, `glm`, `ark`, or `bailian`.
29
+
30
+ ```bash
31
+ codex --profile minimax
32
+ ds doctor --codex-profile minimax
33
+ ds --codex-profile minimax
34
+ ```
35
+
36
+ This is the simplest path. You do not need to edit `runners.yaml` just to try one provider-backed session.
37
+
38
+ ### 3. Persistent provider profile
39
+
40
+ Use this when you want DeepScientist to keep using the same profile by default.
41
+
42
+ ```yaml
43
+ codex:
44
+ enabled: true
45
+ binary: codex
46
+ config_dir: ~/.codex
47
+ profile: minimax
48
+ model: inherit
49
+ model_reasoning_effort: xhigh
50
+ approval_policy: on-request
51
+ sandbox_mode: workspace-write
52
+ ```
53
+
54
+ Important:
55
+
56
+ - keep `model: inherit` for provider-backed Codex profiles unless you are certain the provider accepts the explicit model id you plan to send
57
+ - DeepScientist will reuse the same `~/.codex/config.toml` and environment that your terminal Codex already uses
58
+
59
+ ## Provider matrix
60
+
61
+ | Provider | Official docs | Codex login needed | What DeepScientist should use |
62
+ |---|---|---|---|
63
+ | OpenAI | use the normal Codex setup | Yes | no profile; run `ds` |
64
+ | MiniMax | [MiniMax Codex CLI](https://platform.minimaxi.com/docs/coding-plan/codex-cli) | No | your Codex profile, for example `ds --codex-profile minimax` |
65
+ | GLM | [GLM Coding Plan: Other Tools](https://docs.bigmodel.cn/cn/coding-plan/tool/others) | No | a Codex profile that targets the GLM coding endpoint |
66
+ | Volcengine Ark | [Ark Coding Plan Overview](https://www.volcengine.com/docs/82379/1925114?lang=zh) | No | a Codex profile that targets the Ark coding endpoint |
67
+ | Alibaba Bailian | [Bailian Coding Plan: Other Tools](https://help.aliyun.com/zh/model-studio/other-tools-coding-plan) | No | a Codex profile that targets the Bailian coding endpoint |
68
+
69
+ ## OpenAI
70
+
71
+ ### What to prepare
72
+
73
+ - a normal Codex CLI install
74
+ - a successful `codex --login` or `codex` interactive first-run setup
75
+
76
+ ### DeepScientist commands
77
+
78
+ ```bash
79
+ ds doctor
80
+ ds
81
+ ```
82
+
83
+ ### Persistent runner config
84
+
85
+ ```yaml
86
+ codex:
87
+ enabled: true
88
+ binary: codex
89
+ config_dir: ~/.codex
90
+ profile: ""
91
+ model: gpt-5.4
92
+ ```
93
+
94
+ ## MiniMax
95
+
96
+ MiniMax is the clearest profile-based case. Its official Codex CLI guide configures a custom Codex provider and sets `requires_openai_auth = false`.
97
+
98
+ Official doc:
99
+
100
+ - <https://platform.minimaxi.com/docs/coding-plan/codex-cli>
101
+
102
+ ### What to prepare
103
+
104
+ - Codex CLI installed
105
+ - `MINIMAX_API_KEY` available in the shell that starts Codex and DeepScientist
106
+ - a working Codex profile in `~/.codex/config.toml`
107
+
108
+ ### Codex-side setup
109
+
110
+ MiniMax's official page provides a real Codex custom-provider example. The profile name is yours to choose. Use `minimax` below as an example; if you already created `m27`, keep using `m27`.
111
+
112
+ ```toml
113
+ [model_providers.minimax]
114
+ name = "MiniMax Chat Completions API"
115
+ base_url = "https://api.minimaxi.com/v1"
116
+ env_key = "MINIMAX_API_KEY"
117
+ wire_api = "chat"
118
+ requires_openai_auth = false
119
+ request_max_retries = 4
120
+ stream_max_retries = 10
121
+ stream_idle_timeout_ms = 300000
122
+
123
+ [profiles.minimax]
124
+ model = "codex-MiniMax-M2.5"
125
+ model_provider = "minimax"
126
+ ```
127
+
128
+ Then:
129
+
130
+ ```bash
131
+ export MINIMAX_API_KEY="..."
132
+ codex --profile minimax
133
+ ```
134
+
135
+ ### DeepScientist commands
136
+
137
+ ```bash
138
+ ds doctor --codex-profile minimax
139
+ ds --codex-profile minimax
140
+ ```
141
+
142
+ ### Persistent runner config
143
+
144
+ ```yaml
145
+ codex:
146
+ enabled: true
147
+ binary: codex
148
+ config_dir: ~/.codex
149
+ profile: minimax
150
+ model: inherit
151
+ ```
152
+
153
+ ## GLM
154
+
155
+ GLM documents the Coding Plan as an OpenAI-compatible coding endpoint rather than a dedicated Codex login flow.
156
+
157
+ Official docs:
158
+
159
+ - <https://docs.bigmodel.cn/cn/coding-plan/tool/others>
160
+ - <https://docs.bigmodel.cn/cn/coding-plan/faq>
161
+
162
+ ### Official provider values
163
+
164
+ - Base URL: `https://open.bigmodel.cn/api/coding/paas/v4`
165
+ - API key: your GLM Coding Plan key
166
+ - Model: `GLM-4.7` for the documented path, or `GLM-5` where supported
167
+
168
+ ### Recommended Codex adaptation
169
+
170
+ GLM does not currently publish a separate Codex CLI page in the same style as MiniMax. The practical DeepScientist path is:
171
+
172
+ 1. create a Codex profile in `~/.codex/config.toml` that points to the GLM coding endpoint above
173
+ 2. make sure `codex --profile glm` works in a terminal first
174
+ 3. run DeepScientist with the same profile
175
+
176
+ ### DeepScientist commands
177
+
178
+ ```bash
179
+ ds doctor --codex-profile glm
180
+ ds --codex-profile glm
181
+ ```
182
+
183
+ ### Persistent runner config
184
+
185
+ ```yaml
186
+ codex:
187
+ enabled: true
188
+ binary: codex
189
+ config_dir: ~/.codex
190
+ profile: glm
191
+ model: inherit
192
+ ```
193
+
194
+ ## Volcengine Ark
195
+
196
+ Volcengine Ark explicitly lists Codex CLI as a supported coding tool.
197
+
198
+ Official doc:
199
+
200
+ - <https://www.volcengine.com/docs/82379/1925114?lang=zh>
201
+
202
+ ### Official provider values
203
+
204
+ - OpenAI-compatible Base URL: `https://ark.cn-beijing.volces.com/api/coding/v3`
205
+ - Supported coding models: `doubao-seed-code-preview-latest`, `ark-code-latest`
206
+ - Use the Coding Plan key and the exact Coding Plan endpoint
207
+
208
+ ### Recommended Codex adaptation
209
+
210
+ Create a Codex profile that targets the Ark coding endpoint and test it directly first:
211
+
212
+ ```bash
213
+ codex --profile ark
214
+ ```
215
+
216
+ Then start DeepScientist with the same profile:
217
+
218
+ ```bash
219
+ ds doctor --codex-profile ark
220
+ ds --codex-profile ark
221
+ ```
222
+
223
+ ### Persistent runner config
224
+
225
+ ```yaml
226
+ codex:
227
+ enabled: true
228
+ binary: codex
229
+ config_dir: ~/.codex
230
+ profile: ark
231
+ model: inherit
232
+ ```
233
+
234
+ ## Alibaba Bailian
235
+
236
+ Bailian documents Coding Plan as an OpenAI-compatible coding endpoint. It requires the Coding Plan-specific key and endpoint, not the generic platform endpoint.
237
+
238
+ Official docs:
239
+
240
+ - <https://help.aliyun.com/zh/model-studio/other-tools-coding-plan>
241
+ - <https://help.aliyun.com/zh/model-studio/coding-plan-faq>
242
+
243
+ ### Official provider values
244
+
245
+ - OpenAI-compatible Base URL: `https://coding.dashscope.aliyuncs.com/v1`
246
+ - API key: Coding Plan-specific key, typically `sk-sp-...`
247
+ - Model: choose a Coding Plan-supported model from the current Bailian overview
248
+
249
+ ### Recommended Codex adaptation
250
+
251
+ Create a Codex profile that points to the Bailian Coding Plan endpoint and test it directly first:
252
+
253
+ ```bash
254
+ codex --profile bailian
255
+ ```
256
+
257
+ Then start DeepScientist with the same profile:
258
+
259
+ ```bash
260
+ ds doctor --codex-profile bailian
261
+ ds --codex-profile bailian
262
+ ```
263
+
264
+ ### Persistent runner config
265
+
266
+ ```yaml
267
+ codex:
268
+ enabled: true
269
+ binary: codex
270
+ config_dir: ~/.codex
271
+ profile: bailian
272
+ model: inherit
273
+ ```
274
+
275
+ ## Troubleshooting checklist
276
+
277
+ If a provider-backed profile still fails in DeepScientist:
278
+
279
+ 1. run `codex --profile <name>` manually first
280
+ 2. confirm the provider API key is present in the same shell
281
+ 3. confirm the provider-specific Base URL is the Coding Plan endpoint, not the generic API endpoint
282
+ 4. keep DeepScientist runner `model: inherit` unless you need an explicit override
283
+ 5. run `ds doctor --codex-profile <name>`
284
+ 6. only after that run `ds --codex-profile <name>`
package/docs/en/README.md CHANGED
@@ -30,6 +30,8 @@ This page is the shortest path to the right document.
30
30
 
31
31
  - [00 Quick Start](./00_QUICK_START.md)
32
32
  Start here if you want to install DeepScientist, launch it locally, and create your first project.
33
+ - [15 Codex Provider Setup](./15_CODEX_PROVIDER_SETUP.md)
34
+ Read this when you want to run DeepScientist through MiniMax, GLM, Volcengine Ark, Alibaba Bailian, or another Codex profile.
33
35
  - [12 Guided Workflow Tour](./12_GUIDED_WORKFLOW_TOUR.md)
34
36
  Follow the real product flow from landing page to workspace, step by step.
35
37
  - [02 Start Research Guide](./02_START_RESEARCH_GUIDE.md)
@@ -68,6 +70,8 @@ This page is the shortest path to the right document.
68
70
 
69
71
  - [09 Doctor](./09_DOCTOR.md)
70
72
  Start here for diagnostics and common runtime problems.
73
+ - [15 Codex Provider Setup](./15_CODEX_PROVIDER_SETUP.md)
74
+ Check this if the problem is likely in your Codex profile, provider endpoint, API key, or model configuration.
71
75
  - [01 Settings Reference](./01_SETTINGS_REFERENCE.md)
72
76
  Check this if the problem is likely caused by config, credentials, or connector setup.
73
77
 
@@ -36,7 +36,9 @@
36
36
  建议你先准备好这些:
37
37
 
38
38
  - 安装好 Node.js `>=18.18` 和 npm `>=9`;请优先参考官方页面安装:https://nodejs.org/en/download
39
- - 一个已经完成认证的 Codex CLI;第一次运行 `ds` 前,请先执行 `codex --login`(或 `codex`)并完成认证
39
+ - 一条已经可用的 Codex 路径:
40
+ - 默认 OpenAI 登录路径:`codex --login`(或 `codex`)
41
+ - provider-backed 路径:一个已经可用的 Codex profile,例如 `minimax`、`glm`、`ark`、`bailian`
40
42
  - 模型或 API 凭证
41
43
  - 如果任务比较重,准备好 GPU 或远程服务器
42
44
  - 如果你要长期运行,优先准备 Docker 或其他隔离环境,并准备一个非 root 账号专门启动 DeepScientist
@@ -52,6 +54,10 @@
52
54
  - 阿里百炼 Coding Plan:https://help.aliyun.com/zh/model-studio/coding-plan
53
55
  - 火山引擎 Ark Coding Plan:https://www.volcengine.com/docs/82379/1925115?lang=zh
54
56
 
57
+ 如果你准备使用 provider-backed 的 Codex profile,而不是默认 OpenAI 登录流,请继续看:
58
+
59
+ - [15 Codex Provider 配置](./15_CODEX_PROVIDER_SETUP.md)
60
+
55
61
  ## 1. 先安装 Node.js,再安装 DeepScientist
56
62
 
57
63
  DeepScientist 目前仅支持 Linux 和 macOS。
@@ -89,6 +95,10 @@ ds latex install-runtime
89
95
 
90
96
  ## 2. 第一次运行 `ds` 前,先完成 Codex 配置
91
97
 
98
+ 这里有两条路径,二选一即可。
99
+
100
+ ### 2.1 默认 OpenAI 登录路径
101
+
92
102
  运行:
93
103
 
94
104
  ```bash
@@ -109,7 +119,29 @@ codex
109
119
  ds doctor
110
120
  ```
111
121
 
112
- DeepScientist 会在启动前强制做一次真实的 Codex hello 探测。当前版本里,这个探测会先尝试 `~/DeepScientist/config/runners.yaml` 中配置的 runner 模型,默认是 `gpt-5.4`。如果你的 Codex 账号或本地 CLI 配置不能访问它,DeepScientist 会自动回退到当前 Codex 默认模型,并把后续运行持久化为 `model: inherit`。
122
+ ### 2.2 provider-backed Codex profile 路径
123
+
124
+ 如果你已经在 MiniMax、GLM、火山方舟、阿里百炼或其他 provider 上配置了一个命名的 Codex profile,请先在终端里确认这个 profile 本身可用:
125
+
126
+ ```bash
127
+ codex --profile minimax
128
+ ```
129
+
130
+ 然后用同一个 profile 去跑 DeepScientist:
131
+
132
+ ```bash
133
+ ds doctor --codex-profile minimax
134
+ ```
135
+
136
+ 之后启动:
137
+
138
+ ```bash
139
+ ds --codex-profile minimax
140
+ ```
141
+
142
+ 把这里的 `minimax` 替换成你真实的 profile 名,例如 `m27`、`glm`、`ark`、`bailian`。
143
+
144
+ DeepScientist 会在启动前强制做一次真实的 Codex hello 探测。默认情况下,`~/DeepScientist/config/runners.yaml` 里的 runner 模型还是 `gpt-5.4`。如果你的 profile 希望模型由 profile 自己决定,请把 `runners.yaml` 里的 `model` 改成 `inherit`;或者直接使用 `--codex-profile <name>`,让这一轮启动自动继承 profile 对应的模型。
113
145
 
114
146
  ## 3. 启动本地运行时
115
147
 
@@ -406,6 +406,7 @@ codex:
406
406
  enabled: true
407
407
  binary: codex
408
408
  config_dir: ~/.codex
409
+ profile: ""
409
410
  model: gpt-5.4
410
411
  model_reasoning_effort: xhigh
411
412
  approval_policy: on-request
@@ -453,6 +454,15 @@ claude:
453
454
  - 页面标签:`Config directory`
454
455
  - 作用:runner 的全局配置目录,通常存放认证和全局配置。
455
456
 
457
+ **`profile`**
458
+
459
+ - 类型:`string`
460
+ - 默认值:`""`
461
+ - 页面标签:`Codex profile`
462
+ - 作用:可选的 Codex profile 名称,会直接透传为 `codex --profile <name>`。
463
+ - 当你的 Codex CLI 已经配置成 MiniMax、GLM、火山方舟、阿里百炼或其他 provider-backed 路径时,就在这里填写。
464
+ - 临时使用说明:如果你不想持久化写配置,也可以保持这里为空,直接使用 `ds --codex-profile <name>` 启动。
465
+
456
466
  **`model`**
457
467
 
458
468
  - 类型:`string`
@@ -460,6 +470,7 @@ claude:
460
470
  - 页面标签:`Default model`
461
471
  - 作用:项目和单次请求没有覆盖时的默认模型。
462
472
  - 启动说明:DeepScientist 的 Codex 就绪探测会优先使用这里配置的模型。如果你的 Codex 账号无法访问它,DeepScientist 会自动回退到当前 Codex 默认模型,并持久化为 `model: inherit`。
473
+ - provider-profile 说明:当 `profile` 已设置时,通常推荐使用 `model: inherit`,让 Codex profile 自己决定 provider 侧模型。
463
474
 
464
475
  **`model_reasoning_effort`**
465
476