@researai/deepscientist 1.5.9 → 1.5.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/README.md +112 -99
  2. package/assets/branding/connector-qq.png +0 -0
  3. package/assets/branding/connector-rokid.png +0 -0
  4. package/assets/branding/connector-weixin.png +0 -0
  5. package/assets/branding/projects.png +0 -0
  6. package/bin/ds.js +519 -63
  7. package/docs/assets/branding/projects.png +0 -0
  8. package/docs/en/00_QUICK_START.md +338 -68
  9. package/docs/en/01_SETTINGS_REFERENCE.md +14 -0
  10. package/docs/en/02_START_RESEARCH_GUIDE.md +180 -4
  11. package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +62 -179
  12. package/docs/en/09_DOCTOR.md +66 -5
  13. package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +137 -0
  14. package/docs/en/11_LICENSE_AND_RISK.md +256 -0
  15. package/docs/en/12_GUIDED_WORKFLOW_TOUR.md +446 -0
  16. package/docs/en/13_CORE_ARCHITECTURE_GUIDE.md +297 -0
  17. package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
  18. package/docs/en/15_CODEX_PROVIDER_SETUP.md +284 -0
  19. package/docs/en/99_ACKNOWLEDGEMENTS.md +4 -1
  20. package/docs/en/README.md +83 -0
  21. package/docs/images/lingzhu/rokid-agent-platform-create.png +0 -0
  22. package/docs/images/weixin/weixin-plugin-entry.png +0 -0
  23. package/docs/images/weixin/weixin-plugin-entry.svg +33 -0
  24. package/docs/images/weixin/weixin-qr-confirm.svg +30 -0
  25. package/docs/images/weixin/weixin-quest-media-flow.svg +44 -0
  26. package/docs/images/weixin/weixin-settings-bind.svg +57 -0
  27. package/docs/zh/00_QUICK_START.md +345 -72
  28. package/docs/zh/01_SETTINGS_REFERENCE.md +14 -0
  29. package/docs/zh/02_START_RESEARCH_GUIDE.md +181 -3
  30. package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +62 -193
  31. package/docs/zh/09_DOCTOR.md +68 -5
  32. package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +144 -0
  33. package/docs/zh/11_LICENSE_AND_RISK.md +256 -0
  34. package/docs/zh/12_GUIDED_WORKFLOW_TOUR.md +442 -0
  35. package/docs/zh/13_CORE_ARCHITECTURE_GUIDE.md +296 -0
  36. package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +506 -0
  37. package/docs/zh/15_CODEX_PROVIDER_SETUP.md +285 -0
  38. package/docs/zh/99_ACKNOWLEDGEMENTS.md +4 -1
  39. package/docs/zh/README.md +129 -0
  40. package/install.sh +0 -34
  41. package/package.json +2 -2
  42. package/pyproject.toml +1 -1
  43. package/src/deepscientist/__init__.py +1 -1
  44. package/src/deepscientist/annotations.py +343 -0
  45. package/src/deepscientist/artifact/arxiv.py +484 -37
  46. package/src/deepscientist/artifact/service.py +574 -108
  47. package/src/deepscientist/arxiv_library.py +275 -0
  48. package/src/deepscientist/bash_exec/monitor.py +7 -5
  49. package/src/deepscientist/bash_exec/service.py +93 -21
  50. package/src/deepscientist/bridges/builtins.py +2 -0
  51. package/src/deepscientist/bridges/connectors.py +447 -0
  52. package/src/deepscientist/channels/__init__.py +2 -0
  53. package/src/deepscientist/channels/builtins.py +3 -1
  54. package/src/deepscientist/channels/local.py +3 -3
  55. package/src/deepscientist/channels/qq.py +8 -8
  56. package/src/deepscientist/channels/qq_gateway.py +1 -1
  57. package/src/deepscientist/channels/relay.py +14 -8
  58. package/src/deepscientist/channels/weixin.py +59 -0
  59. package/src/deepscientist/channels/weixin_ilink.py +388 -0
  60. package/src/deepscientist/config/models.py +23 -2
  61. package/src/deepscientist/config/service.py +539 -67
  62. package/src/deepscientist/connector/__init__.py +4 -0
  63. package/src/deepscientist/connector/connector_profiles.py +481 -0
  64. package/src/deepscientist/connector/lingzhu_support.py +668 -0
  65. package/src/deepscientist/connector/qq_profiles.py +206 -0
  66. package/src/deepscientist/connector/weixin_support.py +663 -0
  67. package/src/deepscientist/connector_profiles.py +1 -374
  68. package/src/deepscientist/connector_runtime.py +2 -0
  69. package/src/deepscientist/daemon/api/handlers.py +165 -5
  70. package/src/deepscientist/daemon/api/router.py +13 -1
  71. package/src/deepscientist/daemon/app.py +1444 -67
  72. package/src/deepscientist/doctor.py +4 -5
  73. package/src/deepscientist/gitops/diff.py +120 -29
  74. package/src/deepscientist/lingzhu_support.py +1 -182
  75. package/src/deepscientist/mcp/server.py +135 -7
  76. package/src/deepscientist/prompts/builder.py +128 -11
  77. package/src/deepscientist/qq_profiles.py +1 -196
  78. package/src/deepscientist/quest/node_traces.py +23 -0
  79. package/src/deepscientist/quest/service.py +359 -74
  80. package/src/deepscientist/quest/stage_views.py +71 -5
  81. package/src/deepscientist/runners/codex.py +170 -19
  82. package/src/deepscientist/runners/runtime_overrides.py +6 -0
  83. package/src/deepscientist/shared.py +33 -14
  84. package/src/deepscientist/weixin_support.py +1 -0
  85. package/src/prompts/connectors/lingzhu.md +3 -1
  86. package/src/prompts/connectors/qq.md +2 -1
  87. package/src/prompts/connectors/weixin.md +231 -0
  88. package/src/prompts/contracts/shared_interaction.md +4 -1
  89. package/src/prompts/system.md +61 -9
  90. package/src/skills/analysis-campaign/SKILL.md +46 -6
  91. package/src/skills/analysis-campaign/references/campaign-plan-template.md +21 -8
  92. package/src/skills/baseline/SKILL.md +1 -1
  93. package/src/skills/decision/SKILL.md +1 -1
  94. package/src/skills/experiment/SKILL.md +1 -1
  95. package/src/skills/finalize/SKILL.md +1 -1
  96. package/src/skills/idea/SKILL.md +1 -1
  97. package/src/skills/intake-audit/SKILL.md +1 -1
  98. package/src/skills/rebuttal/SKILL.md +74 -1
  99. package/src/skills/rebuttal/references/response-letter-template.md +55 -11
  100. package/src/skills/review/SKILL.md +118 -1
  101. package/src/skills/review/references/experiment-todo-template.md +23 -0
  102. package/src/skills/review/references/review-report-template.md +16 -0
  103. package/src/skills/review/references/revision-log-template.md +4 -0
  104. package/src/skills/scout/SKILL.md +1 -1
  105. package/src/skills/write/SKILL.md +168 -7
  106. package/src/skills/write/references/paper-experiment-matrix-template.md +131 -0
  107. package/src/tui/package.json +1 -1
  108. package/src/ui/dist/assets/{AiManusChatView-BKZ103sn.js → AiManusChatView-CnJcXynW.js} +156 -48
  109. package/src/ui/dist/assets/{AnalysisPlugin-mTTzGAlK.js → AnalysisPlugin-DeyzPEhV.js} +1 -1
  110. package/src/ui/dist/assets/{CliPlugin-BH58n3GY.js → CliPlugin-CB1YODQn.js} +164 -9
  111. package/src/ui/dist/assets/{CodeEditorPlugin-BKGRUH7e.js → CodeEditorPlugin-B-xicq1e.js} +8 -8
  112. package/src/ui/dist/assets/{CodeViewerPlugin-BMADwFWJ.js → CodeViewerPlugin-DT54ysXa.js} +5 -5
  113. package/src/ui/dist/assets/{DocViewerPlugin-ZOnTIHLN.js → DocViewerPlugin-DQtKT-VD.js} +3 -3
  114. package/src/ui/dist/assets/{GitDiffViewerPlugin-CQ7h1Djm.js → GitDiffViewerPlugin-hqHbCfnv.js} +20 -21
  115. package/src/ui/dist/assets/{ImageViewerPlugin-GVS5MsnC.js → ImageViewerPlugin-OcVo33jV.js} +5 -5
  116. package/src/ui/dist/assets/{LabCopilotPanel-BZNv1JML.js → LabCopilotPanel-DdGwhEUV.js} +11 -11
  117. package/src/ui/dist/assets/{LabPlugin-TWcJsdQA.js → LabPlugin-Ciz1gDaX.js} +2 -1
  118. package/src/ui/dist/assets/{LatexPlugin-DIjHiR2x.js → LatexPlugin-BhmjNQRC.js} +37 -11
  119. package/src/ui/dist/assets/{MarkdownViewerPlugin-D3ooGAH0.js → MarkdownViewerPlugin-BzdVH9Bx.js} +4 -4
  120. package/src/ui/dist/assets/{MarketplacePlugin-DfVfE9hN.js → MarketplacePlugin-DmyHspXt.js} +3 -3
  121. package/src/ui/dist/assets/{NotebookEditor-DDl0_Mc0.js → NotebookEditor-BMXKrDRk.js} +1 -1
  122. package/src/ui/dist/assets/{NotebookEditor-s8JhzuX1.js → NotebookEditor-BTVYRGkm.js} +12 -12
  123. package/src/ui/dist/assets/{PdfLoader-C2Sf6SJM.js → PdfLoader-CvcjJHXv.js} +14 -7
  124. package/src/ui/dist/assets/{PdfMarkdownPlugin-CXFLoIsa.js → PdfMarkdownPlugin-DW2ej8Vk.js} +73 -6
  125. package/src/ui/dist/assets/{PdfViewerPlugin-BYTmz2fK.js → PdfViewerPlugin-CmlDxbhU.js} +103 -34
  126. package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +3627 -0
  127. package/src/ui/dist/assets/{SearchPlugin-CjWBI1O9.js → SearchPlugin-DAjQZPSv.js} +1 -1
  128. package/src/ui/dist/assets/{TextViewerPlugin-DdOBU3-S.js → TextViewerPlugin-C-nVAZb_.js} +5 -4
  129. package/src/ui/dist/assets/{VNCViewer-B8HGgLwQ.js → VNCViewer-D7-dIYon.js} +10 -10
  130. package/src/ui/dist/assets/bot-C_G4WtNI.js +21 -0
  131. package/src/ui/dist/assets/branding/logo-rokid.png +0 -0
  132. package/src/ui/dist/assets/browser-BAcuE0Xj.js +2895 -0
  133. package/src/ui/dist/assets/{code-BWAY76JP.js → code-Cd7WfiWq.js} +1 -1
  134. package/src/ui/dist/assets/{file-content-C1NwU5oQ.js → file-content-B57zsL9y.js} +1 -1
  135. package/src/ui/dist/assets/{file-diff-panel-CywslwB9.js → file-diff-panel-DVoheLFq.js} +1 -1
  136. package/src/ui/dist/assets/{file-socket-B4kzuOBQ.js → file-socket-B5kXFxZP.js} +1 -1
  137. package/src/ui/dist/assets/{image-D-NZM-6P.js → image-LLOjkMHF.js} +1 -1
  138. package/src/ui/dist/assets/{index-DGIYDuTv.css → index-BQG-1s2o.css} +40 -13
  139. package/src/ui/dist/assets/{index-DHZJ_0TI.js → index-C3r2iGrp.js} +12 -12
  140. package/src/ui/dist/assets/{index-7Chr1g9c.js → index-CLQauncb.js} +15050 -9561
  141. package/src/ui/dist/assets/index-Dxa2eYMY.js +25 -0
  142. package/src/ui/dist/assets/{index-BdM1Gqfr.js → index-hOUOWbW2.js} +2 -2
  143. package/src/ui/dist/assets/{monaco-Cb2uKKe6.js → monaco-BGGAEii3.js} +1 -1
  144. package/src/ui/dist/assets/{pdf-effect-queue-DSw_D3RV.js → pdf-effect-queue-DlEr1_y5.js} +16 -1
  145. package/src/ui/dist/assets/pdf.worker.min-yatZIOMy.mjs +21 -0
  146. package/src/ui/dist/assets/{popover-Bg72DGgT.js → popover-CWJbJuYY.js} +1 -1
  147. package/src/ui/dist/assets/{project-sync-Ce_0BglY.js → project-sync-CRJiucYO.js} +18 -77
  148. package/src/ui/dist/assets/select-CoHB7pvH.js +1690 -0
  149. package/src/ui/dist/assets/{sigma-DPaACDrh.js → sigma-D5aJWR8J.js} +1 -1
  150. package/src/ui/dist/assets/{index-CDxNdQdz.js → square-check-big-DUK_mnkS.js} +2 -13
  151. package/src/ui/dist/assets/{trash-BvTgE5__.js → trash-ChU3SEE3.js} +1 -1
  152. package/src/ui/dist/assets/{useCliAccess-CgPeMOwP.js → useCliAccess-BrJBV3tY.js} +1 -1
  153. package/src/ui/dist/assets/{useFileDiffOverlay-xPhz7P5B.js → useFileDiffOverlay-C2OQaVWc.js} +1 -1
  154. package/src/ui/dist/assets/{wrap-text-C3Un3YQr.js → wrap-text-C7Qqh-om.js} +1 -1
  155. package/src/ui/dist/assets/{zoom-out-BgxLa0Ri.js → zoom-out-rtX0FKya.js} +1 -1
  156. package/src/ui/dist/index.html +2 -2
  157. package/src/ui/dist/assets/AutoFigurePlugin-BGxN8Umr.css +0 -3056
  158. package/src/ui/dist/assets/AutoFigurePlugin-C_wWw4AP.js +0 -8149
  159. package/src/ui/dist/assets/PdfViewerPlugin-BJXtIwj_.css +0 -260
  160. package/src/ui/dist/assets/Stepper-B0Dd8CxK.js +0 -158
  161. package/src/ui/dist/assets/bibtex-CKaefIN2.js +0 -189
  162. package/src/ui/dist/assets/file-utils-H2fjA46S.js +0 -109
  163. package/src/ui/dist/assets/message-square-BzjLiXir.js +0 -16
  164. package/src/ui/dist/assets/pdfjs-DU1YE8WO.js +0 -3
  165. package/src/ui/dist/assets/tooltip-C_mA6R0w.js +0 -108
@@ -0,0 +1,284 @@
1
+ # 15 Codex Provider Setup
2
+
3
+ DeepScientist does not implement separate provider adapters for MiniMax, GLM, Volcengine Ark, or Alibaba Bailian.
4
+
5
+ Instead, it reuses the same Codex CLI setup that already works in your terminal.
6
+
7
+ The recommended order is always:
8
+
9
+ 1. make Codex itself work first
10
+ 2. confirm `codex` or `codex --profile <name>` works in a terminal
11
+ 3. run `ds doctor`
12
+ 4. run `ds` or `ds --codex-profile <name>`
13
+
14
+ ## Three supported patterns
15
+
16
+ ### 1. Default OpenAI login path
17
+
18
+ Use this when your Codex CLI works through the standard OpenAI login flow.
19
+
20
+ ```bash
21
+ codex --login
22
+ ds doctor
23
+ ds
24
+ ```
25
+
26
+ ### 2. One-off provider profile
27
+
28
+ Use this when you already have a named Codex profile such as `minimax`, `glm`, `ark`, or `bailian`.
29
+
30
+ ```bash
31
+ codex --profile minimax
32
+ ds doctor --codex-profile minimax
33
+ ds --codex-profile minimax
34
+ ```
35
+
36
+ This is the simplest path. You do not need to edit `runners.yaml` just to try one provider-backed session.
37
+
38
+ ### 3. Persistent provider profile
39
+
40
+ Use this when you want DeepScientist to keep using the same profile by default.
41
+
42
+ ```yaml
43
+ codex:
44
+ enabled: true
45
+ binary: codex
46
+ config_dir: ~/.codex
47
+ profile: minimax
48
+ model: inherit
49
+ model_reasoning_effort: xhigh
50
+ approval_policy: on-request
51
+ sandbox_mode: workspace-write
52
+ ```
53
+
54
+ Important:
55
+
56
+ - keep `model: inherit` for provider-backed Codex profiles unless you are certain the provider accepts the explicit model id you plan to send
57
+ - DeepScientist will reuse the same `~/.codex/config.toml` and environment that your terminal Codex already uses
58
+
59
+ ## Provider matrix
60
+
61
+ | Provider | Official docs | Codex login needed | What DeepScientist should use |
62
+ |---|---|---|---|
63
+ | OpenAI | use the normal Codex setup | Yes | no profile; run `ds` |
64
+ | MiniMax | [MiniMax Codex CLI](https://platform.minimaxi.com/docs/coding-plan/codex-cli) | No | your Codex profile, for example `ds --codex-profile minimax` |
65
+ | GLM | [GLM Coding Plan: Other Tools](https://docs.bigmodel.cn/cn/coding-plan/tool/others) | No | a Codex profile that targets the GLM coding endpoint |
66
+ | Volcengine Ark | [Ark Coding Plan Overview](https://www.volcengine.com/docs/82379/1925114?lang=zh) | No | a Codex profile that targets the Ark coding endpoint |
67
+ | Alibaba Bailian | [Bailian Coding Plan: Other Tools](https://help.aliyun.com/zh/model-studio/other-tools-coding-plan) | No | a Codex profile that targets the Bailian coding endpoint |
68
+
69
+ ## OpenAI
70
+
71
+ ### What to prepare
72
+
73
+ - a normal Codex CLI install
74
+ - a successful `codex --login` or `codex` interactive first-run setup
75
+
76
+ ### DeepScientist commands
77
+
78
+ ```bash
79
+ ds doctor
80
+ ds
81
+ ```
82
+
83
+ ### Persistent runner config
84
+
85
+ ```yaml
86
+ codex:
87
+ enabled: true
88
+ binary: codex
89
+ config_dir: ~/.codex
90
+ profile: ""
91
+ model: gpt-5.4
92
+ ```
93
+
94
+ ## MiniMax
95
+
96
+ MiniMax is the clearest profile-based case. Its official Codex CLI guide configures a custom Codex provider and sets `requires_openai_auth = false`.
97
+
98
+ Official doc:
99
+
100
+ - <https://platform.minimaxi.com/docs/coding-plan/codex-cli>
101
+
102
+ ### What to prepare
103
+
104
+ - Codex CLI installed
105
+ - `MINIMAX_API_KEY` available in the shell that starts Codex and DeepScientist
106
+ - a working Codex profile in `~/.codex/config.toml`
107
+
108
+ ### Codex-side setup
109
+
110
+ MiniMax's official page provides a real Codex custom-provider example. The profile name is yours to choose. Use `minimax` below as an example; if you already created `m27`, keep using `m27`.
111
+
112
+ ```toml
113
+ [model_providers.minimax]
114
+ name = "MiniMax Chat Completions API"
115
+ base_url = "https://api.minimaxi.com/v1"
116
+ env_key = "MINIMAX_API_KEY"
117
+ wire_api = "chat"
118
+ requires_openai_auth = false
119
+ request_max_retries = 4
120
+ stream_max_retries = 10
121
+ stream_idle_timeout_ms = 300000
122
+
123
+ [profiles.minimax]
124
+ model = "codex-MiniMax-M2.5"
125
+ model_provider = "minimax"
126
+ ```
127
+
128
+ Then:
129
+
130
+ ```bash
131
+ export MINIMAX_API_KEY="..."
132
+ codex --profile minimax
133
+ ```
134
+
135
+ ### DeepScientist commands
136
+
137
+ ```bash
138
+ ds doctor --codex-profile minimax
139
+ ds --codex-profile minimax
140
+ ```
141
+
142
+ ### Persistent runner config
143
+
144
+ ```yaml
145
+ codex:
146
+ enabled: true
147
+ binary: codex
148
+ config_dir: ~/.codex
149
+ profile: minimax
150
+ model: inherit
151
+ ```
152
+
153
+ ## GLM
154
+
155
+ GLM documents the Coding Plan as an OpenAI-compatible coding endpoint rather than a dedicated Codex login flow.
156
+
157
+ Official docs:
158
+
159
+ - <https://docs.bigmodel.cn/cn/coding-plan/tool/others>
160
+ - <https://docs.bigmodel.cn/cn/coding-plan/faq>
161
+
162
+ ### Official provider values
163
+
164
+ - Base URL: `https://open.bigmodel.cn/api/coding/paas/v4`
165
+ - API key: your GLM Coding Plan key
166
+ - Model: `GLM-4.7` for the documented path, or `GLM-5` where supported
167
+
168
+ ### Recommended Codex adaptation
169
+
170
+ GLM does not currently publish a separate Codex CLI page in the same style as MiniMax. The practical DeepScientist path is:
171
+
172
+ 1. create a Codex profile in `~/.codex/config.toml` that points to the GLM coding endpoint above
173
+ 2. make sure `codex --profile glm` works in a terminal first
174
+ 3. run DeepScientist with the same profile
175
+
176
+ ### DeepScientist commands
177
+
178
+ ```bash
179
+ ds doctor --codex-profile glm
180
+ ds --codex-profile glm
181
+ ```
182
+
183
+ ### Persistent runner config
184
+
185
+ ```yaml
186
+ codex:
187
+ enabled: true
188
+ binary: codex
189
+ config_dir: ~/.codex
190
+ profile: glm
191
+ model: inherit
192
+ ```
193
+
194
+ ## Volcengine Ark
195
+
196
+ Volcengine Ark explicitly lists Codex CLI as a supported coding tool.
197
+
198
+ Official doc:
199
+
200
+ - <https://www.volcengine.com/docs/82379/1925114?lang=zh>
201
+
202
+ ### Official provider values
203
+
204
+ - OpenAI-compatible Base URL: `https://ark.cn-beijing.volces.com/api/coding/v3`
205
+ - Supported coding models: `doubao-seed-code-preview-latest`, `ark-code-latest`
206
+ - Use the Coding Plan key and the exact Coding Plan endpoint
207
+
208
+ ### Recommended Codex adaptation
209
+
210
+ Create a Codex profile that targets the Ark coding endpoint and test it directly first:
211
+
212
+ ```bash
213
+ codex --profile ark
214
+ ```
215
+
216
+ Then start DeepScientist with the same profile:
217
+
218
+ ```bash
219
+ ds doctor --codex-profile ark
220
+ ds --codex-profile ark
221
+ ```
222
+
223
+ ### Persistent runner config
224
+
225
+ ```yaml
226
+ codex:
227
+ enabled: true
228
+ binary: codex
229
+ config_dir: ~/.codex
230
+ profile: ark
231
+ model: inherit
232
+ ```
233
+
234
+ ## Alibaba Bailian
235
+
236
+ Bailian documents Coding Plan as an OpenAI-compatible coding endpoint. It requires the Coding Plan-specific key and endpoint, not the generic platform endpoint.
237
+
238
+ Official docs:
239
+
240
+ - <https://help.aliyun.com/zh/model-studio/other-tools-coding-plan>
241
+ - <https://help.aliyun.com/zh/model-studio/coding-plan-faq>
242
+
243
+ ### Official provider values
244
+
245
+ - OpenAI-compatible Base URL: `https://coding.dashscope.aliyuncs.com/v1`
246
+ - API key: Coding Plan-specific key, typically `sk-sp-...`
247
+ - Model: choose a Coding Plan-supported model from the current Bailian overview
248
+
249
+ ### Recommended Codex adaptation
250
+
251
+ Create a Codex profile that points to the Bailian Coding Plan endpoint and test it directly first:
252
+
253
+ ```bash
254
+ codex --profile bailian
255
+ ```
256
+
257
+ Then start DeepScientist with the same profile:
258
+
259
+ ```bash
260
+ ds doctor --codex-profile bailian
261
+ ds --codex-profile bailian
262
+ ```
263
+
264
+ ### Persistent runner config
265
+
266
+ ```yaml
267
+ codex:
268
+ enabled: true
269
+ binary: codex
270
+ config_dir: ~/.codex
271
+ profile: bailian
272
+ model: inherit
273
+ ```
274
+
275
+ ## Troubleshooting checklist
276
+
277
+ If a provider-backed profile still fails in DeepScientist:
278
+
279
+ 1. run `codex --profile <name>` manually first
280
+ 2. confirm the provider API key is present in the same shell
281
+ 3. confirm the provider-specific Base URL is the Coding Plan endpoint, not the generic API endpoint
282
+ 4. keep DeepScientist runner `model: inherit` unless you need an explicit override
283
+ 5. run `ds doctor --codex-profile <name>`
284
+ 6. only after that run `ds --codex-profile <name>`
@@ -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, and long-horizon research agents.
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,83 @@
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
+ - [15 Codex Provider Setup](./15_CODEX_PROVIDER_SETUP.md)
34
+ Read this when you want to run DeepScientist through MiniMax, GLM, Volcengine Ark, Alibaba Bailian, or another Codex profile.
35
+ - [12 Guided Workflow Tour](./12_GUIDED_WORKFLOW_TOUR.md)
36
+ Follow the real product flow from landing page to workspace, step by step.
37
+ - [02 Start Research Guide](./02_START_RESEARCH_GUIDE.md)
38
+ Read this next if you want to understand each field in the `Start Research` dialog and what it actually submits.
39
+
40
+ ## If you want to launch a project well
41
+
42
+ - [02 Start Research Guide](./02_START_RESEARCH_GUIDE.md)
43
+ Explains the current frontend fields, derived contract fields, and practical examples.
44
+ - [01 Settings Reference](./01_SETTINGS_REFERENCE.md)
45
+ Use this when you need to configure runners, connectors, runtime defaults, or home paths.
46
+ - [11 License And Risk Notice](./11_LICENSE_AND_RISK.md)
47
+ Read this first if you care about the license boundary, server safety, fabricated outputs, connector leakage, and public exposure risk.
48
+
49
+ ## If you want to collaborate through external surfaces
50
+
51
+ - [10 Weixin Connector Guide](./10_WEIXIN_CONNECTOR_GUIDE.md)
52
+ Bind personal WeChat through DeepScientist's built-in QR login and iLink runtime.
53
+ - [03 QQ Connector Guide](./03_QQ_CONNECTOR_GUIDE.md)
54
+ Use QQ as a practical collaboration surface for progress, commands, and milestone delivery.
55
+ - [04 Lingzhu Connector Guide](./04_LINGZHU_CONNECTOR_GUIDE.md)
56
+ Bind Lingzhu / Rokid Glasses to DeepScientist.
57
+
58
+ ## If you want to understand how the system works
59
+
60
+ - [13 Core Architecture Guide](./13_CORE_ARCHITECTURE_GUIDE.md)
61
+ Read this first if you want a user-facing overview of launcher, daemon, quests, Canvas, memory, and connectors.
62
+ - [14 Prompt, Skills, and MCP Guide](./14_PROMPT_SKILLS_AND_MCP_GUIDE.md)
63
+ Read this when you want the real turn-time structure: prompt assembly order, stage skills, and built-in MCP tool families.
64
+ - [06 Runtime and Canvas](./06_RUNTIME_AND_CANVAS.md)
65
+ Explains how the daemon, workspace, canvas, and connector views fit together.
66
+ - [07 Memory and MCP](./07_MEMORY_AND_MCP.md)
67
+ Explains memory, artifacts, and built-in MCP behavior.
68
+
69
+ ## If something is broken
70
+
71
+ - [09 Doctor](./09_DOCTOR.md)
72
+ Start here for diagnostics and common runtime problems.
73
+ - [15 Codex Provider Setup](./15_CODEX_PROVIDER_SETUP.md)
74
+ Check this if the problem is likely in your Codex profile, provider endpoint, API key, or model configuration.
75
+ - [01 Settings Reference](./01_SETTINGS_REFERENCE.md)
76
+ Check this if the problem is likely caused by config, credentials, or connector setup.
77
+
78
+ ## If you are developing DeepScientist
79
+
80
+ - [90 Architecture](./90_ARCHITECTURE.md)
81
+ High-level system contracts and repository structure.
82
+ - [91 Development](./91_DEVELOPMENT.md)
83
+ Maintainer-facing workflow and implementation notes.
@@ -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>
@@ -0,0 +1,44 @@
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="#FFFDF8"/>
3
+ <rect x="40" y="40" width="1200" height="640" rx="28" fill="#FFFFFF" stroke="#EBDCC1" stroke-width="2"/>
4
+ <circle cx="108" cy="108" r="34" fill="#F59E0B"/>
5
+ <path d="M108 90V126" stroke="#fff" stroke-width="8" stroke-linecap="round"/>
6
+ <path d="M90 108H126" stroke="#fff" stroke-width="8" stroke-linecap="round"/>
7
+ <text x="164" y="98" fill="#0F172A" font-family="Arial, sans-serif" font-size="34" font-weight="700">Quest-Local Weixin Media Flow</text>
8
+ <text x="164" y="138" fill="#475569" font-family="Arial, sans-serif" font-size="20">Inbound media is copied into the quest. Outbound media should come from a real local file.</text>
9
+
10
+ <rect x="76" y="196" width="308" height="424" rx="28" fill="#F8FAFC" stroke="#DCE3EA" stroke-width="2"/>
11
+ <text x="112" y="250" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">WeChat user</text>
12
+ <rect x="112" y="300" width="236" height="70" rx="20" fill="#DCFCE7"/>
13
+ <text x="148" y="342" fill="#166534" font-family="Arial, sans-serif" font-size="18" font-weight="700">Send text / image / video / file</text>
14
+ <rect x="112" y="396" width="236" height="164" rx="20" fill="#fff" stroke="#DDE6EE"/>
15
+ <text x="138" y="432" fill="#334155" font-family="Arial, sans-serif" font-size="17">Image message</text>
16
+ <text x="138" y="464" fill="#334155" font-family="Arial, sans-serif" font-size="17">Video message</text>
17
+ <text x="138" y="496" fill="#334155" font-family="Arial, sans-serif" font-size="17">File message</text>
18
+ <text x="138" y="536" fill="#475569" font-family="Arial, sans-serif" font-size="16">Media-only inbound events are kept.</text>
19
+
20
+ <rect x="486" y="154" width="308" height="508" rx="28" fill="#F9FBFF" stroke="#D8E2F4" stroke-width="2"/>
21
+ <text x="516" y="214" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">DeepScientist runtime</text>
22
+ <rect x="516" y="262" width="248" height="76" rx="20" fill="#E0E7FF"/>
23
+ <text x="548" y="308" fill="#3730A3" font-family="Arial, sans-serif" font-size="19" font-weight="700">Download / decrypt / normalize</text>
24
+ <rect x="516" y="362" width="248" height="92" rx="20" fill="#fff" stroke="#E0E7F3"/>
25
+ <text x="548" y="398" fill="#334155" font-family="Arial, sans-serif" font-size="17">Copy into quest userfiles</text>
26
+ <text x="548" y="428" fill="#334155" font-family="Arial, sans-serif" font-size="17">Write manifest.json</text>
27
+ <rect x="516" y="480" width="248" height="122" rx="20" fill="#EEF2FF"/>
28
+ <text x="548" y="518" fill="#3730A3" font-family="Arial, sans-serif" font-size="17">Reply path</text>
29
+ <text x="548" y="548" fill="#334155" font-family="Arial, sans-serif" font-size="16">Text uses context_token</text>
30
+ <text x="548" y="576" fill="#334155" font-family="Arial, sans-serif" font-size="16">Media uploads use a real local file path</text>
31
+
32
+ <rect x="896" y="196" width="308" height="424" rx="28" fill="#FFFBEB" stroke="#F4DEAB" stroke-width="2"/>
33
+ <text x="928" y="250" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Quest files</text>
34
+ <rect x="928" y="300" width="244" height="220" rx="20" fill="#fff" stroke="#F0E1B8"/>
35
+ <text x="952" y="338" fill="#92400E" font-family="Arial, sans-serif" font-size="17" font-weight="700">userfiles/weixin/&lt;batch&gt;/</text>
36
+ <text x="952" y="376" fill="#334155" font-family="Arial, sans-serif" font-size="16">manifest.json</text>
37
+ <text x="952" y="408" fill="#334155" font-family="Arial, sans-serif" font-size="16">001-image.png</text>
38
+ <text x="952" y="440" fill="#334155" font-family="Arial, sans-serif" font-size="16">002-video.mp4</text>
39
+ <text x="952" y="472" fill="#334155" font-family="Arial, sans-serif" font-size="16">003-report.pdf</text>
40
+ <text x="952" y="512" fill="#475569" font-family="Arial, sans-serif" font-size="16">Durable files the quest can read later</text>
41
+
42
+ <path d="M396 408H470" stroke="#94A3B8" stroke-width="8" stroke-linecap="round"/>
43
+ <path d="M808 408H882" stroke="#94A3B8" stroke-width="8" stroke-linecap="round"/>
44
+ </svg>
@@ -0,0 +1,57 @@
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="#22C55E"/>
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=".18"/>
6
+ <path d="M100 116L108 101L116 116H100Z" fill="#fff"/>
7
+ <text x="164" y="98" fill="#0F172A" font-family="Arial, sans-serif" font-size="34" font-weight="700">DeepScientist Weixin Bind Flow</text>
8
+ <text x="164" y="138" fill="#475569" font-family="Arial, sans-serif" font-size="20">Settings -&gt; Connectors -&gt; WeChat -&gt; Bind -&gt; QR login -&gt; auto-saved connector</text>
9
+
10
+ <rect x="72" y="196" width="368" height="430" rx="28" fill="#F7FBF8" stroke="#CFE5D5" stroke-width="2"/>
11
+ <rect x="102" y="228" width="104" height="36" rx="18" fill="#DCFCE7"/>
12
+ <text x="129" y="251" fill="#166534" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 1</text>
13
+ <text x="102" y="304" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Open WeChat card</text>
14
+ <rect x="102" y="338" width="308" height="188" rx="22" fill="#fff" stroke="#DDEBE1"/>
15
+ <text x="126" y="370" fill="#0F172A" font-family="Arial, sans-serif" font-size="19" font-weight="700">DeepScientist</text>
16
+ <text x="126" y="402" fill="#334155" font-family="Arial, sans-serif" font-size="17">Settings</text>
17
+ <text x="126" y="434" fill="#334155" font-family="Arial, sans-serif" font-size="17">Connectors</text>
18
+ <text x="126" y="466" fill="#334155" font-family="Arial, sans-serif" font-size="17">WeChat</text>
19
+ <rect x="126" y="488" width="160" height="28" rx="14" fill="#111827"/>
20
+ <text x="157" y="507" fill="#fff" font-family="Arial, sans-serif" font-size="15" font-weight="700">Bind WeChat</text>
21
+ <text x="102" y="572" fill="#475569" font-family="Arial, sans-serif" font-size="17">DeepScientist generates the QR itself.</text>
22
+ <text x="102" y="598" fill="#475569" font-family="Arial, sans-serif" font-size="17">No manual token form is required.</text>
23
+
24
+ <rect x="456" y="196" width="368" height="430" rx="28" fill="#FBFCFF" stroke="#D7E3F5" stroke-width="2"/>
25
+ <rect x="486" y="228" width="104" height="36" rx="18" fill="#E0E7FF"/>
26
+ <text x="513" y="251" fill="#4338CA" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 2</text>
27
+ <text x="486" y="304" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Scan and confirm</text>
28
+ <rect x="498" y="344" width="140" height="140" rx="18" fill="#fff" stroke="#CBD5E1" stroke-width="2"/>
29
+ <rect x="520" y="366" width="96" height="96" fill="#111827"/>
30
+ <rect x="534" y="380" width="22" height="22" fill="#fff"/>
31
+ <rect x="580" y="380" width="22" height="22" fill="#fff"/>
32
+ <rect x="534" y="426" width="22" height="22" fill="#fff"/>
33
+ <rect x="566" y="412" width="14" height="14" fill="#fff"/>
34
+ <rect x="594" y="426" width="8" height="8" fill="#fff"/>
35
+ <rect x="666" y="344" width="124" height="220" rx="28" fill="#ECFDF5" stroke="#BBF7D0"/>
36
+ <rect x="684" y="370" width="88" height="140" rx="18" fill="#FFFFFF" stroke="#D1E7D6"/>
37
+ <text x="699" y="402" fill="#0F172A" font-family="Arial, sans-serif" font-size="17" font-weight="700">WeChat</text>
38
+ <text x="699" y="438" fill="#334155" font-family="Arial, sans-serif" font-size="14">Scan QR</text>
39
+ <text x="699" y="462" fill="#334155" font-family="Arial, sans-serif" font-size="14">Confirm login</text>
40
+ <text x="699" y="486" fill="#334155" font-family="Arial, sans-serif" font-size="14">Wait for save</text>
41
+ <text x="486" y="596" fill="#475569" font-family="Arial, sans-serif" font-size="17">The phone completes the confirmation.</text>
42
+
43
+ <rect x="840" y="196" width="368" height="430" rx="28" fill="#F8FCFF" stroke="#CDE5EC" stroke-width="2"/>
44
+ <rect x="870" y="228" width="104" height="36" rx="18" fill="#CCFBF1"/>
45
+ <text x="897" y="251" fill="#0F766E" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 3</text>
46
+ <text x="870" y="304" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Connector saved</text>
47
+ <rect x="870" y="340" width="308" height="200" rx="22" fill="#fff" stroke="#D8EAEE"/>
48
+ <text x="896" y="376" fill="#0F172A" font-family="Arial, sans-serif" font-size="19" font-weight="700">Saved binding</text>
49
+ <text x="896" y="416" fill="#334155" font-family="Arial, sans-serif" font-size="17">enabled: true</text>
50
+ <text x="896" y="448" fill="#334155" font-family="Arial, sans-serif" font-size="17">transport: ilink_long_poll</text>
51
+ <text x="896" y="480" fill="#334155" font-family="Arial, sans-serif" font-size="17">bot_token: persisted</text>
52
+ <text x="896" y="512" fill="#334155" font-family="Arial, sans-serif" font-size="17">account_id + login_user_id</text>
53
+ <text x="870" y="586" fill="#475569" font-family="Arial, sans-serif" font-size="17">DeepScientist starts long polling automatically.</text>
54
+
55
+ <path d="M444 410H452" stroke="#94A3B8" stroke-width="8" stroke-linecap="round"/>
56
+ <path d="M828 410H836" stroke="#94A3B8" stroke-width="8" stroke-linecap="round"/>
57
+ </svg>