@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.
Files changed (165) hide show
  1. package/README.md +112 -99
  2. package/assets/branding/connector-qq.png +0 -0
  3. package/assets/branding/connector-rokid.png +0 -0
  4. package/assets/branding/connector-weixin.png +0 -0
  5. package/assets/branding/projects.png +0 -0
  6. package/bin/ds.js +519 -63
  7. package/docs/assets/branding/projects.png +0 -0
  8. package/docs/en/00_QUICK_START.md +338 -68
  9. package/docs/en/01_SETTINGS_REFERENCE.md +14 -0
  10. package/docs/en/02_START_RESEARCH_GUIDE.md +180 -4
  11. package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +62 -179
  12. package/docs/en/09_DOCTOR.md +66 -5
  13. package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +137 -0
  14. package/docs/en/11_LICENSE_AND_RISK.md +256 -0
  15. package/docs/en/12_GUIDED_WORKFLOW_TOUR.md +446 -0
  16. package/docs/en/13_CORE_ARCHITECTURE_GUIDE.md +297 -0
  17. package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
  18. package/docs/en/15_CODEX_PROVIDER_SETUP.md +284 -0
  19. package/docs/en/99_ACKNOWLEDGEMENTS.md +4 -1
  20. package/docs/en/README.md +83 -0
  21. package/docs/images/lingzhu/rokid-agent-platform-create.png +0 -0
  22. package/docs/images/weixin/weixin-plugin-entry.png +0 -0
  23. package/docs/images/weixin/weixin-plugin-entry.svg +33 -0
  24. package/docs/images/weixin/weixin-qr-confirm.svg +30 -0
  25. package/docs/images/weixin/weixin-quest-media-flow.svg +44 -0
  26. package/docs/images/weixin/weixin-settings-bind.svg +57 -0
  27. package/docs/zh/00_QUICK_START.md +345 -72
  28. package/docs/zh/01_SETTINGS_REFERENCE.md +14 -0
  29. package/docs/zh/02_START_RESEARCH_GUIDE.md +181 -3
  30. package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +62 -193
  31. package/docs/zh/09_DOCTOR.md +68 -5
  32. package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +144 -0
  33. package/docs/zh/11_LICENSE_AND_RISK.md +256 -0
  34. package/docs/zh/12_GUIDED_WORKFLOW_TOUR.md +442 -0
  35. package/docs/zh/13_CORE_ARCHITECTURE_GUIDE.md +296 -0
  36. package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
  37. package/docs/zh/15_CODEX_PROVIDER_SETUP.md +285 -0
  38. package/docs/zh/99_ACKNOWLEDGEMENTS.md +4 -1
  39. package/docs/zh/README.md +129 -0
  40. package/install.sh +0 -34
  41. package/package.json +2 -2
  42. package/pyproject.toml +1 -1
  43. package/src/deepscientist/__init__.py +1 -1
  44. package/src/deepscientist/annotations.py +343 -0
  45. package/src/deepscientist/artifact/arxiv.py +484 -37
  46. package/src/deepscientist/artifact/service.py +574 -108
  47. package/src/deepscientist/arxiv_library.py +275 -0
  48. package/src/deepscientist/bash_exec/monitor.py +7 -5
  49. package/src/deepscientist/bash_exec/service.py +93 -21
  50. package/src/deepscientist/bridges/builtins.py +2 -0
  51. package/src/deepscientist/bridges/connectors.py +447 -0
  52. package/src/deepscientist/channels/__init__.py +2 -0
  53. package/src/deepscientist/channels/builtins.py +3 -1
  54. package/src/deepscientist/channels/local.py +3 -3
  55. package/src/deepscientist/channels/qq.py +8 -8
  56. package/src/deepscientist/channels/qq_gateway.py +1 -1
  57. package/src/deepscientist/channels/relay.py +14 -8
  58. package/src/deepscientist/channels/weixin.py +59 -0
  59. package/src/deepscientist/channels/weixin_ilink.py +388 -0
  60. package/src/deepscientist/config/models.py +23 -2
  61. package/src/deepscientist/config/service.py +539 -67
  62. package/src/deepscientist/connector/__init__.py +4 -0
  63. package/src/deepscientist/connector/connector_profiles.py +481 -0
  64. package/src/deepscientist/connector/lingzhu_support.py +668 -0
  65. package/src/deepscientist/connector/qq_profiles.py +206 -0
  66. package/src/deepscientist/connector/weixin_support.py +663 -0
  67. package/src/deepscientist/connector_profiles.py +1 -374
  68. package/src/deepscientist/connector_runtime.py +2 -0
  69. package/src/deepscientist/daemon/api/handlers.py +165 -5
  70. package/src/deepscientist/daemon/api/router.py +13 -1
  71. package/src/deepscientist/daemon/app.py +1444 -67
  72. package/src/deepscientist/doctor.py +4 -5
  73. package/src/deepscientist/gitops/diff.py +120 -29
  74. package/src/deepscientist/lingzhu_support.py +1 -182
  75. package/src/deepscientist/mcp/server.py +135 -7
  76. package/src/deepscientist/prompts/builder.py +128 -11
  77. package/src/deepscientist/qq_profiles.py +1 -196
  78. package/src/deepscientist/quest/node_traces.py +23 -0
  79. package/src/deepscientist/quest/service.py +359 -74
  80. package/src/deepscientist/quest/stage_views.py +71 -5
  81. package/src/deepscientist/runners/codex.py +170 -19
  82. package/src/deepscientist/runners/runtime_overrides.py +6 -0
  83. package/src/deepscientist/shared.py +33 -14
  84. package/src/deepscientist/weixin_support.py +1 -0
  85. package/src/prompts/connectors/lingzhu.md +3 -1
  86. package/src/prompts/connectors/qq.md +2 -1
  87. package/src/prompts/connectors/weixin.md +231 -0
  88. package/src/prompts/contracts/shared_interaction.md +4 -1
  89. package/src/prompts/system.md +61 -9
  90. package/src/skills/analysis-campaign/SKILL.md +46 -6
  91. package/src/skills/analysis-campaign/references/campaign-plan-template.md +21 -8
  92. package/src/skills/baseline/SKILL.md +1 -1
  93. package/src/skills/decision/SKILL.md +1 -1
  94. package/src/skills/experiment/SKILL.md +1 -1
  95. package/src/skills/finalize/SKILL.md +1 -1
  96. package/src/skills/idea/SKILL.md +1 -1
  97. package/src/skills/intake-audit/SKILL.md +1 -1
  98. package/src/skills/rebuttal/SKILL.md +74 -1
  99. package/src/skills/rebuttal/references/response-letter-template.md +55 -11
  100. package/src/skills/review/SKILL.md +118 -1
  101. package/src/skills/review/references/experiment-todo-template.md +23 -0
  102. package/src/skills/review/references/review-report-template.md +16 -0
  103. package/src/skills/review/references/revision-log-template.md +4 -0
  104. package/src/skills/scout/SKILL.md +1 -1
  105. package/src/skills/write/SKILL.md +168 -7
  106. package/src/skills/write/references/paper-experiment-matrix-template.md +131 -0
  107. package/src/tui/package.json +1 -1
  108. package/src/ui/dist/assets/{AiManusChatView-BKZ103sn.js → AiManusChatView-CnJcXynW.js} +156 -48
  109. package/src/ui/dist/assets/{AnalysisPlugin-mTTzGAlK.js → AnalysisPlugin-DeyzPEhV.js} +1 -1
  110. package/src/ui/dist/assets/{CliPlugin-BH58n3GY.js → CliPlugin-CB1YODQn.js} +164 -9
  111. package/src/ui/dist/assets/{CodeEditorPlugin-BKGRUH7e.js → CodeEditorPlugin-B-xicq1e.js} +8 -8
  112. package/src/ui/dist/assets/{CodeViewerPlugin-BMADwFWJ.js → CodeViewerPlugin-DT54ysXa.js} +5 -5
  113. package/src/ui/dist/assets/{DocViewerPlugin-ZOnTIHLN.js → DocViewerPlugin-DQtKT-VD.js} +3 -3
  114. package/src/ui/dist/assets/{GitDiffViewerPlugin-CQ7h1Djm.js → GitDiffViewerPlugin-hqHbCfnv.js} +20 -21
  115. package/src/ui/dist/assets/{ImageViewerPlugin-GVS5MsnC.js → ImageViewerPlugin-OcVo33jV.js} +5 -5
  116. package/src/ui/dist/assets/{LabCopilotPanel-BZNv1JML.js → LabCopilotPanel-DdGwhEUV.js} +11 -11
  117. package/src/ui/dist/assets/{LabPlugin-TWcJsdQA.js → LabPlugin-Ciz1gDaX.js} +2 -1
  118. package/src/ui/dist/assets/{LatexPlugin-DIjHiR2x.js → LatexPlugin-BhmjNQRC.js} +37 -11
  119. package/src/ui/dist/assets/{MarkdownViewerPlugin-D3ooGAH0.js → MarkdownViewerPlugin-BzdVH9Bx.js} +4 -4
  120. package/src/ui/dist/assets/{MarketplacePlugin-DfVfE9hN.js → MarketplacePlugin-DmyHspXt.js} +3 -3
  121. package/src/ui/dist/assets/{NotebookEditor-DDl0_Mc0.js → NotebookEditor-BMXKrDRk.js} +1 -1
  122. package/src/ui/dist/assets/{NotebookEditor-s8JhzuX1.js → NotebookEditor-BTVYRGkm.js} +12 -12
  123. package/src/ui/dist/assets/{PdfLoader-C2Sf6SJM.js → PdfLoader-CvcjJHXv.js} +14 -7
  124. package/src/ui/dist/assets/{PdfMarkdownPlugin-CXFLoIsa.js → PdfMarkdownPlugin-DW2ej8Vk.js} +73 -6
  125. package/src/ui/dist/assets/{PdfViewerPlugin-BYTmz2fK.js → PdfViewerPlugin-CmlDxbhU.js} +103 -34
  126. package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +3627 -0
  127. package/src/ui/dist/assets/{SearchPlugin-CjWBI1O9.js → SearchPlugin-DAjQZPSv.js} +1 -1
  128. package/src/ui/dist/assets/{TextViewerPlugin-DdOBU3-S.js → TextViewerPlugin-C-nVAZb_.js} +5 -4
  129. package/src/ui/dist/assets/{VNCViewer-B8HGgLwQ.js → VNCViewer-D7-dIYon.js} +10 -10
  130. package/src/ui/dist/assets/bot-C_G4WtNI.js +21 -0
  131. package/src/ui/dist/assets/branding/logo-rokid.png +0 -0
  132. package/src/ui/dist/assets/browser-BAcuE0Xj.js +2895 -0
  133. package/src/ui/dist/assets/{code-BWAY76JP.js → code-Cd7WfiWq.js} +1 -1
  134. package/src/ui/dist/assets/{file-content-C1NwU5oQ.js → file-content-B57zsL9y.js} +1 -1
  135. package/src/ui/dist/assets/{file-diff-panel-CywslwB9.js → file-diff-panel-DVoheLFq.js} +1 -1
  136. package/src/ui/dist/assets/{file-socket-B4kzuOBQ.js → file-socket-B5kXFxZP.js} +1 -1
  137. package/src/ui/dist/assets/{image-D-NZM-6P.js → image-LLOjkMHF.js} +1 -1
  138. package/src/ui/dist/assets/{index-DGIYDuTv.css → index-BQG-1s2o.css} +40 -13
  139. package/src/ui/dist/assets/{index-DHZJ_0TI.js → index-C3r2iGrp.js} +12 -12
  140. package/src/ui/dist/assets/{index-7Chr1g9c.js → index-CLQauncb.js} +15050 -9561
  141. package/src/ui/dist/assets/index-Dxa2eYMY.js +25 -0
  142. package/src/ui/dist/assets/{index-BdM1Gqfr.js → index-hOUOWbW2.js} +2 -2
  143. package/src/ui/dist/assets/{monaco-Cb2uKKe6.js → monaco-BGGAEii3.js} +1 -1
  144. package/src/ui/dist/assets/{pdf-effect-queue-DSw_D3RV.js → pdf-effect-queue-DlEr1_y5.js} +16 -1
  145. package/src/ui/dist/assets/pdf.worker.min-yatZIOMy.mjs +21 -0
  146. package/src/ui/dist/assets/{popover-Bg72DGgT.js → popover-CWJbJuYY.js} +1 -1
  147. package/src/ui/dist/assets/{project-sync-Ce_0BglY.js → project-sync-CRJiucYO.js} +18 -77
  148. package/src/ui/dist/assets/select-CoHB7pvH.js +1690 -0
  149. package/src/ui/dist/assets/{sigma-DPaACDrh.js → sigma-D5aJWR8J.js} +1 -1
  150. package/src/ui/dist/assets/{index-CDxNdQdz.js → square-check-big-DUK_mnkS.js} +2 -13
  151. package/src/ui/dist/assets/{trash-BvTgE5__.js → trash-ChU3SEE3.js} +1 -1
  152. package/src/ui/dist/assets/{useCliAccess-CgPeMOwP.js → useCliAccess-BrJBV3tY.js} +1 -1
  153. package/src/ui/dist/assets/{useFileDiffOverlay-xPhz7P5B.js → useFileDiffOverlay-C2OQaVWc.js} +1 -1
  154. package/src/ui/dist/assets/{wrap-text-C3Un3YQr.js → wrap-text-C7Qqh-om.js} +1 -1
  155. package/src/ui/dist/assets/{zoom-out-BgxLa0Ri.js → zoom-out-rtX0FKya.js} +1 -1
  156. package/src/ui/dist/index.html +2 -2
  157. package/src/ui/dist/assets/AutoFigurePlugin-BGxN8Umr.css +0 -3056
  158. package/src/ui/dist/assets/AutoFigurePlugin-C_wWw4AP.js +0 -8149
  159. package/src/ui/dist/assets/PdfViewerPlugin-BJXtIwj_.css +0 -260
  160. package/src/ui/dist/assets/Stepper-B0Dd8CxK.js +0 -158
  161. package/src/ui/dist/assets/bibtex-CKaefIN2.js +0 -189
  162. package/src/ui/dist/assets/file-utils-H2fjA46S.js +0 -109
  163. package/src/ui/dist/assets/message-square-BzjLiXir.js +0 -16
  164. package/src/ui/dist/assets/pdfjs-DU1YE8WO.js +0 -3
  165. package/src/ui/dist/assets/tooltip-C_mA6R0w.js +0 -108
@@ -1,152 +1,382 @@
1
1
  # 00 快速开始:启动 DeepScientist 并运行第一个项目
2
2
 
3
- 这份文档面向第一次使用 DeepScientist 的用户,目标是让你从安装直接走到“成功启动并跑起来一个项目”。
3
+ 可以把 DeepScientist 理解成一个长期运行在本地的科研工作区:你定义任务,准备资源,它持续往前推进,并把文件、分支、笔记和结果都留在你的机器上。
4
+
5
+ 这份文档面向第一次使用 DeepScientist 的用户,写法尽量偏“照着做”:一步做什么、为什么这么做,都讲清楚。
4
6
 
5
7
  你只需要完成四步:
6
8
 
7
9
  1. 安装 DeepScientist
8
10
  2. 启动本地运行时
9
- 3. 在首页创建一个新项目
10
- 4. 从项目列表重新打开已有任务
11
+ 3. 打开首页
12
+ 4. 用一个真实示例创建第一个项目
11
13
 
12
14
  本文中的截图直接使用当前在线页面 `deepscientist.cc:20999` 作为示例。你本地运行后的页面 `127.0.0.1:20999` 通常会与它保持一致或非常接近。
13
15
 
14
- ## 1. 安装
16
+ 当前平台支持:DeepScientist 目前仅支持 Linux 和 macOS,当前版本暂不支持 Windows。
17
+
18
+ ## 安全建议:先隔离,再启动
19
+
20
+ 在你第一次启动 DeepScientist 前,强烈建议先接受下面这条原则:
21
+
22
+ - 如果环境允许,优先在 Docker 容器、虚拟机或同等级隔离环境中运行
23
+ - 一律使用非 root 账号启动,不要直接用 root 运行
24
+ - 不要优先拿生产机、重要服务器或带敏感数据的宿主机做首次试跑
25
+ - 不要轻易把 `0.0.0.0` 端口、反向代理地址或网页入口公开分享给别人
26
+ - 如果后面会绑定微信、QQ、Lingzhu 等 connector,更不要把这个站点当成可随意共享的网页
27
+
28
+ 原因很直接:DeepScientist 具备自动执行命令、改文件、安装依赖、发送外部消息和读写项目数据的能力。一旦权限给大了,或者站点被错误暴露,后果可能包括服务器损坏、数据丢失、密钥泄露、connector 被盗用,甚至研究结果被错误伪造却未被及时发现。
29
+
30
+ 完整说明见:
31
+
32
+ - [11 协议与风险说明](./11_LICENSE_AND_RISK.md)
33
+
34
+ ## 0. 开始前先准备什么
35
+
36
+ 建议你先准备好这些:
37
+
38
+ - 安装好 Node.js `>=18.18` 和 npm `>=9`;请优先参考官方页面安装:https://nodejs.org/en/download
39
+ - 一条已经可用的 Codex 路径:
40
+ - 默认 OpenAI 登录路径:`codex --login`(或 `codex`)
41
+ - provider-backed 路径:一个已经可用的 Codex profile,例如 `minimax`、`glm`、`ark`、`bailian`
42
+ - 模型或 API 凭证
43
+ - 如果任务比较重,准备好 GPU 或远程服务器
44
+ - 如果你要长期运行,优先准备 Docker 或其他隔离环境,并准备一个非 root 账号专门启动 DeepScientist
45
+ - 如果要从已有工作开始,准备好代码仓库、数据或 baseline 链接
46
+ - 如果你希望在网页之外接收进展,也可以先配置一个 connector,例如 QQ
47
+
48
+ 如果你还在选择合适的 Coding Plan / 订阅方案,可以先看这些官方页面:
49
+
50
+ - ChatGPT 定价:https://openai.com/chatgpt/pricing/
51
+ - ChatGPT Plus 帮助页:https://help.openai.com/en/articles/6950777-what-is-chatgpt-plus%3F.eps
52
+ - MiniMax Coding Plan:https://platform.minimaxi.com/docs/guides/pricing-codingplan
53
+ - GLM Coding Plan:https://docs.bigmodel.cn/cn/coding-plan/overview
54
+ - 阿里百炼 Coding Plan:https://help.aliyun.com/zh/model-studio/coding-plan
55
+ - 火山引擎 Ark Coding Plan:https://www.volcengine.com/docs/82379/1925115?lang=zh
56
+
57
+ 如果你准备使用 provider-backed 的 Codex profile,而不是默认 OpenAI 登录流,请继续看:
58
+
59
+ - [15 Codex Provider 配置](./15_CODEX_PROVIDER_SETUP.md)
60
+
61
+ ## 1. 先安装 Node.js,再安装 DeepScientist
62
+
63
+ DeepScientist 目前仅支持 Linux 和 macOS。
64
+
65
+ 在安装 DeepScientist 本身之前,请先从 Node.js 官方页面安装 Node.js:
66
+
67
+ https://nodejs.org/en/download
15
68
 
16
- 全局安装 DeepScientist:
69
+ 请确保你的环境满足:
70
+
71
+ - Node.js `>=18.18`
72
+ - npm `>=9`
73
+
74
+ 运行:
17
75
 
18
76
  ```bash
19
77
  npm install -g @researai/deepscientist
20
78
  ```
21
79
 
22
- 如果你后续还要在本地编译论文 PDF,也可以顺手安装轻量级 LaTeX 运行时:
80
+ 这一步会把 `ds` 命令安装到你的机器上。
81
+
82
+ DeepScientist 依赖一个可用的 Codex CLI。npm 包会尽量把随包的 Codex 依赖一起装好,但如果安装完成后 `codex` 仍然不可用,请显式修复:
83
+
84
+ ```bash
85
+ npm install -g @openai/codex
86
+ ```
87
+
88
+ 如果你后面还要在本地编译论文 PDF,可以再运行:
23
89
 
24
90
  ```bash
25
91
  ds latex install-runtime
26
92
  ```
27
93
 
28
- ## 2. 启动 DeepScientist
94
+ 这一步会安装一个轻量级 TinyTeX 运行时。
95
+
96
+ ## 2. 第一次运行 `ds` 前,先完成 Codex 配置
97
+
98
+ 这里有两条路径,二选一即可。
29
99
 
30
- 启动本地 daemon Web 工作区:
100
+ ### 2.1 默认 OpenAI 登录路径
101
+
102
+ 运行:
31
103
 
32
104
  ```bash
33
- ds
105
+ codex --login
34
106
  ```
35
107
 
36
- DeepScientist 现在使用 `uv` 管理锁定的本地 Python 运行时。如果你已经激活了 conda 环境,且其中的 Python 满足 `>=3.11`,`ds` 会优先使用它;否则 `uv` 会自动在 DeepScientist home 下准备受管 Python。
108
+ 如果你的 Codex CLI 版本没有 `--login`,就运行:
37
109
 
38
- 如果你的机器上还没有 `uv`,第一次运行 `ds` 时会自动在本地安装一份。npm 包本身也已经带上了 Codex CLI 依赖,因此不需要再单独执行 `npm install -g @openai/codex`;但你后续仍然可能需要手动运行一次 `codex` 完成登录。
110
+ ```bash
111
+ codex
112
+ ```
39
113
 
40
- 默认情况下,DeepScientist home 在 macOS / Linux 上是 `~/DeepScientist`,在 Windows 上是 `%USERPROFILE%\\DeepScientist`。如果你希望放到别的路径,可以直接使用 `ds --home <path>`。
114
+ 然后在交互式界面里完成认证。
41
115
 
42
- 如果你希望把 DeepScientist home 放到当前工作目录下的 `./DeepScientist` 中,可以运行:
116
+ 接着先做一次环境确认:
43
117
 
44
118
  ```bash
45
- ds --here
119
+ ds doctor
46
120
  ```
47
121
 
48
- 它等价于 `ds --home "$PWD/DeepScientist"`。
122
+ ### 2.2 provider-backed 的 Codex profile 路径
49
123
 
50
- 如果你是从源码仓库安装,并希望把默认的 CLI 安装基路径改到别的位置,可以使用:
124
+ 如果你已经在 MiniMax、GLM、火山方舟、阿里百炼或其他 provider 上配置了一个命名的 Codex profile,请先在终端里确认这个 profile 本身可用:
51
125
 
52
126
  ```bash
53
- bash install.sh --dir /data/DeepScientist
127
+ codex --profile minimax
54
128
  ```
55
129
 
56
- 如果你已经有一个正在使用的 DeepScientist home,之后又想安全迁移到别的路径,可以使用:
130
+ 然后用同一个 profile 去跑 DeepScientist
57
131
 
58
132
  ```bash
59
- ds migrate /data/DeepScientist
133
+ ds doctor --codex-profile minimax
60
134
  ```
61
135
 
62
- `ds migrate` 会先显示当前绝对路径和目标绝对路径,停止托管 daemon,要求二次确认,校验复制结果,并在确认迁移成功后才删除旧路径。
136
+ 之后启动:
63
137
 
64
- 默认情况下,网页会运行在:
138
+ ```bash
139
+ ds --codex-profile minimax
140
+ ```
65
141
 
66
- ```text
67
- http://127.0.0.1:20999
142
+ 把这里的 `minimax` 替换成你真实的 profile 名,例如 `m27`、`glm`、`ark`、`bailian`。
143
+
144
+ DeepScientist 会在启动前强制做一次真实的 Codex hello 探测。默认情况下,`~/DeepScientist/config/runners.yaml` 里的 runner 模型还是 `gpt-5.4`。如果你的 profile 希望模型由 profile 自己决定,请把 `runners.yaml` 里的 `model` 改成 `inherit`;或者直接使用 `--codex-profile <name>`,让这一轮启动自动继承 profile 对应的模型。
145
+
146
+ ## 3. 启动本地运行时
147
+
148
+ 运行:
149
+
150
+ ```bash
151
+ ds
68
152
  ```
69
153
 
70
- 如果浏览器没有自动打开,就手动访问这个地址。
154
+ 这会启动本地 daemon 和网页工作区。
155
+
156
+ 再次强调:
157
+
158
+ - 推荐优先在 Docker 或其他隔离环境里运行
159
+ - 推荐始终使用非 root 用户启动
160
+ - 如果只是第一次试跑,不要先把服务暴露到公网
161
+
162
+ DeepScientist 现在使用 `uv` 管理锁定的本地 Python 运行时。如果你已经激活了 conda 环境,且其中的 Python 满足 `>=3.11`,`ds` 会优先使用它;否则会自动在 DeepScientist home 下准备一份受管 Python。
71
163
 
72
- 如果你想改端口,可以直接运行:
164
+ 默认情况下,DeepScientist home 是:
165
+
166
+ - macOS / Linux:`~/DeepScientist`
167
+
168
+ 如果你希望把 DeepScientist home 放到当前目录下,可以运行:
73
169
 
74
170
  ```bash
75
- ds --port 21000
171
+ ds --here
76
172
  ```
77
173
 
78
- 如果你希望绑定到所有网卡地址:
174
+ 它等价于 `ds --home "$PWD/DeepScientist"`。
175
+
176
+ 如果你想换一个端口,可以运行:
79
177
 
80
178
  ```bash
81
- ds --host 0.0.0.0 --port 21000
179
+ ds --port 21000
82
180
  ```
83
181
 
84
- ## 3. 认识首页
182
+ 这会把网页界面放到 `21000` 端口。
183
+
184
+ 默认情况下,本地网页地址是:
185
+
186
+ ```text
187
+ http://127.0.0.1:20999
188
+ ```
189
+
190
+ 如果浏览器没有自动打开,就手动访问这个地址。
191
+
192
+ ## 4. 打开首页
85
193
 
86
194
  启动完成后,先打开 `/` 首页。
87
195
 
88
196
  ![DeepScientist 首页](../images/quickstart/00-home.png)
89
197
 
90
- 首页故意做得很简单,核心只有两个按钮:
198
+ 运行 12 小时之后,你的项目首页更可能像下面这样:
199
+
200
+ ![DeepScientist 项目首页](../assets/branding/projects.png)
201
+
202
+ 你最先会看到两个入口:
203
+
204
+ - `Start Research`:创建一个新项目,并立刻开始新的研究任务
205
+ - `Open Project`:重新打开已有项目
206
+
207
+ 第一次使用时,先点击 `Start Research`。
208
+
209
+ ## 5. 用一个真实示例创建第一个项目
91
210
 
92
- - `Start Research`:创建一个新的项目,并立刻启动新的研究任务
93
- - `打开项目`:打开已有项目列表,重新进入已经存在的任务
211
+ 这里使用一个经过整理的真实示例,它来自 quest `025` 的启动输入,但我把它改得更正式、更适合公开文档。
94
212
 
95
- 如果你是第一次使用,建议先从 `Start Research` 开始。
213
+ 这个示例项目的目标是:
96
214
 
97
- ## 4. 使用 Start Research 创建新项目
215
+ - 复现官方的 Mandela-Effect baseline
216
+ - 保持原论文的任务定义与评测协议
217
+ - 研究在混合正确 / 错误社会信号下,如何实现更强的 truth-preserving collaboration
218
+ - 使用两个本地推理端点提高吞吐量
98
219
 
99
- 点击 `Start Research`,会弹出启动表单。
220
+ 点击 `Start Research`,打开启动弹窗。
100
221
 
101
222
  ![Start Research 弹窗](../images/quickstart/01-start-research.png)
102
223
 
103
- 这个弹窗不只是“新建任务”,它还会为 agent 写入本次研究的启动合同。
224
+ ### 5.1 先填简短字段
104
225
 
105
- 最重要的字段是:
226
+ 先用这些值:
106
227
 
107
- - `项目 ID`:通常会自动按顺序生成,例如 `00`、`01`、`02`
108
- - `Primary request` / 研究目标:你真正希望 agent 完成的科研任务
109
- - `Reuse Baseline`:可选;如果你要复用已有 baseline,就在这里选择
110
- - `Research intensity`:本次研究的投入强度
111
- - `Decision mode`:`Autonomous` 表示除非真的需要审批,否则 agent 默认持续自主推进
112
- - `Research paper`:是否要求本次任务同时产出论文式结果
113
- - `Language`:本次运行希望使用的用户侧语言
228
+ | 界面字段 | 示例值 | 为什么这样填 |
229
+ |---|---|---|
230
+ | `Project title` | `Mandela-Effect Reproduction and Truth-Preserving Collaboration` | 标题简短、明确,后面在项目列表里也好认 |
231
+ | `Project ID` | 留空,或填 `025` | 想自动编号就留空;只有你明确想固定项目编号时才手动填写 |
232
+ | `Connector delivery` | 第一次建议用 `Local only` | 先把本地工作流跑通;如果你已经配好了 QQ 等 connector,也可以在这里直接绑定一个目标 |
114
233
 
115
- 第一次测试时,建议你这样填写:
234
+ ### 5.2 填写主研究请求
116
235
 
117
- - 写一个清晰、单一的研究问题
118
- - 如果还没有 baseline,就先留空
119
- - 强度选择 `Balanced` 或 `Sprint`
120
- - 决策模式保持 `Autonomous`
236
+ 把下面这段内容粘贴到 `Primary research request`:
121
237
 
122
- 最后点击弹窗底部的 `Start Research` 即可正式启动。
238
+ ```text
239
+ Please reproduce the official Mandela-Effect repository and paper, then study how to improve truth-preserving collaboration under mixed correct and incorrect social signals.
240
+
241
+ The core research question is: how can a multi-agent system remain factually robust under social influence while still learning from correct peers?
242
+
243
+ 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.
244
+ ```
245
+
246
+ 这段写法是比较好的,因为它同时做了四件事:
247
+
248
+ - 明确告诉系统要复现什么 baseline
249
+ - 把核心研究问题单独说清楚
250
+ - 说明边界:不要换任务,不要乱改评测协议
251
+ - 给出研究方向提示,但没有把实现路线写死
252
+
253
+ ### 5.3 填写 baseline 和参考资料
254
+
255
+ 如果这是你第一次跑这个任务,`Reusable baseline` 先留空。
256
+
257
+ 如果你已经把官方 baseline 导入过 registry,那么这里就直接选择它。这样 DeepScientist 会优先 attach 这个可信 baseline,而不是重新从零恢复。
258
+
259
+ 把下面内容粘贴到 `Baseline links`:
260
+
261
+ ```text
262
+ https://github.com/bluedream02/Mandela-Effect
263
+ ```
264
+
265
+ 把下面内容粘贴到 `Reference papers / repos`:
266
+
267
+ ```text
268
+ https://arxiv.org/abs/2602.00428
269
+ ```
270
+
271
+ 这两项的作用很直接:
272
+
273
+ - `Baseline links` 告诉系统 baseline 从哪里恢复
274
+ - `Reference papers / repos` 告诉系统哪篇论文和哪套方法定义了这个任务
275
+
276
+ ### 5.4 填写运行约束
277
+
278
+ 把下面内容粘贴到 `Runtime constraints`:
279
+
280
+ ```text
281
+ - Keep the task definition and evaluation protocol aligned with the official baseline unless a change is explicitly justified.
282
+ - Use two OpenAI-compatible local inference endpoints for throughput:
283
+ - `http://127.0.0.1:8004/v1`
284
+ - `http://127.0.0.1:8008/v1`
285
+ - Use API key `1234` and model `/model/gpt-oss-120b` on both endpoints.
286
+ - Keep generation settings close to the baseline unless a justified adjustment is required.
287
+ - Implement asynchronous execution, automatic retry on request failure, and resumable scripts.
288
+ - Split requests across both endpoints so throughput stays high without overloading the service.
289
+ - Record failed, degraded, or inconclusive runs honestly instead of hiding them.
290
+ ```
291
+
292
+ 这个字段非常重要。很多用户会把运行细节散落在聊天里,但真正稳妥的做法,是把它们写成项目的硬约束。
293
+
294
+ ### 5.5 填写研究目标
295
+
296
+ 把下面内容粘贴到 `Goals`:
297
+
298
+ ```text
299
+ 1. Restore and verify the official Mandela-Effect baseline as a trustworthy starting point.
300
+ 2. Measure key metrics and failure modes on the designated `gpt-oss-120b` setup.
301
+ 3. Propose at least one literature-grounded direction for stronger truth-preserving collaboration.
302
+ 4. Produce experiment and analysis artifacts that are strong enough to support paper writing.
303
+ ```
304
+
305
+ 这里不要写成“做出一个很厉害的方法”这种空话。更好的写法是把“第一轮真正要交付什么”拆成几条明确结果。
306
+
307
+ ### 5.6 选择策略字段
308
+
309
+ 这个例子里,建议你使用下面这些选项:
310
+
311
+ | 界面字段 | 示例值 | 实际含义 |
312
+ |---|---|---|
313
+ | `Research paper` | `On` | 这个项目默认继续推进到分析和论文式产出 |
314
+ | `Research intensity` | `Balanced` | 先把 baseline 立稳,再测试一个合理方向 |
315
+ | `Decision mode` | `Autonomous` | 普通路线选择默认自己推进,除非真的需要用户决定 |
316
+ | `Launch mode` | `Standard` | 按默认科研主线启动 |
317
+ | `Language` | `English` | 默认用英文组织 kickoff prompt 和用户侧产物 |
318
+
319
+ 你在前端里选完这些以后,系统还会自动推导出一组真正提交的合同字段:
320
+
321
+ - `scope = baseline_plus_direction`
322
+ - 如果没有选 `Reusable baseline`,则 `baseline_mode = restore_from_url`
323
+ - 如果选了 `Reusable baseline`,则 `baseline_mode = existing`
324
+ - `resource_policy = balanced`
325
+ - `time_budget_hours = 24`
326
+ - `git_strategy = semantic_head_plus_controlled_integration`
123
327
 
124
- ## 5. 使用“打开项目”重新进入已有任务
328
+ 这就是为什么 `Start Research` 不只是“新建项目表单”。它还会写入一份结构化的 `startup_contract`,后续 prompt builder 会持续读取它。
125
329
 
126
- 点击首页上的 `打开项目`,会打开项目列表。
330
+ ### 5.7 检查预览,然后创建项目
331
+
332
+ 点击创建之前,先检查右侧的 prompt 预览。
333
+
334
+ 至少确认这几件事都在里面:
335
+
336
+ - 研究请求是否清楚
337
+ - baseline 链接是否对
338
+ - 参考论文是否对
339
+ - 运行约束是否完整
340
+ - 目标是否写成了可执行结果
341
+ - 决策模式和交付模式是否符合预期
342
+
343
+ 确认没问题之后,点击 `Create project`。
344
+
345
+ 这时前端实际会提交:
346
+
347
+ - 一段编译好的 kickoff prompt
348
+ - 一个可选的 `requested_baseline_ref`
349
+ - 一个可选的 `requested_connector_bindings`
350
+ - 一份结构化的 `startup_contract`
351
+
352
+ 如果你想进一步理解这些字段的真实提交结构,请继续看 [02 Start Research 参考](./02_START_RESEARCH_GUIDE.md)。
353
+
354
+ ## 6. 重新打开已有项目
355
+
356
+ 点击首页上的 `Open Project`,会打开项目列表。
127
357
 
128
358
  ![打开项目 弹窗](../images/quickstart/02-list-quest.png)
129
359
 
130
- 这个列表适合以下场景:
360
+ 你可以用它来:
131
361
 
132
- - 重新进入一个已经在运行中的项目
133
- - 打开一个以前已经完成或已经创建过的项目
134
- - 按项目标题或项目 ID 搜索目标任务
362
+ - 重新进入一个正在运行中的项目
363
+ - 重新打开以前完成过的项目
364
+ - 按项目标题或项目 ID 搜索目标项目
135
365
 
136
- 列表中的每一行都对应一个项目仓库。点击对应卡片即可进入该项目的工作区。
366
+ 列表中的每一行都对应一个项目仓库。点击卡片即可进入。
137
367
 
138
- ## 6. 打开项目之后会发生什么
368
+ ## 7. 打开项目之后会发生什么
139
369
 
140
- 创建或打开项目后,DeepScientist 会进入这个项目的工作区页面。
370
+ 创建或打开项目后,DeepScientist 会进入这个项目的工作区。
141
371
 
142
- 通常你会在里面做这些事情:
372
+ 通常第一轮你会做这些事情:
143
373
 
144
- 1. 在 Copilot / Studio 中观察 agent 的实时进展
145
- 2. 查看文件、笔记和生成出来的 artifact
146
- 3. 在 Canvas 中理解当前项目的图结构与阶段进展
147
- 4. 只有在你明确想中断时,才主动停止任务
374
+ 1. 在 Copilot / Studio 里看进展
375
+ 2. 检查文件、笔记和 artifact
376
+ 3. 在 Canvas 中理解项目图结构与阶段进展
377
+ 4. 除非你明确想打断,否则先让任务继续推进
148
378
 
149
- ## 7. 常用运行命令
379
+ ## 8. 常用运行命令
150
380
 
151
381
  查看当前状态:
152
382
 
@@ -154,21 +384,64 @@ ds --host 0.0.0.0 --port 21000
154
384
  ds --status
155
385
  ```
156
386
 
157
- 停止当前本地 daemon:
387
+ 这会告诉你本地运行时是否正常在线。
388
+
389
+ 停止 daemon:
158
390
 
159
391
  ```bash
160
392
  ds --stop
161
393
  ```
162
394
 
163
- 如果启动异常或环境有问题,运行诊断:
395
+ 这会停止当前本地 DeepScientist daemon。
396
+
397
+ 运行诊断:
164
398
 
165
399
  ```bash
166
400
  ds doctor
167
401
  ```
168
402
 
169
- ## 8. 下一步该看什么
403
+ 当你怀疑是启动、配置、runner connector 出问题时,用这个命令排查。
404
+
405
+ ## 9. 下一步该看什么
406
+
407
+ - [文档总览](./README.md)
408
+ - [12 引导式工作流教程](./12_GUIDED_WORKFLOW_TOUR.md)
409
+ - [02 Start Research 参考](./02_START_RESEARCH_GUIDE.md)
410
+ - [13 核心架构说明](./13_CORE_ARCHITECTURE_GUIDE.md)
411
+ - [01 设置参考](./01_SETTINGS_REFERENCE.md)
412
+ - [03 QQ 连接器指南](./03_QQ_CONNECTOR_GUIDE.md)
413
+ - [05 TUI 使用指南](./05_TUI_GUIDE.md)
414
+
415
+ ## 10. 简短 FAQ
416
+
417
+ ### 如果我是从源码仓库安装,想装到另一个目录里,怎么做?
418
+
419
+ 运行:
420
+
421
+ ```bash
422
+ bash install.sh --dir /data/DeepScientist
423
+ ```
424
+
425
+ 这个命令适合你在源码 checkout 里工作,但希望把 DeepScientist 安装到另一个独立运行目录时使用。
426
+
427
+ ### 如果我已经有一个 DeepScientist home,想安全迁移到新路径,怎么做?
428
+
429
+ 运行:
430
+
431
+ ```bash
432
+ ds migrate /data/DeepScientist
433
+ ```
434
+
435
+ 这是迁移现有 DeepScientist home 的正式方式。
436
+
437
+ ### 如果我确实需要监听所有网卡,怎么启动?
438
+
439
+ 运行:
440
+
441
+ ```bash
442
+ ds --host 0.0.0.0 --port 21000
443
+ ```
444
+
445
+ 只有在你确实需要外部访问时才这样做,而且建议先看风险说明:
170
446
 
171
- - [01 设置参考:如何配置 DeepScientist](./01_SETTINGS_REFERENCE.md)
172
- - [02 Start Research 参考:如何填写科研启动合同](./02_START_RESEARCH_GUIDE.md)
173
- - [03 QQ 连接器指南:如何用 QQ 与 DeepScientist 沟通](./03_QQ_CONNECTOR_GUIDE.md)
174
- - [05 TUI 使用指南:如何使用终端界面](./05_TUI_GUIDE.md)
447
+ - [11 协议与风险说明](./11_LICENSE_AND_RISK.md)
@@ -406,6 +406,7 @@ codex:
406
406
  enabled: true
407
407
  binary: codex
408
408
  config_dir: ~/.codex
409
+ profile: ""
409
410
  model: gpt-5.4
410
411
  model_reasoning_effort: xhigh
411
412
  approval_policy: on-request
@@ -443,6 +444,8 @@ claude:
443
444
  - 页面标签:`Binary`
444
445
  - 作用:启动 runner 时使用的命令名或绝对路径。
445
446
  - `Test` 行为:检查该二进制是否在 `PATH` 上。
447
+ - 首次使用说明:DeepScientist 不会替你完成 Codex 认证。第一次运行 `ds` 前,必须先确保 `codex --login`(或 `codex`)已经成功完成。
448
+ - 修复说明:如果执行 `npm install -g @researai/deepscientist` 之后 bundled Codex 依赖仍然缺失,请显式安装 `npm install -g @openai/codex`。
446
449
 
447
450
  **`config_dir`**
448
451
 
@@ -451,12 +454,23 @@ claude:
451
454
  - 页面标签:`Config directory`
452
455
  - 作用:runner 的全局配置目录,通常存放认证和全局配置。
453
456
 
457
+ **`profile`**
458
+
459
+ - 类型:`string`
460
+ - 默认值:`""`
461
+ - 页面标签:`Codex profile`
462
+ - 作用:可选的 Codex profile 名称,会直接透传为 `codex --profile <name>`。
463
+ - 当你的 Codex CLI 已经配置成 MiniMax、GLM、火山方舟、阿里百炼或其他 provider-backed 路径时,就在这里填写。
464
+ - 临时使用说明:如果你不想持久化写配置,也可以保持这里为空,直接使用 `ds --codex-profile <name>` 启动。
465
+
454
466
  **`model`**
455
467
 
456
468
  - 类型:`string`
457
469
  - 默认值:`codex=gpt-5.4`,`claude=inherit`
458
470
  - 页面标签:`Default model`
459
471
  - 作用:项目和单次请求没有覆盖时的默认模型。
472
+ - 启动说明:DeepScientist 的 Codex 就绪探测会优先使用这里配置的模型。如果你的 Codex 账号无法访问它,DeepScientist 会自动回退到当前 Codex 默认模型,并持久化为 `model: inherit`。
473
+ - provider-profile 说明:当 `profile` 已设置时,通常推荐使用 `model: inherit`,让 Codex profile 自己决定 provider 侧模型。
460
474
 
461
475
  **`model_reasoning_effort`**
462
476