@researai/deepscientist 1.5.0 → 1.5.1
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/AGENTS.md +26 -0
- package/README.md +19 -179
- package/assets/connectors/lingzhu/openclaw-bridge/README.md +124 -0
- package/assets/connectors/lingzhu/openclaw-bridge/index.ts +162 -0
- package/assets/connectors/lingzhu/openclaw-bridge/openclaw.plugin.json +145 -0
- package/assets/connectors/lingzhu/openclaw-bridge/package.json +35 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/cli.ts +180 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/config.ts +196 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/debug-log.ts +111 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/events.ts +4 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/http-handler.ts +1133 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/image-cache.ts +75 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/lingzhu-tools.ts +246 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/transform.ts +541 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/types.ts +131 -0
- package/assets/connectors/lingzhu/openclaw-bridge/tsconfig.json +14 -0
- package/assets/connectors/lingzhu/openclaw.lingzhu.config.template.json +39 -0
- package/bin/ds.js +233 -53
- package/docs/en/00_QUICK_START.md +134 -0
- package/docs/en/01_SETTINGS_REFERENCE.md +1104 -0
- package/docs/en/02_START_RESEARCH_GUIDE.md +404 -0
- package/docs/en/03_QQ_CONNECTOR_GUIDE.md +325 -0
- package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +216 -0
- package/docs/en/05_TUI_GUIDE.md +141 -0
- package/docs/en/06_RUNTIME_AND_CANVAS.md +679 -0
- package/docs/en/07_MEMORY_AND_MCP.md +253 -0
- package/docs/en/08_FIGURE_STYLE_GUIDE.md +97 -0
- package/docs/en/09_DOCTOR.md +108 -0
- package/docs/en/90_ARCHITECTURE.md +245 -0
- package/docs/en/91_DEVELOPMENT.md +195 -0
- package/docs/en/99_ACKNOWLEDGEMENTS.md +29 -0
- package/docs/zh/00_QUICK_START.md +134 -0
- package/docs/zh/01_SETTINGS_REFERENCE.md +1137 -0
- package/docs/zh/02_START_RESEARCH_GUIDE.md +414 -0
- package/docs/zh/03_QQ_CONNECTOR_GUIDE.md +324 -0
- package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +230 -0
- package/docs/zh/05_TUI_GUIDE.md +128 -0
- package/docs/zh/06_RUNTIME_AND_CANVAS.md +271 -0
- package/docs/zh/07_MEMORY_AND_MCP.md +235 -0
- package/docs/zh/08_FIGURE_STYLE_GUIDE.md +97 -0
- package/docs/zh/09_DOCTOR.md +112 -0
- package/docs/zh/99_ACKNOWLEDGEMENTS.md +29 -0
- package/install.sh +32 -8
- package/package.json +4 -2
- package/pyproject.toml +1 -1
- package/src/deepscientist/artifact/guidance.py +9 -2
- package/src/deepscientist/artifact/service.py +482 -22
- package/src/deepscientist/bash_exec/monitor.py +27 -5
- package/src/deepscientist/bash_exec/runtime.py +639 -0
- package/src/deepscientist/bash_exec/service.py +99 -16
- package/src/deepscientist/bridges/base.py +3 -0
- package/src/deepscientist/bridges/connectors.py +292 -13
- package/src/deepscientist/channels/qq.py +19 -2
- package/src/deepscientist/channels/relay.py +1 -0
- package/src/deepscientist/cli.py +32 -25
- package/src/deepscientist/config/models.py +28 -2
- package/src/deepscientist/config/service.py +201 -6
- package/src/deepscientist/connector_runtime.py +2 -0
- package/src/deepscientist/daemon/api/handlers.py +50 -5
- package/src/deepscientist/daemon/api/router.py +1 -0
- package/src/deepscientist/daemon/app.py +442 -15
- package/src/deepscientist/doctor.py +444 -0
- package/src/deepscientist/home.py +1 -0
- package/src/deepscientist/latex_runtime.py +17 -4
- package/src/deepscientist/lingzhu_support.py +182 -0
- package/src/deepscientist/mcp/server.py +49 -2
- package/src/deepscientist/prompts/builder.py +181 -58
- package/src/deepscientist/quest/layout.py +1 -0
- package/src/deepscientist/quest/service.py +63 -2
- package/src/deepscientist/quest/stage_views.py +19 -1
- package/src/deepscientist/runtime_tools/__init__.py +16 -0
- package/src/deepscientist/runtime_tools/builtins.py +19 -0
- package/src/deepscientist/runtime_tools/models.py +29 -0
- package/src/deepscientist/runtime_tools/registry.py +40 -0
- package/src/deepscientist/runtime_tools/service.py +59 -0
- package/src/deepscientist/runtime_tools/tinytex.py +25 -0
- package/src/deepscientist/tinytex.py +276 -0
- package/src/prompts/connectors/lingzhu.md +12 -0
- package/src/prompts/connectors/qq.md +121 -0
- package/src/prompts/system.md +177 -33
- package/src/skills/analysis-campaign/SKILL.md +22 -6
- package/src/skills/baseline/SKILL.md +5 -4
- package/src/skills/decision/SKILL.md +4 -3
- package/src/skills/experiment/SKILL.md +5 -4
- package/src/skills/finalize/SKILL.md +5 -4
- package/src/skills/idea/SKILL.md +5 -4
- package/src/skills/intake-audit/SKILL.md +277 -0
- package/src/skills/intake-audit/references/state-audit-template.md +41 -0
- package/src/skills/rebuttal/SKILL.md +407 -0
- package/src/skills/rebuttal/references/action-plan-template.md +63 -0
- package/src/skills/rebuttal/references/evidence-update-template.md +30 -0
- package/src/skills/rebuttal/references/response-letter-template.md +113 -0
- package/src/skills/rebuttal/references/review-matrix-template.md +55 -0
- package/src/skills/review/SKILL.md +293 -0
- package/src/skills/review/references/experiment-todo-template.md +29 -0
- package/src/skills/review/references/review-report-template.md +83 -0
- package/src/skills/review/references/revision-log-template.md +40 -0
- package/src/skills/scout/SKILL.md +5 -4
- package/src/skills/write/SKILL.md +7 -3
- package/src/tui/dist/components/WelcomePanel.js +17 -43
- package/src/tui/dist/components/messages/BashExecOperationMessage.js +3 -2
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/{AiManusChatView-7v-dHngU.js → AiManusChatView-w5lF2Ttt.js} +109 -575
- package/src/ui/dist/assets/{AnalysisPlugin-B_Xmz-KE.js → AnalysisPlugin-DJOED79I.js} +1 -1
- package/src/ui/dist/assets/{AutoFigurePlugin-Cko-0tm1.js → AutoFigurePlugin-DaG61Y0M.js} +63 -8
- package/src/ui/dist/assets/{CliPlugin-BsU0ht7q.js → CliPlugin-CV4LqUB_.js} +43 -609
- package/src/ui/dist/assets/{CodeEditorPlugin-DcMMP0Rt.js → CodeEditorPlugin-DylfAea4.js} +8 -8
- package/src/ui/dist/assets/{CodeViewerPlugin-BqoQ5QyY.js → CodeViewerPlugin-F7saY0LM.js} +5 -5
- package/src/ui/dist/assets/{DocViewerPlugin-D7eHNhU6.js → DocViewerPlugin-COP0c7jf.js} +3 -3
- package/src/ui/dist/assets/{GitDiffViewerPlugin-DLJN42T5.js → GitDiffViewerPlugin-CAS05pT9.js} +1 -1
- package/src/ui/dist/assets/{ImageViewerPlugin-gJMV7MOu.js → ImageViewerPlugin-Bco1CN_w.js} +5 -6
- package/src/ui/dist/assets/{LabCopilotPanel-B857sfxP.js → LabCopilotPanel-CvMlCD99.js} +12 -15
- package/src/ui/dist/assets/LabPlugin-BYankkE4.js +2676 -0
- package/src/ui/dist/assets/LabPlugin-D9jVIo0A.css +2698 -0
- package/src/ui/dist/assets/{LatexPlugin-DWKEo-Wj.js → LatexPlugin-LDSMR-t-.js} +16 -16
- package/src/ui/dist/assets/{MarkdownViewerPlugin-DBzoEmhv.js → MarkdownViewerPlugin-B7o80jgm.js} +4 -4
- package/src/ui/dist/assets/{MarketplacePlugin-DoHc-8vo.js → MarketplacePlugin-CM6ZOcpC.js} +3 -3
- package/src/ui/dist/assets/{NotebookEditor-CKjKH-yS.js → NotebookEditor-Dc61cXmK.js} +3 -3
- package/src/ui/dist/assets/{PdfLoader-zFoL0VPo.js → PdfLoader-DWowuQwx.js} +1 -1
- package/src/ui/dist/assets/{PdfMarkdownPlugin-DXPaL9Nt.js → PdfMarkdownPlugin-BsJM1q_a.js} +3 -3
- package/src/ui/dist/assets/{PdfViewerPlugin-DhK8qCFp.js → PdfViewerPlugin-DB2eEEFQ.js} +10 -10
- package/src/ui/dist/assets/{SearchPlugin-CdSi6krf.js → SearchPlugin-CraThSvt.js} +1 -1
- package/src/ui/dist/assets/{Stepper-V-WiDQJl.js → Stepper-CgocRTPq.js} +1 -1
- package/src/ui/dist/assets/{TextViewerPlugin-hIs1Efiu.js → TextViewerPlugin-B1JGhKtd.js} +4 -4
- package/src/ui/dist/assets/{VNCViewer-DG8b0q2X.js → VNCViewer-CclFC7FM.js} +9 -10
- package/src/ui/dist/assets/{bibtex-HDac6fVW.js → bibtex-D3IKsMl7.js} +1 -1
- package/src/ui/dist/assets/{code-BnBeNxBc.js → code-BP37Xx0p.js} +1 -1
- package/src/ui/dist/assets/{file-content-IRQ3jHb8.js → file-content-BAJSu-9r.js} +1 -1
- package/src/ui/dist/assets/{file-diff-panel-DZoQ9I6r.js → file-diff-panel-DUGeCTuy.js} +1 -1
- package/src/ui/dist/assets/{file-socket-BMCdLc-P.js → file-socket-CXc1Ojf7.js} +1 -1
- package/src/ui/dist/assets/{file-utils-CltILB3w.js → file-utils-2J21jt7M.js} +1 -1
- package/src/ui/dist/assets/{image-Boe6ffhu.js → image-CMMmgvcn.js} +1 -1
- package/src/ui/dist/assets/{index-BlplpvE1.js → index-BaVumsQT.js} +2 -2
- package/src/ui/dist/assets/{index-DZqJ-qAM.js → index-CWgMgpow.js} +60 -2154
- package/src/ui/dist/assets/{index-DO43pFZP.js → index-DmwmJmbW.js} +6372 -8434
- package/src/ui/dist/assets/{index-Bq2bvfkl.css → index-KGt-z-dD.css} +225 -2920
- package/src/ui/dist/assets/{index-2Zf65FZt.js → index-s7aHnNQ4.js} +1 -1
- package/src/ui/dist/assets/{message-square-mUHn_Ssb.js → message-square-CQRfX0Am.js} +1 -1
- package/src/ui/dist/assets/{monaco-fe0arNEU.js → monaco-B4TbdsrF.js} +1 -1
- package/src/ui/dist/assets/{popover-D_7i19qU.js → popover-B8Rokodk.js} +1 -1
- package/src/ui/dist/assets/{project-sync-DyVGrU7H.js → project-sync-D_i96KH4.js} +2 -8
- package/src/ui/dist/assets/{sigma-BzazRyxQ.js → sigma-D12PnzCN.js} +1 -1
- package/src/ui/dist/assets/{tooltip-DN_yjHFH.js → tooltip-B6YrI4aJ.js} +1 -1
- package/src/ui/dist/assets/trash-Bc8jGp0V.js +32 -0
- package/src/ui/dist/assets/{useCliAccess-DV2L2Qxy.js → useCliAccess-mXVCYSZ-.js} +12 -42
- package/src/ui/dist/assets/{useFileDiffOverlay-DyTj-p_V.js → useFileDiffOverlay-Bg6b9H9K.js} +1 -1
- package/src/ui/dist/assets/{wrap-text-ozYHtUwq.js → wrap-text-Drh5GEnL.js} +1 -1
- package/src/ui/dist/assets/{zoom-out-BN9MUyCQ.js → zoom-out-CJj9DZLn.js} +1 -1
- package/src/ui/dist/index.html +2 -2
- package/assets/fonts/Inter-Variable.ttf +0 -0
- package/assets/fonts/NotoSerifSC-Regular-C94HN_ZN.ttf +0 -0
- package/assets/fonts/NunitoSans-Variable.ttf +0 -0
- package/assets/fonts/Satoshi-Medium-ByP-Zb-9.woff2 +0 -0
- package/assets/fonts/SourceSans3-Variable.ttf +0 -0
- package/assets/fonts/ds-fonts.css +0 -83
- package/src/ui/dist/assets/Inter-Variable-VF2RPR_K.ttf +0 -0
- package/src/ui/dist/assets/LabPlugin-bL7rpic8.js +0 -43
- package/src/ui/dist/assets/NotoSerifSC-Regular-C94HN_ZN-C94HN_ZN.ttf +0 -0
- package/src/ui/dist/assets/NunitoSans-Variable-B_ZymHAd.ttf +0 -0
- package/src/ui/dist/assets/Satoshi-Medium-ByP-Zb-9-GkA34YXu.woff2 +0 -0
- package/src/ui/dist/assets/SourceSans3-Variable-CD-WOsSK.ttf +0 -0
- package/src/ui/dist/assets/info-CcsK_htA.js +0 -18
- package/src/ui/dist/assets/user-plus-BusDx-hF.js +0 -79
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
# 02 Start Research 参考:如何填写科研启动合同
|
|
2
|
+
|
|
3
|
+
这份文档说明当前 `Start Research` 弹窗的真实结构,以及它到底会向后端提交什么。
|
|
4
|
+
|
|
5
|
+
实现来源:
|
|
6
|
+
|
|
7
|
+
- `src/ui/src/lib/startResearch.ts`
|
|
8
|
+
- `src/ui/src/components/projects/CreateProjectDialog.tsx`
|
|
9
|
+
|
|
10
|
+
## 这个弹窗实际做什么
|
|
11
|
+
|
|
12
|
+
`Start Research` 不只是“新建 quest 表单”,它同时完成四件事:
|
|
13
|
+
|
|
14
|
+
1. 收集结构化启动上下文
|
|
15
|
+
2. 把这些上下文编译成 quest 的第一条 kickoff prompt
|
|
16
|
+
3. 绑定一个可选的可复用 baseline
|
|
17
|
+
4. 持久化 `startup_contract`,供后续 prompt builder 持续读取
|
|
18
|
+
|
|
19
|
+
## 当前前端数据模型
|
|
20
|
+
|
|
21
|
+
### `StartResearchTemplate`
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
type StartResearchTemplate = {
|
|
25
|
+
title: string
|
|
26
|
+
quest_id: string
|
|
27
|
+
goal: string
|
|
28
|
+
baseline_id: string
|
|
29
|
+
baseline_variant_id: string
|
|
30
|
+
baseline_urls: string
|
|
31
|
+
paper_urls: string
|
|
32
|
+
runtime_constraints: string
|
|
33
|
+
objectives: string
|
|
34
|
+
need_research_paper: boolean
|
|
35
|
+
research_intensity: 'light' | 'balanced' | 'sprint'
|
|
36
|
+
decision_policy: 'autonomous' | 'user_gated'
|
|
37
|
+
launch_mode: 'standard' | 'custom'
|
|
38
|
+
custom_profile: 'continue_existing_state' | 'revision_rebuttal' | 'freeform'
|
|
39
|
+
entry_state_summary: string
|
|
40
|
+
review_summary: string
|
|
41
|
+
custom_brief: string
|
|
42
|
+
user_language: 'en' | 'zh'
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
关键变化:
|
|
47
|
+
|
|
48
|
+
- `scope`
|
|
49
|
+
- `baseline_mode`
|
|
50
|
+
- `resource_policy`
|
|
51
|
+
- `time_budget_hours`
|
|
52
|
+
- `git_strategy`
|
|
53
|
+
|
|
54
|
+
这几项已经不再由用户逐个填写,而是由 `research_intensity` 和是否选中 `baseline_id` 自动推导。
|
|
55
|
+
|
|
56
|
+
### 自动推导字段
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
type StartResearchContractFields = {
|
|
60
|
+
scope: 'baseline_only' | 'baseline_plus_direction' | 'full_research'
|
|
61
|
+
baseline_mode:
|
|
62
|
+
| 'existing'
|
|
63
|
+
| 'restore_from_url'
|
|
64
|
+
| 'allow_degraded_minimal_reproduction'
|
|
65
|
+
| 'stop_if_insufficient'
|
|
66
|
+
resource_policy: 'conservative' | 'balanced' | 'aggressive'
|
|
67
|
+
time_budget_hours: string
|
|
68
|
+
git_strategy:
|
|
69
|
+
| 'branch_per_analysis_then_paper'
|
|
70
|
+
| 'semantic_head_plus_controlled_integration'
|
|
71
|
+
| 'manual_integration_only'
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
推导逻辑在 `resolveStartResearchContractFields(...)`。
|
|
76
|
+
|
|
77
|
+
## 后端提交结构
|
|
78
|
+
|
|
79
|
+
前端最终会提交:
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
{
|
|
83
|
+
title,
|
|
84
|
+
goal: compiled_prompt,
|
|
85
|
+
quest_id,
|
|
86
|
+
requested_baseline_ref: {
|
|
87
|
+
baseline_id,
|
|
88
|
+
variant_id
|
|
89
|
+
} | null,
|
|
90
|
+
startup_contract: {
|
|
91
|
+
schema_version: 3,
|
|
92
|
+
user_language,
|
|
93
|
+
need_research_paper,
|
|
94
|
+
research_intensity,
|
|
95
|
+
decision_policy,
|
|
96
|
+
launch_mode,
|
|
97
|
+
custom_profile,
|
|
98
|
+
scope,
|
|
99
|
+
baseline_mode,
|
|
100
|
+
resource_policy,
|
|
101
|
+
time_budget_hours,
|
|
102
|
+
git_strategy,
|
|
103
|
+
runtime_constraints,
|
|
104
|
+
objectives: string[],
|
|
105
|
+
baseline_urls: string[],
|
|
106
|
+
paper_urls: string[],
|
|
107
|
+
entry_state_summary,
|
|
108
|
+
review_summary,
|
|
109
|
+
custom_brief,
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## 字段说明
|
|
115
|
+
|
|
116
|
+
### Quest 基本身份
|
|
117
|
+
|
|
118
|
+
**`title`**
|
|
119
|
+
|
|
120
|
+
- Quest 的人类可读标题。
|
|
121
|
+
- 用于卡片和工作区标题。
|
|
122
|
+
- 不要求与 `quest_id` 一致。
|
|
123
|
+
|
|
124
|
+
**`quest_id`**
|
|
125
|
+
|
|
126
|
+
- Quest 的稳定标识,也是目录名。
|
|
127
|
+
- 默认由 runtime 提供下一个顺序编号。
|
|
128
|
+
- 允许用户手动覆盖。
|
|
129
|
+
|
|
130
|
+
**`goal`**
|
|
131
|
+
|
|
132
|
+
- 核心研究请求。
|
|
133
|
+
- 会成为 kickoff prompt 的主体。
|
|
134
|
+
- 好的写法:科学问题、目标、成功标准、研究边界。
|
|
135
|
+
- 不好的写法:直接写一堆过细的实现步骤。
|
|
136
|
+
|
|
137
|
+
**`user_language`**
|
|
138
|
+
|
|
139
|
+
- 声明后续 kickoff 和交流默认偏好的语言。
|
|
140
|
+
|
|
141
|
+
### Baseline 与参考资料
|
|
142
|
+
|
|
143
|
+
**`baseline_id`**
|
|
144
|
+
|
|
145
|
+
- 从 registry 中选择一个可复用 baseline。
|
|
146
|
+
- 一旦存在,推导出的 `baseline_mode` 会变成 `existing`。
|
|
147
|
+
- 运行时应优先 attach 并 verify 它,而不是从零开始。
|
|
148
|
+
|
|
149
|
+
**`baseline_variant_id`**
|
|
150
|
+
|
|
151
|
+
- baseline 条目中某个具体 variant 的选择器。
|
|
152
|
+
|
|
153
|
+
**`baseline_urls`**
|
|
154
|
+
|
|
155
|
+
- 当没有 registry baseline 时,作为恢复 baseline 的候选来源。
|
|
156
|
+
- 提交时转成 `string[]`。
|
|
157
|
+
|
|
158
|
+
**`paper_urls`**
|
|
159
|
+
|
|
160
|
+
- 论文、代码仓库、benchmark、leaderboard 等参考资料。
|
|
161
|
+
- 提交时转成 `string[]`。
|
|
162
|
+
|
|
163
|
+
### 约束与目标
|
|
164
|
+
|
|
165
|
+
**`runtime_constraints`**
|
|
166
|
+
|
|
167
|
+
- 硬约束,例如预算、硬件、隐私、存储、截止时间等。
|
|
168
|
+
|
|
169
|
+
**`objectives`**
|
|
170
|
+
|
|
171
|
+
- 每行一个目标。
|
|
172
|
+
- 提交时转成 `string[]`。
|
|
173
|
+
- 应该写“下一轮需要产出什么”,而不是写空泛口号。
|
|
174
|
+
|
|
175
|
+
**`need_research_paper`**
|
|
176
|
+
|
|
177
|
+
- `true`:默认继续推进到分析和写作准备
|
|
178
|
+
- `false`:默认追求最强且有依据的算法结果,不自动进入论文写作
|
|
179
|
+
|
|
180
|
+
### 高层控制项
|
|
181
|
+
|
|
182
|
+
**`research_intensity`**
|
|
183
|
+
|
|
184
|
+
- `light`
|
|
185
|
+
- 推导结果:仅 baseline、保守、8 小时、手动集成
|
|
186
|
+
- `balanced`
|
|
187
|
+
- 推导结果:baseline + 方向、平衡、24 小时、受控集成
|
|
188
|
+
- `sprint`
|
|
189
|
+
- 推导结果:完整研究、激进、48 小时、analysis 分支优先
|
|
190
|
+
|
|
191
|
+
这是当前公开给用户的主要“轮次深度”控制杆。
|
|
192
|
+
|
|
193
|
+
**`decision_policy`**
|
|
194
|
+
|
|
195
|
+
- `autonomous`
|
|
196
|
+
- 普通路线由 agent 自行决定
|
|
197
|
+
- `user_gated`
|
|
198
|
+
- 只有真正依赖用户偏好时,才允许阻塞式决策请求
|
|
199
|
+
|
|
200
|
+
### 启动模式
|
|
201
|
+
|
|
202
|
+
**`launch_mode`**
|
|
203
|
+
|
|
204
|
+
- `standard`
|
|
205
|
+
- 按默认科研主线启动
|
|
206
|
+
- `custom`
|
|
207
|
+
- 不假设这是一个“从零开始”的普通科研任务
|
|
208
|
+
|
|
209
|
+
**`custom_profile`**
|
|
210
|
+
|
|
211
|
+
仅在 `launch_mode = custom` 时有效。
|
|
212
|
+
|
|
213
|
+
- `continue_existing_state`
|
|
214
|
+
- 先审计已有 baseline、结果、草稿或混合资产
|
|
215
|
+
- prompt builder 会显式引导 agent 优先打开 `intake-audit`
|
|
216
|
+
- `revision_rebuttal`
|
|
217
|
+
- 这是一个审稿回复、revision、rebuttal 类型任务
|
|
218
|
+
- prompt builder 会显式引导 agent 优先打开 `rebuttal`
|
|
219
|
+
- `freeform`
|
|
220
|
+
- 以自定义 brief 为主,尽量少做额外假设
|
|
221
|
+
|
|
222
|
+
**`entry_state_summary`**
|
|
223
|
+
|
|
224
|
+
- 用自然语言概括当前已经存在什么。
|
|
225
|
+
- 典型内容:
|
|
226
|
+
- 已有可信 baseline
|
|
227
|
+
- 主实验已经跑完
|
|
228
|
+
- 部分论文草稿已经存在
|
|
229
|
+
- 部分补充图表已经存在
|
|
230
|
+
|
|
231
|
+
**`review_summary`**
|
|
232
|
+
|
|
233
|
+
- 主要用于 review / revision 场景。
|
|
234
|
+
- 用来概括 reviewer comments、修改要求、meta-review 约束。
|
|
235
|
+
|
|
236
|
+
**`custom_brief`**
|
|
237
|
+
|
|
238
|
+
- 一个额外的启动级说明。
|
|
239
|
+
- 用来覆盖或收窄默认的 blank-slate full-research 行为。
|
|
240
|
+
|
|
241
|
+
## 自动推导合同映射
|
|
242
|
+
|
|
243
|
+
当前 preset 映射如下:
|
|
244
|
+
|
|
245
|
+
| `research_intensity` | `scope` | `baseline_mode` | `resource_policy` | `time_budget_hours` | `git_strategy` |
|
|
246
|
+
|---|---|---|---|---:|---|
|
|
247
|
+
| `light` | `baseline_only` | `stop_if_insufficient` | `conservative` | `8` | `manual_integration_only` |
|
|
248
|
+
| `balanced` | `baseline_plus_direction` | `restore_from_url` | `balanced` | `24` | `semantic_head_plus_controlled_integration` |
|
|
249
|
+
| `sprint` | `full_research` | `allow_degraded_minimal_reproduction` | `aggressive` | `48` | `branch_per_analysis_then_paper` |
|
|
250
|
+
|
|
251
|
+
额外规则:
|
|
252
|
+
|
|
253
|
+
- 如果选中了 `baseline_id`,推导得到的 `baseline_mode` 会强制变成 `existing`
|
|
254
|
+
|
|
255
|
+
## Prompt 编译行为
|
|
256
|
+
|
|
257
|
+
`compileStartResearchPrompt(...)` 会生成一段可读 kickoff prompt,包含:
|
|
258
|
+
|
|
259
|
+
- quest bootstrap
|
|
260
|
+
- primary research request
|
|
261
|
+
- research goals
|
|
262
|
+
- baseline context
|
|
263
|
+
- reference papers / repositories
|
|
264
|
+
- operational constraints
|
|
265
|
+
- research delivery mode
|
|
266
|
+
- decision handling mode
|
|
267
|
+
- launch mode
|
|
268
|
+
- research contract
|
|
269
|
+
- mandatory working rules
|
|
270
|
+
|
|
271
|
+
其中自定义启动会被明确写出来:
|
|
272
|
+
|
|
273
|
+
- `standard`
|
|
274
|
+
- 告诉 agent 使用默认科研图谱
|
|
275
|
+
- `custom + continue_existing_state`
|
|
276
|
+
- 告诉 agent 先整理和信任排序已有资产
|
|
277
|
+
- 明确优先 `intake-audit`
|
|
278
|
+
- `custom + revision_rebuttal`
|
|
279
|
+
- 告诉 agent 先理解 reviewer comments 和当前论文状态
|
|
280
|
+
- 明确优先 `rebuttal`
|
|
281
|
+
- `custom + freeform`
|
|
282
|
+
- 告诉 agent 以 custom brief 为主,只打开真正需要的 skills
|
|
283
|
+
|
|
284
|
+
## 示例 payload
|
|
285
|
+
|
|
286
|
+
### 标准启动
|
|
287
|
+
|
|
288
|
+
```json
|
|
289
|
+
{
|
|
290
|
+
"title": "Sparse adapter robustness",
|
|
291
|
+
"goal": "Investigate whether sparse routing improves robustness without hurting compute efficiency.",
|
|
292
|
+
"quest_id": "012",
|
|
293
|
+
"requested_baseline_ref": {
|
|
294
|
+
"baseline_id": "adapter-baseline",
|
|
295
|
+
"variant_id": "default"
|
|
296
|
+
},
|
|
297
|
+
"startup_contract": {
|
|
298
|
+
"schema_version": 3,
|
|
299
|
+
"user_language": "en",
|
|
300
|
+
"need_research_paper": true,
|
|
301
|
+
"research_intensity": "balanced",
|
|
302
|
+
"decision_policy": "autonomous",
|
|
303
|
+
"launch_mode": "standard",
|
|
304
|
+
"custom_profile": "freeform",
|
|
305
|
+
"scope": "baseline_plus_direction",
|
|
306
|
+
"baseline_mode": "existing",
|
|
307
|
+
"resource_policy": "balanced",
|
|
308
|
+
"time_budget_hours": 24,
|
|
309
|
+
"git_strategy": "semantic_head_plus_controlled_integration",
|
|
310
|
+
"runtime_constraints": "One 24 GB GPU. Keep data local.",
|
|
311
|
+
"objectives": [
|
|
312
|
+
"verify the reusable baseline",
|
|
313
|
+
"test one justified sparse-routing direction"
|
|
314
|
+
],
|
|
315
|
+
"baseline_urls": [],
|
|
316
|
+
"paper_urls": [
|
|
317
|
+
"https://arxiv.org/abs/2401.00001"
|
|
318
|
+
],
|
|
319
|
+
"entry_state_summary": "",
|
|
320
|
+
"review_summary": "",
|
|
321
|
+
"custom_brief": ""
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### 自定义启动:继续已有状态
|
|
327
|
+
|
|
328
|
+
```json
|
|
329
|
+
{
|
|
330
|
+
"title": "Continue retrieval quest",
|
|
331
|
+
"goal": "Continue the existing retrieval quest and decide whether a fresh main run is still needed.",
|
|
332
|
+
"quest_id": "013",
|
|
333
|
+
"requested_baseline_ref": null,
|
|
334
|
+
"startup_contract": {
|
|
335
|
+
"schema_version": 3,
|
|
336
|
+
"user_language": "en",
|
|
337
|
+
"need_research_paper": true,
|
|
338
|
+
"research_intensity": "light",
|
|
339
|
+
"decision_policy": "autonomous",
|
|
340
|
+
"launch_mode": "custom",
|
|
341
|
+
"custom_profile": "continue_existing_state",
|
|
342
|
+
"scope": "baseline_only",
|
|
343
|
+
"baseline_mode": "stop_if_insufficient",
|
|
344
|
+
"resource_policy": "conservative",
|
|
345
|
+
"time_budget_hours": 8,
|
|
346
|
+
"git_strategy": "manual_integration_only",
|
|
347
|
+
"runtime_constraints": "Do not rerun expensive full-corpus indexing unless evidence says the old run is unusable.",
|
|
348
|
+
"objectives": [
|
|
349
|
+
"normalize current evidence",
|
|
350
|
+
"decide whether a new run is actually required"
|
|
351
|
+
],
|
|
352
|
+
"baseline_urls": [],
|
|
353
|
+
"paper_urls": [],
|
|
354
|
+
"entry_state_summary": "Trusted baseline exists. One main run finished. Draft intro and method already exist.",
|
|
355
|
+
"review_summary": "",
|
|
356
|
+
"custom_brief": "Audit first. Only rerun if current metrics or artifacts are inconsistent."
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### 自定义启动:审稿 / rebuttal
|
|
362
|
+
|
|
363
|
+
```json
|
|
364
|
+
{
|
|
365
|
+
"title": "Camera-ready revision",
|
|
366
|
+
"goal": "Address reviewer requests, add only the missing evidence, and revise the manuscript cleanly.",
|
|
367
|
+
"quest_id": "014",
|
|
368
|
+
"requested_baseline_ref": null,
|
|
369
|
+
"startup_contract": {
|
|
370
|
+
"schema_version": 3,
|
|
371
|
+
"user_language": "en",
|
|
372
|
+
"need_research_paper": true,
|
|
373
|
+
"research_intensity": "balanced",
|
|
374
|
+
"decision_policy": "user_gated",
|
|
375
|
+
"launch_mode": "custom",
|
|
376
|
+
"custom_profile": "revision_rebuttal",
|
|
377
|
+
"scope": "baseline_plus_direction",
|
|
378
|
+
"baseline_mode": "restore_from_url",
|
|
379
|
+
"resource_policy": "balanced",
|
|
380
|
+
"time_budget_hours": 24,
|
|
381
|
+
"git_strategy": "semantic_head_plus_controlled_integration",
|
|
382
|
+
"runtime_constraints": "Only add experiments that directly answer reviewer concerns.",
|
|
383
|
+
"objectives": [
|
|
384
|
+
"map reviewer comments to concrete actions",
|
|
385
|
+
"run only the necessary supplementary evidence",
|
|
386
|
+
"update the draft and response letter"
|
|
387
|
+
],
|
|
388
|
+
"baseline_urls": [],
|
|
389
|
+
"paper_urls": [],
|
|
390
|
+
"entry_state_summary": "A draft and previous experiment outputs already exist.",
|
|
391
|
+
"review_summary": "Reviewers asked for one stronger ablation, one extra baseline, and a clearer limitation paragraph.",
|
|
392
|
+
"custom_brief": "Treat the current manuscript and review packet as the active contract."
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
## 运行时意义
|
|
398
|
+
|
|
399
|
+
- `startup_contract` 是 quest 的持久状态,不只是 UI 临时字段。
|
|
400
|
+
- 后续 prompt builder 还会继续读取 `launch_mode`、`custom_profile`、`entry_state_summary`、`review_summary`、`custom_brief`。
|
|
401
|
+
- 所以 `Start Research` 不只影响第一轮,还会影响后续路由判断。
|
|
402
|
+
|
|
403
|
+
## 修改检查清单
|
|
404
|
+
|
|
405
|
+
如果修改 `Start Research`,要同步检查:
|
|
406
|
+
|
|
407
|
+
- `src/ui/src/lib/startResearch.ts`
|
|
408
|
+
- `src/ui/src/components/projects/CreateProjectDialog.tsx`
|
|
409
|
+
- `src/prompts/system.md`(如果运行时解释变了)
|
|
410
|
+
- `src/deepscientist/prompts/builder.py`(如果 prompt 路由变了)
|
|
411
|
+
- 本文档
|
|
412
|
+
- `docs/en/02_START_RESEARCH_GUIDE.md`
|
|
413
|
+
- `tests/test_prompt_builder.py`
|
|
414
|
+
- `tests/test_stage_skills.py`
|