@researai/deepscientist 1.5.9 → 1.5.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +112 -99
- package/assets/branding/connector-qq.png +0 -0
- package/assets/branding/connector-rokid.png +0 -0
- package/assets/branding/connector-weixin.png +0 -0
- package/assets/branding/projects.png +0 -0
- package/bin/ds.js +519 -63
- package/docs/assets/branding/projects.png +0 -0
- package/docs/en/00_QUICK_START.md +338 -68
- package/docs/en/01_SETTINGS_REFERENCE.md +14 -0
- package/docs/en/02_START_RESEARCH_GUIDE.md +180 -4
- package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +62 -179
- package/docs/en/09_DOCTOR.md +66 -5
- package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +137 -0
- package/docs/en/11_LICENSE_AND_RISK.md +256 -0
- package/docs/en/12_GUIDED_WORKFLOW_TOUR.md +446 -0
- package/docs/en/13_CORE_ARCHITECTURE_GUIDE.md +297 -0
- package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
- package/docs/en/15_CODEX_PROVIDER_SETUP.md +284 -0
- package/docs/en/99_ACKNOWLEDGEMENTS.md +4 -1
- package/docs/en/README.md +83 -0
- package/docs/images/lingzhu/rokid-agent-platform-create.png +0 -0
- package/docs/images/weixin/weixin-plugin-entry.png +0 -0
- package/docs/images/weixin/weixin-plugin-entry.svg +33 -0
- package/docs/images/weixin/weixin-qr-confirm.svg +30 -0
- package/docs/images/weixin/weixin-quest-media-flow.svg +44 -0
- package/docs/images/weixin/weixin-settings-bind.svg +57 -0
- package/docs/zh/00_QUICK_START.md +345 -72
- package/docs/zh/01_SETTINGS_REFERENCE.md +14 -0
- package/docs/zh/02_START_RESEARCH_GUIDE.md +181 -3
- package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +62 -193
- package/docs/zh/09_DOCTOR.md +68 -5
- package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +144 -0
- package/docs/zh/11_LICENSE_AND_RISK.md +256 -0
- package/docs/zh/12_GUIDED_WORKFLOW_TOUR.md +442 -0
- package/docs/zh/13_CORE_ARCHITECTURE_GUIDE.md +296 -0
- package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
- package/docs/zh/15_CODEX_PROVIDER_SETUP.md +285 -0
- package/docs/zh/99_ACKNOWLEDGEMENTS.md +4 -1
- package/docs/zh/README.md +129 -0
- package/install.sh +0 -34
- package/package.json +2 -2
- package/pyproject.toml +1 -1
- package/src/deepscientist/__init__.py +1 -1
- package/src/deepscientist/annotations.py +343 -0
- package/src/deepscientist/artifact/arxiv.py +484 -37
- package/src/deepscientist/artifact/service.py +574 -108
- package/src/deepscientist/arxiv_library.py +275 -0
- package/src/deepscientist/bash_exec/monitor.py +7 -5
- package/src/deepscientist/bash_exec/service.py +93 -21
- package/src/deepscientist/bridges/builtins.py +2 -0
- package/src/deepscientist/bridges/connectors.py +447 -0
- package/src/deepscientist/channels/__init__.py +2 -0
- package/src/deepscientist/channels/builtins.py +3 -1
- package/src/deepscientist/channels/local.py +3 -3
- package/src/deepscientist/channels/qq.py +8 -8
- package/src/deepscientist/channels/qq_gateway.py +1 -1
- package/src/deepscientist/channels/relay.py +14 -8
- package/src/deepscientist/channels/weixin.py +59 -0
- package/src/deepscientist/channels/weixin_ilink.py +388 -0
- package/src/deepscientist/config/models.py +23 -2
- package/src/deepscientist/config/service.py +539 -67
- package/src/deepscientist/connector/__init__.py +4 -0
- package/src/deepscientist/connector/connector_profiles.py +481 -0
- package/src/deepscientist/connector/lingzhu_support.py +668 -0
- package/src/deepscientist/connector/qq_profiles.py +206 -0
- package/src/deepscientist/connector/weixin_support.py +663 -0
- package/src/deepscientist/connector_profiles.py +1 -374
- package/src/deepscientist/connector_runtime.py +2 -0
- package/src/deepscientist/daemon/api/handlers.py +165 -5
- package/src/deepscientist/daemon/api/router.py +13 -1
- package/src/deepscientist/daemon/app.py +1444 -67
- package/src/deepscientist/doctor.py +4 -5
- package/src/deepscientist/gitops/diff.py +120 -29
- package/src/deepscientist/lingzhu_support.py +1 -182
- package/src/deepscientist/mcp/server.py +135 -7
- package/src/deepscientist/prompts/builder.py +128 -11
- package/src/deepscientist/qq_profiles.py +1 -196
- package/src/deepscientist/quest/node_traces.py +23 -0
- package/src/deepscientist/quest/service.py +359 -74
- package/src/deepscientist/quest/stage_views.py +71 -5
- package/src/deepscientist/runners/codex.py +170 -19
- package/src/deepscientist/runners/runtime_overrides.py +6 -0
- package/src/deepscientist/shared.py +33 -14
- package/src/deepscientist/weixin_support.py +1 -0
- package/src/prompts/connectors/lingzhu.md +3 -1
- package/src/prompts/connectors/qq.md +2 -1
- package/src/prompts/connectors/weixin.md +231 -0
- package/src/prompts/contracts/shared_interaction.md +4 -1
- package/src/prompts/system.md +61 -9
- package/src/skills/analysis-campaign/SKILL.md +46 -6
- package/src/skills/analysis-campaign/references/campaign-plan-template.md +21 -8
- package/src/skills/baseline/SKILL.md +1 -1
- package/src/skills/decision/SKILL.md +1 -1
- package/src/skills/experiment/SKILL.md +1 -1
- package/src/skills/finalize/SKILL.md +1 -1
- package/src/skills/idea/SKILL.md +1 -1
- package/src/skills/intake-audit/SKILL.md +1 -1
- package/src/skills/rebuttal/SKILL.md +74 -1
- package/src/skills/rebuttal/references/response-letter-template.md +55 -11
- package/src/skills/review/SKILL.md +118 -1
- package/src/skills/review/references/experiment-todo-template.md +23 -0
- package/src/skills/review/references/review-report-template.md +16 -0
- package/src/skills/review/references/revision-log-template.md +4 -0
- package/src/skills/scout/SKILL.md +1 -1
- package/src/skills/write/SKILL.md +168 -7
- package/src/skills/write/references/paper-experiment-matrix-template.md +131 -0
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/{AiManusChatView-BKZ103sn.js → AiManusChatView-CnJcXynW.js} +156 -48
- package/src/ui/dist/assets/{AnalysisPlugin-mTTzGAlK.js → AnalysisPlugin-DeyzPEhV.js} +1 -1
- package/src/ui/dist/assets/{CliPlugin-BH58n3GY.js → CliPlugin-CB1YODQn.js} +164 -9
- package/src/ui/dist/assets/{CodeEditorPlugin-BKGRUH7e.js → CodeEditorPlugin-B-xicq1e.js} +8 -8
- package/src/ui/dist/assets/{CodeViewerPlugin-BMADwFWJ.js → CodeViewerPlugin-DT54ysXa.js} +5 -5
- package/src/ui/dist/assets/{DocViewerPlugin-ZOnTIHLN.js → DocViewerPlugin-DQtKT-VD.js} +3 -3
- package/src/ui/dist/assets/{GitDiffViewerPlugin-CQ7h1Djm.js → GitDiffViewerPlugin-hqHbCfnv.js} +20 -21
- package/src/ui/dist/assets/{ImageViewerPlugin-GVS5MsnC.js → ImageViewerPlugin-OcVo33jV.js} +5 -5
- package/src/ui/dist/assets/{LabCopilotPanel-BZNv1JML.js → LabCopilotPanel-DdGwhEUV.js} +11 -11
- package/src/ui/dist/assets/{LabPlugin-TWcJsdQA.js → LabPlugin-Ciz1gDaX.js} +2 -1
- package/src/ui/dist/assets/{LatexPlugin-DIjHiR2x.js → LatexPlugin-BhmjNQRC.js} +37 -11
- package/src/ui/dist/assets/{MarkdownViewerPlugin-D3ooGAH0.js → MarkdownViewerPlugin-BzdVH9Bx.js} +4 -4
- package/src/ui/dist/assets/{MarketplacePlugin-DfVfE9hN.js → MarketplacePlugin-DmyHspXt.js} +3 -3
- package/src/ui/dist/assets/{NotebookEditor-DDl0_Mc0.js → NotebookEditor-BMXKrDRk.js} +1 -1
- package/src/ui/dist/assets/{NotebookEditor-s8JhzuX1.js → NotebookEditor-BTVYRGkm.js} +12 -12
- package/src/ui/dist/assets/{PdfLoader-C2Sf6SJM.js → PdfLoader-CvcjJHXv.js} +14 -7
- package/src/ui/dist/assets/{PdfMarkdownPlugin-CXFLoIsa.js → PdfMarkdownPlugin-DW2ej8Vk.js} +73 -6
- package/src/ui/dist/assets/{PdfViewerPlugin-BYTmz2fK.js → PdfViewerPlugin-CmlDxbhU.js} +103 -34
- package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +3627 -0
- package/src/ui/dist/assets/{SearchPlugin-CjWBI1O9.js → SearchPlugin-DAjQZPSv.js} +1 -1
- package/src/ui/dist/assets/{TextViewerPlugin-DdOBU3-S.js → TextViewerPlugin-C-nVAZb_.js} +5 -4
- package/src/ui/dist/assets/{VNCViewer-B8HGgLwQ.js → VNCViewer-D7-dIYon.js} +10 -10
- package/src/ui/dist/assets/bot-C_G4WtNI.js +21 -0
- package/src/ui/dist/assets/branding/logo-rokid.png +0 -0
- package/src/ui/dist/assets/browser-BAcuE0Xj.js +2895 -0
- package/src/ui/dist/assets/{code-BWAY76JP.js → code-Cd7WfiWq.js} +1 -1
- package/src/ui/dist/assets/{file-content-C1NwU5oQ.js → file-content-B57zsL9y.js} +1 -1
- package/src/ui/dist/assets/{file-diff-panel-CywslwB9.js → file-diff-panel-DVoheLFq.js} +1 -1
- package/src/ui/dist/assets/{file-socket-B4kzuOBQ.js → file-socket-B5kXFxZP.js} +1 -1
- package/src/ui/dist/assets/{image-D-NZM-6P.js → image-LLOjkMHF.js} +1 -1
- package/src/ui/dist/assets/{index-DGIYDuTv.css → index-BQG-1s2o.css} +40 -13
- package/src/ui/dist/assets/{index-DHZJ_0TI.js → index-C3r2iGrp.js} +12 -12
- package/src/ui/dist/assets/{index-7Chr1g9c.js → index-CLQauncb.js} +15050 -9561
- package/src/ui/dist/assets/index-Dxa2eYMY.js +25 -0
- package/src/ui/dist/assets/{index-BdM1Gqfr.js → index-hOUOWbW2.js} +2 -2
- package/src/ui/dist/assets/{monaco-Cb2uKKe6.js → monaco-BGGAEii3.js} +1 -1
- package/src/ui/dist/assets/{pdf-effect-queue-DSw_D3RV.js → pdf-effect-queue-DlEr1_y5.js} +16 -1
- package/src/ui/dist/assets/pdf.worker.min-yatZIOMy.mjs +21 -0
- package/src/ui/dist/assets/{popover-Bg72DGgT.js → popover-CWJbJuYY.js} +1 -1
- package/src/ui/dist/assets/{project-sync-Ce_0BglY.js → project-sync-CRJiucYO.js} +18 -77
- package/src/ui/dist/assets/select-CoHB7pvH.js +1690 -0
- package/src/ui/dist/assets/{sigma-DPaACDrh.js → sigma-D5aJWR8J.js} +1 -1
- package/src/ui/dist/assets/{index-CDxNdQdz.js → square-check-big-DUK_mnkS.js} +2 -13
- package/src/ui/dist/assets/{trash-BvTgE5__.js → trash-ChU3SEE3.js} +1 -1
- package/src/ui/dist/assets/{useCliAccess-CgPeMOwP.js → useCliAccess-BrJBV3tY.js} +1 -1
- package/src/ui/dist/assets/{useFileDiffOverlay-xPhz7P5B.js → useFileDiffOverlay-C2OQaVWc.js} +1 -1
- package/src/ui/dist/assets/{wrap-text-C3Un3YQr.js → wrap-text-C7Qqh-om.js} +1 -1
- package/src/ui/dist/assets/{zoom-out-BgxLa0Ri.js → zoom-out-rtX0FKya.js} +1 -1
- package/src/ui/dist/index.html +2 -2
- package/src/ui/dist/assets/AutoFigurePlugin-BGxN8Umr.css +0 -3056
- package/src/ui/dist/assets/AutoFigurePlugin-C_wWw4AP.js +0 -8149
- package/src/ui/dist/assets/PdfViewerPlugin-BJXtIwj_.css +0 -260
- package/src/ui/dist/assets/Stepper-B0Dd8CxK.js +0 -158
- package/src/ui/dist/assets/bibtex-CKaefIN2.js +0 -189
- package/src/ui/dist/assets/file-utils-H2fjA46S.js +0 -109
- package/src/ui/dist/assets/message-square-BzjLiXir.js +0 -16
- package/src/ui/dist/assets/pdfjs-DU1YE8WO.js +0 -3
- package/src/ui/dist/assets/tooltip-C_mA6R0w.js +0 -108
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# 10 微信连接器指南:把个人微信绑定到 DeepScientist
|
|
2
|
+
|
|
3
|
+
这篇文档只讲 DeepScientist 内置的微信连接器,不讲 OpenClaw 安装。
|
|
4
|
+
|
|
5
|
+
DeepScientist 已经内置了微信 iLink 运行时,因此你不需要再额外执行:
|
|
6
|
+
|
|
7
|
+
- `npx`
|
|
8
|
+
- 单独安装 OpenClaw
|
|
9
|
+
- 再起一个本地桥接程序
|
|
10
|
+
- 配置公网 webhook
|
|
11
|
+
|
|
12
|
+
真正需要的绑定动作只有这四步:
|
|
13
|
+
|
|
14
|
+
1. 打开 `Settings > Connectors > WeChat`
|
|
15
|
+
2. 点击 `绑定微信`
|
|
16
|
+
3. 用微信扫码
|
|
17
|
+
4. 在手机微信里确认登录
|
|
18
|
+
|
|
19
|
+
确认完成后,DeepScientist 会自动保存微信 connector,并开始长轮询。
|
|
20
|
+
|
|
21
|
+
## 1. 这个连接器现在能做什么
|
|
22
|
+
|
|
23
|
+
绑定成功后,DeepScientist 现在可以:
|
|
24
|
+
|
|
25
|
+
- 接收微信文本消息
|
|
26
|
+
- 接收微信图片、视频、文件附件
|
|
27
|
+
- 把入站附件复制到当前 quest 的 `userfiles/weixin/...`
|
|
28
|
+
- 把文本回复发回同一个微信上下文
|
|
29
|
+
- 在 agent 提供真实本地文件时,发送微信原生图片、视频、文件
|
|
30
|
+
|
|
31
|
+
入站媒体不会只留在临时缓存里,而是会被复制进 quest。本地落盘路径形态如下:
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
~/DeepScientist/quests/<quest_id>/userfiles/weixin/<message_batch>/
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
这意味着微信附件现在已经比较接近 QQ 的处理方式了:quest 能拿到真实、持久化的本地文件。
|
|
38
|
+
|
|
39
|
+

|
|
40
|
+
|
|
41
|
+
## 2. 绑定前先确认
|
|
42
|
+
|
|
43
|
+
开始前请先确认:
|
|
44
|
+
|
|
45
|
+
- DeepScientist 的 daemon 和网页已经正常启动
|
|
46
|
+
- 你可以打开 `Settings > Connectors > WeChat`
|
|
47
|
+
- 手机上已经登录了一个真实的个人微信账号,准备用它扫码
|
|
48
|
+
|
|
49
|
+
这张参考图只用于帮助你确认扫码时应使用已经登录目标微信账号的手机。真正的绑定动作仍然是在 DeepScientist 页面里弹出二维码后扫码完成,而不是去跑额外的 `npx` 工具。
|
|
50
|
+
|
|
51
|
+

|
|
52
|
+
|
|
53
|
+
## 3. 从 Settings 页面直接绑定
|
|
54
|
+
|
|
55
|
+
打开:
|
|
56
|
+
|
|
57
|
+
- [Settings > Connectors > WeChat](/settings/connectors#connector-weixin)
|
|
58
|
+
|
|
59
|
+
然后按顺序做:
|
|
60
|
+
|
|
61
|
+
1. 点击 `绑定微信`
|
|
62
|
+
2. 等待 DeepScientist 生成二维码
|
|
63
|
+
3. 用微信扫码
|
|
64
|
+
4. 在手机上确认登录
|
|
65
|
+
|
|
66
|
+
这里有几个关键点:
|
|
67
|
+
|
|
68
|
+
- 弹窗里只保留二维码这一张图,因为 DeepScientist 已经内置了完整的 iLink 登录流程
|
|
69
|
+
- 绑定过程中不需要手填 `bot_token`
|
|
70
|
+
- 二维码弹窗里不需要额外再点一次保存
|
|
71
|
+
- 平台一旦返回 `bot_token` 和账号信息,DeepScientist 会自动持久化
|
|
72
|
+
|
|
73
|
+
成功后,微信卡片里会显示:
|
|
74
|
+
|
|
75
|
+
- `机器人账号`
|
|
76
|
+
- `扫码账号`
|
|
77
|
+
|
|
78
|
+
这两项就是当前保存下来的微信绑定信息。
|
|
79
|
+
|
|
80
|
+

|
|
81
|
+
|
|
82
|
+
## 4. 绑定后怎么验证文本和多媒体
|
|
83
|
+
|
|
84
|
+
二维码登录成功后,建议按这个最短路径验证:
|
|
85
|
+
|
|
86
|
+
1. 在 `Start Research` 或项目界面把 quest 绑定到微信 connector
|
|
87
|
+
2. 从微信发一条文本、图片、视频或文件
|
|
88
|
+
3. 等待 DeepScientist 把它接入到 quest
|
|
89
|
+
4. 确认回复回到了同一条微信会话里
|
|
90
|
+
|
|
91
|
+
当前行为是:
|
|
92
|
+
|
|
93
|
+
- 入站文本会直接进入 quest,作为用户消息
|
|
94
|
+
- 入站图片、视频、文件会被下载并复制进 quest 本地 `userfiles/weixin/...`
|
|
95
|
+
- 纯媒体消息不会再被直接丢弃
|
|
96
|
+
- 出站文本会沿用运行时维护的 `context_token`
|
|
97
|
+
- 出站图片、视频、文件在 agent 提供真实本地文件路径时可以正常发送
|
|
98
|
+
|
|
99
|
+

|
|
100
|
+
|
|
101
|
+
## 5. agent 发送微信多媒体时应怎么做
|
|
102
|
+
|
|
103
|
+
对用户来说,规则其实很简单:
|
|
104
|
+
|
|
105
|
+
- 只回文本时,正常回复即可
|
|
106
|
+
- 要发微信原生图片、视频、文件时,agent 必须给出一个真实的 quest 本地文件
|
|
107
|
+
|
|
108
|
+
所以 agent 最好优先使用这些目录中的真实文件:
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
artifacts/...
|
|
112
|
+
experiments/...
|
|
113
|
+
paper/...
|
|
114
|
+
userfiles/...
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
而不是默认依赖一个任意的外链。
|
|
118
|
+
|
|
119
|
+
## 6. 常见问题
|
|
120
|
+
|
|
121
|
+
### 二维码一直在等待
|
|
122
|
+
|
|
123
|
+
优先检查:
|
|
124
|
+
|
|
125
|
+
- 是否用的是你真正想绑定的那个微信账号扫码
|
|
126
|
+
- 手机里是否已经完成“确认登录”
|
|
127
|
+
- 等待期间 DeepScientist 是否持续在线
|
|
128
|
+
|
|
129
|
+
如果二维码过期,DeepScientist 会自动刷新。
|
|
130
|
+
|
|
131
|
+
### 为什么我只看到文本,没有看到入站多媒体
|
|
132
|
+
|
|
133
|
+
请用真实图片、视频或文件重测一次。成功后,quest 目录里应该能看到:
|
|
134
|
+
|
|
135
|
+
```text
|
|
136
|
+
userfiles/weixin/<message_batch>/manifest.json
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
以及旁边被复制下来的实际媒体文件。
|
|
140
|
+
|
|
141
|
+
## 7. 参考
|
|
142
|
+
|
|
143
|
+
- 菜鸟教程个人微信接入说明:https://www.runoob.com/ai-agent/openclaw-weixin.html
|
|
144
|
+
- 上游微信协议文档:https://github.com/hao-ji-xing/openclaw-weixin/blob/main/weixin-bot-api.md
|
|
@@ -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 的运行环境暴露给不受控用户。
|