@researai/deepscientist 1.5.9 → 1.5.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +107 -94
- package/assets/branding/connector-qq.png +0 -0
- package/assets/branding/connector-rokid.png +0 -0
- package/assets/branding/connector-weixin.png +0 -0
- package/assets/branding/projects.png +0 -0
- package/bin/ds.js +168 -9
- package/docs/assets/branding/projects.png +0 -0
- package/docs/en/00_QUICK_START.md +308 -70
- package/docs/en/01_SETTINGS_REFERENCE.md +3 -0
- package/docs/en/02_START_RESEARCH_GUIDE.md +112 -0
- package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +62 -179
- package/docs/en/09_DOCTOR.md +41 -5
- package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +137 -0
- package/docs/en/11_LICENSE_AND_RISK.md +256 -0
- package/docs/en/12_GUIDED_WORKFLOW_TOUR.md +427 -0
- package/docs/en/13_CORE_ARCHITECTURE_GUIDE.md +297 -0
- package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
- package/docs/en/99_ACKNOWLEDGEMENTS.md +4 -1
- package/docs/en/README.md +79 -0
- package/docs/images/lingzhu/rokid-agent-platform-create.png +0 -0
- package/docs/images/weixin/weixin-plugin-entry.png +0 -0
- package/docs/images/weixin/weixin-plugin-entry.svg +33 -0
- package/docs/images/weixin/weixin-qr-confirm.svg +30 -0
- package/docs/images/weixin/weixin-quest-media-flow.svg +44 -0
- package/docs/images/weixin/weixin-settings-bind.svg +57 -0
- package/docs/zh/00_QUICK_START.md +315 -74
- package/docs/zh/01_SETTINGS_REFERENCE.md +3 -0
- package/docs/zh/02_START_RESEARCH_GUIDE.md +112 -0
- package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +62 -193
- package/docs/zh/09_DOCTOR.md +41 -5
- package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +144 -0
- package/docs/zh/11_LICENSE_AND_RISK.md +256 -0
- package/docs/zh/12_GUIDED_WORKFLOW_TOUR.md +423 -0
- package/docs/zh/13_CORE_ARCHITECTURE_GUIDE.md +296 -0
- package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
- package/docs/zh/99_ACKNOWLEDGEMENTS.md +4 -1
- package/docs/zh/README.md +126 -0
- package/install.sh +0 -34
- package/package.json +2 -2
- package/pyproject.toml +1 -1
- package/src/deepscientist/__init__.py +1 -1
- package/src/deepscientist/annotations.py +343 -0
- package/src/deepscientist/artifact/arxiv.py +484 -37
- package/src/deepscientist/artifact/service.py +574 -108
- package/src/deepscientist/arxiv_library.py +275 -0
- package/src/deepscientist/bash_exec/service.py +9 -0
- package/src/deepscientist/bridges/builtins.py +2 -0
- package/src/deepscientist/bridges/connectors.py +447 -0
- package/src/deepscientist/channels/__init__.py +2 -0
- package/src/deepscientist/channels/builtins.py +3 -1
- package/src/deepscientist/channels/qq.py +1 -1
- package/src/deepscientist/channels/qq_gateway.py +1 -1
- package/src/deepscientist/channels/relay.py +7 -1
- package/src/deepscientist/channels/weixin.py +59 -0
- package/src/deepscientist/channels/weixin_ilink.py +317 -0
- package/src/deepscientist/config/models.py +22 -2
- package/src/deepscientist/config/service.py +431 -60
- package/src/deepscientist/connector/__init__.py +4 -0
- package/src/deepscientist/connector/connector_profiles.py +481 -0
- package/src/deepscientist/connector/lingzhu_support.py +668 -0
- package/src/deepscientist/connector/qq_profiles.py +206 -0
- package/src/deepscientist/connector/weixin_support.py +663 -0
- package/src/deepscientist/connector_profiles.py +1 -374
- package/src/deepscientist/connector_runtime.py +2 -0
- package/src/deepscientist/daemon/api/handlers.py +165 -5
- package/src/deepscientist/daemon/api/router.py +13 -1
- package/src/deepscientist/daemon/app.py +1130 -61
- package/src/deepscientist/doctor.py +5 -2
- package/src/deepscientist/gitops/diff.py +120 -29
- package/src/deepscientist/lingzhu_support.py +1 -182
- package/src/deepscientist/mcp/server.py +11 -4
- package/src/deepscientist/prompts/builder.py +15 -0
- package/src/deepscientist/qq_profiles.py +1 -196
- package/src/deepscientist/quest/node_traces.py +23 -0
- package/src/deepscientist/quest/service.py +112 -43
- package/src/deepscientist/quest/stage_views.py +71 -5
- package/src/deepscientist/runners/codex.py +55 -3
- package/src/deepscientist/weixin_support.py +1 -0
- package/src/prompts/connectors/lingzhu.md +3 -1
- package/src/prompts/connectors/weixin.md +230 -0
- package/src/prompts/system.md +2 -0
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/{AiManusChatView-BKZ103sn.js → AiManusChatView-D0mTXG4-.js} +156 -48
- package/src/ui/dist/assets/{AnalysisPlugin-mTTzGAlK.js → AnalysisPlugin-Db0cTXxm.js} +1 -1
- package/src/ui/dist/assets/{CliPlugin-BH58n3GY.js → CliPlugin-DrV8je02.js} +164 -9
- package/src/ui/dist/assets/{CodeEditorPlugin-BKGRUH7e.js → CodeEditorPlugin-QXMSCH71.js} +8 -8
- package/src/ui/dist/assets/{CodeViewerPlugin-BMADwFWJ.js → CodeViewerPlugin-7hhtWj_E.js} +5 -5
- package/src/ui/dist/assets/{DocViewerPlugin-ZOnTIHLN.js → DocViewerPlugin-BWMSnRJe.js} +3 -3
- package/src/ui/dist/assets/{GitDiffViewerPlugin-CQ7h1Djm.js → GitDiffViewerPlugin-7J9h9Vy_.js} +20 -21
- package/src/ui/dist/assets/{ImageViewerPlugin-GVS5MsnC.js → ImageViewerPlugin-CHJl_0lr.js} +5 -5
- package/src/ui/dist/assets/{LabCopilotPanel-BZNv1JML.js → LabCopilotPanel-1qSow1es.js} +11 -11
- package/src/ui/dist/assets/{LabPlugin-TWcJsdQA.js → LabPlugin-eQpPPCEp.js} +2 -1
- package/src/ui/dist/assets/{LatexPlugin-DIjHiR2x.js → LatexPlugin-BwRfi89Z.js} +7 -7
- package/src/ui/dist/assets/{MarkdownViewerPlugin-D3ooGAH0.js → MarkdownViewerPlugin-836PVQWV.js} +4 -4
- package/src/ui/dist/assets/{MarketplacePlugin-DfVfE9hN.js → MarketplacePlugin-C2y_556i.js} +3 -3
- package/src/ui/dist/assets/{NotebookEditor-s8JhzuX1.js → NotebookEditor-BRzJbGsn.js} +12 -12
- package/src/ui/dist/assets/{NotebookEditor-DDl0_Mc0.js → NotebookEditor-DIX7Mlzu.js} +1 -1
- package/src/ui/dist/assets/{PdfLoader-C2Sf6SJM.js → PdfLoader-DzRaTAlq.js} +14 -7
- package/src/ui/dist/assets/{PdfMarkdownPlugin-CXFLoIsa.js → PdfMarkdownPlugin-DZUfIUnp.js} +73 -6
- package/src/ui/dist/assets/{PdfViewerPlugin-BYTmz2fK.js → PdfViewerPlugin-BwtICzue.js} +103 -34
- package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +3627 -0
- package/src/ui/dist/assets/{SearchPlugin-CjWBI1O9.js → SearchPlugin-DHeIAMsx.js} +1 -1
- package/src/ui/dist/assets/{TextViewerPlugin-DdOBU3-S.js → TextViewerPlugin-C3tCmFox.js} +5 -4
- package/src/ui/dist/assets/{VNCViewer-B8HGgLwQ.js → VNCViewer-CQsKVm3t.js} +10 -10
- package/src/ui/dist/assets/bot-BEA2vWuK.js +21 -0
- package/src/ui/dist/assets/branding/logo-rokid.png +0 -0
- package/src/ui/dist/assets/browser-BAcuE0Xj.js +2895 -0
- package/src/ui/dist/assets/{code-BWAY76JP.js → code-XfbSR8K2.js} +1 -1
- package/src/ui/dist/assets/{file-content-C1NwU5oQ.js → file-content-BjxNaIfy.js} +1 -1
- package/src/ui/dist/assets/{file-diff-panel-CywslwB9.js → file-diff-panel-D_lLVQk0.js} +1 -1
- package/src/ui/dist/assets/{file-socket-B4kzuOBQ.js → file-socket-D9x_5vlY.js} +1 -1
- package/src/ui/dist/assets/{image-D-NZM-6P.js → image-BhWT33W1.js} +1 -1
- package/src/ui/dist/assets/{index-DHZJ_0TI.js → index--c4iXtuy.js} +12 -12
- package/src/ui/dist/assets/{index-BdM1Gqfr.js → index-BDxipwrC.js} +2 -2
- package/src/ui/dist/assets/{index-7Chr1g9c.js → index-DZTZ8mWP.js} +14221 -9523
- package/src/ui/dist/assets/{index-DGIYDuTv.css → index-Dqj-Mjb4.css} +2 -13
- package/src/ui/dist/assets/index-PJbSbPTy.js +25 -0
- package/src/ui/dist/assets/{monaco-Cb2uKKe6.js → monaco-K8izTGgo.js} +1 -1
- package/src/ui/dist/assets/{pdf-effect-queue-DSw_D3RV.js → pdf-effect-queue-DfBors6y.js} +16 -1
- package/src/ui/dist/assets/pdf.worker.min-yatZIOMy.mjs +21 -0
- package/src/ui/dist/assets/{popover-Bg72DGgT.js → popover-yFK1J4fL.js} +1 -1
- package/src/ui/dist/assets/{project-sync-Ce_0BglY.js → project-sync-PENr2zcz.js} +1 -74
- package/src/ui/dist/assets/select-CAbJDfYv.js +1690 -0
- package/src/ui/dist/assets/{sigma-DPaACDrh.js → sigma-DEuYJqTl.js} +1 -1
- package/src/ui/dist/assets/{index-CDxNdQdz.js → square-check-big-omoSUmcd.js} +2 -13
- package/src/ui/dist/assets/{trash-BvTgE5__.js → trash--F119N47.js} +1 -1
- package/src/ui/dist/assets/{useCliAccess-CgPeMOwP.js → useCliAccess-D31UR23I.js} +1 -1
- package/src/ui/dist/assets/{useFileDiffOverlay-xPhz7P5B.js → useFileDiffOverlay-BH6KcMzq.js} +1 -1
- package/src/ui/dist/assets/{wrap-text-C3Un3YQr.js → wrap-text-CZ613PM5.js} +1 -1
- package/src/ui/dist/assets/{zoom-out-BgxLa0Ri.js → zoom-out-BgDLAv3z.js} +1 -1
- package/src/ui/dist/index.html +2 -2
- package/src/ui/dist/assets/AutoFigurePlugin-BGxN8Umr.css +0 -3056
- package/src/ui/dist/assets/AutoFigurePlugin-C_wWw4AP.js +0 -8149
- package/src/ui/dist/assets/PdfViewerPlugin-BJXtIwj_.css +0 -260
- package/src/ui/dist/assets/Stepper-B0Dd8CxK.js +0 -158
- package/src/ui/dist/assets/bibtex-CKaefIN2.js +0 -189
- package/src/ui/dist/assets/file-utils-H2fjA46S.js +0 -109
- package/src/ui/dist/assets/message-square-BzjLiXir.js +0 -16
- package/src/ui/dist/assets/pdfjs-DU1YE8WO.js +0 -3
- package/src/ui/dist/assets/tooltip-C_mA6R0w.js +0 -108
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# 11 协议与风险说明
|
|
2
|
+
|
|
3
|
+
这篇文档只做两件事:
|
|
4
|
+
|
|
5
|
+
1. 明确 DeepScientist 的开源协议与责任边界
|
|
6
|
+
2. 明确你在实际部署和使用时需要自己承担的主要风险
|
|
7
|
+
|
|
8
|
+
这不是法律意见。如果你要把 DeepScientist 用在公司环境、生产环境、真实业务系统或对外服务中,请让你自己的法务、安全或运维团队再审一次。
|
|
9
|
+
|
|
10
|
+
## 1. 开源协议与责任边界
|
|
11
|
+
|
|
12
|
+
DeepScientist 采用 Apache 2.0 开源协议发布。
|
|
13
|
+
|
|
14
|
+
你可以在仓库根目录查看完整协议文本:
|
|
15
|
+
|
|
16
|
+
- [LICENSE](../../LICENSE)
|
|
17
|
+
|
|
18
|
+
需要明确的是:
|
|
19
|
+
|
|
20
|
+
- DeepScientist 按 Apache 2.0 协议发布
|
|
21
|
+
- DeepScientist 按“现状”提供,不提供任何明示或暗示担保
|
|
22
|
+
- 因使用、部署、修改、二次开发、共享或暴露 DeepScientist 而产生的任何直接或间接后果,项目作者与维护者概不负责
|
|
23
|
+
- 你需要自行负责运行环境、权限设置、对外暴露、第三方账号绑定、结果审查、数据处理和合规问题
|
|
24
|
+
|
|
25
|
+
换句话说,DeepScientist 是一个高能力自动化系统,不是托管服务,也不是安全审计后的托底产品。你必须自己控制边界。
|
|
26
|
+
|
|
27
|
+
## 2. 你需要重点关注的风险
|
|
28
|
+
|
|
29
|
+
下面这些风险都是真实存在的,而且彼此会叠加。
|
|
30
|
+
|
|
31
|
+
### 2.1 主机与服务器破坏风险
|
|
32
|
+
|
|
33
|
+
DeepScientist 可以驱动模型执行命令、修改文件、安装依赖、运行脚本、读写项目目录。
|
|
34
|
+
|
|
35
|
+
这意味着它可能:
|
|
36
|
+
|
|
37
|
+
- 删除、覆盖或破坏文件
|
|
38
|
+
- 修改 Git 状态、分支或工作区内容
|
|
39
|
+
- 安装错误依赖、污染运行环境
|
|
40
|
+
- 误删日志、缓存、实验结果或中间产物
|
|
41
|
+
- 错误占用 GPU、CPU、磁盘或网络资源
|
|
42
|
+
- 干扰你机器上的其他服务,甚至导致服务器不可用
|
|
43
|
+
|
|
44
|
+
如果你把它直接运行在高权限宿主机、生产机、共享研发机或带关键数据的服务器上,风险会显著放大。
|
|
45
|
+
|
|
46
|
+
### 2.2 结果伪造、错误结论与学术风险
|
|
47
|
+
|
|
48
|
+
DeepScientist 是基于模型的自动化系统,不保证结论真实。
|
|
49
|
+
|
|
50
|
+
它可能:
|
|
51
|
+
|
|
52
|
+
- 伪造实验结果、日志、指标或表格
|
|
53
|
+
- 编造引用、论文结论或对比基线
|
|
54
|
+
- 错误理解任务要求,导致实验协议偏移
|
|
55
|
+
- 生成看起来合理、但实际上不可复现的分析
|
|
56
|
+
- 在没有充分证据时写出过强结论
|
|
57
|
+
|
|
58
|
+
因此,任何实验结果、论文文本、图表、引用、结论或审稿回复,都必须由人复核,不能直接当成可信事实发布。
|
|
59
|
+
|
|
60
|
+
### 2.3 数据损坏、丢失与不可逆修改风险
|
|
61
|
+
|
|
62
|
+
即使没有明显“攻击行为”,自动化执行也可能造成不可逆损失。
|
|
63
|
+
|
|
64
|
+
例如:
|
|
65
|
+
|
|
66
|
+
- quest 内文件被覆盖
|
|
67
|
+
- 未提交的本地改动被后续流程污染
|
|
68
|
+
- 自动生成文件混入正式结果目录
|
|
69
|
+
- 错误脚本批量改坏数据集或实验目录
|
|
70
|
+
- 外部 connector 收到不应发送的中间结果
|
|
71
|
+
|
|
72
|
+
如果你的数据、项目或论文草稿没有备份,这类损失可能很难恢复。
|
|
73
|
+
|
|
74
|
+
### 2.4 密钥、凭据与隐私泄露风险
|
|
75
|
+
|
|
76
|
+
DeepScientist 会接触很多敏感信息,例如:
|
|
77
|
+
|
|
78
|
+
- API key
|
|
79
|
+
- 环境变量
|
|
80
|
+
- 私有仓库地址
|
|
81
|
+
- 研究数据
|
|
82
|
+
- connector token
|
|
83
|
+
- 微信、QQ、Lingzhu 等外部账号绑定信息
|
|
84
|
+
|
|
85
|
+
如果你:
|
|
86
|
+
|
|
87
|
+
- 把站点公开暴露到外网
|
|
88
|
+
- 直接共享你的 DeepScientist 页面
|
|
89
|
+
- 让不受信任的人访问你的运行环境
|
|
90
|
+
- 把含密钥的配置、日志、截图或 quest 文件发给别人
|
|
91
|
+
|
|
92
|
+
就可能导致:
|
|
93
|
+
|
|
94
|
+
- 模型凭据泄露
|
|
95
|
+
- connector 身份被盗用
|
|
96
|
+
- 微信、QQ 等对外沟通能力被滥用
|
|
97
|
+
- 项目数据、实验材料或隐私内容被第三方获取
|
|
98
|
+
|
|
99
|
+
尤其是 connector 绑定后,风险不再只是“网页能不能打开”,而是“外部账号能不能被接管”。
|
|
100
|
+
|
|
101
|
+
### 2.5 外网暴露与未授权访问风险
|
|
102
|
+
|
|
103
|
+
如果你使用 `0.0.0.0`、公网 IP、反向代理、隧道服务或域名把 DeepScientist 暴露到外部,你实际上是在暴露一个具备自动化执行能力的系统。
|
|
104
|
+
|
|
105
|
+
这会带来:
|
|
106
|
+
|
|
107
|
+
- 未授权用户访问
|
|
108
|
+
- 会话被探测或重放
|
|
109
|
+
- connector 回调或轮询上下文被滥用
|
|
110
|
+
- 项目页面、配置页面、日志页面被外部看到
|
|
111
|
+
- 通过错误配置暴露内部路径、端口和服务结构
|
|
112
|
+
|
|
113
|
+
如果还同时绑定了微信、QQ 或其他 connector,风险会进一步扩大。
|
|
114
|
+
|
|
115
|
+
因此,除非你完全清楚自己在做什么,否则不要轻易公开分享站点地址,也不要把可操作界面直接暴露给不受控用户。
|
|
116
|
+
|
|
117
|
+
### 2.6 第三方平台与账号合规风险
|
|
118
|
+
|
|
119
|
+
DeepScientist 可以与 QQ、微信、Lingzhu 等外部平台结合使用。
|
|
120
|
+
|
|
121
|
+
你需要自己承担:
|
|
122
|
+
|
|
123
|
+
- 第三方平台服务条款风险
|
|
124
|
+
- 账号被封禁、限制或审计的风险
|
|
125
|
+
- 不当消息发送导致的投诉或滥用风险
|
|
126
|
+
- 数据同步、内容转发或文件发送带来的隐私与合规问题
|
|
127
|
+
|
|
128
|
+
项目维护者不会替你保证这些平台侧行为一定符合当地法律、组织政策或平台规则。
|
|
129
|
+
|
|
130
|
+
### 2.7 恶意输入、提示注入与供应链风险
|
|
131
|
+
|
|
132
|
+
DeepScientist 会读:
|
|
133
|
+
|
|
134
|
+
- 仓库内容
|
|
135
|
+
- 论文
|
|
136
|
+
- 网页
|
|
137
|
+
- issue / PR / README
|
|
138
|
+
- 上传的附件
|
|
139
|
+
- connector 发来的文本和文件
|
|
140
|
+
|
|
141
|
+
这些内容里都可能混入:
|
|
142
|
+
|
|
143
|
+
- 恶意命令
|
|
144
|
+
- 提示注入
|
|
145
|
+
- 误导性说明
|
|
146
|
+
- 伪造 benchmark
|
|
147
|
+
- 带后门的依赖安装指令
|
|
148
|
+
|
|
149
|
+
如果模型信了这些内容,可能进一步触发更危险的行为。
|
|
150
|
+
|
|
151
|
+
### 2.8 资源、费用与滥用风险
|
|
152
|
+
|
|
153
|
+
DeepScientist 可能持续运行、多轮调用模型、下载依赖、执行实验、生成文件。
|
|
154
|
+
|
|
155
|
+
你需要自己承担:
|
|
156
|
+
|
|
157
|
+
- API 费用增长
|
|
158
|
+
- GPU/CPU 被长时间占用
|
|
159
|
+
- 磁盘被日志、缓存、artifact、数据集填满
|
|
160
|
+
- 长时间运行导致的系统负载、过热或服务争用
|
|
161
|
+
|
|
162
|
+
## 3. 强烈建议的最低安全实践
|
|
163
|
+
|
|
164
|
+
如果你打算真正长期使用 DeepScientist,至少做到下面这些:
|
|
165
|
+
|
|
166
|
+
### 3.1 优先使用 Docker 或其他隔离环境
|
|
167
|
+
|
|
168
|
+
强烈建议优先在 Docker 容器、虚拟机或同等级隔离环境中运行 DeepScientist,而不是直接在宿主机高权限环境里裸跑。
|
|
169
|
+
|
|
170
|
+
目标很简单:
|
|
171
|
+
|
|
172
|
+
- 把文件系统影响范围缩小
|
|
173
|
+
- 把进程权限降下来
|
|
174
|
+
- 把网络暴露面缩小
|
|
175
|
+
- 把出问题时的恢复成本降下来
|
|
176
|
+
|
|
177
|
+
### 3.2 一律使用非 root 账号启动
|
|
178
|
+
|
|
179
|
+
强烈建议:
|
|
180
|
+
|
|
181
|
+
- 使用专门的非 root 用户运行
|
|
182
|
+
- 不要直接用 root 启动 DeepScientist
|
|
183
|
+
- 不要让它默认拿到全盘写权限
|
|
184
|
+
- 不要让它默认接触宿主机敏感目录
|
|
185
|
+
|
|
186
|
+
如果你必须在服务器上运行,更要坚持最小权限原则。
|
|
187
|
+
|
|
188
|
+
### 3.3 不要直接跑在生产机或关键资产机器上
|
|
189
|
+
|
|
190
|
+
避免把 DeepScientist 直接放到这些环境:
|
|
191
|
+
|
|
192
|
+
- 生产数据库所在机器
|
|
193
|
+
- 在线业务服务器
|
|
194
|
+
- 保存核心源代码和密钥的主控机
|
|
195
|
+
- 共享跳板机
|
|
196
|
+
- 带重要个人资料或商业数据的桌面环境
|
|
197
|
+
|
|
198
|
+
### 3.4 不要轻易分享站点地址或公网入口
|
|
199
|
+
|
|
200
|
+
除非你已经做好完整访问控制,否则不要:
|
|
201
|
+
|
|
202
|
+
- 把 DeepScientist 页面地址发到公开群
|
|
203
|
+
- 把 `0.0.0.0` 绑定后的端口直接映射到公网
|
|
204
|
+
- 把无鉴权的反向代理地址公开出去
|
|
205
|
+
- 把绑定了 connector 的页面开放给其他人直接操作
|
|
206
|
+
|
|
207
|
+
这不仅是页面浏览风险,也是账号与 connector 权限泄露风险。
|
|
208
|
+
|
|
209
|
+
### 3.5 最小化凭据与 connector 权限
|
|
210
|
+
|
|
211
|
+
建议:
|
|
212
|
+
|
|
213
|
+
- 用单独的测试账号绑定 QQ / 微信 / Lingzhu
|
|
214
|
+
- 不要把高价值主账号直接暴露给实验环境
|
|
215
|
+
- 不要把所有 token 都放进同一个共享 home
|
|
216
|
+
- 定期轮换密钥和 connector token
|
|
217
|
+
- 对外发送能力尽量只给最小必需范围
|
|
218
|
+
|
|
219
|
+
### 3.6 任何结果都要人工复核
|
|
220
|
+
|
|
221
|
+
不要把以下内容直接视为可信:
|
|
222
|
+
|
|
223
|
+
- 实验指标
|
|
224
|
+
- 图表
|
|
225
|
+
- 论文段落
|
|
226
|
+
- related work
|
|
227
|
+
- 引用列表
|
|
228
|
+
- 消融结论
|
|
229
|
+
- “已复现成功”这类状态
|
|
230
|
+
|
|
231
|
+
正确做法是:
|
|
232
|
+
|
|
233
|
+
- 看原始文件
|
|
234
|
+
- 看运行日志
|
|
235
|
+
- 看脚本和配置
|
|
236
|
+
- 重跑关键实验
|
|
237
|
+
- 抽查引用和数字
|
|
238
|
+
|
|
239
|
+
### 3.7 做好备份与回滚准备
|
|
240
|
+
|
|
241
|
+
至少建议:
|
|
242
|
+
|
|
243
|
+
- 把关键 quest 放进 Git
|
|
244
|
+
- 定期备份 `~/DeepScientist`
|
|
245
|
+
- 对重要数据目录做快照
|
|
246
|
+
- 把生产数据与实验数据分开
|
|
247
|
+
|
|
248
|
+
## 4. 最短结论
|
|
249
|
+
|
|
250
|
+
最短版本只有五句话:
|
|
251
|
+
|
|
252
|
+
1. DeepScientist 采用 Apache 2.0 协议发布。
|
|
253
|
+
2. 项目作者与维护者不对你使用 DeepScientist 造成的任何后果负责。
|
|
254
|
+
3. 它可能破坏服务器、删除文件、泄露凭据、对外发送错误内容,也可能伪造结果。
|
|
255
|
+
4. 强烈建议优先使用 Docker 或同等级隔离环境,并始终使用非 root 账号运行。
|
|
256
|
+
5. 不要轻易共享站点地址,也不要把绑定了微信、QQ 等 connector 的运行环境暴露给不受控用户。
|
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
# 12 引导式工作流教程:从首页到真实工作区
|
|
2
|
+
|
|
3
|
+
这篇文档的目标,是让你在安装完成之后,真正理解 DeepScientist 的使用路径。
|
|
4
|
+
|
|
5
|
+
适合你在这些情况下阅读:
|
|
6
|
+
|
|
7
|
+
- 你已经成功启动过一次 DeepScientist
|
|
8
|
+
- 你已经能打开首页
|
|
9
|
+
- 你想知道每一步该点什么、该怎么填、每个界面到底是干什么的
|
|
10
|
+
|
|
11
|
+
如果你还没有完成启动,请先看 [00 快速开始](./00_QUICK_START.md)。
|
|
12
|
+
|
|
13
|
+
如果你想进一步理解 `Start Research` 弹窗背后的精确字段合同,再看 [02 Start Research 参考](./02_START_RESEARCH_GUIDE.md)。
|
|
14
|
+
|
|
15
|
+
## 1. 先分清两种使用方式
|
|
16
|
+
|
|
17
|
+
DeepScientist 常见有两种使用方式:
|
|
18
|
+
|
|
19
|
+
1. 真实项目模式
|
|
20
|
+
2. 引导教程模式
|
|
21
|
+
|
|
22
|
+
真实项目模式会创建一个真正的本地 quest 仓库,并开始真实工作。
|
|
23
|
+
|
|
24
|
+
引导教程模式会进入一个演示用的项目工作区,界面布局与真实项目一致,但内容是为学习而准备的。
|
|
25
|
+
|
|
26
|
+
如果你的目标是立即做真实任务,就用真实项目模式。
|
|
27
|
+
|
|
28
|
+
如果你的目标是先理解界面,再决定是否投入真实时间、算力和 connector 资源,就先用引导教程模式。
|
|
29
|
+
|
|
30
|
+
## 2. 从首页开始
|
|
31
|
+
|
|
32
|
+
首页不是一个普通聊天框,而是一个研究工作区的启动面。
|
|
33
|
+
|
|
34
|
+
最核心的两个入口是:
|
|
35
|
+
|
|
36
|
+
- `Start Research`
|
|
37
|
+
- `Open Project`
|
|
38
|
+
|
|
39
|
+
当你要开始一个全新的 quest 时,点击 `Start Research`。
|
|
40
|
+
|
|
41
|
+
当 quest 已经存在、你只是要继续推进时,点击 `Open Project`。
|
|
42
|
+
|
|
43
|
+
第一次使用时,优先点击 `Start Research`。
|
|
44
|
+
|
|
45
|
+
## 3. 先理解这个弹窗到底在做什么
|
|
46
|
+
|
|
47
|
+
`Start Research` 弹窗有两个同样重要的任务:
|
|
48
|
+
|
|
49
|
+
- 左侧定义项目合同
|
|
50
|
+
- 右侧展示真正会写入工作区的 kickoff prompt
|
|
51
|
+
|
|
52
|
+
所以不要把它当成“随便填两句就行”的表单。
|
|
53
|
+
|
|
54
|
+
你在这里实际上是在决定:
|
|
55
|
+
|
|
56
|
+
- quest 到底要解决什么问题
|
|
57
|
+
- 已经有哪些可用参考和 baseline
|
|
58
|
+
- 第一轮自动研究要推进到什么程度
|
|
59
|
+
- 是否需要把进展发到网页之外
|
|
60
|
+
|
|
61
|
+
如果右侧生成出来的 kickoff prompt 看起来不对,就不要急着创建项目,先回到左侧修正。
|
|
62
|
+
|
|
63
|
+
## 4. 按步骤填写 `Start Research`
|
|
64
|
+
|
|
65
|
+
### 4.1 Project title
|
|
66
|
+
|
|
67
|
+
这里填写一个给人看的项目标题。
|
|
68
|
+
|
|
69
|
+
推荐写法:
|
|
70
|
+
|
|
71
|
+
- 任务名称
|
|
72
|
+
- benchmark 或仓库名
|
|
73
|
+
- 研究方向
|
|
74
|
+
|
|
75
|
+
示例:
|
|
76
|
+
|
|
77
|
+
`Mandela-Effect Reproduction and Truth-Preserving Collaboration`
|
|
78
|
+
|
|
79
|
+
标题的作用,是让你以后在项目列表里快速认出它。
|
|
80
|
+
|
|
81
|
+
### 4.2 Project ID
|
|
82
|
+
|
|
83
|
+
大多数时候直接留空。
|
|
84
|
+
|
|
85
|
+
只有在这些场景下才建议手动填写:
|
|
86
|
+
|
|
87
|
+
- 教程演示
|
|
88
|
+
- 固定复现实验编号
|
|
89
|
+
- 团队内部有命名规范
|
|
90
|
+
|
|
91
|
+
否则让 runtime 自动分配下一个顺序 quest id 即可。
|
|
92
|
+
|
|
93
|
+
### 4.3 Primary research request
|
|
94
|
+
|
|
95
|
+
这是整个弹窗里最重要的字段。
|
|
96
|
+
|
|
97
|
+
这里要写清楚:
|
|
98
|
+
|
|
99
|
+
- 研究目标
|
|
100
|
+
- 成功标准
|
|
101
|
+
- 证据要求
|
|
102
|
+
- 最关键的限制条件或评测规则
|
|
103
|
+
|
|
104
|
+
不好的写法:
|
|
105
|
+
|
|
106
|
+
- 太泛的 brainstorming
|
|
107
|
+
- 只写实现细节,不写研究问题
|
|
108
|
+
- 没说清楚什么算验证成功
|
|
109
|
+
|
|
110
|
+
好的写法通常包含四层:
|
|
111
|
+
|
|
112
|
+
1. 要复现或研究什么
|
|
113
|
+
2. 研究问题是什么
|
|
114
|
+
3. 哪些协议和边界不能乱改
|
|
115
|
+
4. 可以往什么方向改进
|
|
116
|
+
|
|
117
|
+
### 4.4 Baseline links 和 Reference papers
|
|
118
|
+
|
|
119
|
+
这两栏的目的,是在第一轮开始前尽量减少歧义。
|
|
120
|
+
|
|
121
|
+
把仓库放进 `Baseline links`,适合这些情况:
|
|
122
|
+
|
|
123
|
+
- baseline 必须来自某个特定官方仓库
|
|
124
|
+
- quest 需要先恢复指定实现
|
|
125
|
+
|
|
126
|
+
把论文或关键材料放进 `Reference papers / repos`,适合这些情况:
|
|
127
|
+
|
|
128
|
+
- 任务由某篇论文定义
|
|
129
|
+
- 评测协议来自某个明确来源
|
|
130
|
+
- 系统应该优先阅读某篇参考资料
|
|
131
|
+
|
|
132
|
+
如果你已经知道 baseline 和论文,不要把它们藏在主请求正文里,应该放进专门字段。
|
|
133
|
+
|
|
134
|
+
### 4.5 Reusable baseline
|
|
135
|
+
|
|
136
|
+
只有当你已经把某个可信 baseline 导入了 registry,才需要选择它。
|
|
137
|
+
|
|
138
|
+
一旦这里选中:
|
|
139
|
+
|
|
140
|
+
- 第一轮会优先 attach 已存在 baseline
|
|
141
|
+
- 而不是从原始 URL 再重新恢复
|
|
142
|
+
|
|
143
|
+
如果你是第一次做这个任务,留空是完全正常的。
|
|
144
|
+
|
|
145
|
+
### 4.6 Connector delivery
|
|
146
|
+
|
|
147
|
+
这一栏是可选的。
|
|
148
|
+
|
|
149
|
+
建议在这些情况下保持 `Local only`:
|
|
150
|
+
|
|
151
|
+
- 第一次使用
|
|
152
|
+
- 想让流程最简单
|
|
153
|
+
- 不需要网页之外的提醒
|
|
154
|
+
|
|
155
|
+
只有在以下情况下才选择一个 connector:
|
|
156
|
+
|
|
157
|
+
- 你希望在浏览器外也收到进展或里程碑
|
|
158
|
+
- 该 connector 已经配置正确
|
|
159
|
+
|
|
160
|
+
当前 DeepScientist 对每个 quest 只绑定一个外部 connector 目标。
|
|
161
|
+
|
|
162
|
+
### 4.7 Research paper、Research intensity、Decision mode、Launch mode
|
|
163
|
+
|
|
164
|
+
这些项会真实改变第一轮研究的形状。
|
|
165
|
+
|
|
166
|
+
如果你暂时拿不准,推荐默认这样选:
|
|
167
|
+
|
|
168
|
+
- `Research paper`: `On`
|
|
169
|
+
- `Research intensity`: `Balanced`
|
|
170
|
+
- `Decision mode`: `Autonomous`
|
|
171
|
+
- `Launch mode`: `Standard`
|
|
172
|
+
|
|
173
|
+
原因很简单:
|
|
174
|
+
|
|
175
|
+
- `Balanced` 足够做真实工作,又不会让第一轮过重
|
|
176
|
+
- `Autonomous` 可以减少无谓阻塞
|
|
177
|
+
- `Standard` 让 quest 按普通研究主线启动
|
|
178
|
+
- `Research paper = On` 可以把分析与写作保持在范围内
|
|
179
|
+
|
|
180
|
+
### 4.8 Runtime constraints
|
|
181
|
+
|
|
182
|
+
这一栏应该写“硬规则”,而不是写愿望。
|
|
183
|
+
|
|
184
|
+
适合写进去的内容:
|
|
185
|
+
|
|
186
|
+
- 必须使用哪个模型或推理端点
|
|
187
|
+
- 是否必须自动重试
|
|
188
|
+
- 是否必须保持与 baseline 对齐
|
|
189
|
+
- 是否必须如实记录失败
|
|
190
|
+
- 硬件或运行边界
|
|
191
|
+
|
|
192
|
+
不适合写进去的内容:
|
|
193
|
+
|
|
194
|
+
- 已经在主请求里说过的泛目标
|
|
195
|
+
- 冗长文献综述
|
|
196
|
+
- 本该写进 references 的信息
|
|
197
|
+
|
|
198
|
+
### 4.9 Goals
|
|
199
|
+
|
|
200
|
+
这一栏适合写更具体的阶段目标。
|
|
201
|
+
|
|
202
|
+
好的目标应当:
|
|
203
|
+
|
|
204
|
+
- 明确
|
|
205
|
+
- 可验证
|
|
206
|
+
- 方便后续复盘
|
|
207
|
+
|
|
208
|
+
推荐写法:
|
|
209
|
+
|
|
210
|
+
1. 恢复 baseline
|
|
211
|
+
2. 验证关键指标
|
|
212
|
+
3. 提出一个有依据的新方向
|
|
213
|
+
4. 产出足够支撑后续分析或写作的证据
|
|
214
|
+
|
|
215
|
+
### 4.10 一定要检查右侧 kickoff prompt
|
|
216
|
+
|
|
217
|
+
在点击 `Create project` 之前,一定读一遍右侧生成的 kickoff prompt。
|
|
218
|
+
|
|
219
|
+
重点检查:
|
|
220
|
+
|
|
221
|
+
- scope 是否错了
|
|
222
|
+
- baseline 信息是否丢了
|
|
223
|
+
- runtime constraints 是否遗漏
|
|
224
|
+
- connector 目标是否错误
|
|
225
|
+
- 语气和任务是否已经不一致
|
|
226
|
+
|
|
227
|
+
这是整个流程里成本最低、收益最高的纠错点。
|
|
228
|
+
|
|
229
|
+
## 5. 点击 `Create project`
|
|
230
|
+
|
|
231
|
+
在真实项目模式下,这一步会创建真实的本地 quest,并打开真实工作区。
|
|
232
|
+
|
|
233
|
+
在引导教程模式下,这一步会进入一个演示用 quest,用来让你熟悉工作区界面。
|
|
234
|
+
|
|
235
|
+
最重要的心态切换是:
|
|
236
|
+
|
|
237
|
+
- 在点击前,它只是一个任务想法
|
|
238
|
+
- 在点击后,它已经变成一个有文件、图谱、memory 和执行历史的持久工作区
|
|
239
|
+
|
|
240
|
+
## 6. 用正确顺序认识工作区
|
|
241
|
+
|
|
242
|
+
推荐顺序是:
|
|
243
|
+
|
|
244
|
+
1. 顶栏
|
|
245
|
+
2. Explorer
|
|
246
|
+
3. 打开一个真实文件
|
|
247
|
+
4. Canvas
|
|
248
|
+
5. Details
|
|
249
|
+
6. Memory
|
|
250
|
+
7. Copilot / Studio
|
|
251
|
+
|
|
252
|
+
### 6.1 顶栏
|
|
253
|
+
|
|
254
|
+
顶栏是全局控制条。
|
|
255
|
+
|
|
256
|
+
你应该用它来判断:
|
|
257
|
+
|
|
258
|
+
- 当前在哪个 quest 里
|
|
259
|
+
- 当前是不是在预期分支上
|
|
260
|
+
- 如何返回、重播教程或做全局导航
|
|
261
|
+
|
|
262
|
+
### 6.2 Explorer
|
|
263
|
+
|
|
264
|
+
Explorer 是 quest 的文件视角。
|
|
265
|
+
|
|
266
|
+
它回答的是一个非常实际的问题:
|
|
267
|
+
|
|
268
|
+
`这个项目现在到底已经有哪些持久文件了?`
|
|
269
|
+
|
|
270
|
+
当你想确认 quest 是否真的产出了可复用内容时,就应该先看这里。
|
|
271
|
+
|
|
272
|
+
不要把图谱当作唯一真相来源。文件树本身就是非常重要的证据面。
|
|
273
|
+
|
|
274
|
+
### 6.3 ArXiv 和 Files 两个 tab
|
|
275
|
+
|
|
276
|
+
这两个 tab 分工不同:
|
|
277
|
+
|
|
278
|
+
- `ArXiv` 是文献书架
|
|
279
|
+
- `Files` 是工作树
|
|
280
|
+
|
|
281
|
+
正常使用中,你会在这两个视图之间反复切换。
|
|
282
|
+
|
|
283
|
+
一个用来读文献,一个用来打开计划、实验文件、笔记与产物。
|
|
284
|
+
|
|
285
|
+
### 6.4 打开一个真实文件
|
|
286
|
+
|
|
287
|
+
当你在 Explorer 里看到一个有价值的文件时,直接点开它。
|
|
288
|
+
|
|
289
|
+
这一步意味着你从“看结构”进入“看真实内容”。
|
|
290
|
+
|
|
291
|
+
常见文件类型包括:
|
|
292
|
+
|
|
293
|
+
- Markdown 笔记
|
|
294
|
+
- 计划
|
|
295
|
+
- 实验总结
|
|
296
|
+
- 结果报告
|
|
297
|
+
- 论文草稿
|
|
298
|
+
|
|
299
|
+
很多用户会把 quest 里的 Markdown 文件当作一个本地优先、类似 Notion 的私有笔记本,用来记录:
|
|
300
|
+
|
|
301
|
+
- 笔记
|
|
302
|
+
- 计划
|
|
303
|
+
- handoff
|
|
304
|
+
- 发现
|
|
305
|
+
- 协作信息
|
|
306
|
+
|
|
307
|
+
### 6.5 Canvas
|
|
308
|
+
|
|
309
|
+
Canvas 会把研究地图直接展示出来。
|
|
310
|
+
|
|
311
|
+
一个健康的 quest,不应该像一段无限滚动聊天记录。
|
|
312
|
+
|
|
313
|
+
Canvas 应该帮助你看到:
|
|
314
|
+
|
|
315
|
+
- baseline 工作
|
|
316
|
+
- 新想法
|
|
317
|
+
- 失败分支
|
|
318
|
+
- 成功路径
|
|
319
|
+
- 后续分析和写作
|
|
320
|
+
|
|
321
|
+
它最重要的价值,是展示 quest 是怎样长出来的,而不只是停在了哪里。
|
|
322
|
+
|
|
323
|
+
### 6.6 点击 Canvas 上的节点
|
|
324
|
+
|
|
325
|
+
不要只看形状。
|
|
326
|
+
|
|
327
|
+
点开一个节点,去看它到底代表什么。
|
|
328
|
+
|
|
329
|
+
一个有价值的节点应该把你带到:
|
|
330
|
+
|
|
331
|
+
- 分支摘要
|
|
332
|
+
- 关联文件
|
|
333
|
+
- stage 状态
|
|
334
|
+
- 持久证据
|
|
335
|
+
|
|
336
|
+
这样 Canvas 才不是装饰,而是真正可检查的研究地图。
|
|
337
|
+
|
|
338
|
+
### 6.7 Details
|
|
339
|
+
|
|
340
|
+
当你想最快回答下面这个问题时,就看 `Details`:
|
|
341
|
+
|
|
342
|
+
`这个 quest 现在到底是什么状态?`
|
|
343
|
+
|
|
344
|
+
特别适合这些场景:
|
|
345
|
+
|
|
346
|
+
- 你离开一段时间后回来
|
|
347
|
+
- quest 已经运行了一阵子
|
|
348
|
+
- 你想先看总结,再决定是否介入
|
|
349
|
+
|
|
350
|
+
### 6.8 Memory
|
|
351
|
+
|
|
352
|
+
Memory 是让 quest 能持续生长的关键。
|
|
353
|
+
|
|
354
|
+
你可以在这里理解:
|
|
355
|
+
|
|
356
|
+
- 哪些经验已经变成可复用知识
|
|
357
|
+
- 哪些弱路径以后不该再重复
|
|
358
|
+
- 哪些稳定事实已经从论文或实验中沉淀下来
|
|
359
|
+
|
|
360
|
+
没有 memory,每一轮都容易变成一次性消耗品。
|
|
361
|
+
|
|
362
|
+
### 6.9 Copilot / Studio
|
|
363
|
+
|
|
364
|
+
如果你希望持续贴着 quest 的执行过程,就把这个面板一直开着。
|
|
365
|
+
|
|
366
|
+
它适合做这些事情:
|
|
367
|
+
|
|
368
|
+
- 看执行过程
|
|
369
|
+
- 中途介入
|
|
370
|
+
- 请求状态总结
|
|
371
|
+
- 改路线
|
|
372
|
+
- 过一段时间再回来继续
|
|
373
|
+
|
|
374
|
+
这里是 quest 从“自动运行”变成“可协作工作坊”的地方。
|
|
375
|
+
|
|
376
|
+
## 7. 一个实用的一轮操作节奏
|
|
377
|
+
|
|
378
|
+
当 quest 已经开始运行后,最有用的节奏通常是:
|
|
379
|
+
|
|
380
|
+
1. 先让第一轮动起来
|
|
381
|
+
2. 不要只盯着聊天,去打开 workspace
|
|
382
|
+
3. 看 1 到 2 个关键文件
|
|
383
|
+
4. 用 Canvas 看分支结构
|
|
384
|
+
5. 用 Details 看当前状态
|
|
385
|
+
6. 再决定是否介入
|
|
386
|
+
|
|
387
|
+
这样可以避免两个常见错误:
|
|
388
|
+
|
|
389
|
+
- 介入太早
|
|
390
|
+
- 还没看证据就过度相信总结
|
|
391
|
+
|
|
392
|
+
## 8. 常见误区
|
|
393
|
+
|
|
394
|
+
### 8.1 把 `Start Research` 当成随便聊天
|
|
395
|
+
|
|
396
|
+
它不是聊天框,而是项目合同。
|
|
397
|
+
|
|
398
|
+
### 8.2 目标写得太空
|
|
399
|
+
|
|
400
|
+
如果目标里没有验证要求,第一轮通常会更弱。
|
|
401
|
+
|
|
402
|
+
### 8.3 重要参考都塞在一段正文里
|
|
403
|
+
|
|
404
|
+
baseline 和 references 应该写在专门字段里。
|
|
405
|
+
|
|
406
|
+
### 8.4 不看右侧 kickoff prompt
|
|
407
|
+
|
|
408
|
+
这是整个流程里最便宜的纠错位置。
|
|
409
|
+
|
|
410
|
+
### 8.5 把 Canvas 当成漂亮图片
|
|
411
|
+
|
|
412
|
+
真正有价值的用法,是点节点、看文件、查证据。
|
|
413
|
+
|
|
414
|
+
### 8.6 只盯着工作区实时输出,不看文件
|
|
415
|
+
|
|
416
|
+
文件树本身就是系统的主要真相面之一。
|
|
417
|
+
|
|
418
|
+
## 9. 下一步建议阅读
|
|
419
|
+
|
|
420
|
+
- [02 Start Research 参考](./02_START_RESEARCH_GUIDE.md)
|
|
421
|
+
- [06 Runtime 与 Canvas](./06_RUNTIME_AND_CANVAS.md)
|
|
422
|
+
- [07 Memory 与 MCP](./07_MEMORY_AND_MCP.md)
|
|
423
|
+
- [13 核心架构说明](./13_CORE_ARCHITECTURE_GUIDE.md)
|