@researai/deepscientist 1.5.9 → 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.
- package/README.md +112 -99
- package/assets/branding/connector-qq.png +0 -0
- package/assets/branding/connector-rokid.png +0 -0
- package/assets/branding/connector-weixin.png +0 -0
- package/assets/branding/projects.png +0 -0
- package/bin/ds.js +519 -63
- package/docs/assets/branding/projects.png +0 -0
- package/docs/en/00_QUICK_START.md +338 -68
- package/docs/en/01_SETTINGS_REFERENCE.md +14 -0
- package/docs/en/02_START_RESEARCH_GUIDE.md +180 -4
- package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +62 -179
- package/docs/en/09_DOCTOR.md +66 -5
- package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +137 -0
- package/docs/en/11_LICENSE_AND_RISK.md +256 -0
- package/docs/en/12_GUIDED_WORKFLOW_TOUR.md +446 -0
- package/docs/en/13_CORE_ARCHITECTURE_GUIDE.md +297 -0
- package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
- package/docs/en/15_CODEX_PROVIDER_SETUP.md +284 -0
- package/docs/en/99_ACKNOWLEDGEMENTS.md +4 -1
- package/docs/en/README.md +83 -0
- package/docs/images/lingzhu/rokid-agent-platform-create.png +0 -0
- package/docs/images/weixin/weixin-plugin-entry.png +0 -0
- package/docs/images/weixin/weixin-plugin-entry.svg +33 -0
- package/docs/images/weixin/weixin-qr-confirm.svg +30 -0
- package/docs/images/weixin/weixin-quest-media-flow.svg +44 -0
- package/docs/images/weixin/weixin-settings-bind.svg +57 -0
- package/docs/zh/00_QUICK_START.md +345 -72
- package/docs/zh/01_SETTINGS_REFERENCE.md +14 -0
- package/docs/zh/02_START_RESEARCH_GUIDE.md +181 -3
- package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +62 -193
- package/docs/zh/09_DOCTOR.md +68 -5
- package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +144 -0
- package/docs/zh/11_LICENSE_AND_RISK.md +256 -0
- package/docs/zh/12_GUIDED_WORKFLOW_TOUR.md +442 -0
- package/docs/zh/13_CORE_ARCHITECTURE_GUIDE.md +296 -0
- package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
- package/docs/zh/15_CODEX_PROVIDER_SETUP.md +285 -0
- package/docs/zh/99_ACKNOWLEDGEMENTS.md +4 -1
- package/docs/zh/README.md +129 -0
- package/install.sh +0 -34
- package/package.json +2 -2
- package/pyproject.toml +1 -1
- package/src/deepscientist/__init__.py +1 -1
- package/src/deepscientist/annotations.py +343 -0
- package/src/deepscientist/artifact/arxiv.py +484 -37
- package/src/deepscientist/artifact/service.py +574 -108
- package/src/deepscientist/arxiv_library.py +275 -0
- package/src/deepscientist/bash_exec/monitor.py +7 -5
- package/src/deepscientist/bash_exec/service.py +93 -21
- package/src/deepscientist/bridges/builtins.py +2 -0
- package/src/deepscientist/bridges/connectors.py +447 -0
- package/src/deepscientist/channels/__init__.py +2 -0
- package/src/deepscientist/channels/builtins.py +3 -1
- package/src/deepscientist/channels/local.py +3 -3
- package/src/deepscientist/channels/qq.py +8 -8
- package/src/deepscientist/channels/qq_gateway.py +1 -1
- package/src/deepscientist/channels/relay.py +14 -8
- package/src/deepscientist/channels/weixin.py +59 -0
- package/src/deepscientist/channels/weixin_ilink.py +388 -0
- package/src/deepscientist/config/models.py +23 -2
- package/src/deepscientist/config/service.py +539 -67
- package/src/deepscientist/connector/__init__.py +4 -0
- package/src/deepscientist/connector/connector_profiles.py +481 -0
- package/src/deepscientist/connector/lingzhu_support.py +668 -0
- package/src/deepscientist/connector/qq_profiles.py +206 -0
- package/src/deepscientist/connector/weixin_support.py +663 -0
- package/src/deepscientist/connector_profiles.py +1 -374
- package/src/deepscientist/connector_runtime.py +2 -0
- package/src/deepscientist/daemon/api/handlers.py +165 -5
- package/src/deepscientist/daemon/api/router.py +13 -1
- package/src/deepscientist/daemon/app.py +1444 -67
- package/src/deepscientist/doctor.py +4 -5
- package/src/deepscientist/gitops/diff.py +120 -29
- package/src/deepscientist/lingzhu_support.py +1 -182
- package/src/deepscientist/mcp/server.py +135 -7
- package/src/deepscientist/prompts/builder.py +128 -11
- package/src/deepscientist/qq_profiles.py +1 -196
- package/src/deepscientist/quest/node_traces.py +23 -0
- package/src/deepscientist/quest/service.py +359 -74
- package/src/deepscientist/quest/stage_views.py +71 -5
- package/src/deepscientist/runners/codex.py +170 -19
- package/src/deepscientist/runners/runtime_overrides.py +6 -0
- package/src/deepscientist/shared.py +33 -14
- package/src/deepscientist/weixin_support.py +1 -0
- package/src/prompts/connectors/lingzhu.md +3 -1
- package/src/prompts/connectors/qq.md +2 -1
- package/src/prompts/connectors/weixin.md +231 -0
- package/src/prompts/contracts/shared_interaction.md +4 -1
- package/src/prompts/system.md +61 -9
- package/src/skills/analysis-campaign/SKILL.md +46 -6
- package/src/skills/analysis-campaign/references/campaign-plan-template.md +21 -8
- package/src/skills/baseline/SKILL.md +1 -1
- package/src/skills/decision/SKILL.md +1 -1
- package/src/skills/experiment/SKILL.md +1 -1
- package/src/skills/finalize/SKILL.md +1 -1
- package/src/skills/idea/SKILL.md +1 -1
- package/src/skills/intake-audit/SKILL.md +1 -1
- package/src/skills/rebuttal/SKILL.md +74 -1
- package/src/skills/rebuttal/references/response-letter-template.md +55 -11
- package/src/skills/review/SKILL.md +118 -1
- package/src/skills/review/references/experiment-todo-template.md +23 -0
- package/src/skills/review/references/review-report-template.md +16 -0
- package/src/skills/review/references/revision-log-template.md +4 -0
- package/src/skills/scout/SKILL.md +1 -1
- package/src/skills/write/SKILL.md +168 -7
- package/src/skills/write/references/paper-experiment-matrix-template.md +131 -0
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/{AiManusChatView-BKZ103sn.js → AiManusChatView-CnJcXynW.js} +156 -48
- package/src/ui/dist/assets/{AnalysisPlugin-mTTzGAlK.js → AnalysisPlugin-DeyzPEhV.js} +1 -1
- package/src/ui/dist/assets/{CliPlugin-BH58n3GY.js → CliPlugin-CB1YODQn.js} +164 -9
- package/src/ui/dist/assets/{CodeEditorPlugin-BKGRUH7e.js → CodeEditorPlugin-B-xicq1e.js} +8 -8
- package/src/ui/dist/assets/{CodeViewerPlugin-BMADwFWJ.js → CodeViewerPlugin-DT54ysXa.js} +5 -5
- package/src/ui/dist/assets/{DocViewerPlugin-ZOnTIHLN.js → DocViewerPlugin-DQtKT-VD.js} +3 -3
- package/src/ui/dist/assets/{GitDiffViewerPlugin-CQ7h1Djm.js → GitDiffViewerPlugin-hqHbCfnv.js} +20 -21
- package/src/ui/dist/assets/{ImageViewerPlugin-GVS5MsnC.js → ImageViewerPlugin-OcVo33jV.js} +5 -5
- package/src/ui/dist/assets/{LabCopilotPanel-BZNv1JML.js → LabCopilotPanel-DdGwhEUV.js} +11 -11
- package/src/ui/dist/assets/{LabPlugin-TWcJsdQA.js → LabPlugin-Ciz1gDaX.js} +2 -1
- package/src/ui/dist/assets/{LatexPlugin-DIjHiR2x.js → LatexPlugin-BhmjNQRC.js} +37 -11
- package/src/ui/dist/assets/{MarkdownViewerPlugin-D3ooGAH0.js → MarkdownViewerPlugin-BzdVH9Bx.js} +4 -4
- package/src/ui/dist/assets/{MarketplacePlugin-DfVfE9hN.js → MarketplacePlugin-DmyHspXt.js} +3 -3
- package/src/ui/dist/assets/{NotebookEditor-DDl0_Mc0.js → NotebookEditor-BMXKrDRk.js} +1 -1
- package/src/ui/dist/assets/{NotebookEditor-s8JhzuX1.js → NotebookEditor-BTVYRGkm.js} +12 -12
- package/src/ui/dist/assets/{PdfLoader-C2Sf6SJM.js → PdfLoader-CvcjJHXv.js} +14 -7
- package/src/ui/dist/assets/{PdfMarkdownPlugin-CXFLoIsa.js → PdfMarkdownPlugin-DW2ej8Vk.js} +73 -6
- package/src/ui/dist/assets/{PdfViewerPlugin-BYTmz2fK.js → PdfViewerPlugin-CmlDxbhU.js} +103 -34
- package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +3627 -0
- package/src/ui/dist/assets/{SearchPlugin-CjWBI1O9.js → SearchPlugin-DAjQZPSv.js} +1 -1
- package/src/ui/dist/assets/{TextViewerPlugin-DdOBU3-S.js → TextViewerPlugin-C-nVAZb_.js} +5 -4
- package/src/ui/dist/assets/{VNCViewer-B8HGgLwQ.js → VNCViewer-D7-dIYon.js} +10 -10
- package/src/ui/dist/assets/bot-C_G4WtNI.js +21 -0
- package/src/ui/dist/assets/branding/logo-rokid.png +0 -0
- package/src/ui/dist/assets/browser-BAcuE0Xj.js +2895 -0
- package/src/ui/dist/assets/{code-BWAY76JP.js → code-Cd7WfiWq.js} +1 -1
- package/src/ui/dist/assets/{file-content-C1NwU5oQ.js → file-content-B57zsL9y.js} +1 -1
- package/src/ui/dist/assets/{file-diff-panel-CywslwB9.js → file-diff-panel-DVoheLFq.js} +1 -1
- package/src/ui/dist/assets/{file-socket-B4kzuOBQ.js → file-socket-B5kXFxZP.js} +1 -1
- package/src/ui/dist/assets/{image-D-NZM-6P.js → image-LLOjkMHF.js} +1 -1
- package/src/ui/dist/assets/{index-DGIYDuTv.css → index-BQG-1s2o.css} +40 -13
- package/src/ui/dist/assets/{index-DHZJ_0TI.js → index-C3r2iGrp.js} +12 -12
- package/src/ui/dist/assets/{index-7Chr1g9c.js → index-CLQauncb.js} +15050 -9561
- package/src/ui/dist/assets/index-Dxa2eYMY.js +25 -0
- package/src/ui/dist/assets/{index-BdM1Gqfr.js → index-hOUOWbW2.js} +2 -2
- package/src/ui/dist/assets/{monaco-Cb2uKKe6.js → monaco-BGGAEii3.js} +1 -1
- package/src/ui/dist/assets/{pdf-effect-queue-DSw_D3RV.js → pdf-effect-queue-DlEr1_y5.js} +16 -1
- package/src/ui/dist/assets/pdf.worker.min-yatZIOMy.mjs +21 -0
- package/src/ui/dist/assets/{popover-Bg72DGgT.js → popover-CWJbJuYY.js} +1 -1
- package/src/ui/dist/assets/{project-sync-Ce_0BglY.js → project-sync-CRJiucYO.js} +18 -77
- package/src/ui/dist/assets/select-CoHB7pvH.js +1690 -0
- package/src/ui/dist/assets/{sigma-DPaACDrh.js → sigma-D5aJWR8J.js} +1 -1
- package/src/ui/dist/assets/{index-CDxNdQdz.js → square-check-big-DUK_mnkS.js} +2 -13
- package/src/ui/dist/assets/{trash-BvTgE5__.js → trash-ChU3SEE3.js} +1 -1
- package/src/ui/dist/assets/{useCliAccess-CgPeMOwP.js → useCliAccess-BrJBV3tY.js} +1 -1
- package/src/ui/dist/assets/{useFileDiffOverlay-xPhz7P5B.js → useFileDiffOverlay-C2OQaVWc.js} +1 -1
- package/src/ui/dist/assets/{wrap-text-C3Un3YQr.js → wrap-text-C7Qqh-om.js} +1 -1
- package/src/ui/dist/assets/{zoom-out-BgxLa0Ri.js → zoom-out-rtX0FKya.js} +1 -1
- package/src/ui/dist/index.html +2 -2
- package/src/ui/dist/assets/AutoFigurePlugin-BGxN8Umr.css +0 -3056
- package/src/ui/dist/assets/AutoFigurePlugin-C_wWw4AP.js +0 -8149
- package/src/ui/dist/assets/PdfViewerPlugin-BJXtIwj_.css +0 -260
- package/src/ui/dist/assets/Stepper-B0Dd8CxK.js +0 -158
- package/src/ui/dist/assets/bibtex-CKaefIN2.js +0 -189
- package/src/ui/dist/assets/file-utils-H2fjA46S.js +0 -109
- package/src/ui/dist/assets/message-square-BzjLiXir.js +0 -16
- package/src/ui/dist/assets/pdfjs-DU1YE8WO.js +0 -3
- package/src/ui/dist/assets/tooltip-C_mA6R0w.js +0 -108
|
@@ -16,6 +16,92 @@
|
|
|
16
16
|
3. 绑定一个可选的可复用 baseline
|
|
17
17
|
4. 持久化 `startup_contract`,供后续 prompt builder 持续读取
|
|
18
18
|
|
|
19
|
+
## 实战示例:整理后的 quest 025 启动输入
|
|
20
|
+
|
|
21
|
+
理解这个弹窗最快的方法,不是先背字段定义,而是先看一个真实例子。
|
|
22
|
+
|
|
23
|
+
下面这个例子来自 quest `025` 的真实启动输入,但我做了必要的整理,让它更适合公开文档和第一次填写时参考。这个任务的目标是:
|
|
24
|
+
|
|
25
|
+
- 复现官方的 Mandela-Effect baseline
|
|
26
|
+
- 保持原论文任务与评测协议
|
|
27
|
+
- 研究在混合正确 / 错误社会信号下,如何实现更强的 truth-preserving collaboration
|
|
28
|
+
- 使用两个本地 OpenAI-compatible 端点提高吞吐量
|
|
29
|
+
|
|
30
|
+
### 当前前端里先填的短字段
|
|
31
|
+
|
|
32
|
+
| 弹窗字段 | 示例值 | 为什么这样填 |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| `Project title` | `Mandela-Effect Reproduction and Truth-Preserving Collaboration` | 标题清楚,后面在卡片、工作区和搜索里都好认 |
|
|
35
|
+
| `Project ID` | 留空,或者填 `025` | 想自动编号就留空;只有你明确要固定编号时才手动填写 |
|
|
36
|
+
| `Connector delivery` | 第一次建议 `Local only`,如果 QQ 已配置也可以选一个目标 | 当前前端对每个 quest 最多只允许绑定一个外部 connector 目标 |
|
|
37
|
+
| `Reusable baseline` | 第一次可留空;如果官方 baseline 已经导入 registry,就直接选它 | 一旦选中,自动推导的 `baseline_mode` 会变成 `existing` |
|
|
38
|
+
| `Research paper` | `On` | 让项目保持分析和论文式产出在范围内 |
|
|
39
|
+
| `Research intensity` | `Balanced` | 先把 baseline 立稳,再探索一个合理方向 |
|
|
40
|
+
| `Decision mode` | `Autonomous` | 普通路线选择默认自己推进,不把常规决策丢回给用户 |
|
|
41
|
+
| `Launch mode` | `Standard` | 按默认科研主线启动 |
|
|
42
|
+
| `Language` | `English` | 默认用英文组织 kickoff prompt 和用户侧产物 |
|
|
43
|
+
|
|
44
|
+
### 同一个例子里的长文本字段
|
|
45
|
+
|
|
46
|
+
`Primary research request`
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
Please reproduce the official Mandela-Effect repository and paper, then study how to improve truth-preserving collaboration under mixed correct and incorrect social signals.
|
|
50
|
+
|
|
51
|
+
The core research question is: how can a multi-agent system remain factually robust under social influence while still learning from correct peers?
|
|
52
|
+
|
|
53
|
+
Keep the task definition and evaluation protocol aligned with the original work. Focus on prompt-based or system-level methods that improve truth preservation without simply refusing all social information.
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
`Baseline links`
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
https://github.com/bluedream02/Mandela-Effect
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`Reference papers / repos`
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
https://arxiv.org/abs/2602.00428
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
`Runtime constraints`
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
- Keep the task definition and evaluation protocol aligned with the official baseline unless a change is explicitly justified.
|
|
72
|
+
- Use two OpenAI-compatible local inference endpoints for throughput:
|
|
73
|
+
- `http://127.0.0.1:8004/v1`
|
|
74
|
+
- `http://127.0.0.1:8008/v1`
|
|
75
|
+
- Use API key `1234` and model `/model/gpt-oss-120b` on both endpoints.
|
|
76
|
+
- Keep generation settings close to the baseline unless a justified adjustment is required.
|
|
77
|
+
- Implement asynchronous execution, automatic retry on request failure, and resumable scripts.
|
|
78
|
+
- Split requests across both endpoints so throughput stays high without overloading the service.
|
|
79
|
+
- Record failed, degraded, or inconclusive runs honestly instead of hiding them.
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
`Goals`
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
1. Restore and verify the official Mandela-Effect baseline as a trustworthy starting point.
|
|
86
|
+
2. Measure key metrics and failure modes on the designated `gpt-oss-120b` setup.
|
|
87
|
+
3. Propose at least one literature-grounded direction for stronger truth-preserving collaboration.
|
|
88
|
+
4. Produce experiment and analysis artifacts that are strong enough to support paper writing.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 这个例子在前端里会自动推导出什么
|
|
92
|
+
|
|
93
|
+
如果 `Reusable baseline` 留空,且 `Research intensity` 选择 `Balanced`,当前前端会自动推导:
|
|
94
|
+
|
|
95
|
+
- `scope = baseline_plus_direction`
|
|
96
|
+
- `baseline_mode = restore_from_url`
|
|
97
|
+
- `resource_policy = balanced`
|
|
98
|
+
- `time_budget_hours = 24`
|
|
99
|
+
- `git_strategy = semantic_head_plus_controlled_integration`
|
|
100
|
+
|
|
101
|
+
如果你已经选中了一个可复用 baseline,那么只会有一项不同:
|
|
102
|
+
|
|
103
|
+
- `baseline_mode = existing`
|
|
104
|
+
|
|
19
105
|
## 当前前端数据模型
|
|
20
106
|
|
|
21
107
|
### `StartResearchTemplate`
|
|
@@ -29,13 +115,21 @@ type StartResearchTemplate = {
|
|
|
29
115
|
baseline_variant_id: string
|
|
30
116
|
baseline_urls: string
|
|
31
117
|
paper_urls: string
|
|
118
|
+
review_materials: string
|
|
32
119
|
runtime_constraints: string
|
|
33
120
|
objectives: string
|
|
34
121
|
need_research_paper: boolean
|
|
35
122
|
research_intensity: 'light' | 'balanced' | 'sprint'
|
|
36
123
|
decision_policy: 'autonomous' | 'user_gated'
|
|
37
124
|
launch_mode: 'standard' | 'custom'
|
|
38
|
-
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'
|
|
39
133
|
entry_state_summary: string
|
|
40
134
|
review_summary: string
|
|
41
135
|
custom_brief: string
|
|
@@ -83,6 +177,12 @@ type StartResearchContractFields = {
|
|
|
83
177
|
title,
|
|
84
178
|
goal: compiled_prompt,
|
|
85
179
|
quest_id,
|
|
180
|
+
requested_connector_bindings: [
|
|
181
|
+
{
|
|
182
|
+
connector,
|
|
183
|
+
conversation_id
|
|
184
|
+
}
|
|
185
|
+
],
|
|
86
186
|
requested_baseline_ref: {
|
|
87
187
|
baseline_id,
|
|
88
188
|
variant_id
|
|
@@ -95,6 +195,9 @@ type StartResearchContractFields = {
|
|
|
95
195
|
decision_policy,
|
|
96
196
|
launch_mode,
|
|
97
197
|
custom_profile,
|
|
198
|
+
review_followup_policy,
|
|
199
|
+
baseline_execution_policy,
|
|
200
|
+
manuscript_edit_mode,
|
|
98
201
|
scope,
|
|
99
202
|
baseline_mode,
|
|
100
203
|
resource_policy,
|
|
@@ -104,6 +207,7 @@ type StartResearchContractFields = {
|
|
|
104
207
|
objectives: string[],
|
|
105
208
|
baseline_urls: string[],
|
|
106
209
|
paper_urls: string[],
|
|
210
|
+
review_materials: string[],
|
|
107
211
|
entry_state_summary,
|
|
108
212
|
review_summary,
|
|
109
213
|
custom_brief,
|
|
@@ -138,6 +242,26 @@ type StartResearchContractFields = {
|
|
|
138
242
|
|
|
139
243
|
- 声明后续 kickoff 和交流默认偏好的语言。
|
|
140
244
|
|
|
245
|
+
### Connector 投递
|
|
246
|
+
|
|
247
|
+
**`requested_connector_bindings`**
|
|
248
|
+
|
|
249
|
+
- 这是创建项目时随请求一起提交的字段,但不在 `startup_contract` 里面。
|
|
250
|
+
- 当前前端对每个 quest 最多只允许一个外部 connector 目标。
|
|
251
|
+
- 典型结构如下:
|
|
252
|
+
|
|
253
|
+
```ts
|
|
254
|
+
[
|
|
255
|
+
{
|
|
256
|
+
connector: 'qq',
|
|
257
|
+
conversation_id: 'qq:private:openid-123'
|
|
258
|
+
}
|
|
259
|
+
]
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
- 如果你保持项目仅本地运行,这个数组就是空的。
|
|
263
|
+
- 如果你选中的那个目标已经绑定在别的 quest 上,当前项目创建时会把旧绑定替换掉。
|
|
264
|
+
|
|
141
265
|
### Baseline 与参考资料
|
|
142
266
|
|
|
143
267
|
**`baseline_id`**
|
|
@@ -153,11 +277,19 @@ type StartResearchContractFields = {
|
|
|
153
277
|
**`baseline_urls`**
|
|
154
278
|
|
|
155
279
|
- 当没有 registry baseline 时,作为恢复 baseline 的候选来源。
|
|
280
|
+
- 可以填写网络链接,也可以直接填写绝对本地文件 / 文件夹路径。
|
|
156
281
|
- 提交时转成 `string[]`。
|
|
157
282
|
|
|
158
283
|
**`paper_urls`**
|
|
159
284
|
|
|
160
|
-
- 论文、代码仓库、benchmark、leaderboard
|
|
285
|
+
- 论文、代码仓库、benchmark、leaderboard、manuscript 路径等参考资料。
|
|
286
|
+
- 可以填写网络链接,也可以直接填写绝对本地文件 / 文件夹路径。
|
|
287
|
+
- 提交时转成 `string[]`。
|
|
288
|
+
|
|
289
|
+
**`review_materials`**
|
|
290
|
+
|
|
291
|
+
- 主要用于 `review_audit` 或 `revision_rebuttal`。
|
|
292
|
+
- 每行填写一个 URL,或一个绝对本地文件 / 文件夹路径,用于 reviewer comments、decision letter、meta-review 或 revision packet。
|
|
161
293
|
- 提交时转成 `string[]`。
|
|
162
294
|
|
|
163
295
|
### 约束与目标
|
|
@@ -213,12 +345,49 @@ type StartResearchContractFields = {
|
|
|
213
345
|
- `continue_existing_state`
|
|
214
346
|
- 先审计已有 baseline、结果、草稿或混合资产
|
|
215
347
|
- prompt builder 会显式引导 agent 优先打开 `intake-audit`
|
|
348
|
+
- `review_audit`
|
|
349
|
+
- 这是一个对现有 draft / paper package 做独立 skeptical 审计的任务
|
|
350
|
+
- prompt builder 会显式引导 agent 优先打开 `review`
|
|
216
351
|
- `revision_rebuttal`
|
|
217
352
|
- 这是一个审稿回复、revision、rebuttal 类型任务
|
|
218
353
|
- prompt builder 会显式引导 agent 优先打开 `rebuttal`
|
|
219
354
|
- `freeform`
|
|
355
|
+
- 这是“其它”入口
|
|
220
356
|
- 以自定义 brief 为主,尽量少做额外假设
|
|
221
357
|
|
|
358
|
+
**`baseline_execution_policy`**
|
|
359
|
+
|
|
360
|
+
- 仅在 `launch_mode = custom` 时有意义。
|
|
361
|
+
- `auto`
|
|
362
|
+
- 让启动合同和当前证据自己决定
|
|
363
|
+
- `must_reproduce_or_verify`
|
|
364
|
+
- 在 reviewer-linked 的后续工作之前,先验证或恢复 rebuttal 关键依赖的 baseline / comparator
|
|
365
|
+
- `reuse_existing_only`
|
|
366
|
+
- 默认信任当前 baseline / 结果,除非它们明显不一致或不可用
|
|
367
|
+
- `skip_unless_blocking`
|
|
368
|
+
- 默认跳过 baseline 重跑,只有当某个 review / rebuttal 条目明确依赖缺失 comparator 时才补跑
|
|
369
|
+
|
|
370
|
+
**`review_followup_policy`**
|
|
371
|
+
|
|
372
|
+
- 主要用于 `review_audit`。
|
|
373
|
+
- `audit_only`
|
|
374
|
+
- 只完成审计产物和路由建议
|
|
375
|
+
- `auto_execute_followups`
|
|
376
|
+
- 审计后自动继续进入合理的实验和论文修改
|
|
377
|
+
- `user_gated_followups`
|
|
378
|
+
- 先完成审计,再在昂贵后续动作前等待你的批准
|
|
379
|
+
|
|
380
|
+
**`manuscript_edit_mode`**
|
|
381
|
+
|
|
382
|
+
- 主要用于 `review_audit` 和 `revision_rebuttal`。
|
|
383
|
+
- `none`
|
|
384
|
+
- 只输出规划产物
|
|
385
|
+
- `copy_ready_text`
|
|
386
|
+
- 输出 section-level 的可直接粘贴修改文本
|
|
387
|
+
- `latex_required`
|
|
388
|
+
- 优先把提供的 LaTeX 树当作写作表面,并输出 LaTeX-ready 的替换文本
|
|
389
|
+
- 如果选择这个模式,最好同时通过本地路径 / 文件夹输入提供 LaTeX 源目录
|
|
390
|
+
|
|
222
391
|
**`entry_state_summary`**
|
|
223
392
|
|
|
224
393
|
- 用自然语言概括当前已经存在什么。
|
|
@@ -275,6 +444,9 @@ type StartResearchContractFields = {
|
|
|
275
444
|
- `custom + continue_existing_state`
|
|
276
445
|
- 告诉 agent 先整理和信任排序已有资产
|
|
277
446
|
- 明确优先 `intake-audit`
|
|
447
|
+
- `custom + review_audit`
|
|
448
|
+
- 告诉 agent 当前 draft / paper 状态就是主动合同
|
|
449
|
+
- 明确优先 `review`
|
|
278
450
|
- `custom + revision_rebuttal`
|
|
279
451
|
- 告诉 agent 先理解 reviewer comments 和当前论文状态
|
|
280
452
|
- 明确优先 `rebuttal`
|
|
@@ -374,6 +546,9 @@ type StartResearchContractFields = {
|
|
|
374
546
|
"decision_policy": "user_gated",
|
|
375
547
|
"launch_mode": "custom",
|
|
376
548
|
"custom_profile": "revision_rebuttal",
|
|
549
|
+
"review_followup_policy": "audit_only",
|
|
550
|
+
"baseline_execution_policy": "skip_unless_blocking",
|
|
551
|
+
"manuscript_edit_mode": "latex_required",
|
|
377
552
|
"scope": "baseline_plus_direction",
|
|
378
553
|
"baseline_mode": "restore_from_url",
|
|
379
554
|
"resource_policy": "balanced",
|
|
@@ -387,6 +562,9 @@ type StartResearchContractFields = {
|
|
|
387
562
|
],
|
|
388
563
|
"baseline_urls": [],
|
|
389
564
|
"paper_urls": [],
|
|
565
|
+
"review_materials": [
|
|
566
|
+
"/absolute/path/to/review-comments.md"
|
|
567
|
+
],
|
|
390
568
|
"entry_state_summary": "A draft and previous experiment outputs already exist.",
|
|
391
569
|
"review_summary": "Reviewers asked for one stronger ablation, one extra baseline, and a clearer limitation paragraph.",
|
|
392
570
|
"custom_brief": "Treat the current manuscript and review packet as the active contract."
|
|
@@ -397,7 +575,7 @@ type StartResearchContractFields = {
|
|
|
397
575
|
## 运行时意义
|
|
398
576
|
|
|
399
577
|
- `startup_contract` 是项目的持久状态,不只是 UI 临时字段。
|
|
400
|
-
- 后续 prompt builder 还会继续读取 `launch_mode`、`custom_profile`、`entry_state_summary`、`review_summary`、`custom_brief`。
|
|
578
|
+
- 后续 prompt builder 还会继续读取 `launch_mode`、`custom_profile`、`review_followup_policy`、`baseline_execution_policy`、`manuscript_edit_mode`、`entry_state_summary`、`review_summary`、`review_materials`、`custom_brief`。
|
|
401
579
|
- 所以 `Start Research` 不只影响第一轮,还会影响后续路由判断。
|
|
402
580
|
|
|
403
581
|
## 修改检查清单
|
|
@@ -1,230 +1,99 @@
|
|
|
1
|
-
# 04 Lingzhu
|
|
1
|
+
# 04 Lingzhu 连接器指南:把 Rokid Glasses 绑定到 DeepScientist
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Lingzhu 现在是一个极简的一步式绑定流程。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
DeepScientist 会直接在自己的 daemon / Web 端口上提供 Lingzhu 兼容路由:
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
- 本地健康检查与 SSE 冒烟测试
|
|
10
|
-
- 说明需要把哪些值填回 Lingzhu 平台
|
|
7
|
+
- `GET /metis/agent/api/health`
|
|
8
|
+
- `POST /metis/agent/api/sse`
|
|
11
9
|
|
|
12
|
-
|
|
10
|
+
真实设备要想接入,Rokid 平台里填写的地址必须就是外部可以访问到的 DeepScientist 公网地址,不能是 `127.0.0.1`、`localhost` 或私网地址。
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
- 一个眼镜端可访问的公网 IP 或公网域名
|
|
12
|
+
参考:
|
|
16
13
|
|
|
17
|
-
|
|
14
|
+
- Rokid 开发者论坛:https://forum.rokid.com/post/detail/2831
|
|
15
|
+
- Rokid 智能体平台:https://agent-develop.rokid.com/space
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
- 仓库内置 bridge 目录:`assets/connectors/lingzhu/openclaw-bridge`
|
|
21
|
-
- 仓库内置 OpenClaw 配置模板:`assets/connectors/lingzhu/openclaw.lingzhu.config.template.json`
|
|
17
|
+
## 1. 绑定前提
|
|
22
18
|
|
|
23
|
-
|
|
19
|
+
先确认:
|
|
24
20
|
|
|
25
|
-
|
|
21
|
+
- DeepScientist 已正常启动
|
|
22
|
+
- 你当前打开的 DeepScientist 网页地址就是最终对外可访问的公网地址
|
|
23
|
+
- 如果当前网页地址是本地地址或私网地址,Lingzhu 不应直接保存
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
- 本地 SSE URL
|
|
29
|
-
- 公网 SSE URL
|
|
30
|
-
- `auth_ak`
|
|
31
|
-
- OpenClaw 配置片段
|
|
32
|
-
- 本地探测 `curl`
|
|
25
|
+
## 2. 页面里现在保留什么
|
|
33
26
|
|
|
34
|
-
|
|
27
|
+
`Settings > Connectors > Lingzhu` 现在只保留必要内容:
|
|
35
28
|
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
29
|
+
- 一个 `Add Lingzhu (Rokid Glasses)` 入口
|
|
30
|
+
- Rokid 平台创建表单截图
|
|
31
|
+
- 自动生成的可复制字段
|
|
32
|
+
- 中文绑定指引
|
|
33
|
+
- 保存按钮
|
|
39
34
|
|
|
40
|
-
|
|
35
|
+
不再要求你先手动改 host、port、agent、OpenClaw 配置片段或额外调试步骤。
|
|
41
36
|
|
|
42
|
-
|
|
43
|
-
- 它不是像 QQ 那样的完整双向聊天 connector
|
|
37
|
+
## 3. 点击后会自动生成什么
|
|
44
38
|
|
|
45
|
-
|
|
39
|
+
点击 `Add Lingzhu (Rokid Glasses)` 后,弹窗会自动显示这些值,并且每一项都可以直接复制:
|
|
46
40
|
|
|
47
|
-
|
|
41
|
+
- 自定义智能体ID
|
|
42
|
+
- 自定义智能体url
|
|
43
|
+
- 自定义智能体AK
|
|
44
|
+
- 智能体名称
|
|
45
|
+
- 类别
|
|
46
|
+
- 功能介绍
|
|
47
|
+
- 开场白
|
|
48
|
+
- 入参类型
|
|
49
|
+
- 图标 PNG 地址
|
|
48
50
|
|
|
49
|
-
|
|
50
|
-
- 本地 OpenClaw gateway 已启动
|
|
51
|
-
- 你知道 OpenClaw HTTP gateway 的端口,通常是 `18789`
|
|
52
|
-
- 你已经有公网 IP 或公网域名
|
|
51
|
+
其中:
|
|
53
52
|
|
|
54
|
-
|
|
53
|
+
- `Custom agent URL` 会自动生成成 `https://<你的公网地址>/metis/agent/api/sse`
|
|
54
|
+
- `AK` 会自动随机生成,并在保存后长期复用,不会每次都变
|
|
55
|
+
- logo 使用 DeepScientist 的 PNG 资源,方便直接上传到 Rokid
|
|
55
56
|
|
|
56
|
-
-
|
|
57
|
-
- Lingzhu 设备侧必须访问公网地址
|
|
57
|
+

|
|
58
58
|
|
|
59
|
-
##
|
|
59
|
+
## 4. 用户怎么做
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
在 Rokid 平台:
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
1. 打开 `项目开发 -> 三方智能体 -> 创建`
|
|
64
|
+
2. 选择“自定义智能体”
|
|
65
|
+
3. 把弹窗里自动生成的字段逐项复制过去
|
|
66
|
+
4. 图标上传 DeepScientist PNG logo
|
|
67
|
+
5. Rokid 表单填写完成后,回到 DeepScientist 点击保存
|
|
64
68
|
|
|
65
|
-
|
|
69
|
+
保存完成后,Lingzhu 绑定就算完成。
|
|
66
70
|
|
|
67
|
-
|
|
68
|
-
- 鉴权与身份
|
|
69
|
-
- 自动生成值
|
|
70
|
-
- 探测与校验
|
|
71
|
-
- 高级调试
|
|
71
|
+
## 5. 后续怎么用
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
眼镜侧后续只需要请求:
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
- `POST /metis/agent/api/sse`
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
并带上:
|
|
78
78
|
|
|
79
|
-
|
|
80
|
-
| --- | --- | --- |
|
|
81
|
-
| `Enabled` | `true` | 开启 companion 配置 |
|
|
82
|
-
| `Transport` | `openclaw_sse` | 固定值,不要改 |
|
|
83
|
-
| `Local host` | `127.0.0.1` | 只用于本地探测 |
|
|
84
|
-
| `Gateway port` | `18789` | 与 OpenClaw gateway 保持一致 |
|
|
85
|
-
| `Public base URL` | `http://<公网IP>:18789` | 必须是眼镜端真正能访问到的地址 |
|
|
79
|
+
- `Authorization: Bearer <保存后的AK>`
|
|
86
80
|
|
|
87
|
-
|
|
81
|
+
使用规则:
|
|
88
82
|
|
|
89
|
-
-
|
|
83
|
+
- 新任务必须以 `我现在的任务是 ...` 开头
|
|
84
|
+
- 只有这个前缀后面的正文才会被当成新的 DeepScientist 任务
|
|
85
|
+
- 如果只是想继续拿中间进展,不要重复这个前缀,直接说 `找DeepScientist` 或 `继续`
|
|
90
86
|
|
|
91
|
-
##
|
|
87
|
+
## 6. 常见问题
|
|
92
88
|
|
|
93
|
-
|
|
89
|
+
### 为什么不能用 `127.0.0.1`
|
|
94
90
|
|
|
95
|
-
|
|
96
|
-
| --- | --- |
|
|
97
|
-
| `Auth AK` | 点击 `Generate AK` 自动生成 |
|
|
98
|
-
| `Agent ID` | `main` |
|
|
99
|
-
| `Lingzhu system prompt` | 可选 |
|
|
91
|
+
因为 Rokid 平台和外部设备访问不到你的本地回环地址。Lingzhu 只应该注册公网地址。
|
|
100
92
|
|
|
101
|
-
|
|
93
|
+
### 为什么要自动生成 `AK`
|
|
102
94
|
|
|
103
|
-
|
|
104
|
-
- Lingzhu 平台配置
|
|
95
|
+
因为 `AK` 本质上就是这个外部接入口的 Bearer 密钥。系统生成并持久化,比手填更稳定,也更不容易出错。
|
|
105
96
|
|
|
106
|
-
|
|
97
|
+
### 保存后还需要再手动配很多参数吗
|
|
107
98
|
|
|
108
|
-
|
|
109
|
-
- `agent_id`
|
|
110
|
-
|
|
111
|
-
## 6. 使用自动生成值
|
|
112
|
-
|
|
113
|
-
DeepScientist 会直接展示你需要复制的内容:
|
|
114
|
-
|
|
115
|
-
- 本地 health URL
|
|
116
|
-
- 本地 SSE URL
|
|
117
|
-
- 公网 SSE URL
|
|
118
|
-
- OpenClaw 配置片段
|
|
119
|
-
- 探测 curl
|
|
120
|
-
|
|
121
|
-
其中真正要填回 Lingzhu 平台的是:
|
|
122
|
-
|
|
123
|
-
- 公网 SSE URL
|
|
124
|
-
- AK
|
|
125
|
-
|
|
126
|
-

|
|
127
|
-
|
|
128
|
-
## 7. 更新 OpenClaw
|
|
129
|
-
|
|
130
|
-
你可以直接使用:
|
|
131
|
-
|
|
132
|
-
- 设置页里自动生成的配置片段
|
|
133
|
-
- 或仓库内置模板 `assets/connectors/lingzhu/openclaw.lingzhu.config.template.json`
|
|
134
|
-
|
|
135
|
-
内置 bridge 的安装命令为:
|
|
136
|
-
|
|
137
|
-
```bash
|
|
138
|
-
openclaw plugins install ./assets/connectors/lingzhu/openclaw-bridge
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
至少应确保 OpenClaw 开启:
|
|
142
|
-
|
|
143
|
-
```json
|
|
144
|
-
{
|
|
145
|
-
"gateway": {
|
|
146
|
-
"port": 18789,
|
|
147
|
-
"http": {
|
|
148
|
-
"endpoints": {
|
|
149
|
-
"chatCompletions": {
|
|
150
|
-
"enabled": true
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
DeepScientist 也会自动把完整的 Lingzhu 插件配置片段生成出来:
|
|
159
|
-
|
|
160
|
-

|
|
161
|
-
|
|
162
|
-
## 8. 执行本地探测
|
|
163
|
-
|
|
164
|
-
保存参数后,点击:
|
|
165
|
-
|
|
166
|
-
- `Run Lingzhu probe`
|
|
167
|
-
|
|
168
|
-
DeepScientist 会依次执行:
|
|
169
|
-
|
|
170
|
-
1. `GET /metis/agent/api/health`
|
|
171
|
-
2. `POST /metis/agent/api/sse`
|
|
172
|
-
|
|
173
|
-
理想结果:
|
|
174
|
-
|
|
175
|
-
- `Connection = reachable`
|
|
176
|
-
- `Auth = ready`
|
|
177
|
-
- 探测结果没有报错
|
|
178
|
-
|
|
179
|
-
## 9. 需要填回 Lingzhu 平台的值
|
|
180
|
-
|
|
181
|
-
只需要填:
|
|
182
|
-
|
|
183
|
-
- `Public SSE URL`
|
|
184
|
-
- `Auth AK`
|
|
185
|
-
|
|
186
|
-
不要填:
|
|
187
|
-
|
|
188
|
-
- `127.0.0.1`
|
|
189
|
-
- 任意本地机器名
|
|
190
|
-
|
|
191
|
-
## 10. 常见失败原因
|
|
192
|
-
|
|
193
|
-
### Health 显示 offline
|
|
194
|
-
|
|
195
|
-
通常说明:
|
|
196
|
-
|
|
197
|
-
- OpenClaw 没启动
|
|
198
|
-
- `gateway_port` 填错
|
|
199
|
-
- `local_host` 填错
|
|
200
|
-
|
|
201
|
-
### SSE probe 失败
|
|
202
|
-
|
|
203
|
-
通常说明:
|
|
204
|
-
|
|
205
|
-
- `auth_ak` 不一致
|
|
206
|
-
- Lingzhu SSE 路径没有暴露出来
|
|
207
|
-
- OpenClaw 的 `chatCompletions.enabled` 还没打开
|
|
208
|
-
|
|
209
|
-
### 本地探测通过,但设备仍无法接入
|
|
210
|
-
|
|
211
|
-
通常说明:
|
|
212
|
-
|
|
213
|
-
- `Public base URL` 不是公网可达地址
|
|
214
|
-
- 防火墙或反向代理还没有放行端口
|
|
215
|
-
|
|
216
|
-
## 11. 说明
|
|
217
|
-
|
|
218
|
-
这块配置保持 registry-first:
|
|
219
|
-
|
|
220
|
-
- Lingzhu 仍然落在 `connectors.yaml`
|
|
221
|
-
- 自动生成值来自同一份 structured config
|
|
222
|
-
- 校验、测试、前端渲染都消费同一条 connector 记录
|
|
223
|
-
|
|
224
|
-
对于长任务,更稳妥的实际策略是:
|
|
225
|
-
|
|
226
|
-
- 先由 bridge 自动回执
|
|
227
|
-
- 在上游静默阶段由 bridge 补发可见进度心跳
|
|
228
|
-
- 通过 `per_user` 会话连续保持多轮上下文
|
|
229
|
-
|
|
230
|
-
这会明显改善兼容性,但仍不能消除 Lingzhu 平台单次请求超时的硬限制。
|
|
99
|
+
不需要。Lingzhu 现在的目标就是让用户只看到必要字段,复制过去,然后保存完成。
|
package/docs/zh/09_DOCTOR.md
CHANGED
|
@@ -10,21 +10,43 @@
|
|
|
10
10
|
npm install -g @researai/deepscientist
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
2.
|
|
13
|
+
2. 先确保 Codex 自己已经可用:
|
|
14
|
+
|
|
15
|
+
默认 OpenAI 路径:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
codex --login
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
provider-backed profile 路径:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
codex --profile minimax
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
如果 `codex` 缺失,请显式修复:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install -g @openai/codex
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
如果你的 Codex CLI 版本没有 `--login`,就运行 `codex` 并在交互式界面里完成认证。
|
|
34
|
+
|
|
35
|
+
3. 先直接尝试启动:
|
|
14
36
|
|
|
15
37
|
```bash
|
|
16
38
|
ds
|
|
17
39
|
```
|
|
18
40
|
|
|
19
|
-
|
|
41
|
+
4. 如果启动失败,或者看起来不正常,再运行:
|
|
20
42
|
|
|
21
43
|
```bash
|
|
22
44
|
ds doctor
|
|
23
45
|
```
|
|
24
46
|
|
|
25
|
-
|
|
47
|
+
5. 从上到下阅读诊断结果,优先修复失败项。
|
|
26
48
|
|
|
27
|
-
|
|
49
|
+
6. 修完后重新运行 `ds doctor`,直到检查通过,再运行 `ds`。
|
|
28
50
|
|
|
29
51
|
## `ds doctor` 会检查什么
|
|
30
52
|
|
|
@@ -49,16 +71,57 @@
|
|
|
49
71
|
npm install -g @researai/deepscientist
|
|
50
72
|
```
|
|
51
73
|
|
|
74
|
+
如果装完以后 `codex` 仍然不可用,请显式安装:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npm install -g @openai/codex
|
|
78
|
+
```
|
|
79
|
+
|
|
52
80
|
### 已安装 Codex,但还没有登录
|
|
53
81
|
|
|
54
82
|
运行:
|
|
55
83
|
|
|
56
84
|
```bash
|
|
57
|
-
codex
|
|
85
|
+
codex --login
|
|
58
86
|
```
|
|
59
87
|
|
|
88
|
+
如果你的 Codex CLI 版本没有 `--login`,就运行 `codex` 并在交互式界面里完成认证。
|
|
89
|
+
|
|
60
90
|
先完成一次登录,再重新执行 `ds doctor`。
|
|
61
91
|
|
|
92
|
+
### Codex profile 在终端里可用,但 DeepScientist 还是失败
|
|
93
|
+
|
|
94
|
+
请显式让 DeepScientist 使用同一个 profile:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
ds doctor --codex-profile minimax
|
|
98
|
+
ds --codex-profile minimax
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
把这里的 `minimax` 换成你的真实 profile 名,例如 `m27`、`glm`、`ark`、`bailian`。
|
|
102
|
+
|
|
103
|
+
同时检查:
|
|
104
|
+
|
|
105
|
+
- 启动 DeepScientist 的这个 shell 中,provider API key 仍然可见
|
|
106
|
+
- 该 profile 指向的是 provider 的 Coding Plan endpoint,而不是普通通用 API endpoint
|
|
107
|
+
- 如果模型应该由 profile 自己决定,请在 `~/DeepScientist/config/runners.yaml` 中使用 `model: inherit`
|
|
108
|
+
|
|
109
|
+
### 当前配置的 Codex 模型不可用
|
|
110
|
+
|
|
111
|
+
DeepScientist 会在启动前强制做一次真实的 Codex hello 探测。当前版本里,这个探测会先使用:
|
|
112
|
+
|
|
113
|
+
```text
|
|
114
|
+
~/DeepScientist/config/runners.yaml
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
里配置的 runner 模型,默认值是 `gpt-5.4`。如果你的 Codex 账号或本地 CLI 配置不能访问这个模型,DeepScientist 现在会自动重试当前 Codex 默认模型,并把后续运行持久化为 `model: inherit`。如果你仍然想指定某个具体模型,再手动改配置并重新执行:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
ds doctor
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
对于 provider-backed 的 Codex profile,通常建议直接使用 `model: inherit`。
|
|
124
|
+
|
|
62
125
|
### 没有安装 `uv`
|
|
63
126
|
|
|
64
127
|
正常情况下,第一次运行 `ds` 会自动在本地安装 `uv`。如果自动安装失败,再手动执行:
|