@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,1137 @@
|
|
|
1
|
+
# 01 设置参考:如何配置 DeepScientist
|
|
2
|
+
|
|
3
|
+
本手册对应当前 DeepScientist `Settings` 页面与其实际落盘配置,写法参考 PyTorch API reference 的“摘要 + 参数 + 默认值 + 行为影响 + 示例”风格。它不是泛泛的产品介绍,而是面向实际配置、排障与日常运维的字段级参考。
|
|
4
|
+
|
|
5
|
+
相关实现来源:
|
|
6
|
+
|
|
7
|
+
- `src/ui/src/components/settings/settingsFormCatalog.ts`
|
|
8
|
+
- `src/ui/src/components/settings/connectorCatalog.ts`
|
|
9
|
+
- `src/ui/src/components/settings/RegistrySettingsForm.tsx`
|
|
10
|
+
- `src/deepscientist/config/models.py`
|
|
11
|
+
- `src/deepscientist/config/service.py`
|
|
12
|
+
|
|
13
|
+
## 总览
|
|
14
|
+
|
|
15
|
+
`Settings` 页面会直接编辑以下配置文件:
|
|
16
|
+
|
|
17
|
+
| 文件 | 页面分类 | 作用 |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| `~/DeepScientist/config/config.yaml` | Runtime | 运行时主配置:主目录、daemon、UI、日志、Git、技能同步、云链接、ACP 等 |
|
|
20
|
+
| `~/DeepScientist/config/runners.yaml` | Models | Runner 配置:`codex` / `claude` 的二进制、模型、审批策略、沙箱与重试策略 |
|
|
21
|
+
| `~/DeepScientist/config/connectors.yaml` | Connectors | QQ、Telegram、Discord、Slack、Feishu、WhatsApp、Lingzhu 等连接器配置 |
|
|
22
|
+
| `~/DeepScientist/config/plugins.yaml` | Extensions | 插件发现、启用、禁用与信任策略 |
|
|
23
|
+
| `~/DeepScientist/config/mcp_servers.yaml` | MCP | 外部 MCP 服务,不包含内置 `memory`、`artifact`、`bash_exec` |
|
|
24
|
+
|
|
25
|
+
页面上的几个动作语义如下:
|
|
26
|
+
|
|
27
|
+
- `Save`:把当前结构化表单直接写回对应的 YAML 文件。
|
|
28
|
+
- `Check` / `Validate`:做本地结构校验,不会启动真正的研究任务。
|
|
29
|
+
- `Test`:执行轻量级运行时探测。不同文件的测试逻辑不同,见本文后面的“校验与测试行为”。
|
|
30
|
+
|
|
31
|
+
连接器专项文档:
|
|
32
|
+
|
|
33
|
+
- `docs/zh/03_QQ_CONNECTOR_GUIDE.md`
|
|
34
|
+
- `docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md`
|
|
35
|
+
|
|
36
|
+
## `config.yaml`
|
|
37
|
+
|
|
38
|
+
### 摘要
|
|
39
|
+
|
|
40
|
+
`config.yaml` 是 DeepScientist 的主运行时配置文件,控制主目录、默认语言、daemon 行为、Web/TUI 地址、日志、Git、技能同步,以及少量可选的 cloud / ACP 兼容设置。
|
|
41
|
+
|
|
42
|
+
### 结构
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
home: ~/DeepScientist
|
|
46
|
+
default_runner: codex
|
|
47
|
+
default_locale: zh-CN
|
|
48
|
+
daemon:
|
|
49
|
+
session_restore_on_start: true
|
|
50
|
+
max_concurrent_quests: 1
|
|
51
|
+
ack_timeout_ms: 1000
|
|
52
|
+
ui:
|
|
53
|
+
host: 0.0.0.0
|
|
54
|
+
port: 20999
|
|
55
|
+
auto_open_browser: true
|
|
56
|
+
default_mode: both
|
|
57
|
+
logging:
|
|
58
|
+
level: info
|
|
59
|
+
console: true
|
|
60
|
+
keep_days: 30
|
|
61
|
+
git:
|
|
62
|
+
auto_checkpoint: true
|
|
63
|
+
auto_push: false
|
|
64
|
+
default_remote: origin
|
|
65
|
+
graph_formats: [svg, png, json]
|
|
66
|
+
skills:
|
|
67
|
+
sync_global_on_init: true
|
|
68
|
+
sync_quest_on_create: true
|
|
69
|
+
sync_quest_on_open: true
|
|
70
|
+
connectors:
|
|
71
|
+
auto_ack: true
|
|
72
|
+
milestone_push: true
|
|
73
|
+
direct_chat_enabled: true
|
|
74
|
+
cloud:
|
|
75
|
+
enabled: false
|
|
76
|
+
base_url: https://deepscientist.cc
|
|
77
|
+
token: null
|
|
78
|
+
token_env: DEEPSCIENTIST_TOKEN
|
|
79
|
+
verify_token_on_start: false
|
|
80
|
+
sync_mode: disabled
|
|
81
|
+
acp:
|
|
82
|
+
compatibility_profile: deepscientist-acp-compat/v1
|
|
83
|
+
events_transport: rest-poll
|
|
84
|
+
sdk_bridge_enabled: false
|
|
85
|
+
sdk_module: acp
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 核心身份
|
|
89
|
+
|
|
90
|
+
**`home`**
|
|
91
|
+
|
|
92
|
+
- 类型:`string`
|
|
93
|
+
- 默认值:安装时的 DeepScientist 主目录,通常为 `~/DeepScientist`
|
|
94
|
+
- 页面标签:`Home path`
|
|
95
|
+
- 作用:这是配置、quests、memory、plugins、logs、cache 的根路径。
|
|
96
|
+
- 何时修改:仅在你明确使用自定义安装目录时修改。
|
|
97
|
+
- 注意事项:这不是单个 quest 路径,而是整个 DeepScientist 的运行时根目录。
|
|
98
|
+
|
|
99
|
+
**`default_runner`**
|
|
100
|
+
|
|
101
|
+
- 类型:`string`
|
|
102
|
+
- 默认值:`codex`
|
|
103
|
+
- 允许值:当前页面预设为 `codex`、`claude`
|
|
104
|
+
- 页面标签:`Default runner`
|
|
105
|
+
- 作用:当 quest 没有单独覆盖 runner 时,默认走这里指定的 runner。
|
|
106
|
+
- 何时修改:只有在你真的接通并启用了其他 runner 时才需要改。
|
|
107
|
+
- 注意事项:当前仓库的真实主路径仍然是 `codex`;`claude` 仍是预留位。
|
|
108
|
+
|
|
109
|
+
**`default_locale`**
|
|
110
|
+
|
|
111
|
+
- 类型:`string`
|
|
112
|
+
- 默认值:`zh-CN`
|
|
113
|
+
- 允许值:`zh-CN`、`en-US`
|
|
114
|
+
- 页面标签:`Default locale`
|
|
115
|
+
- 作用:影响系统 prompt 的默认语言倾向以及部分 UI 默认文案。
|
|
116
|
+
- 何时修改:希望整个系统默认说中文还是英文时修改。
|
|
117
|
+
|
|
118
|
+
### Daemon policy
|
|
119
|
+
|
|
120
|
+
**`daemon.session_restore_on_start`**
|
|
121
|
+
|
|
122
|
+
- 类型:`boolean`
|
|
123
|
+
- 默认值:`true`
|
|
124
|
+
- 页面标签:`Restore sessions on start`
|
|
125
|
+
- 作用:daemon 启动时尝试恢复之前的 quest 会话状态。
|
|
126
|
+
- 何时关闭:你希望每次启动都从干净的运行时状态进入。
|
|
127
|
+
|
|
128
|
+
**`daemon.max_concurrent_quests`**
|
|
129
|
+
|
|
130
|
+
- 类型:`number`
|
|
131
|
+
- 默认值:`1`
|
|
132
|
+
- 页面标签:`Max concurrent quests`
|
|
133
|
+
- 作用:限制同时活跃的 quest 数量。
|
|
134
|
+
- 推荐值:大多数情况下保持 `1`。
|
|
135
|
+
- 风险:并发 quest 越多,资源竞争、连接器串扰和观察复杂度越高。
|
|
136
|
+
|
|
137
|
+
**`daemon.ack_timeout_ms`**
|
|
138
|
+
|
|
139
|
+
- 类型:`number`
|
|
140
|
+
- 默认值:`1000`
|
|
141
|
+
- 页面标签:`Ack timeout (ms)`
|
|
142
|
+
- 作用:短确认、连接器反馈等轻量行为的超时预算。
|
|
143
|
+
- 何时增大:本地 I/O、bridge 或 sidecar 持续偏慢时。
|
|
144
|
+
|
|
145
|
+
### Web / TUI runtime
|
|
146
|
+
|
|
147
|
+
**`ui.host`**
|
|
148
|
+
|
|
149
|
+
- 类型:`string`
|
|
150
|
+
- 默认值:`0.0.0.0`
|
|
151
|
+
- 页面标签:`UI host`
|
|
152
|
+
- 作用:本地 Web UI 服务绑定的地址。
|
|
153
|
+
- 典型取值:
|
|
154
|
+
- `0.0.0.0`:允许局域网、容器或反向代理访问。
|
|
155
|
+
- `127.0.0.1`:仅本机访问。
|
|
156
|
+
- 注意事项:如果你希望通过域名或局域网设备访问,一般必须保持 `0.0.0.0`。
|
|
157
|
+
|
|
158
|
+
**`ui.port`**
|
|
159
|
+
|
|
160
|
+
- 类型:`number`
|
|
161
|
+
- 默认值:`20999`
|
|
162
|
+
- 页面标签:`UI port`
|
|
163
|
+
- 作用:本地 UI 服务监听端口。
|
|
164
|
+
- 何时修改:端口冲突时。
|
|
165
|
+
|
|
166
|
+
**`ui.auto_open_browser`**
|
|
167
|
+
|
|
168
|
+
- 类型:`boolean`
|
|
169
|
+
- 默认值:`true`
|
|
170
|
+
- 页面标签:`Auto-open browser`
|
|
171
|
+
- 作用:启动 UI 时自动打开浏览器。
|
|
172
|
+
- 何时关闭:远程服务器、无头环境、tmux/SSH 环境。
|
|
173
|
+
|
|
174
|
+
**`ui.default_mode`**
|
|
175
|
+
|
|
176
|
+
- 类型:`string`
|
|
177
|
+
- 默认值:`both`
|
|
178
|
+
- 允许值:`both`、`web`、`tui`
|
|
179
|
+
- 页面标签:`Default start mode`
|
|
180
|
+
- 作用:决定 `ds` 默认打开 Web、TUI,或两者同时打开。
|
|
181
|
+
|
|
182
|
+
### Logging
|
|
183
|
+
|
|
184
|
+
**`logging.level`**
|
|
185
|
+
|
|
186
|
+
- 类型:`string`
|
|
187
|
+
- 默认值:`info`
|
|
188
|
+
- 允许值:`debug`、`info`、`warning`、`error`
|
|
189
|
+
- 页面标签:`Log level`
|
|
190
|
+
- 作用:控制 daemon 与 runner 日志详细程度。
|
|
191
|
+
- 推荐值:日常 `info`,排障时临时切到 `debug`。
|
|
192
|
+
|
|
193
|
+
**`logging.console`**
|
|
194
|
+
|
|
195
|
+
- 类型:`boolean`
|
|
196
|
+
- 默认值:`true`
|
|
197
|
+
- 页面标签:`Log to console`
|
|
198
|
+
- 作用:除文件日志外,也在当前终端镜像输出日志。
|
|
199
|
+
|
|
200
|
+
**`logging.keep_days`**
|
|
201
|
+
|
|
202
|
+
- 类型:`number`
|
|
203
|
+
- 默认值:`30`
|
|
204
|
+
- 页面标签:`Retention days`
|
|
205
|
+
- 作用:本地日志保留天数。
|
|
206
|
+
- 何时增大:需要保留较长的审计链、复现链或 connector 排障记录时。
|
|
207
|
+
|
|
208
|
+
### Git behavior
|
|
209
|
+
|
|
210
|
+
**`git.auto_checkpoint`**
|
|
211
|
+
|
|
212
|
+
- 类型:`boolean`
|
|
213
|
+
- 默认值:`true`
|
|
214
|
+
- 页面标签:`Auto-checkpoint`
|
|
215
|
+
- 作用:quest 过程中自动做 Git 检查点。
|
|
216
|
+
- 何时关闭:你完全希望手动控制提交节奏。
|
|
217
|
+
|
|
218
|
+
**`git.auto_push`**
|
|
219
|
+
|
|
220
|
+
- 类型:`boolean`
|
|
221
|
+
- 默认值:`false`
|
|
222
|
+
- 页面标签:`Auto-push`
|
|
223
|
+
- 作用:把自动检查点推送到默认远端。
|
|
224
|
+
- 风险:一旦开启,研究过程中的中间产物可能会更早离开本机。
|
|
225
|
+
|
|
226
|
+
**`git.default_remote`**
|
|
227
|
+
|
|
228
|
+
- 类型:`string`
|
|
229
|
+
- 默认值:`origin`
|
|
230
|
+
- 页面标签:`Default remote`
|
|
231
|
+
- 作用:自动推送和导出时使用的默认 Git 远端名。
|
|
232
|
+
|
|
233
|
+
**`git.graph_formats`**
|
|
234
|
+
|
|
235
|
+
- 类型:`list[string]`
|
|
236
|
+
- 默认值:`["svg", "png", "json"]`
|
|
237
|
+
- 页面标签:`Graph export formats`
|
|
238
|
+
- 作用:决定 Git / Canvas 图导出时生成哪些格式。
|
|
239
|
+
|
|
240
|
+
### Reports & visuals
|
|
241
|
+
|
|
242
|
+
配色不再通过 `Settings` 或 `config.yaml` 配置。
|
|
243
|
+
|
|
244
|
+
- 图表与论文图的配色规范现在直接写在:
|
|
245
|
+
- `src/prompts/system.md`
|
|
246
|
+
- `src/skills/experiment/SKILL.md`
|
|
247
|
+
- `src/skills/analysis-campaign/SKILL.md`
|
|
248
|
+
- `src/skills/write/SKILL.md`
|
|
249
|
+
- DeepScientist 统一使用固定的莫兰迪配色指引,而不是每台机器各自配置。
|
|
250
|
+
- 具体的长期参考页为 `docs/zh/08_FIGURE_STYLE_GUIDE.md`。
|
|
251
|
+
- 如果需要调整默认视觉语言,应修改 prompt / skill 合同,而不是再新增设置项。
|
|
252
|
+
|
|
253
|
+
### Skill synchronization
|
|
254
|
+
|
|
255
|
+
**`skills.sync_global_on_init`**
|
|
256
|
+
|
|
257
|
+
- 类型:`boolean`
|
|
258
|
+
- 默认值:`true`
|
|
259
|
+
- 页面标签:`Sync global skills on init`
|
|
260
|
+
- 作用:初始化时把项目技能同步到全局 `~/.codex/skills` / `~/.claude/agents`。
|
|
261
|
+
|
|
262
|
+
**`skills.sync_quest_on_create`**
|
|
263
|
+
|
|
264
|
+
- 类型:`boolean`
|
|
265
|
+
- 默认值:`true`
|
|
266
|
+
- 页面标签:`Sync quest skills on create`
|
|
267
|
+
- 作用:创建 quest 时,把技能镜像到 quest 本地 `.codex/skills` / `.claude/agents`。
|
|
268
|
+
|
|
269
|
+
**`skills.sync_quest_on_open`**
|
|
270
|
+
|
|
271
|
+
- 类型:`boolean`
|
|
272
|
+
- 默认值:`true`
|
|
273
|
+
- 页面标签:`Sync quest skills on open`
|
|
274
|
+
- 作用:打开已有 quest 时刷新本地技能镜像。
|
|
275
|
+
|
|
276
|
+
### Connector policy
|
|
277
|
+
|
|
278
|
+
这一组不是单个 connector 的凭据,而是所有连接器共享的全局行为。
|
|
279
|
+
|
|
280
|
+
**`connectors.auto_ack`**
|
|
281
|
+
|
|
282
|
+
- 类型:`boolean`
|
|
283
|
+
- 默认值:`true`
|
|
284
|
+
- 页面标签:`Auto-ack incoming messages`
|
|
285
|
+
- 作用:收到 connector 消息后,先回一条“已收到”式短确认。
|
|
286
|
+
|
|
287
|
+
**`connectors.milestone_push`**
|
|
288
|
+
|
|
289
|
+
- 类型:`boolean`
|
|
290
|
+
- 默认值:`true`
|
|
291
|
+
- 页面标签:`Push milestones`
|
|
292
|
+
- 作用:允许里程碑、决策、进度更新主动推送到已启用连接器。
|
|
293
|
+
|
|
294
|
+
**`connectors.direct_chat_enabled`**
|
|
295
|
+
|
|
296
|
+
- 类型:`boolean`
|
|
297
|
+
- 默认值:`true`
|
|
298
|
+
- 页面标签:`Enable direct chat`
|
|
299
|
+
- 作用:允许 connector 私聊直接驱动 quest。
|
|
300
|
+
|
|
301
|
+
### Cloud link
|
|
302
|
+
|
|
303
|
+
这一组是可选远端协调能力,不是本地核心路径。
|
|
304
|
+
|
|
305
|
+
**`cloud.enabled`**
|
|
306
|
+
|
|
307
|
+
- 类型:`boolean`
|
|
308
|
+
- 默认值:`false`
|
|
309
|
+
- 页面标签:`Enable cloud link`
|
|
310
|
+
- 作用:开启可选的 cloud link 路径。
|
|
311
|
+
- 推荐:本地优先部署保持关闭。
|
|
312
|
+
|
|
313
|
+
**`cloud.base_url`**
|
|
314
|
+
|
|
315
|
+
- 类型:`string`
|
|
316
|
+
- 默认值:`https://deepscientist.cc`
|
|
317
|
+
- 页面标签:`Cloud base URL`
|
|
318
|
+
- 作用:云服务基础地址。
|
|
319
|
+
|
|
320
|
+
**`cloud.token`**
|
|
321
|
+
|
|
322
|
+
- 类型:`string | null`
|
|
323
|
+
- 默认值:`null`
|
|
324
|
+
- 页面标签:`Cloud token`
|
|
325
|
+
- 作用:直接写入的云认证 token。
|
|
326
|
+
- 注意事项:共享环境更推荐使用 `cloud.token_env`。
|
|
327
|
+
|
|
328
|
+
**`cloud.token_env`**
|
|
329
|
+
|
|
330
|
+
- 类型:`string`
|
|
331
|
+
- 默认值:`DEEPSCIENTIST_TOKEN`
|
|
332
|
+
- 页面标签:`Cloud token env var`
|
|
333
|
+
- 作用:声明环境变量名,让运行时从环境变量中读取 token。
|
|
334
|
+
|
|
335
|
+
**`cloud.verify_token_on_start`**
|
|
336
|
+
|
|
337
|
+
- 类型:`boolean`
|
|
338
|
+
- 默认值:`false`
|
|
339
|
+
- 页面标签:`Verify token on start`
|
|
340
|
+
- 作用:daemon 启动时检查 cloud token 是否有效。
|
|
341
|
+
- 风险:如果开启,错误凭据会让启动更早失败。
|
|
342
|
+
|
|
343
|
+
**`cloud.sync_mode`**
|
|
344
|
+
|
|
345
|
+
- 类型:`string`
|
|
346
|
+
- 默认值:`disabled`
|
|
347
|
+
- 允许值:`disabled`、`pull`、`push`、`bidirectional`
|
|
348
|
+
- 页面标签:`Cloud sync mode`
|
|
349
|
+
- 作用:声明整体云同步方向。
|
|
350
|
+
|
|
351
|
+
### ACP bridge
|
|
352
|
+
|
|
353
|
+
这是兼容 ACP 风格外部消费者的附加配置。
|
|
354
|
+
|
|
355
|
+
**`acp.compatibility_profile`**
|
|
356
|
+
|
|
357
|
+
- 类型:`string`
|
|
358
|
+
- 默认值:`deepscientist-acp-compat/v1`
|
|
359
|
+
- 页面标签:`Compatibility profile`
|
|
360
|
+
- 作用:给外部 ACP 消费端看的兼容配置名。
|
|
361
|
+
|
|
362
|
+
**`acp.events_transport`**
|
|
363
|
+
|
|
364
|
+
- 类型:`string`
|
|
365
|
+
- 默认值:`rest-poll`
|
|
366
|
+
- 允许值:`rest-poll`、`sse`
|
|
367
|
+
- 页面标签:`Events transport`
|
|
368
|
+
- 作用:ACP 风格事件的对外传输方式。
|
|
369
|
+
|
|
370
|
+
**`acp.sdk_bridge_enabled`**
|
|
371
|
+
|
|
372
|
+
- 类型:`boolean`
|
|
373
|
+
- 默认值:`false`
|
|
374
|
+
- 页面标签:`Enable SDK bridge`
|
|
375
|
+
- 作用:允许通过 ACP SDK 模块做桥接。
|
|
376
|
+
|
|
377
|
+
**`acp.sdk_module`**
|
|
378
|
+
|
|
379
|
+
- 类型:`string`
|
|
380
|
+
- 默认值:`acp`
|
|
381
|
+
- 页面标签:`SDK module`
|
|
382
|
+
- 作用:启用 SDK bridge 时,用于导入桥接实现的 Python 模块名。
|
|
383
|
+
|
|
384
|
+
## `runners.yaml`
|
|
385
|
+
|
|
386
|
+
### 摘要
|
|
387
|
+
|
|
388
|
+
`runners.yaml` 定义 quest 实际由哪个 runner 执行,以及 runner 的模型默认值、审批策略、沙箱策略和失败重试策略。在当前开源版本中:
|
|
389
|
+
|
|
390
|
+
- `codex`:主路径,默认启用。
|
|
391
|
+
- `claude`:TODO / 预留条目,默认禁用,暂时不能运行。
|
|
392
|
+
|
|
393
|
+
### 结构
|
|
394
|
+
|
|
395
|
+
```yaml
|
|
396
|
+
codex:
|
|
397
|
+
enabled: true
|
|
398
|
+
binary: codex
|
|
399
|
+
config_dir: ~/.codex
|
|
400
|
+
model: gpt-5.4
|
|
401
|
+
model_reasoning_effort: xhigh
|
|
402
|
+
approval_policy: on-request
|
|
403
|
+
sandbox_mode: workspace-write
|
|
404
|
+
retry_on_failure: true
|
|
405
|
+
retry_max_attempts: 5
|
|
406
|
+
retry_initial_backoff_sec: 1.0
|
|
407
|
+
retry_backoff_multiplier: 2.0
|
|
408
|
+
retry_max_backoff_sec: 8.0
|
|
409
|
+
mcp_tool_timeout_sec: 180000
|
|
410
|
+
env: {}
|
|
411
|
+
claude:
|
|
412
|
+
enabled: false
|
|
413
|
+
binary: claude
|
|
414
|
+
config_dir: ~/.claude
|
|
415
|
+
model: inherit
|
|
416
|
+
model_reasoning_effort: ""
|
|
417
|
+
env: {}
|
|
418
|
+
status: reserved_todo
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
### 页面可编辑字段
|
|
422
|
+
|
|
423
|
+
**`enabled`**
|
|
424
|
+
|
|
425
|
+
- 类型:`boolean`
|
|
426
|
+
- 默认值:`codex=true`,`claude=false`
|
|
427
|
+
- 页面标签:`Enabled`
|
|
428
|
+
- 作用:决定这个 runner 是否可被选中与实际执行。
|
|
429
|
+
|
|
430
|
+
**`binary`**
|
|
431
|
+
|
|
432
|
+
- 类型:`string`
|
|
433
|
+
- 默认值:`codex` 或 `claude`
|
|
434
|
+
- 页面标签:`Binary`
|
|
435
|
+
- 作用:启动 runner 时使用的命令名或绝对路径。
|
|
436
|
+
- `Test` 行为:检查该二进制是否在 `PATH` 上。
|
|
437
|
+
|
|
438
|
+
**`config_dir`**
|
|
439
|
+
|
|
440
|
+
- 类型:`string`
|
|
441
|
+
- 默认值:`~/.codex` 或 `~/.claude`
|
|
442
|
+
- 页面标签:`Config directory`
|
|
443
|
+
- 作用:runner 的全局配置目录,通常存放认证和全局配置。
|
|
444
|
+
|
|
445
|
+
**`model`**
|
|
446
|
+
|
|
447
|
+
- 类型:`string`
|
|
448
|
+
- 默认值:`codex=gpt-5.4`,`claude=inherit`
|
|
449
|
+
- 页面标签:`Default model`
|
|
450
|
+
- 作用:quest 和单次请求没有覆盖时的默认模型。
|
|
451
|
+
|
|
452
|
+
**`model_reasoning_effort`**
|
|
453
|
+
|
|
454
|
+
- 类型:`string`
|
|
455
|
+
- 默认值:`codex=xhigh`
|
|
456
|
+
- 页面标签:`Reasoning effort`
|
|
457
|
+
- 允许值:`""`、`minimal`、`low`、`medium`、`high`、`xhigh`
|
|
458
|
+
- 作用:默认推理强度。
|
|
459
|
+
- 推荐:当前仓库的 Codex 默认就是 `xhigh`。
|
|
460
|
+
|
|
461
|
+
**`approval_policy`**
|
|
462
|
+
|
|
463
|
+
- 类型:`string`
|
|
464
|
+
- 默认值:`on-request`
|
|
465
|
+
- 页面标签:`Approval policy`
|
|
466
|
+
- 允许值:`never`、`on-failure`、`on-request`、`untrusted`
|
|
467
|
+
- 作用:控制高权限动作如何申请许可。
|
|
468
|
+
|
|
469
|
+
**`sandbox_mode`**
|
|
470
|
+
|
|
471
|
+
- 类型:`string`
|
|
472
|
+
- 默认值:`workspace-write`
|
|
473
|
+
- 页面标签:`Sandbox mode`
|
|
474
|
+
- 允许值:`read-only`、`workspace-write`、`danger-full-access`
|
|
475
|
+
- 作用:控制 runner 的文件系统/进程访问权限。
|
|
476
|
+
|
|
477
|
+
**`retry_on_failure`**
|
|
478
|
+
|
|
479
|
+
- 类型:`boolean`
|
|
480
|
+
- 默认值:`true`
|
|
481
|
+
- 页面标签:`Retry on failure`
|
|
482
|
+
- 作用:遇到失败时是否自动重试当前 turn。
|
|
483
|
+
|
|
484
|
+
**`retry_max_attempts`**
|
|
485
|
+
|
|
486
|
+
- 类型:`number`
|
|
487
|
+
- 默认值:`5`
|
|
488
|
+
- 页面标签:`Max attempts`
|
|
489
|
+
- 作用:一个 turn 的最大尝试次数上限。
|
|
490
|
+
- 注意事项:DeepScientist 运行时会把该值硬限制在最多 `5`。
|
|
491
|
+
|
|
492
|
+
**`retry_initial_backoff_sec`**
|
|
493
|
+
|
|
494
|
+
- 类型:`number`
|
|
495
|
+
- 默认值:`1.0`
|
|
496
|
+
- 页面标签:`Initial backoff (s)`
|
|
497
|
+
- 作用:第一次重试前等待多久。
|
|
498
|
+
|
|
499
|
+
**`retry_backoff_multiplier`**
|
|
500
|
+
|
|
501
|
+
- 类型:`number`
|
|
502
|
+
- 默认值:`2.0`
|
|
503
|
+
- 页面标签:`Backoff multiplier`
|
|
504
|
+
- 作用:指数退避倍数。例如 `1s -> 2s -> 4s -> 8s`。
|
|
505
|
+
|
|
506
|
+
**`retry_max_backoff_sec`**
|
|
507
|
+
|
|
508
|
+
- 类型:`number`
|
|
509
|
+
- 默认值:`8.0`
|
|
510
|
+
- 页面标签:`Max backoff (s)`
|
|
511
|
+
- 作用:指数退避增长后的最大等待时间上限。
|
|
512
|
+
|
|
513
|
+
**`status`**
|
|
514
|
+
|
|
515
|
+
- 类型:`string`
|
|
516
|
+
- 默认值:`claude=reserved_todo`
|
|
517
|
+
- 页面标签:`Status note`
|
|
518
|
+
- 作用:写给操作者的备注,例如 `reserved_todo`、`experimental`、`disabled_by_policy`。
|
|
519
|
+
|
|
520
|
+
### 配置文件补充字段
|
|
521
|
+
|
|
522
|
+
这些字段存在于 `runners.yaml`,但不一定都在页面上显式强调。
|
|
523
|
+
|
|
524
|
+
**`mcp_tool_timeout_sec`**
|
|
525
|
+
|
|
526
|
+
- 类型:`number`
|
|
527
|
+
- 默认值:`180000`
|
|
528
|
+
- 作用:允许 runner 等待较长时间的 MCP 工具调用,例如耗时较久的 `bash_exec(await)`。
|
|
529
|
+
|
|
530
|
+
**`env`**
|
|
531
|
+
|
|
532
|
+
- 类型:`mapping[string, string]`
|
|
533
|
+
- 默认值:`{}`
|
|
534
|
+
- 页面位置:Runner 卡片底部的环境变量编辑器。
|
|
535
|
+
- 作用:只对该 runner 注入的环境变量覆盖。
|
|
536
|
+
|
|
537
|
+
### 常见建议
|
|
538
|
+
|
|
539
|
+
- 第一版部署一般保持 `codex.enabled: true`、`claude.enabled: false`。
|
|
540
|
+
- 当前版本不要把 `default_runner` 从 `codex` 改走。
|
|
541
|
+
- 如果你不希望任何自动审批,才把 `approval_policy` 调成更严格模式。
|
|
542
|
+
- 如果 quest 经常需要长时间工具调用,不要随意把 `mcp_tool_timeout_sec` 改小。
|
|
543
|
+
|
|
544
|
+
## `connectors.yaml`
|
|
545
|
+
|
|
546
|
+
### 摘要
|
|
547
|
+
|
|
548
|
+
`connectors.yaml` 负责 QQ、Telegram、Discord、Slack、Feishu / Lark、WhatsApp 的启用、传输方式、凭据、访问控制与少量全局路由策略。当前设计原则是:
|
|
549
|
+
|
|
550
|
+
- 优先使用无需公网回调的原生传输路径。
|
|
551
|
+
- legacy webhook / relay 字段只作为兼容或兜底。
|
|
552
|
+
- 所有连接器最终都属于同一个 quest 交互系统,而不是各自独立的一套消息逻辑。
|
|
553
|
+
|
|
554
|
+
### 顶层路由字段
|
|
555
|
+
|
|
556
|
+
**`_routing.primary_connector`**
|
|
557
|
+
|
|
558
|
+
- 类型:`string | null`
|
|
559
|
+
- 默认值:`null`
|
|
560
|
+
- 作用:指定一个首选连接器,用于“主路径优先”的推送策略。
|
|
561
|
+
|
|
562
|
+
**`_routing.artifact_delivery_policy`**
|
|
563
|
+
|
|
564
|
+
- 类型:`string`
|
|
565
|
+
- 默认值:`fanout_all`
|
|
566
|
+
- 允许值:`fanout_all`、`primary_only`、`primary_plus_local`
|
|
567
|
+
- 作用:决定 `artifact` 交互消息在 connector 之间如何分发。
|
|
568
|
+
|
|
569
|
+
### 所有连接器共享的通用访问控制字段
|
|
570
|
+
|
|
571
|
+
以下字段会在多个 connector 中重复出现:
|
|
572
|
+
|
|
573
|
+
**`dm_policy`**
|
|
574
|
+
|
|
575
|
+
- 类型:`string`
|
|
576
|
+
- 常见值:`pairing`、`allowlist`、`open`、`disabled`
|
|
577
|
+
- 作用:控制私聊是自动配对、白名单、完全开放还是禁用。
|
|
578
|
+
|
|
579
|
+
**`allow_from`**
|
|
580
|
+
|
|
581
|
+
- 类型:`list[string]`
|
|
582
|
+
- 作用:允许私聊发送消息的用户 ID 列表。
|
|
583
|
+
- 提示:使用 `*` 可以表达开放模式。
|
|
584
|
+
|
|
585
|
+
**`group_policy`**
|
|
586
|
+
|
|
587
|
+
- 类型:`string`
|
|
588
|
+
- 常见值:`allowlist`、`open`、`disabled`
|
|
589
|
+
- 作用:控制群聊是否开放或受白名单约束。
|
|
590
|
+
|
|
591
|
+
**`group_allow_from`**
|
|
592
|
+
|
|
593
|
+
- 类型:`list[string]`
|
|
594
|
+
- 作用:群内允许的发送者 ID 列表。
|
|
595
|
+
|
|
596
|
+
**`groups`**
|
|
597
|
+
|
|
598
|
+
- 类型:`list[string]`
|
|
599
|
+
- 作用:允许的目标群组或频道 ID 列表。
|
|
600
|
+
|
|
601
|
+
**`auto_bind_dm_to_active_quest`**
|
|
602
|
+
|
|
603
|
+
- 类型:`boolean`
|
|
604
|
+
- 默认值:大多数 connector 为 `true`
|
|
605
|
+
- 作用:私聊默认自动跟随当前活跃 quest。
|
|
606
|
+
|
|
607
|
+
### `telegram`
|
|
608
|
+
|
|
609
|
+
摘要:适合私聊驱动,推荐 `polling`,不需要公网回调。
|
|
610
|
+
|
|
611
|
+
推荐路径:
|
|
612
|
+
|
|
613
|
+
- `enabled: true`
|
|
614
|
+
- `transport: polling`
|
|
615
|
+
- 提供 `bot_token`
|
|
616
|
+
|
|
617
|
+
关键字段:
|
|
618
|
+
|
|
619
|
+
**`transport`**
|
|
620
|
+
|
|
621
|
+
- 类型:`string`
|
|
622
|
+
- 默认值:`polling`
|
|
623
|
+
- 允许值:`polling`、`legacy_webhook`、`relay`
|
|
624
|
+
- 作用:选择轮询、旧式 webhook 或 relay。
|
|
625
|
+
|
|
626
|
+
**`bot_name`**
|
|
627
|
+
|
|
628
|
+
- 类型:`string`
|
|
629
|
+
- 默认值:`DeepScientist`
|
|
630
|
+
- 作用:本地显示名称。
|
|
631
|
+
|
|
632
|
+
**`bot_token`**
|
|
633
|
+
|
|
634
|
+
- 类型:`string | null`
|
|
635
|
+
- 作用:Telegram Bot API token。
|
|
636
|
+
- 获取方式:BotFather。
|
|
637
|
+
- 配置文件补充字段:`bot_token_env` 可用环境变量注入 token。
|
|
638
|
+
|
|
639
|
+
**`command_prefix`**
|
|
640
|
+
|
|
641
|
+
- 类型:`string`
|
|
642
|
+
- 默认值:`/`
|
|
643
|
+
- 作用:connector 命令前缀,例如 `/use`、`/status`。
|
|
644
|
+
|
|
645
|
+
**`require_mention_in_groups`**
|
|
646
|
+
|
|
647
|
+
- 类型:`boolean`
|
|
648
|
+
- 默认值:`true`
|
|
649
|
+
- 作用:群聊中必须明确 mention 机器人才处理。
|
|
650
|
+
|
|
651
|
+
legacy / relay 字段:
|
|
652
|
+
|
|
653
|
+
- `webhook_secret`
|
|
654
|
+
- `public_callback_url`
|
|
655
|
+
- `relay_url`
|
|
656
|
+
- `relay_auth_token`
|
|
657
|
+
|
|
658
|
+
说明:只有在你明确保留 callback 或 sidecar relay 路径时才需要填写这些字段。
|
|
659
|
+
|
|
660
|
+
### `discord`
|
|
661
|
+
|
|
662
|
+
摘要:推荐 `gateway`,不建议把公网 interaction callback 作为主路径。
|
|
663
|
+
|
|
664
|
+
关键字段:
|
|
665
|
+
|
|
666
|
+
**`transport`**
|
|
667
|
+
|
|
668
|
+
- 类型:`string`
|
|
669
|
+
- 默认值:`gateway`
|
|
670
|
+
- 允许值:`gateway`、`legacy_interactions`、`relay`
|
|
671
|
+
|
|
672
|
+
**`bot_token`**
|
|
673
|
+
|
|
674
|
+
- 类型:`string | null`
|
|
675
|
+
- 作用:Discord Gateway 与 REST API 的凭据。
|
|
676
|
+
- 配置文件补充字段:`bot_token_env`
|
|
677
|
+
|
|
678
|
+
**`application_id`**
|
|
679
|
+
|
|
680
|
+
- 类型:`string | null`
|
|
681
|
+
- 作用:Discord 应用 ID,用于 richer routing 和后续扩展。
|
|
682
|
+
|
|
683
|
+
**`guild_allowlist`**
|
|
684
|
+
|
|
685
|
+
- 类型:`list[string]`
|
|
686
|
+
- 作用:允许使用该 bot 的 guild 白名单。
|
|
687
|
+
|
|
688
|
+
**`require_mention_in_groups`**
|
|
689
|
+
|
|
690
|
+
- 类型:`boolean`
|
|
691
|
+
- 默认值:`true`
|
|
692
|
+
- 作用:只在被 mention 时响应 guild 消息。
|
|
693
|
+
|
|
694
|
+
legacy 字段:
|
|
695
|
+
|
|
696
|
+
- `public_key`
|
|
697
|
+
- `public_interactions_url`
|
|
698
|
+
- `relay_url`
|
|
699
|
+
- `relay_auth_token`
|
|
700
|
+
|
|
701
|
+
### `slack`
|
|
702
|
+
|
|
703
|
+
摘要:推荐 `socket_mode`,这是当前无需公网回调的主路径。
|
|
704
|
+
|
|
705
|
+
关键字段:
|
|
706
|
+
|
|
707
|
+
**`transport`**
|
|
708
|
+
|
|
709
|
+
- 类型:`string`
|
|
710
|
+
- 默认值:`socket_mode`
|
|
711
|
+
- 允许值:`socket_mode`、`legacy_events_api`、`relay`
|
|
712
|
+
|
|
713
|
+
**`bot_token`**
|
|
714
|
+
|
|
715
|
+
- 类型:`string | null`
|
|
716
|
+
- 作用:Slack Bot User OAuth Token。
|
|
717
|
+
- 配置文件补充字段:`bot_token_env`
|
|
718
|
+
|
|
719
|
+
**`app_token`**
|
|
720
|
+
|
|
721
|
+
- 类型:`string | null`
|
|
722
|
+
- 作用:Socket Mode 所需的 App-Level Token。
|
|
723
|
+
- 配置文件补充字段:`app_token_env`
|
|
724
|
+
|
|
725
|
+
**`bot_user_id`**
|
|
726
|
+
|
|
727
|
+
- 类型:`string | null`
|
|
728
|
+
- 作用:用于 mention 过滤或路由的可选 bot user id。
|
|
729
|
+
|
|
730
|
+
**`command_prefix`**
|
|
731
|
+
|
|
732
|
+
- 类型:`string`
|
|
733
|
+
- 默认值:`/`
|
|
734
|
+
|
|
735
|
+
**`require_mention_in_groups`**
|
|
736
|
+
|
|
737
|
+
- 类型:`boolean`
|
|
738
|
+
- 默认值:`true`
|
|
739
|
+
|
|
740
|
+
legacy 字段:
|
|
741
|
+
|
|
742
|
+
- `signing_secret`
|
|
743
|
+
- `public_callback_url`
|
|
744
|
+
- `relay_url`
|
|
745
|
+
- `relay_auth_token`
|
|
746
|
+
|
|
747
|
+
### `feishu`
|
|
748
|
+
|
|
749
|
+
摘要:推荐 `long_connection`,尽量避免公网 event callback。
|
|
750
|
+
|
|
751
|
+
关键字段:
|
|
752
|
+
|
|
753
|
+
**`transport`**
|
|
754
|
+
|
|
755
|
+
- 类型:`string`
|
|
756
|
+
- 默认值:`long_connection`
|
|
757
|
+
- 允许值:`long_connection`、`legacy_webhook`、`relay`
|
|
758
|
+
|
|
759
|
+
**`app_id`**
|
|
760
|
+
|
|
761
|
+
- 类型:`string | null`
|
|
762
|
+
- 作用:飞书 / Lark 应用 ID。
|
|
763
|
+
|
|
764
|
+
**`app_secret`**
|
|
765
|
+
|
|
766
|
+
- 类型:`string | null`
|
|
767
|
+
- 作用:应用密钥,用于 token exchange。
|
|
768
|
+
- 配置文件补充字段:`app_secret_env`
|
|
769
|
+
|
|
770
|
+
**`api_base_url`**
|
|
771
|
+
|
|
772
|
+
- 类型:`string`
|
|
773
|
+
- 默认值:`https://open.feishu.cn`
|
|
774
|
+
- 作用:直连 API 的基础地址。
|
|
775
|
+
|
|
776
|
+
**`require_mention_in_groups`**
|
|
777
|
+
|
|
778
|
+
- 类型:`boolean`
|
|
779
|
+
- 默认值:`true`
|
|
780
|
+
|
|
781
|
+
legacy 字段:
|
|
782
|
+
|
|
783
|
+
- `verification_token`
|
|
784
|
+
- `encrypt_key`
|
|
785
|
+
- `public_callback_url`
|
|
786
|
+
- `relay_url`
|
|
787
|
+
- `relay_auth_token`
|
|
788
|
+
|
|
789
|
+
### `whatsapp`
|
|
790
|
+
|
|
791
|
+
摘要:当前设计目标是 `local_session`,而不是 Meta Cloud webhook 主导。
|
|
792
|
+
|
|
793
|
+
关键字段:
|
|
794
|
+
|
|
795
|
+
**`transport`**
|
|
796
|
+
|
|
797
|
+
- 类型:`string`
|
|
798
|
+
- 默认值:`local_session`
|
|
799
|
+
- 允许值:`local_session`、`legacy_meta_cloud`、`relay`
|
|
800
|
+
|
|
801
|
+
**`auth_method`**
|
|
802
|
+
|
|
803
|
+
- 类型:`string`
|
|
804
|
+
- 默认值:`qr_browser`
|
|
805
|
+
- 允许值:`qr_browser`、`pairing_code`、`qr_terminal`
|
|
806
|
+
- 作用:本地会话认证方式。
|
|
807
|
+
|
|
808
|
+
**`session_dir`**
|
|
809
|
+
|
|
810
|
+
- 类型:`string`
|
|
811
|
+
- 默认值:`~/.deepscientist/connectors/whatsapp`
|
|
812
|
+
- 作用:本地 WhatsApp 会话状态目录。
|
|
813
|
+
|
|
814
|
+
**`command_prefix`**
|
|
815
|
+
|
|
816
|
+
- 类型:`string`
|
|
817
|
+
- 默认值:`/`
|
|
818
|
+
|
|
819
|
+
legacy Meta Cloud 字段:
|
|
820
|
+
|
|
821
|
+
- `provider`
|
|
822
|
+
- `access_token`
|
|
823
|
+
- `phone_number_id`
|
|
824
|
+
- `business_account_id`
|
|
825
|
+
- `verify_token`
|
|
826
|
+
- `api_base_url`
|
|
827
|
+
- `api_version`
|
|
828
|
+
- `public_callback_url`
|
|
829
|
+
- `relay_url`
|
|
830
|
+
- `relay_auth_token`
|
|
831
|
+
|
|
832
|
+
其中:
|
|
833
|
+
|
|
834
|
+
- `access_token` 可用 `access_token_env`
|
|
835
|
+
- `verify_token` 可用 `verify_token_env`
|
|
836
|
+
|
|
837
|
+
### `qq`
|
|
838
|
+
|
|
839
|
+
摘要:QQ 在 DeepScientist 中是一级 connector,主路径就是 `gateway_direct`,不需要公网 callback。
|
|
840
|
+
|
|
841
|
+
快速上手:参见 [《03 QQ 连接器指南:如何用 QQ 与 DeepScientist 沟通》](./03_QQ_CONNECTOR_GUIDE.md)。
|
|
842
|
+
|
|
843
|
+
推荐路径:
|
|
844
|
+
|
|
845
|
+
- `enabled: true`
|
|
846
|
+
- `transport: gateway_direct`
|
|
847
|
+
- 配置 `app_id`、`app_secret`
|
|
848
|
+
- 保存后,让用户先给 bot 发一条私聊消息,系统自动检测并写入 `main_chat_id`
|
|
849
|
+
|
|
850
|
+
关键字段:
|
|
851
|
+
|
|
852
|
+
**`transport`**
|
|
853
|
+
|
|
854
|
+
- 类型:`string`
|
|
855
|
+
- 默认值:`gateway_direct`
|
|
856
|
+
- 页面状态:只读
|
|
857
|
+
- 作用:QQ 的 transport 在当前实现中固定为内置 gateway direct。
|
|
858
|
+
|
|
859
|
+
**`bot_name`**
|
|
860
|
+
|
|
861
|
+
- 类型:`string`
|
|
862
|
+
- 默认值:`DeepScientist`
|
|
863
|
+
- 作用:QQ 连接器在本地 UI 与消息中的显示名。
|
|
864
|
+
|
|
865
|
+
**`app_id`**
|
|
866
|
+
|
|
867
|
+
- 类型:`string | null`
|
|
868
|
+
- 作用:腾讯 QQ Bot App ID。
|
|
869
|
+
|
|
870
|
+
**`app_secret`**
|
|
871
|
+
|
|
872
|
+
- 类型:`string | null`
|
|
873
|
+
- 作用:换取 access token 并发起直连发送。
|
|
874
|
+
- 配置文件补充字段:`app_secret_env`
|
|
875
|
+
|
|
876
|
+
**`main_chat_id`**
|
|
877
|
+
|
|
878
|
+
- 类型:`string | null`
|
|
879
|
+
- 页面标签:`Detected OpenID`
|
|
880
|
+
- 页面状态:只读
|
|
881
|
+
- 作用:系统在第一次收到用户私聊消息后自动回填的 `openid` 或 `group_openid`。
|
|
882
|
+
- 注意事项:这不是让你手填的字段,而是运行时发现值。
|
|
883
|
+
|
|
884
|
+
**`require_at_in_groups`**
|
|
885
|
+
|
|
886
|
+
- 类型:`boolean`
|
|
887
|
+
- 默认值:`true`
|
|
888
|
+
- 作用:群聊里要求 @ 机器人后才处理。
|
|
889
|
+
|
|
890
|
+
**`gateway_restart_on_config_change`**
|
|
891
|
+
|
|
892
|
+
- 类型:`boolean`
|
|
893
|
+
- 默认值:`true`
|
|
894
|
+
- 作用:QQ 凭据或目标变化后,自动重启本地 gateway worker。
|
|
895
|
+
|
|
896
|
+
**`command_prefix`**
|
|
897
|
+
|
|
898
|
+
- 类型:`string`
|
|
899
|
+
- 默认值:`/`
|
|
900
|
+
|
|
901
|
+
**`auto_bind_dm_to_active_quest`**
|
|
902
|
+
|
|
903
|
+
- 类型:`boolean`
|
|
904
|
+
- 默认值:`true`
|
|
905
|
+
- 作用:QQ 私聊默认跟随最新活跃 quest。
|
|
906
|
+
|
|
907
|
+
### QQ 里程碑媒体策略
|
|
908
|
+
|
|
909
|
+
当前推荐的 QQ 策略是“文本优先”。
|
|
910
|
+
自动媒体发送应当非常克制,并且只绑定少量高价值里程碑:
|
|
911
|
+
|
|
912
|
+
- 主实验摘要 PNG:通常开启
|
|
913
|
+
- 分析活动聚合摘要 PNG:通常开启
|
|
914
|
+
- 每个 slice 的 PNG:通常关闭
|
|
915
|
+
- 最终论文 PDF:通常开启
|
|
916
|
+
- 实验性文件上传通道:通常关闭
|
|
917
|
+
|
|
918
|
+
这些设置的目的,是让 QQ 保持清晰、克制,而不是把 QQ 当作默认文件浏览器。
|
|
919
|
+
|
|
920
|
+
**`auto_send_main_experiment_png`**
|
|
921
|
+
|
|
922
|
+
- 类型:`boolean`
|
|
923
|
+
- 默认值:`true`
|
|
924
|
+
- 作用:真实主实验完成后,允许自动发送一张里程碑摘要 PNG。
|
|
925
|
+
|
|
926
|
+
**`auto_send_analysis_summary_png`**
|
|
927
|
+
|
|
928
|
+
- 类型:`boolean`
|
|
929
|
+
- 默认值:`true`
|
|
930
|
+
- 作用:在有意义的分析活动里程碑时,允许自动发送一张聚合摘要 PNG。
|
|
931
|
+
|
|
932
|
+
**`auto_send_slice_png`**
|
|
933
|
+
|
|
934
|
+
- 类型:`boolean`
|
|
935
|
+
- 默认值:`false`
|
|
936
|
+
- 作用:允许自动发送每个分析 slice 的图片。
|
|
937
|
+
- 建议:通常保持关闭,除非你明确希望逐 slice 推送。
|
|
938
|
+
|
|
939
|
+
**`auto_send_paper_pdf`**
|
|
940
|
+
|
|
941
|
+
- 类型:`boolean`
|
|
942
|
+
- 默认值:`true`
|
|
943
|
+
- 作用:论文 bundle 稳定就绪时,允许自动发送一次最终论文 PDF。
|
|
944
|
+
|
|
945
|
+
**`enable_file_upload_experimental`**
|
|
946
|
+
|
|
947
|
+
- 类型:`boolean`
|
|
948
|
+
- 默认值:`false`
|
|
949
|
+
- 作用:启用实验性的 QQ 媒体 / 文件上传通道。
|
|
950
|
+
- 建议:除非你在明确测试 QQ 上传支持,否则保持关闭。
|
|
951
|
+
|
|
952
|
+
## `plugins.yaml`
|
|
953
|
+
|
|
954
|
+
### 摘要
|
|
955
|
+
|
|
956
|
+
`plugins.yaml` 管理外部插件发现与信任策略,不负责插件本身的运行时状态。
|
|
957
|
+
|
|
958
|
+
### 结构
|
|
959
|
+
|
|
960
|
+
```yaml
|
|
961
|
+
load_paths:
|
|
962
|
+
- ~/DeepScientist/plugins
|
|
963
|
+
enabled: []
|
|
964
|
+
disabled: []
|
|
965
|
+
allow_unsigned: false
|
|
966
|
+
```
|
|
967
|
+
|
|
968
|
+
### 参数
|
|
969
|
+
|
|
970
|
+
**`load_paths`**
|
|
971
|
+
|
|
972
|
+
- 类型:`list[string]`
|
|
973
|
+
- 默认值:`[~/DeepScientist/plugins]`
|
|
974
|
+
- 页面标签:`Load paths`
|
|
975
|
+
- 作用:扫描本地插件包的目录列表。
|
|
976
|
+
|
|
977
|
+
**`enabled`**
|
|
978
|
+
|
|
979
|
+
- 类型:`list[string]`
|
|
980
|
+
- 默认值:`[]`
|
|
981
|
+
- 页面标签:`Force-enable plugin ids`
|
|
982
|
+
- 作用:显式启用某些插件 ID。
|
|
983
|
+
|
|
984
|
+
**`disabled`**
|
|
985
|
+
|
|
986
|
+
- 类型:`list[string]`
|
|
987
|
+
- 默认值:`[]`
|
|
988
|
+
- 页面标签:`Force-disable plugin ids`
|
|
989
|
+
- 作用:即使被发现也强制禁用。
|
|
990
|
+
|
|
991
|
+
**`allow_unsigned`**
|
|
992
|
+
|
|
993
|
+
- 类型:`boolean`
|
|
994
|
+
- 默认值:`false`
|
|
995
|
+
- 页面标签:`Allow unsigned plugins`
|
|
996
|
+
- 作用:允许未通过签名 / 信任检查的插件被加载。
|
|
997
|
+
- 风险:只在你完全信任插件来源时开启。
|
|
998
|
+
|
|
999
|
+
## `mcp_servers.yaml`
|
|
1000
|
+
|
|
1001
|
+
### 摘要
|
|
1002
|
+
|
|
1003
|
+
这个文件管理外部 MCP 服务。它不控制内置 `memory`、`artifact`、`bash_exec`,也不保存 quest 内部工具调用历史。
|
|
1004
|
+
|
|
1005
|
+
### 结构
|
|
1006
|
+
|
|
1007
|
+
```yaml
|
|
1008
|
+
servers:
|
|
1009
|
+
browser:
|
|
1010
|
+
enabled: true
|
|
1011
|
+
transport: stdio
|
|
1012
|
+
command:
|
|
1013
|
+
- npx
|
|
1014
|
+
- "@example/browser-mcp"
|
|
1015
|
+
url: ""
|
|
1016
|
+
cwd: ""
|
|
1017
|
+
env: {}
|
|
1018
|
+
```
|
|
1019
|
+
|
|
1020
|
+
### 每个 server 条目的参数
|
|
1021
|
+
|
|
1022
|
+
**`servers.<server_id>.enabled`**
|
|
1023
|
+
|
|
1024
|
+
- 类型:`boolean`
|
|
1025
|
+
- 默认值:新卡片默认为 `false`
|
|
1026
|
+
- 作用:只有启用的外部 MCP 才会暴露给 quest 或 runner。
|
|
1027
|
+
|
|
1028
|
+
**`servers.<server_id>.transport`**
|
|
1029
|
+
|
|
1030
|
+
- 类型:`string`
|
|
1031
|
+
- 默认值:`stdio`
|
|
1032
|
+
- 允许值:`stdio`、`streamable_http`、`http`、`sse`
|
|
1033
|
+
- 作用:定义这个 MCP 服务通过本地子进程还是远程 HTTP/SSE 暴露。
|
|
1034
|
+
|
|
1035
|
+
**`servers.<server_id>.command`**
|
|
1036
|
+
|
|
1037
|
+
- 类型:`list[string]`
|
|
1038
|
+
- 默认值:`[]`
|
|
1039
|
+
- 作用:`stdio` 模式下的启动命令。
|
|
1040
|
+
- 页面提示:可以逐行输入,也可以逗号分隔。
|
|
1041
|
+
|
|
1042
|
+
**`servers.<server_id>.url`**
|
|
1043
|
+
|
|
1044
|
+
- 类型:`string`
|
|
1045
|
+
- 默认值:`""`
|
|
1046
|
+
- 作用:HTTP / SSE 类传输的服务 URL。
|
|
1047
|
+
- 注意事项:`stdio` 纯本地模式通常留空。
|
|
1048
|
+
|
|
1049
|
+
**`servers.<server_id>.cwd`**
|
|
1050
|
+
|
|
1051
|
+
- 类型:`string`
|
|
1052
|
+
- 默认值:`""`
|
|
1053
|
+
- 作用:启动本地 `stdio` MCP 进程时的工作目录。
|
|
1054
|
+
|
|
1055
|
+
**`servers.<server_id>.env`**
|
|
1056
|
+
|
|
1057
|
+
- 类型:`mapping[string, string]`
|
|
1058
|
+
- 默认值:`{}`
|
|
1059
|
+
- 作用:只对该 MCP 服务注入的环境变量覆盖。
|
|
1060
|
+
|
|
1061
|
+
## 校验与测试行为
|
|
1062
|
+
|
|
1063
|
+
### `config.yaml`
|
|
1064
|
+
|
|
1065
|
+
`Test` 会检查:
|
|
1066
|
+
|
|
1067
|
+
- `git` 是否已安装
|
|
1068
|
+
- `git config user.name` 是否存在
|
|
1069
|
+
- `git config user.email` 是否存在
|
|
1070
|
+
- `home` 路径是否存在
|
|
1071
|
+
|
|
1072
|
+
### `runners.yaml`
|
|
1073
|
+
|
|
1074
|
+
`Test` 会检查:
|
|
1075
|
+
|
|
1076
|
+
- 启用的 runner 的 `binary` 是否在 `PATH`
|
|
1077
|
+
- 禁用的 runner 会被跳过,并给出“skipped”式提示
|
|
1078
|
+
|
|
1079
|
+
### `connectors.yaml`
|
|
1080
|
+
|
|
1081
|
+
`Validate` 会检查:
|
|
1082
|
+
|
|
1083
|
+
- connector 必填凭据是否存在
|
|
1084
|
+
- transport 与字段是否匹配
|
|
1085
|
+
- relay 模式是否提供 `relay_url`
|
|
1086
|
+
- 不同平台的推荐/必要字段是否齐全
|
|
1087
|
+
|
|
1088
|
+
`Test` 会尝试做轻量 readiness probe,例如:
|
|
1089
|
+
|
|
1090
|
+
- Telegram:`getMe`
|
|
1091
|
+
- Slack:`auth.test`
|
|
1092
|
+
- Feishu:tenant token exchange
|
|
1093
|
+
- QQ:`access_token` + `/gateway` 探测
|
|
1094
|
+
|
|
1095
|
+
### `plugins.yaml`
|
|
1096
|
+
|
|
1097
|
+
- 没有复杂运行时测试,主要是结构校验。
|
|
1098
|
+
|
|
1099
|
+
### `mcp_servers.yaml`
|
|
1100
|
+
|
|
1101
|
+
- 当前以结构校验为主;真正的连通性需要看服务本身是否可启动或可访问。
|
|
1102
|
+
|
|
1103
|
+
## 推荐起步配置
|
|
1104
|
+
|
|
1105
|
+
### 本地单机研究
|
|
1106
|
+
|
|
1107
|
+
```yaml
|
|
1108
|
+
# config.yaml
|
|
1109
|
+
default_runner: codex
|
|
1110
|
+
default_locale: zh-CN
|
|
1111
|
+
ui:
|
|
1112
|
+
host: 0.0.0.0
|
|
1113
|
+
port: 20999
|
|
1114
|
+
default_mode: both
|
|
1115
|
+
git:
|
|
1116
|
+
auto_checkpoint: true
|
|
1117
|
+
auto_push: false
|
|
1118
|
+
connectors:
|
|
1119
|
+
auto_ack: true
|
|
1120
|
+
milestone_push: true
|
|
1121
|
+
direct_chat_enabled: true
|
|
1122
|
+
```
|
|
1123
|
+
|
|
1124
|
+
### 无公网回调的 connector 思路
|
|
1125
|
+
|
|
1126
|
+
- Telegram:`transport: polling`
|
|
1127
|
+
- Discord:`transport: gateway`
|
|
1128
|
+
- Slack:`transport: socket_mode`
|
|
1129
|
+
- Feishu:`transport: long_connection`
|
|
1130
|
+
- WhatsApp:`transport: local_session`
|
|
1131
|
+
- QQ:固定 `gateway_direct`
|
|
1132
|
+
|
|
1133
|
+
## 相关文档
|
|
1134
|
+
|
|
1135
|
+
- [02 Start Research 参考:如何填写科研启动合同](./02_START_RESEARCH_GUIDE.md)
|
|
1136
|
+
- [05 TUI 使用指南:如何使用终端界面](./05_TUI_GUIDE.md)
|
|
1137
|
+
- [06 运行时与 Canvas:理解运行流程和图结构](./06_RUNTIME_AND_CANVAS.md)
|