@researai/deepscientist 1.5.2 → 1.5.4

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 (114) hide show
  1. package/README.md +22 -0
  2. package/bin/ds.js +399 -175
  3. package/docs/en/00_QUICK_START.md +22 -0
  4. package/docs/en/01_SETTINGS_REFERENCE.md +13 -4
  5. package/docs/en/99_ACKNOWLEDGEMENTS.md +1 -0
  6. package/docs/images/connectors/discord-setup-overview.svg +52 -0
  7. package/docs/images/connectors/feishu-setup-overview.svg +53 -0
  8. package/docs/images/connectors/slack-setup-overview.svg +51 -0
  9. package/docs/images/connectors/telegram-setup-overview.svg +55 -0
  10. package/docs/images/connectors/whatsapp-setup-overview.svg +51 -0
  11. package/docs/images/lingzhu/lingzhu-openclaw-config.svg +17 -0
  12. package/docs/images/lingzhu/lingzhu-platform-values.svg +16 -0
  13. package/docs/images/lingzhu/lingzhu-settings-overview.svg +30 -0
  14. package/docs/images/qq/tencent-cloud-qq-chat.png +0 -0
  15. package/docs/images/qq/tencent-cloud-qq-register.png +0 -0
  16. package/docs/images/quickstart/00-home.png +0 -0
  17. package/docs/images/quickstart/01-start-research.png +0 -0
  18. package/docs/images/quickstart/02-list-quest.png +0 -0
  19. package/docs/zh/00_QUICK_START.md +22 -0
  20. package/docs/zh/01_SETTINGS_REFERENCE.md +14 -5
  21. package/docs/zh/99_ACKNOWLEDGEMENTS.md +1 -0
  22. package/install.sh +120 -4
  23. package/package.json +8 -4
  24. package/pyproject.toml +1 -1
  25. package/src/deepscientist/__init__.py +1 -1
  26. package/src/deepscientist/artifact/service.py +1 -1
  27. package/src/deepscientist/bash_exec/monitor.py +23 -4
  28. package/src/deepscientist/bash_exec/runtime.py +3 -0
  29. package/src/deepscientist/bash_exec/service.py +132 -4
  30. package/src/deepscientist/bridges/base.py +12 -20
  31. package/src/deepscientist/bridges/connectors.py +2 -1
  32. package/src/deepscientist/channels/discord_gateway.py +27 -4
  33. package/src/deepscientist/channels/feishu_long_connection.py +41 -3
  34. package/src/deepscientist/channels/qq.py +524 -64
  35. package/src/deepscientist/channels/qq_gateway.py +24 -5
  36. package/src/deepscientist/channels/relay.py +429 -90
  37. package/src/deepscientist/channels/slack_socket.py +31 -7
  38. package/src/deepscientist/channels/telegram_polling.py +27 -3
  39. package/src/deepscientist/channels/whatsapp_local_session.py +32 -4
  40. package/src/deepscientist/cli.py +31 -1
  41. package/src/deepscientist/config/models.py +13 -43
  42. package/src/deepscientist/config/service.py +216 -157
  43. package/src/deepscientist/connector_profiles.py +346 -0
  44. package/src/deepscientist/connector_runtime.py +88 -43
  45. package/src/deepscientist/daemon/api/handlers.py +53 -16
  46. package/src/deepscientist/daemon/api/router.py +2 -2
  47. package/src/deepscientist/daemon/app.py +747 -228
  48. package/src/deepscientist/mcp/server.py +60 -7
  49. package/src/deepscientist/migration.py +114 -0
  50. package/src/deepscientist/network.py +78 -0
  51. package/src/deepscientist/prompts/builder.py +50 -4
  52. package/src/deepscientist/qq_profiles.py +186 -0
  53. package/src/deepscientist/quest/service.py +1 -1
  54. package/src/deepscientist/skills/installer.py +77 -1
  55. package/src/prompts/connectors/qq.md +42 -2
  56. package/src/prompts/system.md +162 -6
  57. package/src/skills/analysis-campaign/SKILL.md +19 -5
  58. package/src/skills/baseline/SKILL.md +66 -31
  59. package/src/skills/decision/SKILL.md +1 -1
  60. package/src/skills/experiment/SKILL.md +11 -5
  61. package/src/skills/finalize/SKILL.md +1 -1
  62. package/src/skills/idea/SKILL.md +246 -4
  63. package/src/skills/intake-audit/SKILL.md +1 -1
  64. package/src/skills/rebuttal/SKILL.md +1 -1
  65. package/src/skills/review/SKILL.md +1 -1
  66. package/src/skills/scout/SKILL.md +1 -1
  67. package/src/skills/write/SKILL.md +152 -2
  68. package/src/tui/package.json +1 -1
  69. package/src/ui/dist/assets/{AiManusChatView-CZpg376x.js → AiManusChatView-BGLArZRn.js} +14 -37
  70. package/src/ui/dist/assets/{AnalysisPlugin-CtHA22g3.js → AnalysisPlugin-BgDGSigG.js} +1 -1
  71. package/src/ui/dist/assets/{AutoFigurePlugin-BSWmLMmF.js → AutoFigurePlugin-B65HD7L4.js} +5 -5
  72. package/src/ui/dist/assets/{CliPlugin-CJ7jdm_s.js → CliPlugin-CUqgsFHC.js} +17 -110
  73. package/src/ui/dist/assets/{CodeEditorPlugin-DhInVGFf.js → CodeEditorPlugin-CF5EdvaS.js} +8 -8
  74. package/src/ui/dist/assets/{CodeViewerPlugin-D1n8S9r5.js → CodeViewerPlugin-DEeU063D.js} +5 -5
  75. package/src/ui/dist/assets/{DocViewerPlugin-C4XM_kqk.js → DocViewerPlugin-Df-FuDlZ.js} +3 -3
  76. package/src/ui/dist/assets/{GitDiffViewerPlugin-W6kS9r6v.js → GitDiffViewerPlugin-RAnNaRxM.js} +1 -1
  77. package/src/ui/dist/assets/{ImageViewerPlugin-DPeUx_Oz.js → ImageViewerPlugin-DXJ0ZJGg.js} +5 -5
  78. package/src/ui/dist/assets/{LabCopilotPanel-eAelUaub.js → LabCopilotPanel-BlO-sKsj.js} +10 -10
  79. package/src/ui/dist/assets/{LabPlugin-BbOrBxKY.js → LabPlugin-BajPZW5v.js} +1 -1
  80. package/src/ui/dist/assets/{LatexPlugin-C-HhkVXY.js → LatexPlugin-F1OEol8D.js} +7 -7
  81. package/src/ui/dist/assets/{MarkdownViewerPlugin-BDIzIBfh.js → MarkdownViewerPlugin-MhUupqwT.js} +4 -4
  82. package/src/ui/dist/assets/{MarketplacePlugin-DAOJphwr.js → MarketplacePlugin-DxhIEsv0.js} +3 -3
  83. package/src/ui/dist/assets/{NotebookEditor-BsoMvDoU.js → NotebookEditor-q7TkhewC.js} +1 -1
  84. package/src/ui/dist/assets/{PdfLoader-fiC7RtHf.js → PdfLoader-B8ZOTKFc.js} +1 -1
  85. package/src/ui/dist/assets/{PdfMarkdownPlugin-C5OxZBFK.js → PdfMarkdownPlugin-xFPvzvWh.js} +3 -3
  86. package/src/ui/dist/assets/{PdfViewerPlugin-CAbxQebk.js → PdfViewerPlugin-EjEcsIB8.js} +10 -10
  87. package/src/ui/dist/assets/{SearchPlugin-SE33Lb9B.js → SearchPlugin-ixY-1lgW.js} +1 -1
  88. package/src/ui/dist/assets/{Stepper-0Av7GfV7.js → Stepper-gYFK2Pgz.js} +1 -1
  89. package/src/ui/dist/assets/{TextViewerPlugin-Daf2gJDI.js → TextViewerPlugin-Cym6pv_n.js} +4 -4
  90. package/src/ui/dist/assets/{VNCViewer-BKrMUIOX.js → VNCViewer-BPmIHcmK.js} +9 -9
  91. package/src/ui/dist/assets/{bibtex-JBdOEe45.js → bibtex-Btv6Wi7f.js} +1 -1
  92. package/src/ui/dist/assets/{code-B0TDFCZz.js → code-BlG7g85c.js} +1 -1
  93. package/src/ui/dist/assets/{file-content-3YtrSacz.js → file-content-DBT5OfTZ.js} +1 -1
  94. package/src/ui/dist/assets/{file-diff-panel-CJEg5OG1.js → file-diff-panel-BWXYzqHk.js} +1 -1
  95. package/src/ui/dist/assets/{file-socket-CYQYdmB1.js → file-socket-wDlx6byM.js} +1 -1
  96. package/src/ui/dist/assets/{file-utils-Cd1C9Ppl.js → file-utils-Ba3nJmH0.js} +1 -1
  97. package/src/ui/dist/assets/{image-B33ctrvC.js → image-BwtCyguk.js} +1 -1
  98. package/src/ui/dist/assets/{index-BNQWqmJ2.js → index-B-2scqCJ.js} +11 -11
  99. package/src/ui/dist/assets/{index-BVXsmS7V.js → index-Bz5AaWL7.js} +52383 -51440
  100. package/src/ui/dist/assets/{index-Buw_N1VQ.js → index-CfRpE209.js} +2 -2
  101. package/src/ui/dist/assets/{index-9CLPVeZh.js → index-DcqvKzeJ.js} +1 -1
  102. package/src/ui/dist/assets/{index-SwmFAld3.css → index-DpMZw8aM.css} +49 -2
  103. package/src/ui/dist/assets/{message-square-D0cUJ9yU.js → message-square-BnlyWVH0.js} +1 -1
  104. package/src/ui/dist/assets/{monaco-UZLYkp2n.js → monaco-CXe0pAVe.js} +1 -1
  105. package/src/ui/dist/assets/{popover-CTeiY-dK.js → popover-BCHmVhHj.js} +1 -1
  106. package/src/ui/dist/assets/{project-sync-Dbs01Xky.js → project-sync-Brk6kaOD.js} +1 -1
  107. package/src/ui/dist/assets/{sigma-CM08S-xT.js → sigma-D72eSUep.js} +1 -1
  108. package/src/ui/dist/assets/{tooltip-pDtzvU9p.js → tooltip-BMWd0dqX.js} +1 -1
  109. package/src/ui/dist/assets/{trash-YvPCP-da.js → trash-BIt_eWIS.js} +1 -1
  110. package/src/ui/dist/assets/{useCliAccess-Bavi74Ac.js → useCliAccess-N1hkTRrR.js} +1 -1
  111. package/src/ui/dist/assets/{useFileDiffOverlay-CVXY6oeg.js → useFileDiffOverlay-DPRPv6rv.js} +1 -1
  112. package/src/ui/dist/assets/{wrap-text-Cf4flRW7.js → wrap-text-E5-UheyP.js} +1 -1
  113. package/src/ui/dist/assets/{zoom-out-Hb0Z1YpT.js → zoom-out-D4TR-ZZ_.js} +1 -1
  114. package/src/ui/dist/index.html +2 -2
@@ -39,6 +39,28 @@ If `uv` is missing on your machine, `ds` will bootstrap a local copy automatical
39
39
 
40
40
  By default, the DeepScientist home is `~/DeepScientist` on macOS and Linux, and `%USERPROFILE%\\DeepScientist` on Windows. You can override it with `ds --home <path>`.
41
41
 
42
+ If you want to use the current working directory as the DeepScientist home directly, run:
43
+
44
+ ```bash
45
+ ds --here
46
+ ```
47
+
48
+ This is equivalent to `ds --home "$PWD"`.
49
+
50
+ If you install from a source checkout and want another default base path for the bundled CLI tree, use:
51
+
52
+ ```bash
53
+ bash install.sh --dir /data/DeepScientist
54
+ ```
55
+
56
+ If you already have a populated DeepScientist home and need to move it to another path later, use:
57
+
58
+ ```bash
59
+ ds migrate /data/DeepScientist
60
+ ```
61
+
62
+ The migration command prints the absolute source and target paths, stops the managed daemon, asks for a double confirmation, verifies the copied tree, updates launcher wrappers, and removes the old path only after the migration succeeds.
63
+
42
64
  By default, the web UI is served at:
43
65
 
44
66
  ```text
@@ -44,7 +44,7 @@ Connector-specific setup guides:
44
44
  ```yaml
45
45
  home: ~/DeepScientist
46
46
  default_runner: codex
47
- default_locale: zh-CN
47
+ default_locale: en-US # or zh-CN, initialized from the browser on first web launch
48
48
  daemon:
49
49
  session_restore_on_start: true
50
50
  max_concurrent_quests: 1
@@ -67,6 +67,14 @@ skills:
67
67
  sync_global_on_init: true
68
68
  sync_quest_on_create: true
69
69
  sync_quest_on_open: true
70
+ bootstrap:
71
+ codex_ready: false
72
+ codex_last_checked_at: null
73
+ codex_last_result: {}
74
+ locale_source: browser
75
+ locale_initialized_from_browser: true
76
+ locale_initialized_at: 2026-03-18T00:00:00+00:00
77
+ locale_initialized_browser_locale: en-US
70
78
  connectors:
71
79
  auto_ack: true
72
80
  milestone_push: true
@@ -108,10 +116,11 @@ acp:
108
116
  **`default_locale`**
109
117
 
110
118
  - Type: `string`
111
- - Default: `zh-CN`
119
+ - Default: initialized from the browser language on the first web launch, then persisted as `zh-CN` or `en-US`
112
120
  - Allowed values: `zh-CN`, `en-US`
113
121
  - UI label: `Default locale`
114
- - Meaning: default prompt and UI language preference.
122
+ - Meaning: default language preference used by prompts and runtime copy.
123
+ - Notes: after the first browser-driven initialization, changing this field in `Settings` makes it a manual override and DeepScientist will not auto-follow the browser again.
115
124
 
116
125
  ### Daemon policy
117
126
 
@@ -1074,7 +1083,7 @@ servers:
1074
1083
  ```yaml
1075
1084
  # config.yaml
1076
1085
  default_runner: codex
1077
- default_locale: zh-CN
1086
+ default_locale: en-US
1078
1087
  ui:
1079
1088
  host: 0.0.0.0
1080
1089
  port: 20999
@@ -11,6 +11,7 @@ We especially thank the following projects for their ideas, research direction,
11
11
  - AlphaEvolve
12
12
  - OpenEvolve
13
13
  - EvoScientist
14
+ - Orchestra-Research/AI-Research-SKILLs
14
15
 
15
16
  These projects have been important references for thinking about automated research, open-ended exploration, evolutionary search, experiment organization, and long-horizon research agents.
16
17
 
@@ -0,0 +1,52 @@
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="#F7F7FF"/>
3
+ <rect x="40" y="40" width="1200" height="640" rx="28" fill="#FFFFFF" stroke="#DADCFB" stroke-width="2"/>
4
+ <circle cx="110" cy="108" r="34" fill="#5865F2"/>
5
+ <path d="M124.6 96.6c-2.4-1.8-4.8-3-7.4-3.8-.1 0-.2 0-.2.1-.3.6-.6 1.2-.9 1.9-2.8-.4-5.5-.4-8.2 0-.3-.6-.6-1.3-.9-1.9-.1-.1-.1-.1-.2-.1-2.6.8-5.1 2-7.4 3.8-.1 0-.1.1-.1.1-4.5 6.7-5.7 13.2-5.1 19.6 0 .1 0 .1.1.2 3.1 2.3 6.2 3.7 9.2 4.7.1 0 .2 0 .2-.1.7-1 1.3-2 1.8-3 .1-.1 0-.2-.1-.2-1-.4-1.9-.8-2.8-1.4-.1 0-.1-.2 0-.2.2-.1.4-.3.6-.4h.1c6 2.7 12.5 2.7 18.5 0h.1c.2.1.4.3.6.4.1.1.1.2 0 .2-.9.5-1.8 1-2.8 1.4-.1 0-.1.1-.1.2.5 1 1.1 2 1.8 3 .1.1.1.1.2.1 3-.9 6.1-2.4 9.2-4.7.1 0 .1-.1.1-.2.7-7.4-1.1-13.8-5.1-19.6 0 0 0-.1-.1-.1ZM104.8 112.5c-1.8 0-3.3-1.6-3.3-3.7s1.4-3.7 3.3-3.7c1.8 0 3.3 1.6 3.3 3.7-.1 2-1.5 3.7-3.3 3.7Zm14.4 0c-1.8 0-3.3-1.6-3.3-3.7s1.4-3.7 3.3-3.7c1.8 0 3.3 1.6 3.3 3.7s-1.4 3.7-3.3 3.7Z" fill="#fff"/>
6
+ <text x="164" y="98" fill="#0F172A" font-family="Arial, sans-serif" font-size="34" font-weight="700">Discord Setup Flow</text>
7
+ <text x="164" y="138" fill="#475569" font-family="Arial, sans-serif" font-size="20">Developer Portal -&gt; Bot token + Application ID -&gt; invite bot -&gt; one DM or mention</text>
8
+
9
+ <rect x="72" y="198" width="340" height="414" rx="26" fill="#FBFBFF" stroke="#D7D9FE" stroke-width="2"/>
10
+ <rect x="98" y="224" width="90" height="34" rx="17" fill="#EDE9FE"/>
11
+ <text x="122" y="246" fill="#4338CA" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 1</text>
12
+ <text x="98" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Create the app</text>
13
+ <rect x="98" y="324" width="288" height="76" rx="18" fill="#fff" stroke="#E3E5FF"/>
14
+ <text x="122" y="352" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Developer Portal</text>
15
+ <text x="122" y="378" fill="#475569" font-family="Arial, sans-serif" font-size="16">General Information + Bot tab</text>
16
+ <rect x="98" y="416" width="288" height="92" rx="18" fill="#EEF2FF"/>
17
+ <text x="122" y="446" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Copy two values</text>
18
+ <text x="122" y="474" fill="#4338CA" font-family="Arial, sans-serif" font-size="16">bot_token</text>
19
+ <text x="122" y="498" fill="#4338CA" font-family="Arial, sans-serif" font-size="16">application_id</text>
20
+ <rect x="98" y="524" width="288" height="60" rx="18" fill="#fff" stroke="#E3E5FF"/>
21
+ <text x="122" y="560" fill="#475569" font-family="Arial, sans-serif" font-size="16">Enable bot user and keep Gateway mode</text>
22
+
23
+ <rect x="470" y="198" width="340" height="414" rx="26" fill="#FBFCFF" stroke="#DADCFB" stroke-width="2"/>
24
+ <rect x="496" y="224" width="90" height="34" rx="17" fill="#DBEAFE"/>
25
+ <text x="520" y="246" fill="#1D4ED8" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 2</text>
26
+ <text x="496" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Fill Settings</text>
27
+ <rect x="496" y="324" width="288" height="220" rx="18" fill="#fff" stroke="#DFE4FD"/>
28
+ <text x="520" y="356" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Connector fields</text>
29
+ <text x="520" y="390" fill="#334155" font-family="Arial, sans-serif" font-size="17">Enabled: on</text>
30
+ <text x="520" y="422" fill="#334155" font-family="Arial, sans-serif" font-size="17">transport: gateway</text>
31
+ <text x="520" y="454" fill="#334155" font-family="Arial, sans-serif" font-size="17">bot_token: paste from Bot tab</text>
32
+ <text x="520" y="486" fill="#334155" font-family="Arial, sans-serif" font-size="17">application_id: paste from General Info</text>
33
+ <text x="520" y="518" fill="#334155" font-family="Arial, sans-serif" font-size="17">guild_allowlist: optional</text>
34
+ <rect x="496" y="560" width="288" height="24" rx="12" fill="#111827"/>
35
+
36
+ <rect x="868" y="198" width="340" height="414" rx="26" fill="#FCFCFF" stroke="#DADCFB" stroke-width="2"/>
37
+ <rect x="894" y="224" width="90" height="34" rx="17" fill="#DCFCE7"/>
38
+ <text x="918" y="246" fill="#166534" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 3</text>
39
+ <text x="894" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Invite and verify</text>
40
+ <rect x="894" y="324" width="288" height="76" rx="18" fill="#fff" stroke="#E4E7FD"/>
41
+ <text x="918" y="352" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Generate one real event</text>
42
+ <text x="918" y="378" fill="#475569" font-family="Arial, sans-serif" font-size="16">Invite bot, then send one DM or @mention</text>
43
+ <rect x="894" y="416" width="288" height="76" rx="18" fill="#fff" stroke="#E4E7FD"/>
44
+ <text x="918" y="444" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Back to DeepScientist</text>
45
+ <text x="918" y="470" fill="#475569" font-family="Arial, sans-serif" font-size="16">Use the discovered target, not a guessed id</text>
46
+ <rect x="894" y="508" width="288" height="76" rx="18" fill="#ECFDF5"/>
47
+ <text x="918" y="536" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Final actions</text>
48
+ <text x="918" y="564" fill="#166534" font-family="Arial, sans-serif" font-size="16">Check -&gt; Send probe</text>
49
+
50
+ <path d="M423 406H455" stroke="#94A3B8" stroke-width="8" stroke-linecap="round"/>
51
+ <path d="M821 406H853" stroke="#94A3B8" stroke-width="8" stroke-linecap="round"/>
52
+ </svg>
@@ -0,0 +1,53 @@
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="#F8FCFF"/>
3
+ <rect x="40" y="40" width="1200" height="640" rx="28" fill="#FFFFFF" stroke="#D7E7FF" stroke-width="2"/>
4
+ <rect x="76" y="74" width="68" height="68" rx="18" fill="#fff" stroke="#D7E7FF"/>
5
+ <path d="M104.3 112.1c18.1 0 33.9-10 42.1-24.8.3-.5.6-1 .9-1.5-.4.8-.9 1.5-1.4 2.2-.2.2-.4.4-.6.7-.2.3-.5.6-.8.8-.2.2-.4.4-.6.6-.4.4-.9.8-1.3 1.2-.2.2-.5.4-.8.6-.3.3-.6.5-.9.7l-.6.4-.6.4c-.5.3-1 .5-1.5.7-.4.2-.8.4-1.2.5-.5.2-1 .4-1.6.5-.8.2-1.6.4-2.3.5-.6.1-1.2.2-1.8.2-.7 0-1.4 0-2.1-.1-.7-.1-1.3-.1-2-.2-.5-.1-1-.2-1.5-.3l-.8-.2c-.7-.2-1.4-.4-2.1-.6-.3-.1-.7-.2-1-.3-.5-.2-1.1-.3-1.6-.5-.4-.1-.8-.3-1.3-.4-.4-.1-.8-.3-1.2-.4l-1.3-.5c-.3-.1-.7-.2-1-.4l-.9-.3c-.5-.2-1-.4-1.4-.6l-.8-.3-.9-.4-.9-.4-1.2-.5-1.3-.6c-.5-.2-.9-.4-1.4-.6l-1.1-.5c-20.4-10.2-38.7-23.9-54.2-40.6-.5-.5-1.3-.5-1.8 0-.2.2-.3.5-.3.9v17.3c0 3.6 1.8 6.9 4.8 8.8 14.3 9.5 31.1 14.5 48.2 14.5Z" fill="#3370FF"/>
6
+ <path d="M118.7 88.7c-1.9-3.1-1.1-7 .8-9.5 8.1-7.8 12.9-19.1 11.9-31.4C129.9 28.5 114 13.6 94.2 12.2 70.2 10.6 50 29.7 50 53.5v51.1c0 2.1 1.7 3.8 3.8 3.8h12.5c2.1 0 3.8-1.7 3.8-3.8V84.9c0-.6.1-1.2.2-1.8.8-3.7 3.9-6.6 7.8-6.8 4.1-.3 7.9 2.4 9 6.3l.7 2.5 5.9 21.6c.5 1.6 1.9 2.8 3.6 2.8h14.8c2.8 0 4.7-3 3.3-5.5l-12.2-23.1-.1-.2Zm-19.1-14.2c-8.6 1.1-15.9-6.2-14.8-14.9.7-5.9 5.4-10.6 11.3-11.4 8.6-1.1 15.9 6.2 14.8 14.8-.7 5.9-5.4 10.7-11.3 11.5Z" fill="#00D6B9"/>
7
+ <path d="M151.6 52.4c-6.8-3.3-14.5-4-21.8-2-.3.1-.6.2-.9.3l-.6.2c-.4.1-.9.3-1.2.4-.8.3-1.6.6-2.4 1-.8.4-1.5.8-2.2 1.2-.8.5-1.5.9-2.1 1.5-.5.4-1 .8-1.4 1.3-.5.5-1 .9-1.5 1.4l-.9.8-1.3 1.3-1 1-.8.8-.9.9-.8.8-1.4 1.4-.9.8-.3.3c-.2.1-.3.3-.5.5l-.3.3-.3.3c-3.4 3.1-7.2 5.8-11.2 8l1.2.5.9.4.9.4.9.3 1 .4 1.3.5c.4.1.8.3 1.2.4.5.2.9.3 1.4.5.5.2 1 .3 1.6.5.3.1.7.2 1 .3.7.2 1.4.4 2.1.6l.8.2c.5.1 1 .2 1.5.3.6.1 1.3.2 2 .2.7.1 1.4.1 2.1.1.6 0 1.2-.1 1.8-.2.8-.1 1.6-.3 2.3-.5.6-.1 1.1-.3 1.6-.5.4-.1.8-.3 1.2-.5.5-.2 1-.4 1.5-.7l.6-.4.6-.4c.3-.2.6-.4.9-.7.3-.2.5-.4.8-.6.5-.4.9-.8 1.3-1.2.2-.2.4-.4.6-.6.3-.3.5-.6.8-.8.2-.2.4-.5.6-.7.6-.7 1-1.4 1.4-2.2l.5-1 4.6-9.3.1-.1c1.5-3.3 3.6-6.3 6.1-8.8Z" fill="#133C9A"/>
8
+ <text x="164" y="98" fill="#0F172A" font-family="Arial, sans-serif" font-size="34" font-weight="700">Feishu / Lark Setup Flow</text>
9
+ <text x="164" y="138" fill="#475569" font-family="Arial, sans-serif" font-size="20">Open Platform -&gt; App ID + App Secret -&gt; long connection -&gt; one DM or @mention -&gt; probe</text>
10
+
11
+ <rect x="72" y="198" width="340" height="414" rx="26" fill="#FBFDFF" stroke="#D8E8FF" stroke-width="2"/>
12
+ <rect x="98" y="224" width="90" height="34" rx="17" fill="#DBEAFE"/>
13
+ <text x="122" y="246" fill="#1D4ED8" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 1</text>
14
+ <text x="98" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Create the app</text>
15
+ <rect x="98" y="324" width="288" height="84" rx="18" fill="#fff" stroke="#E0ECFF"/>
16
+ <text x="122" y="352" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Feishu Open Platform</text>
17
+ <text x="122" y="378" fill="#475569" font-family="Arial, sans-serif" font-size="16">Credentials page + app installation</text>
18
+ <rect x="98" y="424" width="288" height="84" rx="18" fill="#F0F9FF"/>
19
+ <text x="122" y="452" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Copy two values</text>
20
+ <text x="122" y="480" fill="#0369A1" font-family="Arial, sans-serif" font-size="16">app_id</text>
21
+ <text x="122" y="502" fill="#0369A1" font-family="Arial, sans-serif" font-size="16">app_secret</text>
22
+ <rect x="98" y="524" width="288" height="60" rx="18" fill="#fff" stroke="#E0ECFF"/>
23
+ <text x="122" y="560" fill="#475569" font-family="Arial, sans-serif" font-size="16">Install the app into the target tenant</text>
24
+
25
+ <rect x="470" y="198" width="340" height="414" rx="26" fill="#FCFDFF" stroke="#D8E8FF" stroke-width="2"/>
26
+ <rect x="496" y="224" width="90" height="34" rx="17" fill="#DCFCE7"/>
27
+ <text x="520" y="246" fill="#166534" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 2</text>
28
+ <text x="496" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Fill Settings</text>
29
+ <rect x="496" y="324" width="288" height="220" rx="18" fill="#fff" stroke="#E0ECFF"/>
30
+ <text x="520" y="356" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Connector fields</text>
31
+ <text x="520" y="390" fill="#334155" font-family="Arial, sans-serif" font-size="17">Enabled: on</text>
32
+ <text x="520" y="422" fill="#334155" font-family="Arial, sans-serif" font-size="17">transport: long_connection</text>
33
+ <text x="520" y="454" fill="#334155" font-family="Arial, sans-serif" font-size="17">app_id: paste from platform</text>
34
+ <text x="520" y="486" fill="#334155" font-family="Arial, sans-serif" font-size="17">app_secret: paste from platform</text>
35
+ <text x="520" y="518" fill="#334155" font-family="Arial, sans-serif" font-size="17">require_mention_in_groups: optional</text>
36
+ <rect x="496" y="560" width="288" height="24" rx="12" fill="#111827"/>
37
+
38
+ <rect x="868" y="198" width="340" height="414" rx="26" fill="#FBFDFF" stroke="#D8E8FF" stroke-width="2"/>
39
+ <rect x="894" y="224" width="90" height="34" rx="17" fill="#FDE68A"/>
40
+ <text x="918" y="246" fill="#92400E" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 3</text>
41
+ <text x="894" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Start one chat</text>
42
+ <rect x="894" y="324" width="288" height="84" rx="18" fill="#fff" stroke="#E0ECFF"/>
43
+ <text x="918" y="352" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Generate one event</text>
44
+ <text x="918" y="378" fill="#475569" font-family="Arial, sans-serif" font-size="16">Send one DM or @mention in Feishu</text>
45
+ <rect x="894" y="424" width="288" height="84" rx="18" fill="#fff" stroke="#E0ECFF"/>
46
+ <text x="918" y="452" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Back to DeepScientist</text>
47
+ <text x="918" y="478" fill="#475569" font-family="Arial, sans-serif" font-size="16">Wait until discovered targets appear</text>
48
+ <rect x="894" y="524" width="288" height="60" rx="18" fill="#FEFCE8"/>
49
+ <text x="918" y="560" fill="#92400E" font-family="Arial, sans-serif" font-size="16">Check -&gt; Send probe</text>
50
+
51
+ <path d="M423 406H455" stroke="#94A3B8" stroke-width="8" stroke-linecap="round"/>
52
+ <path d="M821 406H853" stroke="#94A3B8" stroke-width="8" stroke-linecap="round"/>
53
+ </svg>
@@ -0,0 +1,51 @@
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="#FCF8FC"/>
3
+ <rect x="40" y="40" width="1200" height="640" rx="28" fill="#FFFFFF" stroke="#E7D7E7" stroke-width="2"/>
4
+ <circle cx="110" cy="108" r="34" fill="#4A154B"/>
5
+ <path d="M103.1 93.3c0-3 2.4-5.5 5.5-5.5 3 0 5.5 2.5 5.5 5.5v5.5h-5.5c-3.1 0-5.5-2.5-5.5-5.5Zm-10.8 10.8h5.5v5.5c0 3.1-2.5 5.5-5.5 5.5-3.1 0-5.5-2.4-5.5-5.5 0-3 2.4-5.5 5.5-5.5Zm21.8 0h5.5c3 0 5.5 2.5 5.5 5.5 0 3.1-2.5 5.5-5.5 5.5-3.1 0-5.5-2.4-5.5-5.5v-5.5Zm-5.5 16.3v-5.5h5.5c3 0 5.5 2.5 5.5 5.5 0 3.1-2.5 5.5-5.5 5.5-3.1 0-5.5-2.4-5.5-5.5Zm-10.8-10.8v-5.5h5.5c3 0 5.5 2.5 5.5 5.5v16.3c0 3.1-2.5 5.5-5.5 5.5-3.1 0-5.5-2.4-5.5-5.5v-16.3Zm16.3-10.8v-5.5c0-3 2.4-5.5 5.5-5.5 3 0 5.5 2.5 5.5 5.5 0 3-2.5 5.5-5.5 5.5h-5.5Zm-16.3 0H92.3c-3.1 0-5.5-2.5-5.5-5.5 0-3 2.4-5.5 5.5-5.5 3 0 5.5 2.5 5.5 5.5v5.5Z" fill="#fff"/>
6
+ <text x="164" y="98" fill="#0F172A" font-family="Arial, sans-serif" font-size="34" font-weight="700">Slack Setup Flow</text>
7
+ <text x="164" y="138" fill="#475569" font-family="Arial, sans-serif" font-size="20">Slack app dashboard -&gt; Socket Mode -&gt; xoxb + xapp -&gt; one mention -&gt; probe</text>
8
+
9
+ <rect x="72" y="198" width="340" height="414" rx="26" fill="#FFFDFE" stroke="#E9D9E9" stroke-width="2"/>
10
+ <rect x="98" y="224" width="90" height="34" rx="17" fill="#F3E8FF"/>
11
+ <text x="122" y="246" fill="#6B21A8" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 1</text>
12
+ <text x="98" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Prepare the app</text>
13
+ <rect x="98" y="324" width="288" height="84" rx="18" fill="#fff" stroke="#EEE2EE"/>
14
+ <text x="122" y="352" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Slack App dashboard</text>
15
+ <text x="122" y="378" fill="#475569" font-family="Arial, sans-serif" font-size="16">Basic Information + Socket Mode</text>
16
+ <rect x="98" y="424" width="288" height="84" rx="18" fill="#FDF4FF"/>
17
+ <text x="122" y="452" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Copy two tokens</text>
18
+ <text x="122" y="480" fill="#6B21A8" font-family="Arial, sans-serif" font-size="16">Bot User OAuth Token: xoxb-...</text>
19
+ <text x="122" y="502" fill="#6B21A8" font-family="Arial, sans-serif" font-size="16">App-Level Token: xapp-...</text>
20
+ <rect x="98" y="524" width="288" height="60" rx="18" fill="#fff" stroke="#EEE2EE"/>
21
+ <text x="122" y="560" fill="#475569" font-family="Arial, sans-serif" font-size="16">Install app into the target workspace</text>
22
+
23
+ <rect x="470" y="198" width="340" height="414" rx="26" fill="#FFFCFF" stroke="#E7D7E7" stroke-width="2"/>
24
+ <rect x="496" y="224" width="90" height="34" rx="17" fill="#FDE68A"/>
25
+ <text x="520" y="246" fill="#92400E" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 2</text>
26
+ <text x="496" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Fill Settings</text>
27
+ <rect x="496" y="324" width="288" height="220" rx="18" fill="#fff" stroke="#EEE2EE"/>
28
+ <text x="520" y="356" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Connector fields</text>
29
+ <text x="520" y="390" fill="#334155" font-family="Arial, sans-serif" font-size="17">Enabled: on</text>
30
+ <text x="520" y="422" fill="#334155" font-family="Arial, sans-serif" font-size="17">transport: socket_mode</text>
31
+ <text x="520" y="454" fill="#334155" font-family="Arial, sans-serif" font-size="17">bot_token: xoxb-...</text>
32
+ <text x="520" y="486" fill="#334155" font-family="Arial, sans-serif" font-size="17">app_token: xapp-...</text>
33
+ <text x="520" y="518" fill="#334155" font-family="Arial, sans-serif" font-size="17">require_mention_in_groups: recommended</text>
34
+ <rect x="496" y="560" width="288" height="24" rx="12" fill="#111827"/>
35
+
36
+ <rect x="868" y="198" width="340" height="414" rx="26" fill="#FFFDFF" stroke="#E7D7E7" stroke-width="2"/>
37
+ <rect x="894" y="224" width="90" height="34" rx="17" fill="#DCFCE7"/>
38
+ <text x="918" y="246" fill="#166534" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 3</text>
39
+ <text x="894" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Mention and verify</text>
40
+ <rect x="894" y="324" width="288" height="84" rx="18" fill="#fff" stroke="#EEE2EE"/>
41
+ <text x="918" y="352" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Generate one event</text>
42
+ <text x="918" y="378" fill="#475569" font-family="Arial, sans-serif" font-size="16">Mention the app or send one DM in Slack</text>
43
+ <rect x="894" y="424" width="288" height="84" rx="18" fill="#fff" stroke="#EEE2EE"/>
44
+ <text x="918" y="452" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Use discovered target</text>
45
+ <text x="918" y="478" fill="#475569" font-family="Arial, sans-serif" font-size="16">Let runtime fill the channel or DM id first</text>
46
+ <rect x="894" y="524" width="288" height="60" rx="18" fill="#ECFDF5"/>
47
+ <text x="918" y="560" fill="#166534" font-family="Arial, sans-serif" font-size="16">Check -&gt; Send probe</text>
48
+
49
+ <path d="M423 406H455" stroke="#94A3B8" stroke-width="8" stroke-linecap="round"/>
50
+ <path d="M821 406H853" stroke="#94A3B8" stroke-width="8" stroke-linecap="round"/>
51
+ </svg>
@@ -0,0 +1,55 @@
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="#F6FBFF"/>
3
+ <rect x="40" y="40" width="1200" height="640" rx="28" fill="#FFFFFF" stroke="#D6EAF8" stroke-width="2"/>
4
+ <circle cx="110" cy="108" r="34" fill="#26A5E4"/>
5
+ <path d="M125.4 88.5L118.2 123.1C117.7 125.5 116.4 126 114.5 124.9L103.3 116.7L97.9 121.9C97.3 122.5 96.8 123 95.5 123L96.3 111.6L117.2 92.7C118.1 91.9 117 91.4 115.8 92.1L90 108.4L78.9 104.9C76.5 104.1 76.4 102.4 79.4 101.2L122.6 84.5C124.6 83.8 126.4 85 125.4 88.5Z" fill="#fff"/>
6
+ <text x="164" y="98" fill="#0F172A" font-family="Arial, sans-serif" font-size="34" font-weight="700">Telegram Setup Flow</text>
7
+ <text x="164" y="138" fill="#475569" font-family="Arial, sans-serif" font-size="20">BotFather -&gt; DeepScientist polling -&gt; one DM -&gt; discovered target -&gt; probe</text>
8
+
9
+ <rect x="72" y="198" width="340" height="414" rx="26" fill="#F8FCFF" stroke="#B9DFF6" stroke-width="2"/>
10
+ <rect x="98" y="224" width="90" height="34" rx="17" fill="#E0F2FE"/>
11
+ <text x="122" y="246" fill="#0C4A6E" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 1</text>
12
+ <text x="98" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Open BotFather</text>
13
+ <rect x="98" y="324" width="288" height="68" rx="18" fill="#fff" stroke="#D4EAF7"/>
14
+ <text x="122" y="352" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Use /newbot</text>
15
+ <text x="122" y="378" fill="#475569" font-family="Arial, sans-serif" font-size="16">Create bot name + username</text>
16
+ <rect x="98" y="408" width="288" height="68" rx="18" fill="#fff" stroke="#D4EAF7"/>
17
+ <text x="122" y="436" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Copy bot_token</text>
18
+ <text x="122" y="462" fill="#475569" font-family="Arial, sans-serif" font-size="16">Keep the full token from BotFather</text>
19
+ <rect x="98" y="492" width="288" height="92" rx="18" fill="#EAF7FF"/>
20
+ <text x="122" y="522" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Official docs</text>
21
+ <text x="122" y="550" fill="#0369A1" font-family="Arial, sans-serif" font-size="16">core.telegram.org/bots</text>
22
+ <text x="122" y="574" fill="#0369A1" font-family="Arial, sans-serif" font-size="16">core.telegram.org/bots/tutorial</text>
23
+
24
+ <rect x="470" y="198" width="340" height="414" rx="26" fill="#F9FBFF" stroke="#CBDCF8" stroke-width="2"/>
25
+ <rect x="496" y="224" width="90" height="34" rx="17" fill="#EDE9FE"/>
26
+ <text x="520" y="246" fill="#4338CA" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 2</text>
27
+ <text x="496" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Fill Settings</text>
28
+ <rect x="496" y="324" width="288" height="200" rx="18" fill="#fff" stroke="#D8E2F4"/>
29
+ <text x="520" y="356" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Connector fields</text>
30
+ <text x="520" y="390" fill="#334155" font-family="Arial, sans-serif" font-size="17">Enabled: on</text>
31
+ <text x="520" y="422" fill="#334155" font-family="Arial, sans-serif" font-size="17">transport: polling</text>
32
+ <text x="520" y="454" fill="#334155" font-family="Arial, sans-serif" font-size="17">bot_token: paste from BotFather</text>
33
+ <text x="520" y="486" fill="#334155" font-family="Arial, sans-serif" font-size="17">command_prefix: /</text>
34
+ <text x="520" y="518" fill="#334155" font-family="Arial, sans-serif" font-size="17">require_mention_in_groups: optional</text>
35
+ <rect x="496" y="544" width="288" height="40" rx="14" fill="#111827"/>
36
+ <text x="594" y="570" fill="#fff" font-family="Arial, sans-serif" font-size="18" font-weight="700">Save first</text>
37
+
38
+ <rect x="868" y="198" width="340" height="414" rx="26" fill="#FBFCFF" stroke="#D8E2F4" stroke-width="2"/>
39
+ <rect x="894" y="224" width="90" height="34" rx="17" fill="#DCFCE7"/>
40
+ <text x="918" y="246" fill="#166534" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 3</text>
41
+ <text x="894" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Send one DM</text>
42
+ <rect x="894" y="324" width="288" height="68" rx="18" fill="#fff" stroke="#E1EAF7"/>
43
+ <text x="918" y="352" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Telegram message</text>
44
+ <text x="918" y="378" fill="#475569" font-family="Arial, sans-serif" font-size="16">Send /start or /help to the bot</text>
45
+ <rect x="894" y="408" width="288" height="68" rx="18" fill="#fff" stroke="#E1EAF7"/>
46
+ <text x="918" y="436" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Back to Settings</text>
47
+ <text x="918" y="462" fill="#475569" font-family="Arial, sans-serif" font-size="16">Pick the discovered target instead of typing ids</text>
48
+ <rect x="894" y="492" width="288" height="92" rx="18" fill="#ECFDF5"/>
49
+ <text x="918" y="522" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Final check</text>
50
+ <text x="918" y="550" fill="#166534" font-family="Arial, sans-serif" font-size="16">1. Click Check</text>
51
+ <text x="918" y="574" fill="#166534" font-family="Arial, sans-serif" font-size="16">2. Click Send probe</text>
52
+
53
+ <path d="M423 406H455" stroke="#94A3B8" stroke-width="8" stroke-linecap="round"/>
54
+ <path d="M821 406H853" stroke="#94A3B8" stroke-width="8" stroke-linecap="round"/>
55
+ </svg>
@@ -0,0 +1,51 @@
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="#F7FFF9"/>
3
+ <rect x="40" y="40" width="1200" height="640" rx="28" fill="#FFFFFF" stroke="#D7F1DF" stroke-width="2"/>
4
+ <circle cx="110" cy="108" r="34" fill="#25D366"/>
5
+ <path d="M126.4 108.3c-.4-.2-2.4-1.2-2.8-1.3-.4-.1-.6-.2-.9.2-.3.4-1.1 1.3-1.3 1.6-.2.3-.5.3-.9.1-.4-.2-1.7-.6-3.3-2-.8-.8-1.4-1.5-1.7-2-.2-.4 0-.6.2-.8l.6-.7c.2-.3.3-.4.4-.7.1-.3.1-.5 0-.7-.1-.2-.9-2.2-1.2-3-.3-.8-.7-.7-.9-.7H112c-.3 0-.7.1-1 .5-.4.4-1.4 1.4-1.4 3.4 0 2 1.5 3.9 1.7 4.2.2.3 2.8 4.3 7 6 .9.4 1.6.7 2.3.8 1 .3 1.9.3 2.6.2.8-.1 2.4-1 2.8-1.9.3-.9.3-1.8.2-2 0-.2-.4-.3-.8-.5Zm-7.5 10.2h-.1c-2.7 0-5.3-.7-7.6-2.1l-.5-.3-5.6 1.5 1.5-5.5-.3-.6c-1.5-2.4-2.3-5.1-2.3-7.9 0-8.3 6.7-15 15-15 4 0 7.8 1.6 10.7 4.4 2.8 2.9 4.4 6.7 4.4 10.7 0 8.3-6.7 15-15 15Z" fill="#fff"/>
6
+ <text x="164" y="98" fill="#0F172A" font-family="Arial, sans-serif" font-size="34" font-weight="700">WhatsApp Setup Flow</text>
7
+ <text x="164" y="138" fill="#475569" font-family="Arial, sans-serif" font-size="20">DeepScientist local session -&gt; choose QR or pairing code -&gt; persist session -&gt; one real message</text>
8
+
9
+ <rect x="72" y="198" width="340" height="414" rx="26" fill="#FBFFFC" stroke="#D6F3DE" stroke-width="2"/>
10
+ <rect x="98" y="224" width="90" height="34" rx="17" fill="#DCFCE7"/>
11
+ <text x="122" y="246" fill="#166534" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 1</text>
12
+ <text x="98" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Choose local path</text>
13
+ <rect x="98" y="324" width="288" height="84" rx="18" fill="#fff" stroke="#E1F5E7"/>
14
+ <text x="122" y="352" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Preferred transport</text>
15
+ <text x="122" y="378" fill="#475569" font-family="Arial, sans-serif" font-size="16">Use local_session, not Meta Cloud by default</text>
16
+ <rect x="98" y="424" width="288" height="84" rx="18" fill="#ECFDF5"/>
17
+ <text x="122" y="452" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Pick login mode</text>
18
+ <text x="122" y="480" fill="#166534" font-family="Arial, sans-serif" font-size="16">QR browser</text>
19
+ <text x="122" y="502" fill="#166534" font-family="Arial, sans-serif" font-size="16">or pairing code on headless machines</text>
20
+ <rect x="98" y="524" width="288" height="60" rx="18" fill="#fff" stroke="#E1F5E7"/>
21
+ <text x="122" y="560" fill="#475569" font-family="Arial, sans-serif" font-size="16">Keep session_dir stable</text>
22
+
23
+ <rect x="470" y="198" width="340" height="414" rx="26" fill="#FBFFFC" stroke="#D6F3DE" stroke-width="2"/>
24
+ <rect x="496" y="224" width="90" height="34" rx="17" fill="#DBEAFE"/>
25
+ <text x="520" y="246" fill="#1D4ED8" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 2</text>
26
+ <text x="496" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Fill Settings</text>
27
+ <rect x="496" y="324" width="288" height="220" rx="18" fill="#fff" stroke="#E1F5E7"/>
28
+ <text x="520" y="356" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Connector fields</text>
29
+ <text x="520" y="390" fill="#334155" font-family="Arial, sans-serif" font-size="17">Enabled: on</text>
30
+ <text x="520" y="422" fill="#334155" font-family="Arial, sans-serif" font-size="17">transport: local_session</text>
31
+ <text x="520" y="454" fill="#334155" font-family="Arial, sans-serif" font-size="17">auth_method: qr_browser or pairing_code</text>
32
+ <text x="520" y="486" fill="#334155" font-family="Arial, sans-serif" font-size="17">session_dir: keep default unless isolated</text>
33
+ <text x="520" y="518" fill="#334155" font-family="Arial, sans-serif" font-size="17">command_prefix: /</text>
34
+ <rect x="496" y="560" width="288" height="24" rx="12" fill="#111827"/>
35
+
36
+ <rect x="868" y="198" width="340" height="414" rx="26" fill="#FBFFFC" stroke="#D6F3DE" stroke-width="2"/>
37
+ <rect x="894" y="224" width="90" height="34" rx="17" fill="#FDE68A"/>
38
+ <text x="918" y="246" fill="#92400E" font-family="Arial, sans-serif" font-size="18" font-weight="700">Step 3</text>
39
+ <text x="894" y="292" fill="#0F172A" font-family="Arial, sans-serif" font-size="28" font-weight="700">Login and verify</text>
40
+ <rect x="894" y="324" width="288" height="84" rx="18" fill="#fff" stroke="#E1F5E7"/>
41
+ <text x="918" y="352" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Complete local login</text>
42
+ <text x="918" y="378" fill="#475569" font-family="Arial, sans-serif" font-size="16">Scan QR or confirm the pairing code flow</text>
43
+ <rect x="894" y="424" width="288" height="84" rx="18" fill="#fff" stroke="#E1F5E7"/>
44
+ <text x="918" y="452" fill="#0F172A" font-family="Arial, sans-serif" font-size="18" font-weight="700">Send one real message</text>
45
+ <text x="918" y="478" fill="#475569" font-family="Arial, sans-serif" font-size="16">Wait for a discovered target before probing</text>
46
+ <rect x="894" y="524" width="288" height="60" rx="18" fill="#FEFCE8"/>
47
+ <text x="918" y="560" fill="#92400E" font-family="Arial, sans-serif" font-size="16">Check -&gt; Send probe</text>
48
+
49
+ <path d="M423 406H455" stroke="#94A3B8" stroke-width="8" stroke-linecap="round"/>
50
+ <path d="M821 406H853" stroke="#94A3B8" stroke-width="8" stroke-linecap="round"/>
51
+ </svg>
@@ -0,0 +1,17 @@
1
+ <svg width="1400" height="880" viewBox="0 0 1400 880" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="1400" height="880" rx="36" fill="#F5F1EA"/>
3
+ <rect x="90" y="70" width="1220" height="740" rx="28" fill="#1F2430"/>
4
+ <text x="130" y="130" fill="#F4EFE7" font-size="34" font-family="Courier New, monospace" font-weight="700">Generated OpenClaw config snippet</text>
5
+ <text x="130" y="190" fill="#B8C3CC" font-size="24" font-family="Courier New, monospace">{</text>
6
+ <text x="170" y="230" fill="#B8C3CC" font-size="24" font-family="Courier New, monospace">"gateway": { "port": 18789, "http": { "endpoints": { "chatCompletions": { "enabled": true }}}},</text>
7
+ <text x="170" y="280" fill="#B8C3CC" font-size="24" font-family="Courier New, monospace">"plugins": { "entries": { "lingzhu": { "enabled": true, "config": {</text>
8
+ <text x="210" y="330" fill="#C8D7E0" font-size="24" font-family="Courier New, monospace">"authAk": "&lt;auth_ak&gt;",</text>
9
+ <text x="210" y="372" fill="#C8D7E0" font-size="24" font-family="Courier New, monospace">"agentId": "main",</text>
10
+ <text x="210" y="414" fill="#C8D7E0" font-size="24" font-family="Courier New, monospace">"includeMetadata": true,</text>
11
+ <text x="210" y="456" fill="#C8D7E0" font-size="24" font-family="Courier New, monospace">"requestTimeoutMs": 60000,</text>
12
+ <text x="210" y="498" fill="#C8D7E0" font-size="24" font-family="Courier New, monospace">"defaultNavigationMode": "0", "enableFollowUp": true,</text>
13
+ <text x="210" y="540" fill="#C8D7E0" font-size="24" font-family="Courier New, monospace">"followUpMaxCount": 3, "sessionMode": "per_user",</text>
14
+ <text x="210" y="582" fill="#C8D7E0" font-size="24" font-family="Courier New, monospace">"sessionNamespace": "lingzhu", "maxImageBytes": 5242880</text>
15
+ <text x="170" y="632" fill="#B8C3CC" font-size="24" font-family="Courier New, monospace">}}}}</text>
16
+ <text x="130" y="690" fill="#F0D9B5" font-size="22" font-family="Arial, sans-serif">DeepScientist generates the full snippet in Settings so you can copy it directly.</text>
17
+ </svg>
@@ -0,0 +1,16 @@
1
+ <svg width="1400" height="760" viewBox="0 0 1400 760" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="1400" height="760" rx="36" fill="#F4EFE7"/>
3
+ <rect x="90" y="80" width="1220" height="600" rx="28" fill="#FCFAF7" stroke="#D8D0C3"/>
4
+ <text x="130" y="150" fill="#2B2926" font-size="34" font-family="Arial, sans-serif" font-weight="700">Values to paste into the Lingzhu platform</text>
5
+
6
+ <rect x="130" y="210" width="1140" height="120" rx="22" fill="#E3EBEE" stroke="#A8BBC2"/>
7
+ <text x="165" y="260" fill="#314048" font-size="26" font-family="Arial, sans-serif" font-weight="700">SSE URL</text>
8
+ <text x="165" y="302" fill="#52616C" font-size="22" font-family="Arial, sans-serif">http://&lt;public-ip-or-domain&gt;:18789/metis/agent/api/sse</text>
9
+
10
+ <rect x="130" y="370" width="1140" height="120" rx="22" fill="#F1E5D8" stroke="#C8B99E"/>
11
+ <text x="165" y="420" fill="#3A352F" font-size="26" font-family="Arial, sans-serif" font-weight="700">Authorization / AK</text>
12
+ <text x="165" y="462" fill="#5B554E" font-size="22" font-family="Arial, sans-serif">Bearer &lt;the same auth_ak generated in DeepScientist&gt;</text>
13
+
14
+ <rect x="130" y="530" width="1140" height="100" rx="22" fill="#F7F2EC" stroke="#D8D0C3"/>
15
+ <text x="165" y="588" fill="#685F56" font-size="22" font-family="Arial, sans-serif">Reminder: devices need a public IP or public domain. Do not fill 127.0.0.1 here.</text>
16
+ </svg>
@@ -0,0 +1,30 @@
1
+ <svg width="1400" height="900" viewBox="0 0 1400 900" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="1400" height="900" rx="36" fill="#F5F1EA"/>
3
+ <rect x="70" y="70" width="1260" height="760" rx="28" fill="#FCFAF7" stroke="#D8D0C3"/>
4
+ <text x="110" y="140" fill="#2B2926" font-size="36" font-family="Arial, sans-serif" font-weight="700">Lingzhu Settings Overview</text>
5
+ <text x="110" y="182" fill="#7A7268" font-size="20" font-family="Arial, sans-serif">Fill endpoint, generate AK, then paste the public SSE URL and AK into the Lingzhu platform.</text>
6
+
7
+ <rect x="110" y="230" width="360" height="220" rx="24" fill="#F0E6D8" stroke="#C8B99E"/>
8
+ <text x="140" y="285" fill="#3A352F" font-size="28" font-family="Arial, sans-serif" font-weight="700">1. Gateway endpoint</text>
9
+ <text x="140" y="332" fill="#5B554E" font-size="20" font-family="Arial, sans-serif">- local_host</text>
10
+ <text x="140" y="365" fill="#5B554E" font-size="20" font-family="Arial, sans-serif">- gateway_port</text>
11
+ <text x="140" y="398" fill="#5B554E" font-size="20" font-family="Arial, sans-serif">- public_base_url</text>
12
+
13
+ <rect x="520" y="230" width="360" height="220" rx="24" fill="#DDE7EA" stroke="#A8BBC2"/>
14
+ <text x="550" y="285" fill="#2F3941" font-size="28" font-family="Arial, sans-serif" font-weight="700">2. Auth and identity</text>
15
+ <text x="550" y="332" fill="#52616C" font-size="20" font-family="Arial, sans-serif">- auth_ak</text>
16
+ <text x="550" y="365" fill="#52616C" font-size="20" font-family="Arial, sans-serif">- agent_id</text>
17
+ <text x="550" y="398" fill="#52616C" font-size="20" font-family="Arial, sans-serif">- system_prompt</text>
18
+
19
+ <rect x="930" y="230" width="290" height="220" rx="24" fill="#E8D7D7" stroke="#C4A8A8"/>
20
+ <text x="960" y="285" fill="#433232" font-size="28" font-family="Arial, sans-serif" font-weight="700">3. Probe</text>
21
+ <text x="960" y="332" fill="#685454" font-size="20" font-family="Arial, sans-serif">Run local health</text>
22
+ <text x="960" y="365" fill="#685454" font-size="20" font-family="Arial, sans-serif">then SSE smoke test</text>
23
+
24
+ <rect x="110" y="510" width="1110" height="250" rx="24" fill="#FBF7F2" stroke="#D8D0C3"/>
25
+ <text x="140" y="565" fill="#2B2926" font-size="28" font-family="Arial, sans-serif" font-weight="700">Generated values</text>
26
+ <text x="140" y="610" fill="#5B554E" font-size="20" font-family="Arial, sans-serif">- Local health URL: http://127.0.0.1:18789/metis/agent/api/health</text>
27
+ <text x="140" y="645" fill="#5B554E" font-size="20" font-family="Arial, sans-serif">- Local SSE URL: http://127.0.0.1:18789/metis/agent/api/sse</text>
28
+ <text x="140" y="680" fill="#5B554E" font-size="20" font-family="Arial, sans-serif">- Public SSE URL: http://&lt;public-ip&gt;:18789/metis/agent/api/sse</text>
29
+ <text x="140" y="715" fill="#5B554E" font-size="20" font-family="Arial, sans-serif">- OpenClaw config snippet and probe curl are generated below the form.</text>
30
+ </svg>
@@ -39,6 +39,28 @@ DeepScientist 现在使用 `uv` 管理锁定的本地 Python 运行时。如果
39
39
 
40
40
  默认情况下,DeepScientist home 在 macOS / Linux 上是 `~/DeepScientist`,在 Windows 上是 `%USERPROFILE%\\DeepScientist`。如果你希望放到别的路径,可以直接使用 `ds --home <path>`。
41
41
 
42
+ 如果你希望直接把“当前工作目录”作为 DeepScientist home,可以运行:
43
+
44
+ ```bash
45
+ ds --here
46
+ ```
47
+
48
+ 它等价于 `ds --home "$PWD"`。
49
+
50
+ 如果你是从源码仓库安装,并希望把默认的 CLI 安装基路径改到别的位置,可以使用:
51
+
52
+ ```bash
53
+ bash install.sh --dir /data/DeepScientist
54
+ ```
55
+
56
+ 如果你已经有一个正在使用的 DeepScientist home,之后又想安全迁移到别的路径,可以使用:
57
+
58
+ ```bash
59
+ ds migrate /data/DeepScientist
60
+ ```
61
+
62
+ `ds migrate` 会先显示当前绝对路径和目标绝对路径,停止托管 daemon,要求二次确认,校验复制结果,并在确认迁移成功后才删除旧路径。
63
+
42
64
  默认情况下,网页会运行在:
43
65
 
44
66
  ```text
@@ -44,7 +44,7 @@
44
44
  ```yaml
45
45
  home: ~/DeepScientist
46
46
  default_runner: codex
47
- default_locale: zh-CN
47
+ default_locale: en-US # 或 zh-CN,首次打开 Web 时会按浏览器语言初始化
48
48
  daemon:
49
49
  session_restore_on_start: true
50
50
  max_concurrent_quests: 1
@@ -67,6 +67,14 @@ skills:
67
67
  sync_global_on_init: true
68
68
  sync_quest_on_create: true
69
69
  sync_quest_on_open: true
70
+ bootstrap:
71
+ codex_ready: false
72
+ codex_last_checked_at: null
73
+ codex_last_result: {}
74
+ locale_source: browser
75
+ locale_initialized_from_browser: true
76
+ locale_initialized_at: 2026-03-18T00:00:00+00:00
77
+ locale_initialized_browser_locale: en-US
70
78
  connectors:
71
79
  auto_ack: true
72
80
  milestone_push: true
@@ -109,11 +117,12 @@ acp:
109
117
  **`default_locale`**
110
118
 
111
119
  - 类型:`string`
112
- - 默认值:`zh-CN`
120
+ - 默认值:首次打开 Web 时按浏览器语言初始化,随后会落盘为 `zh-CN` 或 `en-US`
113
121
  - 允许值:`zh-CN`、`en-US`
114
122
  - 页面标签:`Default locale`
115
- - 作用:影响系统 prompt 的默认语言倾向以及部分 UI 默认文案。
116
- - 何时修改:希望整个系统默认说中文还是英文时修改。
123
+ - 作用:影响系统 prompt 与运行时文案默认使用的语言。
124
+ - 何时修改:希望整个系统固定偏向中文或英文时修改。
125
+ - 注意事项:第一次浏览器初始化完成后,如果你在 `Settings` 手动修改这里,DeepScientist 会把它视为用户显式选择,后续不再自动跟随浏览器覆盖。
117
126
 
118
127
  ### Daemon policy
119
128
 
@@ -1107,7 +1116,7 @@ servers:
1107
1116
  ```yaml
1108
1117
  # config.yaml
1109
1118
  default_runner: codex
1110
- default_locale: zh-CN
1119
+ default_locale: en-US
1111
1120
  ui:
1112
1121
  host: 0.0.0.0
1113
1122
  port: 20999
@@ -11,6 +11,7 @@ DeepScientist 的构思、架构设计与实现过程中,受到了许多优秀
11
11
  - AlphaEvolve
12
12
  - OpenEvolve
13
13
  - EvoScientist
14
+ - Orchestra-Research/AI-Research-SKILLs
14
15
 
15
16
  这些项目在自动化科研、开放式探索、进化式搜索、实验组织与智能研究代理等方向上的探索,为 DeepScientist 的设计提供了重要参照。
16
17