@researai/deepscientist 1.5.13 → 1.5.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/assets/branding/logo-raster.png +0 -0
- package/bin/ds.js +134 -49
- package/docs/en/00_QUICK_START.md +2 -2
- package/docs/en/01_SETTINGS_REFERENCE.md +20 -4
- package/docs/en/03_QQ_CONNECTOR_GUIDE.md +19 -0
- package/docs/en/05_TUI_GUIDE.md +466 -96
- package/docs/en/10_WEIXIN_CONNECTOR_GUIDE.md +20 -0
- package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +2 -0
- package/docs/en/16_TELEGRAM_CONNECTOR_GUIDE.md +134 -0
- package/docs/en/17_WHATSAPP_CONNECTOR_GUIDE.md +126 -0
- package/docs/en/18_FEISHU_CONNECTOR_GUIDE.md +136 -0
- package/docs/en/README.md +8 -0
- package/docs/zh/00_QUICK_START.md +2 -2
- package/docs/zh/01_SETTINGS_REFERENCE.md +20 -4
- package/docs/zh/03_QQ_CONNECTOR_GUIDE.md +19 -0
- package/docs/zh/05_TUI_GUIDE.md +465 -82
- package/docs/zh/10_WEIXIN_CONNECTOR_GUIDE.md +20 -0
- package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +2 -0
- package/docs/zh/16_TELEGRAM_CONNECTOR_GUIDE.md +134 -0
- package/docs/zh/17_WHATSAPP_CONNECTOR_GUIDE.md +126 -0
- package/docs/zh/18_FEISHU_CONNECTOR_GUIDE.md +136 -0
- package/docs/zh/README.md +8 -0
- package/install.sh +2 -0
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/src/deepscientist/__init__.py +1 -1
- package/src/deepscientist/artifact/charts.py +567 -0
- package/src/deepscientist/artifact/guidance.py +50 -10
- package/src/deepscientist/artifact/metrics.py +228 -5
- package/src/deepscientist/artifact/schemas.py +3 -0
- package/src/deepscientist/artifact/service.py +4004 -538
- package/src/deepscientist/bash_exec/models.py +23 -0
- package/src/deepscientist/bash_exec/monitor.py +147 -67
- package/src/deepscientist/bash_exec/runtime.py +218 -156
- package/src/deepscientist/bash_exec/service.py +79 -64
- package/src/deepscientist/bash_exec/shells.py +87 -0
- package/src/deepscientist/bridges/connectors.py +51 -2
- package/src/deepscientist/config/models.py +6 -3
- package/src/deepscientist/config/service.py +7 -2
- package/src/deepscientist/connector/lingzhu_support.py +23 -4
- package/src/deepscientist/connector/weixin_support.py +122 -1
- package/src/deepscientist/daemon/api/handlers.py +75 -4
- package/src/deepscientist/daemon/api/router.py +1 -0
- package/src/deepscientist/daemon/app.py +869 -236
- package/src/deepscientist/doctor.py +51 -0
- package/src/deepscientist/file_lock.py +48 -0
- package/src/deepscientist/gitops/diff.py +167 -1
- package/src/deepscientist/mcp/server.py +331 -21
- package/src/deepscientist/process_control.py +161 -0
- package/src/deepscientist/prompts/builder.py +275 -491
- package/src/deepscientist/quest/service.py +2336 -145
- package/src/deepscientist/quest/stage_views.py +305 -29
- package/src/deepscientist/runners/base.py +2 -0
- package/src/deepscientist/runners/codex.py +88 -5
- package/src/deepscientist/runners/runtime_overrides.py +17 -1
- package/src/deepscientist/shared.py +6 -1
- package/src/prompts/contracts/shared_interaction.md +13 -4
- package/src/prompts/system.md +984 -1985
- package/src/skills/analysis-campaign/SKILL.md +31 -2
- package/src/skills/analysis-campaign/references/artifact-orchestration.md +1 -1
- package/src/skills/analysis-campaign/references/writing-facing-slice-examples.md +65 -0
- package/src/skills/baseline/SKILL.md +267 -994
- package/src/skills/baseline/references/baseline-checklist-template.md +21 -32
- package/src/skills/baseline/references/baseline-plan-template.md +41 -57
- package/src/skills/decision/SKILL.md +19 -2
- package/src/skills/experiment/SKILL.md +8 -2
- package/src/skills/finalize/SKILL.md +18 -0
- package/src/skills/idea/SKILL.md +78 -0
- package/src/skills/idea/references/idea-generation-playbook.md +100 -0
- package/src/skills/idea/references/outline-seeding-example.md +60 -0
- package/src/skills/intake-audit/SKILL.md +1 -1
- package/src/skills/optimize/SKILL.md +1644 -0
- package/src/skills/rebuttal/SKILL.md +2 -1
- package/src/skills/review/SKILL.md +2 -1
- package/src/skills/write/SKILL.md +80 -12
- package/src/skills/write/references/outline-evidence-contract-example.md +107 -0
- package/src/tui/dist/app/AppContainer.js +1445 -52
- package/src/tui/dist/components/Composer.js +1 -1
- package/src/tui/dist/components/ConfigScreen.js +190 -36
- package/src/tui/dist/components/GradientStatusText.js +1 -20
- package/src/tui/dist/components/InputPrompt.js +41 -32
- package/src/tui/dist/components/LoadingIndicator.js +1 -1
- package/src/tui/dist/components/Logo.js +61 -38
- package/src/tui/dist/components/MainContent.js +10 -3
- package/src/tui/dist/components/WelcomePanel.js +4 -12
- package/src/tui/dist/components/messages/AssistantMessage.js +1 -1
- package/src/tui/dist/components/messages/BashExecOperationMessage.js +3 -3
- package/src/tui/dist/components/messages/OperationMessage.js +1 -1
- package/src/tui/dist/index.js +28 -1
- package/src/tui/dist/layouts/DefaultAppLayout.js +3 -3
- package/src/tui/dist/lib/api.js +17 -0
- package/src/tui/dist/lib/connectors.js +261 -0
- package/src/tui/dist/semantic-colors.js +29 -19
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/{AiManusChatView-CnJcXynW.js → AiManusChatView-DDjbFnbt.js} +12 -12
- package/src/ui/dist/assets/{AnalysisPlugin-DeyzPEhV.js → AnalysisPlugin-Yb5IdmaU.js} +1 -1
- package/src/ui/dist/assets/CliPlugin-e64sreyu.js +31037 -0
- package/src/ui/dist/assets/{CodeEditorPlugin-B-xicq1e.js → CodeEditorPlugin-C4D2TIkU.js} +8 -8
- package/src/ui/dist/assets/{CodeViewerPlugin-DT54ysXa.js → CodeViewerPlugin-BVoNZIvC.js} +5 -5
- package/src/ui/dist/assets/{DocViewerPlugin-DQtKT-VD.js → DocViewerPlugin-CLChbllo.js} +3 -3
- package/src/ui/dist/assets/{GitDiffViewerPlugin-hqHbCfnv.js → GitDiffViewerPlugin-C4xeFyFQ.js} +20 -20
- package/src/ui/dist/assets/{ImageViewerPlugin-OcVo33jV.js → ImageViewerPlugin-OiMUAcLi.js} +5 -5
- package/src/ui/dist/assets/{LabCopilotPanel-DdGwhEUV.js → LabCopilotPanel-BjD2ThQF.js} +11 -11
- package/src/ui/dist/assets/{LabPlugin-Ciz1gDaX.js → LabPlugin-DQPg-NrB.js} +2 -2
- package/src/ui/dist/assets/{LatexPlugin-BhmjNQRC.js → LatexPlugin-CI05XAV9.js} +7 -7
- package/src/ui/dist/assets/{MarkdownViewerPlugin-BzdVH9Bx.js → MarkdownViewerPlugin-DpeBLYZf.js} +4 -4
- package/src/ui/dist/assets/{MarketplacePlugin-DmyHspXt.js → MarketplacePlugin-DolE58Q2.js} +3 -3
- package/src/ui/dist/assets/{NotebookEditor-BTVYRGkm.js → NotebookEditor-7Qm2rSWD.js} +11 -11
- package/src/ui/dist/assets/{NotebookEditor-BMXKrDRk.js → NotebookEditor-C1kWaxKi.js} +1 -1
- package/src/ui/dist/assets/{PdfLoader-CvcjJHXv.js → PdfLoader-BfOHw8Zw.js} +1 -1
- package/src/ui/dist/assets/{PdfMarkdownPlugin-DW2ej8Vk.js → PdfMarkdownPlugin-BulDREv1.js} +2 -2
- package/src/ui/dist/assets/{PdfViewerPlugin-CmlDxbhU.js → PdfViewerPlugin-C-daaOaL.js} +10 -10
- package/src/ui/dist/assets/{SearchPlugin-DAjQZPSv.js → SearchPlugin-CjpaiJ3A.js} +1 -1
- package/src/ui/dist/assets/{TextViewerPlugin-C-nVAZb_.js → TextViewerPlugin-BxIyqPQC.js} +5 -5
- package/src/ui/dist/assets/{VNCViewer-D7-dIYon.js → VNCViewer-HAg9mF7M.js} +10 -10
- package/src/ui/dist/assets/{bot-C_G4WtNI.js → bot-0DYntytV.js} +1 -1
- package/src/ui/dist/assets/{code-Cd7WfiWq.js → code-B20Slj_w.js} +1 -1
- package/src/ui/dist/assets/{file-content-B57zsL9y.js → file-content-DT24KFma.js} +1 -1
- package/src/ui/dist/assets/{file-diff-panel-DVoheLFq.js → file-diff-panel-DK13YPql.js} +1 -1
- package/src/ui/dist/assets/{file-socket-B5kXFxZP.js → file-socket-B4T2o4nR.js} +1 -1
- package/src/ui/dist/assets/{image-LLOjkMHF.js → image-DSeR_sDS.js} +1 -1
- package/src/ui/dist/assets/{index-hOUOWbW2.js → index-BrFje2Uk.js} +2 -2
- package/src/ui/dist/assets/{index-Dxa2eYMY.js → index-BwRJaoTl.js} +1 -1
- package/src/ui/dist/assets/{index-CLQauncb.js → index-D_E4281X.js} +5418 -28620
- package/src/ui/dist/assets/{index-C3r2iGrp.js → index-DnYB3xb1.js} +12 -12
- package/src/ui/dist/assets/{index-BQG-1s2o.css → index-G7AcWcMu.css} +43 -2
- package/src/ui/dist/assets/{monaco-BGGAEii3.js → monaco-LExaAN3Y.js} +1 -1
- package/src/ui/dist/assets/{pdf-effect-queue-DlEr1_y5.js → pdf-effect-queue-BJk5okWJ.js} +1 -1
- package/src/ui/dist/assets/{popover-CWJbJuYY.js → popover-D3Gg_FoV.js} +1 -1
- package/src/ui/dist/assets/{project-sync-CRJiucYO.js → project-sync-C_ygLlVU.js} +1 -1
- package/src/ui/dist/assets/{select-CoHB7pvH.js → select-CpAK6uWm.js} +2 -2
- package/src/ui/dist/assets/{sigma-D5aJWR8J.js → sigma-DEccaSgk.js} +1 -1
- package/src/ui/dist/assets/{square-check-big-DUK_mnkS.js → square-check-big-uUfyVsbD.js} +1 -1
- package/src/ui/dist/assets/{trash-ChU3SEE3.js → trash-CXvwwSe8.js} +1 -1
- package/src/ui/dist/assets/{useCliAccess-BrJBV3tY.js → useCliAccess-Bnop4mgR.js} +1 -1
- package/src/ui/dist/assets/{useFileDiffOverlay-C2OQaVWc.js → useFileDiffOverlay-B8eUAX0I.js} +1 -1
- package/src/ui/dist/assets/{wrap-text-C7Qqh-om.js → wrap-text-9vbOBpkW.js} +1 -1
- package/src/ui/dist/assets/{zoom-out-rtX0FKya.js → zoom-out-BgVMmOW4.js} +1 -1
- package/src/ui/dist/index.html +2 -2
- package/uv.lock +1 -1
- package/src/ui/dist/assets/CliPlugin-CB1YODQn.js +0 -5905
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# 16 Telegram Connector Guide
|
|
2
|
+
|
|
3
|
+
Use this guide when you want DeepScientist to continue a quest through Telegram.
|
|
4
|
+
|
|
5
|
+
Telegram in the current open-source runtime uses the built-in polling path:
|
|
6
|
+
|
|
7
|
+
- no public webhook is required
|
|
8
|
+
- the main credential is the BotFather token
|
|
9
|
+
- direct messages can auto-bind to the latest active quest when enabled
|
|
10
|
+
|
|
11
|
+
## 1. What Telegram support includes
|
|
12
|
+
|
|
13
|
+
DeepScientist currently supports Telegram through:
|
|
14
|
+
|
|
15
|
+
- `TelegramPollingService` for inbound polling
|
|
16
|
+
- `GenericRelayChannel` for bindings, inbox/outbox, targets, and runtime status
|
|
17
|
+
- `TelegramConnectorBridge` for direct outbound sends through the Bot API
|
|
18
|
+
|
|
19
|
+
This means Telegram already fits the same quest-binding model as the other connector surfaces.
|
|
20
|
+
|
|
21
|
+
## 2. Recommended setup path
|
|
22
|
+
|
|
23
|
+
1. Open BotFather.
|
|
24
|
+
2. Run `/newbot`.
|
|
25
|
+
3. Save the generated bot token.
|
|
26
|
+
4. Open `Settings > Connectors > Telegram`.
|
|
27
|
+
5. Enable Telegram.
|
|
28
|
+
6. Keep `transport: polling`.
|
|
29
|
+
7. Fill `bot_token`.
|
|
30
|
+
8. Save the connector.
|
|
31
|
+
9. Send one real private message such as `/start` or `/help` to the bot.
|
|
32
|
+
10. Return to DeepScientist and verify that the runtime has discovered the target conversation.
|
|
33
|
+
|
|
34
|
+
## 3. Important config fields
|
|
35
|
+
|
|
36
|
+
Main fields:
|
|
37
|
+
|
|
38
|
+
- `enabled`
|
|
39
|
+
- `transport`
|
|
40
|
+
- `bot_name`
|
|
41
|
+
- `bot_token`
|
|
42
|
+
- `command_prefix`
|
|
43
|
+
- `require_mention_in_groups`
|
|
44
|
+
- `dm_policy`
|
|
45
|
+
- `allow_from`
|
|
46
|
+
- `group_policy`
|
|
47
|
+
- `group_allow_from`
|
|
48
|
+
- `groups`
|
|
49
|
+
- `auto_bind_dm_to_active_quest`
|
|
50
|
+
|
|
51
|
+
For the full field reference, see [01 Settings Reference](./01_SETTINGS_REFERENCE.md).
|
|
52
|
+
|
|
53
|
+
## 4. Binding model
|
|
54
|
+
|
|
55
|
+
Telegram conversations are normalized into quest-aware connector ids like:
|
|
56
|
+
|
|
57
|
+
- `telegram:direct:<chat_id>`
|
|
58
|
+
- `telegram:group:<chat_id>`
|
|
59
|
+
|
|
60
|
+
DeepScientist binds quests to those normalized conversation ids, not to transient webhook state.
|
|
61
|
+
|
|
62
|
+
Important rules:
|
|
63
|
+
|
|
64
|
+
- one quest keeps local access plus at most one external connector target
|
|
65
|
+
- direct messages can auto-follow the latest active quest when auto-bind is enabled
|
|
66
|
+
- bindings can be changed later from the project settings page
|
|
67
|
+
|
|
68
|
+
## 5. Group chat behavior
|
|
69
|
+
|
|
70
|
+
By default:
|
|
71
|
+
|
|
72
|
+
- Telegram direct messages are allowed
|
|
73
|
+
- group behavior depends on `group_policy`
|
|
74
|
+
- if `require_mention_in_groups` is `true`, the bot only reacts when explicitly mentioned or when a command is used
|
|
75
|
+
|
|
76
|
+
This is the recommended default for larger shared groups.
|
|
77
|
+
|
|
78
|
+
## 6. Outbound delivery
|
|
79
|
+
|
|
80
|
+
Telegram outbound delivery currently focuses on text-first quest updates:
|
|
81
|
+
|
|
82
|
+
- progress
|
|
83
|
+
- milestone summaries
|
|
84
|
+
- binding notices
|
|
85
|
+
- structured quest replies
|
|
86
|
+
|
|
87
|
+
The current bridge uses `sendMessage` through the Bot API.
|
|
88
|
+
|
|
89
|
+
## 7. Troubleshooting
|
|
90
|
+
|
|
91
|
+
### Telegram does not appear in Settings
|
|
92
|
+
|
|
93
|
+
Telegram may be hidden by the system connector gate. Confirm that:
|
|
94
|
+
|
|
95
|
+
- `config.connectors.system_enabled.telegram` is `true`
|
|
96
|
+
|
|
97
|
+
### Validation says credentials are missing
|
|
98
|
+
|
|
99
|
+
Check that:
|
|
100
|
+
|
|
101
|
+
- `bot_token` is filled
|
|
102
|
+
- or `bot_token_env` points at a real environment variable
|
|
103
|
+
|
|
104
|
+
### The bot receives no messages
|
|
105
|
+
|
|
106
|
+
Check that:
|
|
107
|
+
|
|
108
|
+
- the bot token is correct
|
|
109
|
+
- the bot was started from Telegram at least once
|
|
110
|
+
- `transport` is still `polling`
|
|
111
|
+
- no stale public webhook is intercepting updates
|
|
112
|
+
|
|
113
|
+
### Group messages do not trigger the bot
|
|
114
|
+
|
|
115
|
+
Check:
|
|
116
|
+
|
|
117
|
+
- `group_policy`
|
|
118
|
+
- `groups`
|
|
119
|
+
- `group_allow_from`
|
|
120
|
+
- `require_mention_in_groups`
|
|
121
|
+
|
|
122
|
+
### The quest does not continue from Telegram
|
|
123
|
+
|
|
124
|
+
Check that:
|
|
125
|
+
|
|
126
|
+
- the conversation is bound to the intended quest
|
|
127
|
+
- or `auto_bind_dm_to_active_quest` is enabled for direct-message pairing
|
|
128
|
+
|
|
129
|
+
## 8. Related docs
|
|
130
|
+
|
|
131
|
+
- [01 Settings Reference](./01_SETTINGS_REFERENCE.md)
|
|
132
|
+
- [02 Start Research Guide](./02_START_RESEARCH_GUIDE.md)
|
|
133
|
+
- [09 Doctor](./09_DOCTOR.md)
|
|
134
|
+
- [13 Core Architecture Guide](./13_CORE_ARCHITECTURE_GUIDE.md)
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# 17 WhatsApp Connector Guide
|
|
2
|
+
|
|
3
|
+
Use this guide when you want DeepScientist to continue a quest through WhatsApp.
|
|
4
|
+
|
|
5
|
+
The current open-source runtime prefers the local-session path for WhatsApp:
|
|
6
|
+
|
|
7
|
+
- no public webhook is required for the recommended path
|
|
8
|
+
- the local auth/session state stays on your machine
|
|
9
|
+
- direct messages can auto-bind to the latest active quest when enabled
|
|
10
|
+
|
|
11
|
+
## 1. What WhatsApp support includes
|
|
12
|
+
|
|
13
|
+
DeepScientist currently supports WhatsApp through:
|
|
14
|
+
|
|
15
|
+
- `WhatsAppLocalSessionService` for local session sync and inbound ingestion
|
|
16
|
+
- `GenericRelayChannel` for bindings, inbox/outbox, targets, and runtime status
|
|
17
|
+
- `WhatsAppConnectorBridge` for outbound delivery
|
|
18
|
+
|
|
19
|
+
For the recommended path, outbound delivery is queued into the local-session outbox and handled by the local sidecar/session runtime.
|
|
20
|
+
|
|
21
|
+
## 2. Recommended setup path
|
|
22
|
+
|
|
23
|
+
1. Open `Settings > Connectors > WhatsApp`.
|
|
24
|
+
2. Enable WhatsApp.
|
|
25
|
+
3. Keep `transport: local_session`.
|
|
26
|
+
4. Keep or choose a writable `session_dir`.
|
|
27
|
+
5. Save the connector.
|
|
28
|
+
6. Complete the local login flow for the WhatsApp session.
|
|
29
|
+
7. Send one real message from WhatsApp.
|
|
30
|
+
8. Return to DeepScientist and verify that the target conversation has been discovered.
|
|
31
|
+
|
|
32
|
+
## 3. Important config fields
|
|
33
|
+
|
|
34
|
+
Main fields:
|
|
35
|
+
|
|
36
|
+
- `enabled`
|
|
37
|
+
- `transport`
|
|
38
|
+
- `bot_name`
|
|
39
|
+
- `auth_method`
|
|
40
|
+
- `session_dir`
|
|
41
|
+
- `command_prefix`
|
|
42
|
+
- `dm_policy`
|
|
43
|
+
- `allow_from`
|
|
44
|
+
- `group_policy`
|
|
45
|
+
- `group_allow_from`
|
|
46
|
+
- `groups`
|
|
47
|
+
- `auto_bind_dm_to_active_quest`
|
|
48
|
+
|
|
49
|
+
For the full field reference, see [01 Settings Reference](./01_SETTINGS_REFERENCE.md).
|
|
50
|
+
|
|
51
|
+
## 4. Binding model
|
|
52
|
+
|
|
53
|
+
WhatsApp conversations are normalized into quest-aware connector ids like:
|
|
54
|
+
|
|
55
|
+
- `whatsapp:direct:<jid>`
|
|
56
|
+
- `whatsapp:group:<jid>`
|
|
57
|
+
|
|
58
|
+
DeepScientist binds quests to those normalized conversation ids instead of transient browser/session state.
|
|
59
|
+
|
|
60
|
+
Important rules:
|
|
61
|
+
|
|
62
|
+
- one quest keeps local access plus at most one external connector target
|
|
63
|
+
- direct messages can auto-follow the latest active quest when auto-bind is enabled
|
|
64
|
+
- bindings can be changed later from the project settings page
|
|
65
|
+
|
|
66
|
+
## 5. Local-session runtime behavior
|
|
67
|
+
|
|
68
|
+
The current open-source path is local-session oriented:
|
|
69
|
+
|
|
70
|
+
- runtime status is mirrored into DeepScientist under connector logs
|
|
71
|
+
- inbound messages are drained from the local session inbox
|
|
72
|
+
- outbound messages are queued into the local session outbox
|
|
73
|
+
|
|
74
|
+
This keeps the recommended WhatsApp path local-first.
|
|
75
|
+
|
|
76
|
+
## 6. Group behavior
|
|
77
|
+
|
|
78
|
+
By default:
|
|
79
|
+
|
|
80
|
+
- direct messages can pair with the active quest
|
|
81
|
+
- group behavior depends on `group_policy`
|
|
82
|
+
- group allowlists can be enforced through `groups` and `group_allow_from`
|
|
83
|
+
|
|
84
|
+
## 7. Troubleshooting
|
|
85
|
+
|
|
86
|
+
### WhatsApp does not appear in Settings
|
|
87
|
+
|
|
88
|
+
WhatsApp may be hidden by the system connector gate. Confirm that:
|
|
89
|
+
|
|
90
|
+
- `config.connectors.system_enabled.whatsapp` is `true`
|
|
91
|
+
|
|
92
|
+
### Validation says the connector is not ready
|
|
93
|
+
|
|
94
|
+
Check that:
|
|
95
|
+
|
|
96
|
+
- `transport` is `local_session`
|
|
97
|
+
- `session_dir` points to a writable path
|
|
98
|
+
|
|
99
|
+
### No discovered targets appear
|
|
100
|
+
|
|
101
|
+
Check that:
|
|
102
|
+
|
|
103
|
+
- the local login/session flow has completed
|
|
104
|
+
- at least one real inbound message has reached the local session inbox
|
|
105
|
+
|
|
106
|
+
### The quest does not continue from WhatsApp
|
|
107
|
+
|
|
108
|
+
Check that:
|
|
109
|
+
|
|
110
|
+
- the conversation is bound to the intended quest
|
|
111
|
+
- or `auto_bind_dm_to_active_quest` is enabled for direct-message pairing
|
|
112
|
+
|
|
113
|
+
### Outbound messages do not arrive
|
|
114
|
+
|
|
115
|
+
Check that:
|
|
116
|
+
|
|
117
|
+
- the local-session sidecar or local session processor is running
|
|
118
|
+
- the local session outbox is being drained
|
|
119
|
+
- the target JID is correct
|
|
120
|
+
|
|
121
|
+
## 8. Related docs
|
|
122
|
+
|
|
123
|
+
- [01 Settings Reference](./01_SETTINGS_REFERENCE.md)
|
|
124
|
+
- [02 Start Research Guide](./02_START_RESEARCH_GUIDE.md)
|
|
125
|
+
- [09 Doctor](./09_DOCTOR.md)
|
|
126
|
+
- [13 Core Architecture Guide](./13_CORE_ARCHITECTURE_GUIDE.md)
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# 18 Feishu Connector Guide
|
|
2
|
+
|
|
3
|
+
Use this guide when you want DeepScientist to continue a quest through Feishu / Lark.
|
|
4
|
+
|
|
5
|
+
The current open-source runtime prefers the built-in long-connection path:
|
|
6
|
+
|
|
7
|
+
- no public event callback is required for the recommended setup
|
|
8
|
+
- the main credentials are `app_id` and `app_secret`
|
|
9
|
+
- direct messages can auto-bind to the latest active quest when enabled
|
|
10
|
+
|
|
11
|
+
## 1. What Feishu support includes
|
|
12
|
+
|
|
13
|
+
DeepScientist currently supports Feishu through:
|
|
14
|
+
|
|
15
|
+
- `FeishuLongConnectionService` for inbound long-connection delivery
|
|
16
|
+
- `GenericRelayChannel` for bindings, inbox/outbox, targets, and runtime status
|
|
17
|
+
- `FeishuConnectorBridge` for direct outbound sends
|
|
18
|
+
|
|
19
|
+
This means Feishu already fits the same quest-binding model as the other connector surfaces.
|
|
20
|
+
|
|
21
|
+
## 2. Recommended setup path
|
|
22
|
+
|
|
23
|
+
1. Open the Feishu / Lark developer platform.
|
|
24
|
+
2. Create an app.
|
|
25
|
+
3. Save `app_id` and `app_secret`.
|
|
26
|
+
4. Open `Settings > Connectors > Feishu`.
|
|
27
|
+
5. Enable Feishu.
|
|
28
|
+
6. Keep `transport: long_connection`.
|
|
29
|
+
7. Fill `app_id` and `app_secret`.
|
|
30
|
+
8. Save the connector.
|
|
31
|
+
9. Send one real message to the bot.
|
|
32
|
+
10. Return to DeepScientist and confirm that the target conversation has been discovered.
|
|
33
|
+
|
|
34
|
+
## 3. Important config fields
|
|
35
|
+
|
|
36
|
+
Main fields:
|
|
37
|
+
|
|
38
|
+
- `enabled`
|
|
39
|
+
- `transport`
|
|
40
|
+
- `bot_name`
|
|
41
|
+
- `app_id`
|
|
42
|
+
- `app_secret`
|
|
43
|
+
- `api_base_url`
|
|
44
|
+
- `command_prefix`
|
|
45
|
+
- `dm_policy`
|
|
46
|
+
- `allow_from`
|
|
47
|
+
- `group_policy`
|
|
48
|
+
- `group_allow_from`
|
|
49
|
+
- `groups`
|
|
50
|
+
- `require_mention_in_groups`
|
|
51
|
+
- `auto_bind_dm_to_active_quest`
|
|
52
|
+
|
|
53
|
+
For the full field reference, see [01 Settings Reference](./01_SETTINGS_REFERENCE.md).
|
|
54
|
+
|
|
55
|
+
## 4. Binding model
|
|
56
|
+
|
|
57
|
+
Feishu conversations are normalized into quest-aware connector ids like:
|
|
58
|
+
|
|
59
|
+
- `feishu:direct:<chat_id>`
|
|
60
|
+
- `feishu:group:<chat_id>`
|
|
61
|
+
|
|
62
|
+
DeepScientist binds quests to those normalized conversation ids, not to transient callback payloads.
|
|
63
|
+
|
|
64
|
+
Important rules:
|
|
65
|
+
|
|
66
|
+
- one quest keeps local access plus at most one external connector target
|
|
67
|
+
- direct messages can auto-follow the latest active quest when auto-bind is enabled
|
|
68
|
+
- bindings can be changed later from the project settings page
|
|
69
|
+
|
|
70
|
+
## 5. Group behavior
|
|
71
|
+
|
|
72
|
+
By default:
|
|
73
|
+
|
|
74
|
+
- direct messages are allowed
|
|
75
|
+
- group behavior depends on `group_policy`
|
|
76
|
+
- if `require_mention_in_groups` is `true`, the bot only reacts when explicitly mentioned or when a command is used
|
|
77
|
+
|
|
78
|
+
This is the recommended default for larger shared workspaces.
|
|
79
|
+
|
|
80
|
+
## 6. Outbound delivery
|
|
81
|
+
|
|
82
|
+
Feishu outbound delivery currently focuses on text-first quest updates:
|
|
83
|
+
|
|
84
|
+
- progress
|
|
85
|
+
- milestone summaries
|
|
86
|
+
- binding notices
|
|
87
|
+
- structured quest replies
|
|
88
|
+
|
|
89
|
+
The current bridge delivers through the Feishu Open Platform messaging API.
|
|
90
|
+
|
|
91
|
+
## 7. Troubleshooting
|
|
92
|
+
|
|
93
|
+
### Feishu does not appear in Settings
|
|
94
|
+
|
|
95
|
+
Feishu may be hidden by the system connector gate. Confirm that:
|
|
96
|
+
|
|
97
|
+
- `config.connectors.system_enabled.feishu` is `true`
|
|
98
|
+
|
|
99
|
+
### Validation says credentials are missing
|
|
100
|
+
|
|
101
|
+
Check that:
|
|
102
|
+
|
|
103
|
+
- `app_id` is filled
|
|
104
|
+
- `app_secret` is filled
|
|
105
|
+
- or `app_secret_env` points at a real environment variable
|
|
106
|
+
|
|
107
|
+
### No discovered targets appear
|
|
108
|
+
|
|
109
|
+
Check that:
|
|
110
|
+
|
|
111
|
+
- the app credentials are correct
|
|
112
|
+
- the bot has received at least one real inbound message
|
|
113
|
+
- `transport` is still `long_connection`
|
|
114
|
+
|
|
115
|
+
### Group messages do not trigger the bot
|
|
116
|
+
|
|
117
|
+
Check:
|
|
118
|
+
|
|
119
|
+
- `group_policy`
|
|
120
|
+
- `groups`
|
|
121
|
+
- `group_allow_from`
|
|
122
|
+
- `require_mention_in_groups`
|
|
123
|
+
|
|
124
|
+
### The quest does not continue from Feishu
|
|
125
|
+
|
|
126
|
+
Check that:
|
|
127
|
+
|
|
128
|
+
- the conversation is bound to the intended quest
|
|
129
|
+
- or `auto_bind_dm_to_active_quest` is enabled for direct-message pairing
|
|
130
|
+
|
|
131
|
+
## 8. Related docs
|
|
132
|
+
|
|
133
|
+
- [01 Settings Reference](./01_SETTINGS_REFERENCE.md)
|
|
134
|
+
- [02 Start Research Guide](./02_START_RESEARCH_GUIDE.md)
|
|
135
|
+
- [09 Doctor](./09_DOCTOR.md)
|
|
136
|
+
- [13 Core Architecture Guide](./13_CORE_ARCHITECTURE_GUIDE.md)
|
package/docs/en/README.md
CHANGED
|
@@ -30,6 +30,8 @@ This page is the shortest path to the right document.
|
|
|
30
30
|
|
|
31
31
|
- [00 Quick Start](./00_QUICK_START.md)
|
|
32
32
|
Start here if you want to install DeepScientist, launch it locally, and create your first project.
|
|
33
|
+
- [05 TUI Guide](./05_TUI_GUIDE.md)
|
|
34
|
+
Read this if your main surface is the terminal and you want one end-to-end path through `ds --tui`, quests, connectors, and cross-surface work.
|
|
33
35
|
- [15 Codex Provider Setup](./15_CODEX_PROVIDER_SETUP.md)
|
|
34
36
|
Read this when you want to run DeepScientist through MiniMax, GLM, Volcengine Ark, Alibaba Bailian, or another Codex profile.
|
|
35
37
|
- [12 Guided Workflow Tour](./12_GUIDED_WORKFLOW_TOUR.md)
|
|
@@ -48,6 +50,12 @@ This page is the shortest path to the right document.
|
|
|
48
50
|
|
|
49
51
|
## If you want to collaborate through external surfaces
|
|
50
52
|
|
|
53
|
+
- [16 Telegram Connector Guide](./16_TELEGRAM_CONNECTOR_GUIDE.md)
|
|
54
|
+
Bind Telegram through the built-in polling runtime and continue quests from bot chats.
|
|
55
|
+
- [17 WhatsApp Connector Guide](./17_WHATSAPP_CONNECTOR_GUIDE.md)
|
|
56
|
+
Bind WhatsApp through the local-session runtime and continue quests from local chat sessions.
|
|
57
|
+
- [18 Feishu Connector Guide](./18_FEISHU_CONNECTOR_GUIDE.md)
|
|
58
|
+
Bind Feishu through the built-in long-connection runtime and continue quests from bot chats.
|
|
51
59
|
- [10 Weixin Connector Guide](./10_WEIXIN_CONNECTOR_GUIDE.md)
|
|
52
60
|
Bind personal WeChat through DeepScientist's built-in QR login and iLink runtime.
|
|
53
61
|
- [03 QQ Connector Guide](./03_QQ_CONNECTOR_GUIDE.md)
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
本文中的截图直接使用当前在线页面 `deepscientist.cc:20999` 作为示例。你本地运行后的页面 `127.0.0.1:20999` 通常会与它保持一致或非常接近。
|
|
15
15
|
|
|
16
|
-
当前平台支持:DeepScientist
|
|
16
|
+
当前平台支持:DeepScientist 目前完整支持 Linux 和 macOS。原生 Windows 支持目前仍处于实验阶段;如果你希望获得最接近 Linux 的终端行为,仍然建议优先使用 WSL2。
|
|
17
17
|
|
|
18
18
|
## 安全建议:先隔离,再启动
|
|
19
19
|
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
|
|
61
61
|
## 1. 先安装 Node.js,再安装 DeepScientist
|
|
62
62
|
|
|
63
|
-
DeepScientist
|
|
63
|
+
DeepScientist 目前完整支持 Linux 和 macOS。原生 Windows 支持目前仍处于实验阶段;如果你希望获得更接近 Linux 的 shell 行为,仍然建议优先使用 WSL2。
|
|
64
64
|
|
|
65
65
|
在安装 DeepScientist 本身之前,请先从 Node.js 官方页面安装 Node.js:
|
|
66
66
|
|
|
@@ -409,8 +409,8 @@ codex:
|
|
|
409
409
|
profile: ""
|
|
410
410
|
model: gpt-5.4
|
|
411
411
|
model_reasoning_effort: xhigh
|
|
412
|
-
approval_policy:
|
|
413
|
-
sandbox_mode:
|
|
412
|
+
approval_policy: never
|
|
413
|
+
sandbox_mode: danger-full-access
|
|
414
414
|
retry_on_failure: true
|
|
415
415
|
retry_max_attempts: 5
|
|
416
416
|
retry_initial_backoff_sec: 1.0
|
|
@@ -488,19 +488,35 @@ claude:
|
|
|
488
488
|
**`approval_policy`**
|
|
489
489
|
|
|
490
490
|
- 类型:`string`
|
|
491
|
-
- 默认值:`
|
|
491
|
+
- 默认值:`never`
|
|
492
492
|
- 页面标签:`Approval policy`
|
|
493
493
|
- 允许值:`never`、`on-failure`、`on-request`、`untrusted`
|
|
494
494
|
- 作用:控制高权限动作如何申请许可。
|
|
495
|
+
- 运行说明:launcher 现在默认以 YOLO 模式启动 Codex。若要临时关闭,可显式传 `ds --yolo false`,这会恢复到 `approval_policy=on-request` 与 `sandbox_mode=workspace-write`。
|
|
495
496
|
|
|
496
497
|
**`sandbox_mode`**
|
|
497
498
|
|
|
498
499
|
- 类型:`string`
|
|
499
|
-
- 默认值:`
|
|
500
|
+
- 默认值:`danger-full-access`
|
|
500
501
|
- 页面标签:`Sandbox mode`
|
|
501
502
|
- 允许值:`read-only`、`workspace-write`、`danger-full-access`
|
|
502
503
|
- 作用:控制 runner 的文件系统/进程访问权限。
|
|
503
504
|
|
|
505
|
+
**`env`**
|
|
506
|
+
|
|
507
|
+
- 类型:`mapping<string, string>`
|
|
508
|
+
- 默认值:`{}`
|
|
509
|
+
- 页面入口:
|
|
510
|
+
- 全局设置:可在 `runners` 结构化表单中直接编辑 `env`
|
|
511
|
+
- 项目设置:`Project settings -> Codex environment`
|
|
512
|
+
- 项目设置行为:
|
|
513
|
+
- 点击 `Add` 新增一行环境变量
|
|
514
|
+
- 默认会显示 `OPENAI_BASE_URL` 和 `OPENAI_API_KEY`
|
|
515
|
+
- 修改后不会自动保存,需要手动点击 `Save env vars`
|
|
516
|
+
- 空值会被忽略,不会注入到 Codex 进程
|
|
517
|
+
- 作用:DeepScientist 启动 Codex run 时,额外传入给 Codex 的环境变量。
|
|
518
|
+
- 常见用途:需要 API Key 或自定义 Base URL 的 provider-backed Codex 配置。
|
|
519
|
+
|
|
504
520
|
**`retry_on_failure`**
|
|
505
521
|
|
|
506
522
|
- 类型:`boolean`
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
- 在 QQ 中使用 `/new`、`/use latest`、`/status` 等命令
|
|
21
21
|
- 在 `Settings` 页面看到自动检测到的 `openid`
|
|
22
22
|
- 从 `Settings` 页面执行非破坏性的连接测试
|
|
23
|
+
- 当 QQ 绑定到 quest 时,在每次主实验完成后自动收到按指标生成的时间线图片
|
|
23
24
|
|
|
24
25
|
### 部署前检查清单
|
|
25
26
|
|
|
@@ -221,6 +222,24 @@ QQ readiness is healthy, but no OpenID has been learned yet. Save credentials, t
|
|
|
221
222
|
- 再次点击“发送测试消息”时,不再提示 target 为空
|
|
222
223
|
- 如果当前已经有最新项目,普通文本会自动进入该项目;如果还没有项目,则优先返回帮助信息
|
|
223
224
|
|
|
225
|
+
## 5.3 主实验指标图自动推送
|
|
226
|
+
|
|
227
|
+
当 QQ 是当前 quest 的绑定连接器时,DeepScientist 现在会在每次主实验完成后自动发送指标时间线图片。
|
|
228
|
+
|
|
229
|
+
当前行为:
|
|
230
|
+
|
|
231
|
+
- 每个指标生成一张图
|
|
232
|
+
- 如果 baseline 存在该指标,会画一条横向虚线作为 baseline 参考线
|
|
233
|
+
- 系统会自动判断该指标是“越高越好”还是“越低越好”
|
|
234
|
+
- 超过 baseline 的点会额外标星
|
|
235
|
+
- 最新点使用莫兰迪深红色填充
|
|
236
|
+
- 较早的点使用莫兰迪深蓝色填充
|
|
237
|
+
- 如果指标有多个,DeepScientist 会按顺序发送,并在相邻两张图之间间隔约 2 秒
|
|
238
|
+
|
|
239
|
+
这些图来自 quest 本地生成的文件,并会作为 QQ 原生图片自动发送。
|
|
240
|
+
|
|
241
|
+
如果你想关闭这项自动推送,可以在 QQ 连接器配置中关闭 `auto_send_main_experiment_png`。
|
|
242
|
+
|
|
224
243
|
### 5.2 报错提示速查
|
|
225
244
|
|
|
226
245
|
| 提示 | 代表什么 | 应该怎么做 |
|