@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,137 @@
|
|
|
1
|
+
# 10 Weixin Connector Guide: Bind Personal WeChat To DeepScientist
|
|
2
|
+
|
|
3
|
+
This guide explains the built-in DeepScientist Weixin connector.
|
|
4
|
+
|
|
5
|
+
DeepScientist already includes the Weixin iLink runtime. You do not need to install OpenClaw, run `npx`, or configure a separate local bridge. The only required binding action is:
|
|
6
|
+
|
|
7
|
+
1. open `Settings > Connectors > WeChat`
|
|
8
|
+
2. click `Bind WeChat`
|
|
9
|
+
3. scan the QR code with WeChat
|
|
10
|
+
4. confirm the login inside WeChat
|
|
11
|
+
|
|
12
|
+
After confirmation, DeepScientist saves the Weixin connector automatically and starts long polling.
|
|
13
|
+
|
|
14
|
+
## 1. What this connector does
|
|
15
|
+
|
|
16
|
+
After binding succeeds, DeepScientist can:
|
|
17
|
+
|
|
18
|
+
- receive WeChat text messages
|
|
19
|
+
- receive WeChat image, video, and file attachments
|
|
20
|
+
- copy inbound attachments into the active quest under `userfiles/weixin/...`
|
|
21
|
+
- send text replies back to the same WeChat context
|
|
22
|
+
- send native WeChat images, videos, and files when the agent attaches a real local file
|
|
23
|
+
|
|
24
|
+
Inbound media is materialized into the quest, not kept only in an ephemeral connector cache. The current path shape is:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
~/DeepScientist/quests/<quest_id>/userfiles/weixin/<message_batch>/
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
That makes Weixin media behave much closer to the QQ path: the quest receives durable local files that the agent can read.
|
|
31
|
+
|
|
32
|
+

|
|
33
|
+
|
|
34
|
+
## 2. Before you bind
|
|
35
|
+
|
|
36
|
+
Check these items first:
|
|
37
|
+
|
|
38
|
+
- DeepScientist daemon and web UI are already running
|
|
39
|
+
- you can open `Settings > Connectors > WeChat`
|
|
40
|
+
- you have a real personal WeChat account on the phone that will scan the QR code
|
|
41
|
+
|
|
42
|
+
This reference screenshot is only there to remind you to use the phone that already holds the target WeChat account. The actual binding still happens from the DeepScientist QR modal, not from a separate `npx` tool.
|
|
43
|
+
|
|
44
|
+

|
|
45
|
+
|
|
46
|
+
## 3. Bind from the Settings page
|
|
47
|
+
|
|
48
|
+
Open:
|
|
49
|
+
|
|
50
|
+
- [Settings > Connectors > WeChat](/settings/connectors#connector-weixin)
|
|
51
|
+
|
|
52
|
+
Then:
|
|
53
|
+
|
|
54
|
+
1. click `Bind WeChat`
|
|
55
|
+
2. wait for DeepScientist to generate the QR code
|
|
56
|
+
3. scan it with WeChat
|
|
57
|
+
4. confirm the login on the phone
|
|
58
|
+
|
|
59
|
+
Important points:
|
|
60
|
+
|
|
61
|
+
- the modal only shows the QR code because DeepScientist already knows the full iLink login flow
|
|
62
|
+
- there is no manual `bot_token` form during binding
|
|
63
|
+
- there is no extra Save button inside the QR modal
|
|
64
|
+
- when the platform returns `bot_token` and account ids, DeepScientist persists them automatically
|
|
65
|
+
|
|
66
|
+
After success, the WeChat card shows:
|
|
67
|
+
|
|
68
|
+
- `Bot account`
|
|
69
|
+
- `Owner account`
|
|
70
|
+
|
|
71
|
+
That is the saved connector binding.
|
|
72
|
+
|
|
73
|
+

|
|
74
|
+
|
|
75
|
+
## 4. Verify with one text or media message
|
|
76
|
+
|
|
77
|
+
After the QR login succeeds:
|
|
78
|
+
|
|
79
|
+
1. bind a quest to the Weixin connector from `Start Research` or the project surface
|
|
80
|
+
2. send one text, image, video, or file message from WeChat
|
|
81
|
+
3. let DeepScientist ingest it into the quest
|
|
82
|
+
4. confirm the reply arrives in the same WeChat thread
|
|
83
|
+
|
|
84
|
+
Current behavior:
|
|
85
|
+
|
|
86
|
+
- inbound text enters the quest as the user message
|
|
87
|
+
- inbound image, video, and file attachments are downloaded and copied into quest-local `userfiles/weixin/...`
|
|
88
|
+
- media-only inbound messages are no longer dropped
|
|
89
|
+
- outbound text replies use the runtime-managed `context_token`
|
|
90
|
+
- outbound image, video, and file delivery works when the agent sends a real local file path
|
|
91
|
+
|
|
92
|
+

|
|
93
|
+
|
|
94
|
+
## 5. What the agent should do with Weixin media
|
|
95
|
+
|
|
96
|
+
For ordinary user guidance, the important rule is simple:
|
|
97
|
+
|
|
98
|
+
- if the agent only needs to answer with text, normal message replies are enough
|
|
99
|
+
- if the agent needs to send a native WeChat image, video, or file, it must send a real local file from the quest
|
|
100
|
+
|
|
101
|
+
In practice, that means the agent should prefer quest-local files such as:
|
|
102
|
+
|
|
103
|
+
```text
|
|
104
|
+
artifacts/...
|
|
105
|
+
experiments/...
|
|
106
|
+
paper/...
|
|
107
|
+
userfiles/...
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
instead of depending on an arbitrary external URL.
|
|
111
|
+
|
|
112
|
+
## 6. Troubleshooting
|
|
113
|
+
|
|
114
|
+
### QR code keeps waiting
|
|
115
|
+
|
|
116
|
+
Check:
|
|
117
|
+
|
|
118
|
+
- the phone is scanning with the same WeChat account you want to bind
|
|
119
|
+
- the phone finished the confirmation step inside WeChat
|
|
120
|
+
- DeepScientist is still running while you wait
|
|
121
|
+
|
|
122
|
+
If the QR expires, DeepScientist refreshes it automatically.
|
|
123
|
+
|
|
124
|
+
### I only see text, but not inbound media
|
|
125
|
+
|
|
126
|
+
Re-test with a real image, video, or file. After a successful inbound media message, confirm that the quest now contains:
|
|
127
|
+
|
|
128
|
+
```text
|
|
129
|
+
userfiles/weixin/<message_batch>/manifest.json
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
and the copied media file next to it.
|
|
133
|
+
|
|
134
|
+
## 7. References
|
|
135
|
+
|
|
136
|
+
- Runoob personal WeChat guide: https://www.runoob.com/ai-agent/openclaw-weixin.html
|
|
137
|
+
- Upstream Weixin protocol reference: https://github.com/hao-ji-xing/openclaw-weixin/blob/main/weixin-bot-api.md
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# 11 License And Risk Notice
|
|
2
|
+
|
|
3
|
+
This document does two things:
|
|
4
|
+
|
|
5
|
+
1. clarifies the DeepScientist open-source license and responsibility boundary
|
|
6
|
+
2. lists the main risks that you, not the project maintainers, must control
|
|
7
|
+
|
|
8
|
+
This is not legal advice. If you plan to use DeepScientist in a company environment, production environment, external-facing service, or regulated workflow, have your own legal, security, and operations teams review it again.
|
|
9
|
+
|
|
10
|
+
## 1. License And Responsibility Boundary
|
|
11
|
+
|
|
12
|
+
DeepScientist is released under the Apache License 2.0.
|
|
13
|
+
|
|
14
|
+
The full license text is in the repository root:
|
|
15
|
+
|
|
16
|
+
- [LICENSE](../../LICENSE)
|
|
17
|
+
|
|
18
|
+
The practical meaning is:
|
|
19
|
+
|
|
20
|
+
- DeepScientist is distributed under Apache 2.0
|
|
21
|
+
- DeepScientist is provided on an "AS IS" basis, without warranties
|
|
22
|
+
- the project authors and maintainers are not responsible for any direct or indirect consequence caused by using, deploying, modifying, redistributing, or exposing DeepScientist
|
|
23
|
+
- you are responsible for runtime environment control, permission boundaries, public exposure, third-party account binding, output review, data handling, and compliance
|
|
24
|
+
|
|
25
|
+
In other words, DeepScientist is a high-capability automation system. It is not a managed service and it is not a security-audited guarantee layer. You must control the operating boundary yourself.
|
|
26
|
+
|
|
27
|
+
## 2. Main Risk Areas
|
|
28
|
+
|
|
29
|
+
These risks are real, and they compound each other.
|
|
30
|
+
|
|
31
|
+
### 2.1 Host And Server Damage
|
|
32
|
+
|
|
33
|
+
DeepScientist can drive models to execute commands, modify files, install dependencies, run scripts, and read or write project directories.
|
|
34
|
+
|
|
35
|
+
That means it can:
|
|
36
|
+
|
|
37
|
+
- delete, overwrite, or corrupt files
|
|
38
|
+
- modify Git state, branches, or worktree contents
|
|
39
|
+
- install the wrong dependency set or contaminate the runtime environment
|
|
40
|
+
- remove logs, caches, experiment results, or intermediate outputs
|
|
41
|
+
- consume GPU, CPU, disk, or network resources incorrectly
|
|
42
|
+
- interfere with other services on the same machine, or even make a server unstable
|
|
43
|
+
|
|
44
|
+
If you run it directly on a high-privilege host, production machine, shared development server, or a system holding important data, the risk increases substantially.
|
|
45
|
+
|
|
46
|
+
### 2.2 Fabricated Results, Wrong Conclusions, And Research Risk
|
|
47
|
+
|
|
48
|
+
DeepScientist is model-driven. It does not guarantee truth.
|
|
49
|
+
|
|
50
|
+
It may:
|
|
51
|
+
|
|
52
|
+
- fabricate metrics, logs, tables, or experiment results
|
|
53
|
+
- invent citations, prior work summaries, or baseline comparisons
|
|
54
|
+
- drift away from the intended task or evaluation protocol
|
|
55
|
+
- produce analyses that sound plausible but are not reproducible
|
|
56
|
+
- write conclusions that are too strong for the available evidence
|
|
57
|
+
|
|
58
|
+
Any experiment result, paper text, chart, citation, conclusion, or reviewer response must be reviewed by a human before you treat it as trustworthy.
|
|
59
|
+
|
|
60
|
+
### 2.3 Data Loss, Corruption, And Irreversible Changes
|
|
61
|
+
|
|
62
|
+
Even without obvious malicious behavior, automation can still produce irreversible damage.
|
|
63
|
+
|
|
64
|
+
Examples:
|
|
65
|
+
|
|
66
|
+
- quest files get overwritten
|
|
67
|
+
- uncommitted local edits get polluted
|
|
68
|
+
- auto-generated files mix into final result directories
|
|
69
|
+
- a bad script corrupts datasets or experiment folders at scale
|
|
70
|
+
- an external connector receives outputs that should not have been sent
|
|
71
|
+
|
|
72
|
+
If your data, projects, or paper drafts are not backed up, this kind of damage may be difficult to recover from.
|
|
73
|
+
|
|
74
|
+
### 2.4 Secret, Credential, And Privacy Leakage
|
|
75
|
+
|
|
76
|
+
DeepScientist may touch sensitive material such as:
|
|
77
|
+
|
|
78
|
+
- API keys
|
|
79
|
+
- environment variables
|
|
80
|
+
- private repository locations
|
|
81
|
+
- research data
|
|
82
|
+
- connector tokens
|
|
83
|
+
- WeChat, QQ, Lingzhu, or other external account bindings
|
|
84
|
+
|
|
85
|
+
If you:
|
|
86
|
+
|
|
87
|
+
- expose the site publicly
|
|
88
|
+
- share the DeepScientist page casually
|
|
89
|
+
- allow untrusted users into the runtime environment
|
|
90
|
+
- send config files, logs, screenshots, or quest files that contain sensitive material
|
|
91
|
+
|
|
92
|
+
you may leak:
|
|
93
|
+
|
|
94
|
+
- model credentials
|
|
95
|
+
- connector identities
|
|
96
|
+
- WeChat or QQ messaging authority
|
|
97
|
+
- project data, experiment material, or private content
|
|
98
|
+
|
|
99
|
+
Once connectors are bound, the risk is no longer only "can someone open the page?" but also "can someone misuse the linked external account?"
|
|
100
|
+
|
|
101
|
+
### 2.5 Public Exposure And Unauthorized Access
|
|
102
|
+
|
|
103
|
+
If you bind DeepScientist to `0.0.0.0`, a public IP, a reverse proxy, a tunnel, or a public domain, you are exposing an automation-capable system to the outside.
|
|
104
|
+
|
|
105
|
+
That can lead to:
|
|
106
|
+
|
|
107
|
+
- unauthorized access
|
|
108
|
+
- session probing or replay
|
|
109
|
+
- misuse of connector callback or polling contexts
|
|
110
|
+
- external visibility into project pages, settings pages, or logs
|
|
111
|
+
- accidental disclosure of internal paths, ports, or service topology
|
|
112
|
+
|
|
113
|
+
If WeChat, QQ, or other connectors are also bound, the impact is larger.
|
|
114
|
+
|
|
115
|
+
Unless you fully understand the consequences, do not casually share the site address and do not expose the operational UI to uncontrolled users.
|
|
116
|
+
|
|
117
|
+
### 2.6 Third-Party Platform And Account Compliance
|
|
118
|
+
|
|
119
|
+
DeepScientist can integrate with QQ, WeChat, Lingzhu, and other external platforms.
|
|
120
|
+
|
|
121
|
+
You are responsible for:
|
|
122
|
+
|
|
123
|
+
- third-party platform terms-of-service risk
|
|
124
|
+
- account suspension, rate-limit, restriction, or audit risk
|
|
125
|
+
- abuse complaints caused by automated outbound messages
|
|
126
|
+
- privacy and compliance issues caused by relaying data or files through those platforms
|
|
127
|
+
|
|
128
|
+
The project maintainers do not guarantee that your usage will satisfy local law, internal policy, or platform rules.
|
|
129
|
+
|
|
130
|
+
### 2.7 Malicious Inputs, Prompt Injection, And Supply-Chain Risk
|
|
131
|
+
|
|
132
|
+
DeepScientist can read:
|
|
133
|
+
|
|
134
|
+
- repositories
|
|
135
|
+
- papers
|
|
136
|
+
- web pages
|
|
137
|
+
- issues, PRs, or READMEs
|
|
138
|
+
- uploaded attachments
|
|
139
|
+
- connector messages and files
|
|
140
|
+
|
|
141
|
+
Any of those can contain:
|
|
142
|
+
|
|
143
|
+
- malicious commands
|
|
144
|
+
- prompt injection
|
|
145
|
+
- misleading instructions
|
|
146
|
+
- fake benchmarks
|
|
147
|
+
- dependency installation steps with backdoors
|
|
148
|
+
|
|
149
|
+
If the model follows those instructions, the resulting behavior can become much more dangerous.
|
|
150
|
+
|
|
151
|
+
### 2.8 Resource, Cost, And Abuse Risk
|
|
152
|
+
|
|
153
|
+
DeepScientist may run for a long time, call models repeatedly, download dependencies, execute experiments, and produce large numbers of files.
|
|
154
|
+
|
|
155
|
+
You are responsible for:
|
|
156
|
+
|
|
157
|
+
- API cost growth
|
|
158
|
+
- GPU or CPU occupation
|
|
159
|
+
- disk growth caused by logs, caches, artifacts, or datasets
|
|
160
|
+
- long-running load, overheating, or service contention
|
|
161
|
+
|
|
162
|
+
## 3. Minimum Safety Practices Strongly Recommended
|
|
163
|
+
|
|
164
|
+
If you plan to use DeepScientist seriously, at least do the following.
|
|
165
|
+
|
|
166
|
+
### 3.1 Prefer Docker Or Another Isolated Environment
|
|
167
|
+
|
|
168
|
+
Strongly prefer running DeepScientist inside Docker, a virtual machine, or an equivalent isolation boundary instead of running it directly on a privileged host.
|
|
169
|
+
|
|
170
|
+
The goal is simple:
|
|
171
|
+
|
|
172
|
+
- reduce filesystem blast radius
|
|
173
|
+
- reduce process privilege
|
|
174
|
+
- reduce network exposure
|
|
175
|
+
- reduce recovery cost when something goes wrong
|
|
176
|
+
|
|
177
|
+
### 3.2 Always Use A Non-Root Account
|
|
178
|
+
|
|
179
|
+
Strong recommendation:
|
|
180
|
+
|
|
181
|
+
- run DeepScientist under a dedicated non-root user
|
|
182
|
+
- do not start it as `root`
|
|
183
|
+
- do not give it default write access to the whole machine
|
|
184
|
+
- do not let it touch sensitive host directories by default
|
|
185
|
+
|
|
186
|
+
If you must run it on a server, least privilege matters even more.
|
|
187
|
+
|
|
188
|
+
### 3.3 Do Not Run It Directly On Production Or Critical Machines
|
|
189
|
+
|
|
190
|
+
Avoid running DeepScientist directly on:
|
|
191
|
+
|
|
192
|
+
- production database hosts
|
|
193
|
+
- live business servers
|
|
194
|
+
- control machines that store core source code and secrets
|
|
195
|
+
- shared bastion hosts
|
|
196
|
+
- desktops that hold important personal or commercial data
|
|
197
|
+
|
|
198
|
+
### 3.4 Do Not Casually Share The Site Address Or Public Entry
|
|
199
|
+
|
|
200
|
+
Unless you already have proper access control in place, do not:
|
|
201
|
+
|
|
202
|
+
- post the DeepScientist URL in public groups
|
|
203
|
+
- map a `0.0.0.0`-bound port directly to the public internet
|
|
204
|
+
- publish an unauthenticated reverse-proxy address
|
|
205
|
+
- give other people direct operational access to a runtime that already has connectors bound
|
|
206
|
+
|
|
207
|
+
This is not only a page-viewing risk. It is also a credential and connector-authority leakage risk.
|
|
208
|
+
|
|
209
|
+
### 3.5 Minimize Credential And Connector Privilege
|
|
210
|
+
|
|
211
|
+
Recommended:
|
|
212
|
+
|
|
213
|
+
- use separate test accounts for QQ, WeChat, or Lingzhu bindings
|
|
214
|
+
- avoid exposing your highest-value primary accounts to experimental runtimes
|
|
215
|
+
- do not keep every token in a single shared home directory
|
|
216
|
+
- rotate keys and connector tokens regularly
|
|
217
|
+
- keep outbound authority as narrow as possible
|
|
218
|
+
|
|
219
|
+
### 3.6 Review Every Important Result Manually
|
|
220
|
+
|
|
221
|
+
Do not directly trust:
|
|
222
|
+
|
|
223
|
+
- experiment metrics
|
|
224
|
+
- charts
|
|
225
|
+
- paper sections
|
|
226
|
+
- related work summaries
|
|
227
|
+
- citation lists
|
|
228
|
+
- ablation claims
|
|
229
|
+
- statuses like "reproduced successfully"
|
|
230
|
+
|
|
231
|
+
The correct approach is to:
|
|
232
|
+
|
|
233
|
+
- inspect raw files
|
|
234
|
+
- inspect runtime logs
|
|
235
|
+
- inspect scripts and configs
|
|
236
|
+
- rerun key experiments
|
|
237
|
+
- spot-check citations and numbers
|
|
238
|
+
|
|
239
|
+
### 3.7 Prepare Backup And Rollback
|
|
240
|
+
|
|
241
|
+
At minimum:
|
|
242
|
+
|
|
243
|
+
- put important quests under Git
|
|
244
|
+
- back up `~/DeepScientist`
|
|
245
|
+
- snapshot important data directories
|
|
246
|
+
- separate production data from experimental data
|
|
247
|
+
|
|
248
|
+
## 4. Short Version
|
|
249
|
+
|
|
250
|
+
The shortest safe summary is:
|
|
251
|
+
|
|
252
|
+
1. DeepScientist is released under Apache 2.0.
|
|
253
|
+
2. The project authors and maintainers are not responsible for any consequence caused by your use of DeepScientist.
|
|
254
|
+
3. It may damage a server, delete files, leak credentials, send wrong external messages, or fabricate results.
|
|
255
|
+
4. Strongly prefer Docker or an equivalent isolated environment, and always run under a non-root account.
|
|
256
|
+
5. Do not casually share the site address, and do not expose a runtime with bound WeChat, QQ, or other connectors to uncontrolled users.
|