@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,506 @@
|
|
|
1
|
+
# 14 Prompt, Skills, and MCP Guide
|
|
2
|
+
|
|
3
|
+
This guide explains how one DeepScientist turn is actually driven.
|
|
4
|
+
|
|
5
|
+
Use it when you want to understand:
|
|
6
|
+
|
|
7
|
+
- how the runtime builds the prompt for each turn
|
|
8
|
+
- what each stage skill is for
|
|
9
|
+
- how the built-in MCP tools are structured
|
|
10
|
+
- which file or tool you should change when behavior feels wrong
|
|
11
|
+
|
|
12
|
+
If you only want the user-facing product overview, read [13 Core Architecture Guide](./13_CORE_ARCHITECTURE_GUIDE.md) first.
|
|
13
|
+
|
|
14
|
+
If you only want the built-in memory contract, read [07 Memory and MCP](./07_MEMORY_AND_MCP.md) after this page.
|
|
15
|
+
|
|
16
|
+
## 1. One-sentence summary
|
|
17
|
+
|
|
18
|
+
DeepScientist does not run from one static mega-prompt.
|
|
19
|
+
|
|
20
|
+
For every turn, it rebuilds a prompt from:
|
|
21
|
+
|
|
22
|
+
- the core system prompt
|
|
23
|
+
- a shared interaction contract
|
|
24
|
+
- runtime state
|
|
25
|
+
- quest files
|
|
26
|
+
- startup contract
|
|
27
|
+
- selected memory
|
|
28
|
+
- connector-specific rules when needed
|
|
29
|
+
- the active skill structure
|
|
30
|
+
|
|
31
|
+
Then the agent works through three built-in MCP namespaces only:
|
|
32
|
+
|
|
33
|
+
- `memory`
|
|
34
|
+
- `artifact`
|
|
35
|
+
- `bash_exec`
|
|
36
|
+
|
|
37
|
+
## 2. What files are the main prompt truth sources
|
|
38
|
+
|
|
39
|
+
The most important files are:
|
|
40
|
+
|
|
41
|
+
- `src/prompts/system.md`
|
|
42
|
+
- `src/prompts/contracts/shared_interaction.md`
|
|
43
|
+
- `src/prompts/connectors/qq.md`
|
|
44
|
+
- `src/prompts/connectors/weixin.md`
|
|
45
|
+
- `src/prompts/connectors/lingzhu.md`
|
|
46
|
+
- `src/deepscientist/prompts/builder.py`
|
|
47
|
+
- `src/skills/*/SKILL.md`
|
|
48
|
+
- `src/deepscientist/mcp/server.py`
|
|
49
|
+
|
|
50
|
+
In practice:
|
|
51
|
+
|
|
52
|
+
- `system.md` defines the global operating stance
|
|
53
|
+
- `shared_interaction.md` defines user-visible continuity rules
|
|
54
|
+
- `connectors/*.md` inject connector-specific behavior only when that connector is active or bound
|
|
55
|
+
- `builder.py` decides prompt assembly order and runtime context sections
|
|
56
|
+
- `SKILL.md` files define stage-specific execution discipline
|
|
57
|
+
- `mcp/server.py` defines the built-in tool surface
|
|
58
|
+
|
|
59
|
+
## 3. How one turn prompt is assembled
|
|
60
|
+
|
|
61
|
+
The current runtime assembles the turn prompt in roughly this order:
|
|
62
|
+
|
|
63
|
+
1. `system.md`
|
|
64
|
+
2. `contracts/shared_interaction.md`
|
|
65
|
+
3. runtime context block
|
|
66
|
+
4. active communication surface block
|
|
67
|
+
5. optional connector contract block
|
|
68
|
+
6. turn driver and continuation guard
|
|
69
|
+
7. active user requirements
|
|
70
|
+
8. quest context
|
|
71
|
+
9. recent durable state
|
|
72
|
+
10. research delivery policy
|
|
73
|
+
11. paper and evidence snapshot
|
|
74
|
+
12. retry recovery packet when this is a retry turn
|
|
75
|
+
13. interaction style block
|
|
76
|
+
14. priority memory for this turn
|
|
77
|
+
15. recent conversation window
|
|
78
|
+
16. current turn attachments
|
|
79
|
+
17. current user message
|
|
80
|
+
|
|
81
|
+
That order matters.
|
|
82
|
+
|
|
83
|
+
The runtime is trying to answer three questions before the model acts:
|
|
84
|
+
|
|
85
|
+
1. what is the quest trying to do now
|
|
86
|
+
2. what durable state already exists
|
|
87
|
+
3. what behavior rules apply on this surface and in this stage
|
|
88
|
+
|
|
89
|
+
## 4. What the major prompt blocks actually do
|
|
90
|
+
|
|
91
|
+
### 4.1 `system.md`
|
|
92
|
+
|
|
93
|
+
This is the global DeepScientist operating contract.
|
|
94
|
+
|
|
95
|
+
It defines things like:
|
|
96
|
+
|
|
97
|
+
- long-horizon evidence-first behavior
|
|
98
|
+
- use `bash_exec` for shell-like execution
|
|
99
|
+
- use durable files, logs, and artifacts as truth
|
|
100
|
+
- do not end a quest early
|
|
101
|
+
- treat web, TUI, and connectors as one quest
|
|
102
|
+
- user-facing reporting style
|
|
103
|
+
|
|
104
|
+
If the agent starts sounding wrong everywhere, `system.md` is one of the first places to inspect.
|
|
105
|
+
|
|
106
|
+
### 4.2 `shared_interaction.md`
|
|
107
|
+
|
|
108
|
+
This file defines the common continuity spine around `artifact.interact(...)`.
|
|
109
|
+
|
|
110
|
+
It tells the agent:
|
|
111
|
+
|
|
112
|
+
- `artifact.interact(...)` is the main user-visible thread
|
|
113
|
+
- queued inbound user messages must be acknowledged and handled first
|
|
114
|
+
- blocking replies are for real decisions only
|
|
115
|
+
- progress updates should be concise and human-readable
|
|
116
|
+
|
|
117
|
+
If the model is bad at staying in the same long-running thread, this file matters a lot.
|
|
118
|
+
|
|
119
|
+
### 4.3 Active communication surface
|
|
120
|
+
|
|
121
|
+
The prompt builder adds a surface block each turn.
|
|
122
|
+
|
|
123
|
+
This tells the model:
|
|
124
|
+
|
|
125
|
+
- whether the current turn is local, QQ, Weixin, or another connector
|
|
126
|
+
- how many external connectors are bound
|
|
127
|
+
- which surface is active right now
|
|
128
|
+
- how much detail is appropriate on that surface
|
|
129
|
+
|
|
130
|
+
This is why connector behavior should not be hard-coded globally.
|
|
131
|
+
|
|
132
|
+
The same quest may be viewed from the web UI, TUI, or a connector, but the reply shape should adapt.
|
|
133
|
+
|
|
134
|
+
### 4.4 Connector contract
|
|
135
|
+
|
|
136
|
+
Connector prompt fragments are loaded only when needed.
|
|
137
|
+
|
|
138
|
+
Current connector prompt files are:
|
|
139
|
+
|
|
140
|
+
- `src/prompts/connectors/qq.md`
|
|
141
|
+
- `src/prompts/connectors/weixin.md`
|
|
142
|
+
- `src/prompts/connectors/lingzhu.md`
|
|
143
|
+
|
|
144
|
+
These files define surface-specific rules such as:
|
|
145
|
+
|
|
146
|
+
- reply length
|
|
147
|
+
- text-first versus media-enabled behavior
|
|
148
|
+
- how attachments should be sent
|
|
149
|
+
- what not to expose in chat
|
|
150
|
+
|
|
151
|
+
For example:
|
|
152
|
+
|
|
153
|
+
- QQ is treated as a milestone operator surface
|
|
154
|
+
- Weixin is treated as a concise phone-side operator surface with `context_token` continuity
|
|
155
|
+
- Lingzhu is treated as an even shorter, more constrained surface
|
|
156
|
+
|
|
157
|
+
If one connector needs behavior changes, change its connector prompt first before bloating the global system prompt.
|
|
158
|
+
|
|
159
|
+
### 4.5 Runtime context and durable quest state
|
|
160
|
+
|
|
161
|
+
The builder injects runtime facts such as:
|
|
162
|
+
|
|
163
|
+
- `quest_id`
|
|
164
|
+
- `quest_root`
|
|
165
|
+
- current workspace branch
|
|
166
|
+
- active idea id
|
|
167
|
+
- active analysis campaign id
|
|
168
|
+
- bound conversations
|
|
169
|
+
- startup contract
|
|
170
|
+
- baseline gate
|
|
171
|
+
- active interactions
|
|
172
|
+
- recent artifacts
|
|
173
|
+
- recent runs
|
|
174
|
+
|
|
175
|
+
This is what makes the prompt quest-aware instead of generic.
|
|
176
|
+
|
|
177
|
+
### 4.6 Quest context
|
|
178
|
+
|
|
179
|
+
The builder reads these quest files directly into the prompt:
|
|
180
|
+
|
|
181
|
+
- `brief.md`
|
|
182
|
+
- `plan.md`
|
|
183
|
+
- `status.md`
|
|
184
|
+
- `SUMMARY.md`
|
|
185
|
+
|
|
186
|
+
This is important:
|
|
187
|
+
|
|
188
|
+
- the live prompt is not only based on chat history
|
|
189
|
+
- durable quest docs are treated as first-class truth surfaces
|
|
190
|
+
|
|
191
|
+
### 4.7 Research delivery policy
|
|
192
|
+
|
|
193
|
+
This block converts startup choices into concrete execution rules.
|
|
194
|
+
|
|
195
|
+
It includes logic around:
|
|
196
|
+
|
|
197
|
+
- whether paper delivery is required
|
|
198
|
+
- launch mode
|
|
199
|
+
- custom profile
|
|
200
|
+
- baseline routing
|
|
201
|
+
- idea routing
|
|
202
|
+
- paper branch behavior
|
|
203
|
+
- review gate behavior
|
|
204
|
+
|
|
205
|
+
If `Start Research` behavior feels wrong, you usually need to inspect:
|
|
206
|
+
|
|
207
|
+
- the `startup_contract`
|
|
208
|
+
- `src/deepscientist/prompts/builder.py`
|
|
209
|
+
- the stage skill the quest is currently using
|
|
210
|
+
|
|
211
|
+
### 4.8 Interaction style
|
|
212
|
+
|
|
213
|
+
This block tells the model how to speak on this turn.
|
|
214
|
+
|
|
215
|
+
It includes:
|
|
216
|
+
|
|
217
|
+
- locale bias
|
|
218
|
+
- blocking versus threaded behavior
|
|
219
|
+
- long-run update cadence
|
|
220
|
+
- how to acknowledge mailbox messages
|
|
221
|
+
- how to compress progress into human-readable updates
|
|
222
|
+
|
|
223
|
+
This is why DeepScientist can keep the same runtime but behave differently across:
|
|
224
|
+
|
|
225
|
+
- long experiments
|
|
226
|
+
- connector replies
|
|
227
|
+
- writing stages
|
|
228
|
+
- waiting-for-decision stages
|
|
229
|
+
|
|
230
|
+
### 4.9 Priority memory
|
|
231
|
+
|
|
232
|
+
DeepScientist does not inject memory randomly.
|
|
233
|
+
|
|
234
|
+
`PromptBuilder` uses a stage-specific memory plan.
|
|
235
|
+
|
|
236
|
+
Examples:
|
|
237
|
+
|
|
238
|
+
- `scout` prefers `papers`, `knowledge`, `decisions`
|
|
239
|
+
- `baseline` prefers `papers`, `decisions`, `episodes`, `knowledge`
|
|
240
|
+
- `idea` prefers `papers`, `ideas`, `decisions`, `knowledge`
|
|
241
|
+
- `experiment` prefers `ideas`, `decisions`, `episodes`, `knowledge`
|
|
242
|
+
|
|
243
|
+
This means the prompt is stage-biased on purpose.
|
|
244
|
+
|
|
245
|
+
The agent should not see the same memory bundle on every turn.
|
|
246
|
+
|
|
247
|
+
## 5. What can be overridden locally
|
|
248
|
+
|
|
249
|
+
Prompt fragments can be overridden per quest under:
|
|
250
|
+
|
|
251
|
+
- `.codex/prompts/system.md`
|
|
252
|
+
- `.codex/prompts/contracts/shared_interaction.md`
|
|
253
|
+
- `.codex/prompts/connectors/<connector>.md`
|
|
254
|
+
|
|
255
|
+
This means:
|
|
256
|
+
|
|
257
|
+
- repo defaults live under `src/prompts/`
|
|
258
|
+
- quest-local prompt overrides live under `.codex/prompts/`
|
|
259
|
+
|
|
260
|
+
Use quest-local prompt overrides only when the quest truly needs a different local contract.
|
|
261
|
+
|
|
262
|
+
Do not fork the repo-level prompt unless the change should affect the product globally.
|
|
263
|
+
|
|
264
|
+
## 6. How skills are structured
|
|
265
|
+
|
|
266
|
+
DeepScientist currently has two skill layers:
|
|
267
|
+
|
|
268
|
+
1. standard stage skills
|
|
269
|
+
2. companion skills
|
|
270
|
+
|
|
271
|
+
### 6.1 Standard stage skills
|
|
272
|
+
|
|
273
|
+
These are the main research anchors:
|
|
274
|
+
|
|
275
|
+
| Skill | Use when | Main job | Usually hands off to |
|
|
276
|
+
|---|---|---|---|
|
|
277
|
+
| `scout` | the task frame is still unclear | task framing, baseline discovery, metric and dataset clarification | `baseline` or `idea` |
|
|
278
|
+
| `baseline` | a trustworthy baseline does not yet exist | attach, import, reproduce, repair, and verify the baseline | `idea` |
|
|
279
|
+
| `idea` | the baseline is clear but the next direction is not | generate, compare, and select durable research directions | `experiment` |
|
|
280
|
+
| `experiment` | one selected idea is ready to run | implement and evaluate the main run on one durable line | `analysis-campaign`, `write`, or `decision` |
|
|
281
|
+
| `analysis-campaign` | follow-up experiments are needed | run slices, ablations, robustness checks, or reviewer-facing supplements | `write`, `decision`, or `finalize` |
|
|
282
|
+
| `write` | there is enough evidence to draft | turn accepted evidence into outline, draft, and paper bundle work | `review` or `finalize` |
|
|
283
|
+
| `finalize` | the quest is near closure | consolidate claims, summaries, final state, and closure checks | quest completion approval |
|
|
284
|
+
| `decision` | a durable route choice is needed | make a clear go/stop/branch/reuse decision from evidence | another anchor |
|
|
285
|
+
|
|
286
|
+
### 6.2 Companion skills
|
|
287
|
+
|
|
288
|
+
These are auxiliary entry or quality-control skills:
|
|
289
|
+
|
|
290
|
+
| Skill | Use when | Main job |
|
|
291
|
+
|---|---|---|
|
|
292
|
+
| `figure-polish` | a figure is important beyond debug use | render-inspect-revise a milestone or paper figure |
|
|
293
|
+
| `intake-audit` | the quest already has meaningful prior state | trust-rank old assets and choose the correct next anchor |
|
|
294
|
+
| `review` | a substantial draft already exists | run a skeptical paper-like audit before claiming done |
|
|
295
|
+
| `rebuttal` | reviewer comments or revision requests exist | map reviewer pressure into experiments, text deltas, and response artifacts |
|
|
296
|
+
|
|
297
|
+
### 6.3 The important design point
|
|
298
|
+
|
|
299
|
+
The daemon is not supposed to contain a giant hard-coded research scheduler.
|
|
300
|
+
|
|
301
|
+
Instead:
|
|
302
|
+
|
|
303
|
+
- the prompt defines the operating contract
|
|
304
|
+
- the skill defines stage-specific discipline
|
|
305
|
+
- the runtime persists state and routes turns
|
|
306
|
+
|
|
307
|
+
That is the core DeepScientist design choice.
|
|
308
|
+
|
|
309
|
+
## 7. What each skill usually leaves behind
|
|
310
|
+
|
|
311
|
+
These are the durable outputs you should expect:
|
|
312
|
+
|
|
313
|
+
| Skill | Typical durable outputs |
|
|
314
|
+
|---|---|
|
|
315
|
+
| `scout` | updated `brief.md`, updated `plan.md`, literature notes, framing memory |
|
|
316
|
+
| `baseline` | `PLAN.md`, `CHECKLIST.md`, baseline verification notes, confirmed or waived baseline state |
|
|
317
|
+
| `idea` | durable idea draft, selected idea package, rationale for why this route won |
|
|
318
|
+
| `experiment` | implementation changes, run logs, `record_main_experiment(...)`, result evidence |
|
|
319
|
+
| `analysis-campaign` | campaign manifest, slice records, synthesis notes |
|
|
320
|
+
| `write` | selected outline, writing plan, draft, references, claim-evidence map, paper bundle |
|
|
321
|
+
| `finalize` | final summary, closure state, final quest health check |
|
|
322
|
+
| `decision` | durable route decision, next-anchor recommendation |
|
|
323
|
+
| `intake-audit` | trusted-versus-untrusted asset map, next anchor recommendation |
|
|
324
|
+
| `review` | review report, revision log, experiment TODO list |
|
|
325
|
+
| `rebuttal` | review matrix, response letter, text deltas, evidence-update plan |
|
|
326
|
+
| `figure-polish` | final polished figure assets and render-checked outputs |
|
|
327
|
+
|
|
328
|
+
## 8. Built-in MCP structure
|
|
329
|
+
|
|
330
|
+
DeepScientist keeps the built-in MCP surface intentionally small.
|
|
331
|
+
|
|
332
|
+
Only these namespaces are built in:
|
|
333
|
+
|
|
334
|
+
- `memory`
|
|
335
|
+
- `artifact`
|
|
336
|
+
- `bash_exec`
|
|
337
|
+
|
|
338
|
+
There is no separate public built-in `git` namespace.
|
|
339
|
+
|
|
340
|
+
Git-aware behavior is exposed through `artifact`.
|
|
341
|
+
|
|
342
|
+
### 8.1 `memory`
|
|
343
|
+
|
|
344
|
+
Purpose:
|
|
345
|
+
|
|
346
|
+
- reusable knowledge
|
|
347
|
+
- lessons that should survive beyond one turn
|
|
348
|
+
- quest-local or global memory cards
|
|
349
|
+
|
|
350
|
+
Current built-in tools:
|
|
351
|
+
|
|
352
|
+
- `memory.write(...)`
|
|
353
|
+
- `memory.read(...)`
|
|
354
|
+
- `memory.search(...)`
|
|
355
|
+
- `memory.list_recent(...)`
|
|
356
|
+
- `memory.promote_to_global(...)`
|
|
357
|
+
|
|
358
|
+
Use `memory` when the output should be remembered and reused later.
|
|
359
|
+
|
|
360
|
+
Do not use it for transient progress chatter.
|
|
361
|
+
|
|
362
|
+
### 8.2 `artifact`
|
|
363
|
+
|
|
364
|
+
Purpose:
|
|
365
|
+
|
|
366
|
+
- quest control plane
|
|
367
|
+
- durable research state
|
|
368
|
+
- Git-aware branch and worktree routing
|
|
369
|
+
- experiment and paper records
|
|
370
|
+
- user-visible interaction continuity
|
|
371
|
+
|
|
372
|
+
The artifact namespace is large, but it is still one family.
|
|
373
|
+
|
|
374
|
+
#### A. Generic durable records
|
|
375
|
+
|
|
376
|
+
- `artifact.record(...)`
|
|
377
|
+
- `artifact.refresh_summary(...)`
|
|
378
|
+
- `artifact.render_git_graph(...)`
|
|
379
|
+
|
|
380
|
+
#### B. Branch and route control
|
|
381
|
+
|
|
382
|
+
- `artifact.checkpoint(...)`
|
|
383
|
+
- `artifact.prepare_branch(...)`
|
|
384
|
+
- `artifact.activate_branch(...)`
|
|
385
|
+
- `artifact.submit_idea(...)`
|
|
386
|
+
- `artifact.list_research_branches(...)`
|
|
387
|
+
- `artifact.resolve_runtime_refs(...)`
|
|
388
|
+
|
|
389
|
+
#### C. Baseline lifecycle
|
|
390
|
+
|
|
391
|
+
- `artifact.publish_baseline(...)`
|
|
392
|
+
- `artifact.attach_baseline(...)`
|
|
393
|
+
- `artifact.confirm_baseline(...)`
|
|
394
|
+
- `artifact.waive_baseline(...)`
|
|
395
|
+
|
|
396
|
+
#### D. Experiment and analysis lifecycle
|
|
397
|
+
|
|
398
|
+
- `artifact.record_main_experiment(...)`
|
|
399
|
+
- `artifact.create_analysis_campaign(...)`
|
|
400
|
+
- `artifact.get_analysis_campaign(...)`
|
|
401
|
+
- `artifact.record_analysis_slice(...)`
|
|
402
|
+
|
|
403
|
+
#### E. Paper lifecycle
|
|
404
|
+
|
|
405
|
+
- `artifact.submit_paper_outline(...)`
|
|
406
|
+
- `artifact.list_paper_outlines(...)`
|
|
407
|
+
- `artifact.submit_paper_bundle(...)`
|
|
408
|
+
|
|
409
|
+
#### F. Reading and interaction continuity
|
|
410
|
+
|
|
411
|
+
- `artifact.arxiv(...)`
|
|
412
|
+
- `artifact.interact(...)`
|
|
413
|
+
- `artifact.complete_quest(...)`
|
|
414
|
+
|
|
415
|
+
The most important artifact tool for long-running collaboration is:
|
|
416
|
+
|
|
417
|
+
- `artifact.interact(...)`
|
|
418
|
+
|
|
419
|
+
Because it keeps together:
|
|
420
|
+
|
|
421
|
+
- user-visible updates
|
|
422
|
+
- mailbox polling
|
|
423
|
+
- connector delivery
|
|
424
|
+
- threaded continuity
|
|
425
|
+
- attachment delivery
|
|
426
|
+
|
|
427
|
+
### 8.3 `bash_exec`
|
|
428
|
+
|
|
429
|
+
Purpose:
|
|
430
|
+
|
|
431
|
+
- durable shell execution
|
|
432
|
+
- monitored long runs
|
|
433
|
+
- durable logs
|
|
434
|
+
- stoppable and readable sessions
|
|
435
|
+
|
|
436
|
+
Current built-in tool:
|
|
437
|
+
|
|
438
|
+
- `bash_exec.bash_exec(...)`
|
|
439
|
+
|
|
440
|
+
This one tool supports multiple modes:
|
|
441
|
+
|
|
442
|
+
- `detach`
|
|
443
|
+
- `await`
|
|
444
|
+
- `read`
|
|
445
|
+
- `kill`
|
|
446
|
+
- `list`
|
|
447
|
+
- `history`
|
|
448
|
+
|
|
449
|
+
The design rule is simple:
|
|
450
|
+
|
|
451
|
+
- anything shell-like should go through `bash_exec`
|
|
452
|
+
- do not hide important execution in transient shell snippets
|
|
453
|
+
|
|
454
|
+
## 9. How the three MCP namespaces divide responsibility
|
|
455
|
+
|
|
456
|
+
Use this mental model:
|
|
457
|
+
|
|
458
|
+
- `memory`: remember
|
|
459
|
+
- `artifact`: decide and record
|
|
460
|
+
- `bash_exec`: run and monitor
|
|
461
|
+
|
|
462
|
+
Examples:
|
|
463
|
+
|
|
464
|
+
- a reusable lesson from a failed run -> `memory.write(...)`
|
|
465
|
+
- confirming a baseline -> `artifact.confirm_baseline(...)`
|
|
466
|
+
- launching training -> `bash_exec.bash_exec(mode='detach', ...)`
|
|
467
|
+
- notifying the user about the next checkpoint -> `artifact.interact(...)`
|
|
468
|
+
|
|
469
|
+
If you mix these roles badly, the quest becomes harder to resume and audit.
|
|
470
|
+
|
|
471
|
+
## 10. How one real turn usually works
|
|
472
|
+
|
|
473
|
+
A typical turn looks like this:
|
|
474
|
+
|
|
475
|
+
1. a user or connector message arrives
|
|
476
|
+
2. the daemon restores quest snapshot and history
|
|
477
|
+
3. `PromptBuilder` assembles the current turn prompt
|
|
478
|
+
4. the active skill defines the stage discipline
|
|
479
|
+
5. priority memory is injected
|
|
480
|
+
6. the agent uses `memory`, `artifact`, and `bash_exec`
|
|
481
|
+
7. outputs are persisted into files, artifacts, memory cards, logs, and Git state
|
|
482
|
+
8. `artifact.interact(...)` keeps the user-facing thread continuous
|
|
483
|
+
|
|
484
|
+
That is why DeepScientist feels more like a persistent workshop than a stateless chat.
|
|
485
|
+
|
|
486
|
+
## 11. When to change prompt, skill, or MCP code
|
|
487
|
+
|
|
488
|
+
Use this quick rule:
|
|
489
|
+
|
|
490
|
+
- change `src/prompts/system.md` when the global operating stance is wrong
|
|
491
|
+
- change `src/prompts/contracts/shared_interaction.md` when continuity behavior is wrong
|
|
492
|
+
- change `src/prompts/connectors/*.md` when one connector behaves wrong
|
|
493
|
+
- change `src/skills/<skill>/SKILL.md` when one stage behaves wrong
|
|
494
|
+
- change `src/deepscientist/prompts/builder.py` when prompt assembly or runtime context selection is wrong
|
|
495
|
+
- change `src/deepscientist/mcp/server.py` when the built-in tool surface itself is wrong
|
|
496
|
+
|
|
497
|
+
Do not use a giant prompt patch to fix a real MCP contract bug.
|
|
498
|
+
|
|
499
|
+
Do not use a new MCP tool to fix a stage-discipline problem that belongs in a skill.
|
|
500
|
+
|
|
501
|
+
## 12. What to read next
|
|
502
|
+
|
|
503
|
+
- [07 Memory and MCP](./07_MEMORY_AND_MCP.md)
|
|
504
|
+
- [13 Core Architecture Guide](./13_CORE_ARCHITECTURE_GUIDE.md)
|
|
505
|
+
- [06 Runtime and Canvas](./06_RUNTIME_AND_CANVAS.md)
|
|
506
|
+
- [01 Settings Reference](./01_SETTINGS_REFERENCE.md)
|
|
@@ -13,8 +13,11 @@ We especially thank the following projects for their ideas, research direction,
|
|
|
13
13
|
- EvoScientist
|
|
14
14
|
- Orchestra-Research
|
|
15
15
|
- Orchestra-Research/AI-Research-SKILLs
|
|
16
|
+
- Overleaf / overleaf/overleaf
|
|
17
|
+
- Monaco Editor / microsoft/monaco-editor
|
|
18
|
+
- Novel / steven-tey/novel
|
|
16
19
|
|
|
17
|
-
These projects have been important references for thinking about automated research, open-ended exploration, evolutionary search, experiment organization,
|
|
20
|
+
These projects have been important references for thinking about automated research, open-ended exploration, evolutionary search, experiment organization, long-horizon research agents, collaborative LaTeX editing workflows, browser-based code editing experiences, and rich notebook-style writing interactions.
|
|
18
21
|
|
|
19
22
|
## Personal acknowledgements
|
|
20
23
|
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# DeepScientist Docs
|
|
2
|
+
|
|
3
|
+
DeepScientist is not just a long-running autonomous scientific discovery system. It is also a persistent research map that lives on your own machine.
|
|
4
|
+
|
|
5
|
+
2 minutes to install. 2 minutes to bind Weixin. 2 minutes to launch. Extremely fast and easy to use.
|
|
6
|
+
|
|
7
|
+
It is also a workshop-style collaboration environment: let it keep moving autonomously, or step in anytime to collaborate, edit code, run the terminal yourself, or keep notes and plans in a Notion-style workspace.
|
|
8
|
+
|
|
9
|
+
Use DeepScientist anywhere: on the server through TUI, in the browser through Web, on the phone through Weixin or QQ, and even on glasses through Rokid Glasses.
|
|
10
|
+
|
|
11
|
+
## News
|
|
12
|
+
|
|
13
|
+
- `2026/03/24`: DeepScientist officially releases `v1.5`.
|
|
14
|
+
- `2026/02/01`: the DeepScientist paper is available on [OpenReview](https://openreview.net/forum?id=cZFgsLq8Gs) for `ICLR 2026`.
|
|
15
|
+
|
|
16
|
+
## More From ResearAI
|
|
17
|
+
|
|
18
|
+
AI Scientist and AutoFigure projects worth exploring alongside DeepScientist:
|
|
19
|
+
|
|
20
|
+
| Project | What it does |
|
|
21
|
+
|---|---|
|
|
22
|
+
| [AutoFigure](https://github.com/ResearAI/AutoFigure) | generate paper-ready figures |
|
|
23
|
+
| [AutoFigure-Edit](https://github.com/ResearAI/AutoFigure-Edit) | editable vector paper figures |
|
|
24
|
+
| [DeepReviewer-v2](https://github.com/ResearAI/DeepReviewer-v2) | review papers and drafts |
|
|
25
|
+
| [Awesome-AI-Scientist](https://github.com/ResearAI/Awesome-AI-Scientist) | curated AI scientist landscape |
|
|
26
|
+
|
|
27
|
+
This page is the shortest path to the right document.
|
|
28
|
+
|
|
29
|
+
## If you are new
|
|
30
|
+
|
|
31
|
+
- [00 Quick Start](./00_QUICK_START.md)
|
|
32
|
+
Start here if you want to install DeepScientist, launch it locally, and create your first project.
|
|
33
|
+
- [12 Guided Workflow Tour](./12_GUIDED_WORKFLOW_TOUR.md)
|
|
34
|
+
Follow the real product flow from landing page to workspace, step by step.
|
|
35
|
+
- [02 Start Research Guide](./02_START_RESEARCH_GUIDE.md)
|
|
36
|
+
Read this next if you want to understand each field in the `Start Research` dialog and what it actually submits.
|
|
37
|
+
|
|
38
|
+
## If you want to launch a project well
|
|
39
|
+
|
|
40
|
+
- [02 Start Research Guide](./02_START_RESEARCH_GUIDE.md)
|
|
41
|
+
Explains the current frontend fields, derived contract fields, and practical examples.
|
|
42
|
+
- [01 Settings Reference](./01_SETTINGS_REFERENCE.md)
|
|
43
|
+
Use this when you need to configure runners, connectors, runtime defaults, or home paths.
|
|
44
|
+
- [11 License And Risk Notice](./11_LICENSE_AND_RISK.md)
|
|
45
|
+
Read this first if you care about the license boundary, server safety, fabricated outputs, connector leakage, and public exposure risk.
|
|
46
|
+
|
|
47
|
+
## If you want to collaborate through external surfaces
|
|
48
|
+
|
|
49
|
+
- [10 Weixin Connector Guide](./10_WEIXIN_CONNECTOR_GUIDE.md)
|
|
50
|
+
Bind personal WeChat through DeepScientist's built-in QR login and iLink runtime.
|
|
51
|
+
- [03 QQ Connector Guide](./03_QQ_CONNECTOR_GUIDE.md)
|
|
52
|
+
Use QQ as a practical collaboration surface for progress, commands, and milestone delivery.
|
|
53
|
+
- [04 Lingzhu Connector Guide](./04_LINGZHU_CONNECTOR_GUIDE.md)
|
|
54
|
+
Bind Lingzhu / Rokid Glasses to DeepScientist.
|
|
55
|
+
|
|
56
|
+
## If you want to understand how the system works
|
|
57
|
+
|
|
58
|
+
- [13 Core Architecture Guide](./13_CORE_ARCHITECTURE_GUIDE.md)
|
|
59
|
+
Read this first if you want a user-facing overview of launcher, daemon, quests, Canvas, memory, and connectors.
|
|
60
|
+
- [14 Prompt, Skills, and MCP Guide](./14_PROMPT_SKILLS_AND_MCP_GUIDE.md)
|
|
61
|
+
Read this when you want the real turn-time structure: prompt assembly order, stage skills, and built-in MCP tool families.
|
|
62
|
+
- [06 Runtime and Canvas](./06_RUNTIME_AND_CANVAS.md)
|
|
63
|
+
Explains how the daemon, workspace, canvas, and connector views fit together.
|
|
64
|
+
- [07 Memory and MCP](./07_MEMORY_AND_MCP.md)
|
|
65
|
+
Explains memory, artifacts, and built-in MCP behavior.
|
|
66
|
+
|
|
67
|
+
## If something is broken
|
|
68
|
+
|
|
69
|
+
- [09 Doctor](./09_DOCTOR.md)
|
|
70
|
+
Start here for diagnostics and common runtime problems.
|
|
71
|
+
- [01 Settings Reference](./01_SETTINGS_REFERENCE.md)
|
|
72
|
+
Check this if the problem is likely caused by config, credentials, or connector setup.
|
|
73
|
+
|
|
74
|
+
## If you are developing DeepScientist
|
|
75
|
+
|
|
76
|
+
- [90 Architecture](./90_ARCHITECTURE.md)
|
|
77
|
+
High-level system contracts and repository structure.
|
|
78
|
+
- [91 Development](./91_DEVELOPMENT.md)
|
|
79
|
+
Maintainer-facing workflow and implementation notes.
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="720" viewBox="0 0 1280 720" fill="none">
|
|
2
|
+
<rect width="1280" height="720" rx="32" fill="#FAFBFF"/>
|
|
3
|
+
<rect x="40" y="40" width="1200" height="640" rx="28" fill="#FFFFFF" stroke="#DAE2F3" stroke-width="2"/>
|
|
4
|
+
<circle cx="108" cy="108" r="34" fill="#2563EB"/>
|
|
5
|
+
<path d="M92 108C92 99.16 99.16 92 108 92C116.84 92 124 99.16 124 108C124 116.84 116.84 124 108 124C99.16 124 92 116.84 92 108Z" fill="#fff" fill-opacity=".2"/>
|
|
6
|
+
<path d="M101 116V100H115" stroke="#fff" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
|
|
7
|
+
<text x="164" y="98" fill="#0F172A" font-family="Arial, sans-serif" font-size="34" font-weight="700">WeChat Version And Plugin Entry Check</text>
|
|
8
|
+
<text x="164" y="138" fill="#475569" font-family="Arial, sans-serif" font-size="20">Reference precheck from the personal WeChat guide before you bind in DeepScientist</text>
|
|
9
|
+
|
|
10
|
+
<rect x="88" y="196" width="492" height="430" rx="28" fill="#F8FAFF" stroke="#D5DDF0" stroke-width="2"/>
|
|
11
|
+
<text x="120" y="252" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Compatibility checklist</text>
|
|
12
|
+
<rect x="120" y="292" width="428" height="88" rx="20" fill="#EEF2FF"/>
|
|
13
|
+
<text x="150" y="326" fill="#3730A3" font-family="Arial, sans-serif" font-size="20" font-weight="700">WeChat for iOS</text>
|
|
14
|
+
<text x="150" y="356" fill="#334155" font-family="Arial, sans-serif" font-size="18">Use 8.0.70 or newer if you need the plugin entry.</text>
|
|
15
|
+
<rect x="120" y="398" width="428" height="180" rx="20" fill="#fff" stroke="#E1E7F5"/>
|
|
16
|
+
<text x="150" y="434" fill="#0F172A" font-family="Arial, sans-serif" font-size="20" font-weight="700">Expected path in the reference flow</text>
|
|
17
|
+
<text x="150" y="474" fill="#334155" font-family="Arial, sans-serif" font-size="18">1. Me</text>
|
|
18
|
+
<text x="150" y="508" fill="#334155" font-family="Arial, sans-serif" font-size="18">2. Settings</text>
|
|
19
|
+
<text x="150" y="542" fill="#334155" font-family="Arial, sans-serif" font-size="18">3. Plugins</text>
|
|
20
|
+
<text x="150" y="576" fill="#475569" font-family="Arial, sans-serif" font-size="16">If this entry is missing, update WeChat first.</text>
|
|
21
|
+
|
|
22
|
+
<rect x="640" y="168" width="520" height="486" rx="34" fill="#ECFDF5" stroke="#C3EED3" stroke-width="2"/>
|
|
23
|
+
<rect x="760" y="204" width="280" height="420" rx="42" fill="#FFFFFF" stroke="#D7EAD9" stroke-width="2"/>
|
|
24
|
+
<rect x="786" y="246" width="228" height="42" rx="16" fill="#DCFCE7"/>
|
|
25
|
+
<text x="847" y="273" fill="#166534" font-family="Arial, sans-serif" font-size="20" font-weight="700">WeChat</text>
|
|
26
|
+
<rect x="786" y="318" width="228" height="54" rx="18" fill="#F8FAFC"/>
|
|
27
|
+
<text x="818" y="352" fill="#0F172A" font-family="Arial, sans-serif" font-size="18">Me</text>
|
|
28
|
+
<rect x="786" y="388" width="228" height="54" rx="18" fill="#F8FAFC"/>
|
|
29
|
+
<text x="818" y="422" fill="#0F172A" font-family="Arial, sans-serif" font-size="18">Settings</text>
|
|
30
|
+
<rect x="786" y="458" width="228" height="54" rx="18" fill="#DCFCE7" stroke="#22C55E"/>
|
|
31
|
+
<text x="818" y="492" fill="#166534" font-family="Arial, sans-serif" font-size="18" font-weight="700">Plugins</text>
|
|
32
|
+
<text x="702" y="616" fill="#475569" font-family="Arial, sans-serif" font-size="17">DeepScientist still binds from its own QR modal.</text>
|
|
33
|
+
</svg>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="720" viewBox="0 0 1280 720" fill="none">
|
|
2
|
+
<rect width="1280" height="720" rx="32" fill="#F7FBF8"/>
|
|
3
|
+
<rect x="40" y="40" width="1200" height="640" rx="28" fill="#FFFFFF" stroke="#D7E9DC" stroke-width="2"/>
|
|
4
|
+
<circle cx="108" cy="108" r="34" fill="#16A34A"/>
|
|
5
|
+
<path d="M97 108L105 116L119 100" stroke="#fff" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
|
|
6
|
+
<text x="164" y="98" fill="#0F172A" font-family="Arial, sans-serif" font-size="34" font-weight="700">Weixin QR Login Confirmation</text>
|
|
7
|
+
<text x="164" y="138" fill="#475569" font-family="Arial, sans-serif" font-size="20">One QR image in the modal, phone-side confirmation, automatic persistence</text>
|
|
8
|
+
|
|
9
|
+
<rect x="86" y="190" width="484" height="456" rx="28" fill="#FBFCFF" stroke="#DCE4F4" stroke-width="2"/>
|
|
10
|
+
<text x="118" y="244" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">DeepScientist modal</text>
|
|
11
|
+
<rect x="158" y="288" width="340" height="340" rx="26" fill="#fff" stroke="#CBD5E1" stroke-width="2"/>
|
|
12
|
+
<rect x="198" y="328" width="260" height="260" fill="#111827"/>
|
|
13
|
+
<rect x="220" y="350" width="60" height="60" fill="#fff"/>
|
|
14
|
+
<rect x="378" y="350" width="60" height="60" fill="#fff"/>
|
|
15
|
+
<rect x="220" y="508" width="60" height="60" fill="#fff"/>
|
|
16
|
+
<rect x="300" y="430" width="40" height="40" fill="#fff"/>
|
|
17
|
+
<rect x="364" y="494" width="28" height="28" fill="#fff"/>
|
|
18
|
+
<text x="136" y="660" fill="#475569" font-family="Arial, sans-serif" font-size="17">The popup only needs the QR image and a short hint.</text>
|
|
19
|
+
|
|
20
|
+
<rect x="708" y="164" width="472" height="500" rx="36" fill="#ECFDF5" stroke="#C6EDD2" stroke-width="2"/>
|
|
21
|
+
<rect x="846" y="202" width="196" height="414" rx="34" fill="#FFFFFF" stroke="#D3E7D6" stroke-width="2"/>
|
|
22
|
+
<text x="889" y="242" fill="#166534" font-family="Arial, sans-serif" font-size="22" font-weight="700">Phone</text>
|
|
23
|
+
<rect x="874" y="284" width="140" height="82" rx="18" fill="#DCFCE7"/>
|
|
24
|
+
<text x="908" y="332" fill="#166534" font-family="Arial, sans-serif" font-size="18" font-weight="700">Scan</text>
|
|
25
|
+
<rect x="874" y="392" width="140" height="82" rx="18" fill="#BBF7D0"/>
|
|
26
|
+
<text x="896" y="440" fill="#166534" font-family="Arial, sans-serif" font-size="18" font-weight="700">Confirm login</text>
|
|
27
|
+
<rect x="874" y="500" width="140" height="82" rx="18" fill="#86EFAC"/>
|
|
28
|
+
<text x="895" y="548" fill="#14532D" font-family="Arial, sans-serif" font-size="18" font-weight="700">Saved automatically</text>
|
|
29
|
+
<text x="742" y="638" fill="#475569" font-family="Arial, sans-serif" font-size="17">DeepScientist persists the returned token and account ids.</text>
|
|
30
|
+
</svg>
|