@researai/deepscientist 1.5.14 → 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/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 +6 -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/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 +6 -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 +3534 -191
- 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/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 +758 -206
- 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 +173 -5
- package/src/deepscientist/process_control.py +161 -0
- package/src/deepscientist/prompts/builder.py +267 -442
- package/src/deepscientist/quest/service.py +2255 -163
- package/src/deepscientist/quest/stage_views.py +171 -0
- 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/prompts/contracts/shared_interaction.md +13 -4
- package/src/prompts/system.md +916 -72
- 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 +2 -0
- 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 +3 -0
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/{AiManusChatView-DaF9Nge_.js → AiManusChatView-DDjbFnbt.js} +12 -12
- package/src/ui/dist/assets/{AnalysisPlugin-BSVx6dXE.js → AnalysisPlugin-Yb5IdmaU.js} +1 -1
- package/src/ui/dist/assets/CliPlugin-e64sreyu.js +31037 -0
- package/src/ui/dist/assets/{CodeEditorPlugin-DU9G0Tox.js → CodeEditorPlugin-C4D2TIkU.js} +8 -8
- package/src/ui/dist/assets/{CodeViewerPlugin-DoX_fI9l.js → CodeViewerPlugin-BVoNZIvC.js} +5 -5
- package/src/ui/dist/assets/{DocViewerPlugin-C4FWIXuU.js → DocViewerPlugin-CLChbllo.js} +3 -3
- package/src/ui/dist/assets/{GitDiffViewerPlugin-BgfFMgtf.js → GitDiffViewerPlugin-C4xeFyFQ.js} +20 -20
- package/src/ui/dist/assets/{ImageViewerPlugin-tcPkfY_x.js → ImageViewerPlugin-OiMUAcLi.js} +5 -5
- package/src/ui/dist/assets/{LabCopilotPanel-_dKV60Bf.js → LabCopilotPanel-BjD2ThQF.js} +11 -11
- package/src/ui/dist/assets/{LabPlugin-Bje0ayoC.js → LabPlugin-DQPg-NrB.js} +2 -2
- package/src/ui/dist/assets/{LatexPlugin-CVsBzAln.js → LatexPlugin-CI05XAV9.js} +7 -7
- package/src/ui/dist/assets/{MarkdownViewerPlugin-xjmrqv_8.js → MarkdownViewerPlugin-DpeBLYZf.js} +4 -4
- package/src/ui/dist/assets/{MarketplacePlugin-mMM2A8wP.js → MarketplacePlugin-DolE58Q2.js} +3 -3
- package/src/ui/dist/assets/{NotebookEditor-3kVDSOBo.js → NotebookEditor-7Qm2rSWD.js} +11 -11
- package/src/ui/dist/assets/{NotebookEditor-SoJ8X-MO.js → NotebookEditor-C1kWaxKi.js} +1 -1
- package/src/ui/dist/assets/{PdfLoader-DElVuHl9.js → PdfLoader-BfOHw8Zw.js} +1 -1
- package/src/ui/dist/assets/{PdfMarkdownPlugin-Bq88XT4G.js → PdfMarkdownPlugin-BulDREv1.js} +2 -2
- package/src/ui/dist/assets/{PdfViewerPlugin-CsCXMo9S.js → PdfViewerPlugin-C-daaOaL.js} +10 -10
- package/src/ui/dist/assets/{SearchPlugin-oUPvy19k.js → SearchPlugin-CjpaiJ3A.js} +1 -1
- package/src/ui/dist/assets/{TextViewerPlugin-CRkT9yNy.js → TextViewerPlugin-BxIyqPQC.js} +5 -5
- package/src/ui/dist/assets/{VNCViewer-BgbuvWhR.js → VNCViewer-HAg9mF7M.js} +10 -10
- package/src/ui/dist/assets/{bot-v_RASACv.js → bot-0DYntytV.js} +1 -1
- package/src/ui/dist/assets/{code-5hC9d0VH.js → code-B20Slj_w.js} +1 -1
- package/src/ui/dist/assets/{file-content-D1PxfOrp.js → file-content-DT24KFma.js} +1 -1
- package/src/ui/dist/assets/{file-diff-panel-DG1oT_Hj.js → file-diff-panel-DK13YPql.js} +1 -1
- package/src/ui/dist/assets/{file-socket-BmdFYQlk.js → file-socket-B4T2o4nR.js} +1 -1
- package/src/ui/dist/assets/{image-Dqe2X2tW.js → image-DSeR_sDS.js} +1 -1
- package/src/ui/dist/assets/{index-RDlNXXx1.js → index-BrFje2Uk.js} +2 -2
- package/src/ui/dist/assets/{index-DVsMKK_y.js → index-BwRJaoTl.js} +1 -1
- package/src/ui/dist/assets/{index-Nt9hS4ck.js → index-D_E4281X.js} +5007 -28514
- package/src/ui/dist/assets/{index-Duvz8Ip0.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-DIXge1CP.js → monaco-LExaAN3Y.js} +1 -1
- package/src/ui/dist/assets/{pdf-effect-queue-BBTTQaO-.js → pdf-effect-queue-BJk5okWJ.js} +1 -1
- package/src/ui/dist/assets/{popover-BWlolyxo.js → popover-D3Gg_FoV.js} +1 -1
- package/src/ui/dist/assets/{project-sync-BM5PkFH4.js → project-sync-C_ygLlVU.js} +1 -1
- package/src/ui/dist/assets/{select-D4dAtrA8.js → select-CpAK6uWm.js} +2 -2
- package/src/ui/dist/assets/{sigma-CKbE5jJT.js → sigma-DEccaSgk.js} +1 -1
- package/src/ui/dist/assets/{square-check-big-CZNGMgiB.js → square-check-big-uUfyVsbD.js} +1 -1
- package/src/ui/dist/assets/{trash-DaB37xAz.js → trash-CXvwwSe8.js} +1 -1
- package/src/ui/dist/assets/{useCliAccess-C2OmAcWe.js → useCliAccess-Bnop4mgR.js} +1 -1
- package/src/ui/dist/assets/{useFileDiffOverlay-Dowd1Ij4.js → useFileDiffOverlay-B8eUAX0I.js} +1 -1
- package/src/ui/dist/assets/{wrap-text-BGjAhAUq.js → wrap-text-9vbOBpkW.js} +1 -1
- package/src/ui/dist/assets/{zoom-out-dMZQMXzc.js → zoom-out-BgVMmOW4.js} +1 -1
- package/src/ui/dist/index.html +2 -2
- package/src/ui/dist/assets/CliPlugin-C9gzJX41.js +0 -5905
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# 16 Telegram Connector 指南
|
|
2
|
+
|
|
3
|
+
当你希望通过 Telegram 继续推进 DeepScientist quest 时,请阅读这份指南。
|
|
4
|
+
|
|
5
|
+
当前开源版本中的 Telegram 连接方式使用内置 polling 路径:
|
|
6
|
+
|
|
7
|
+
- 不需要公网 webhook
|
|
8
|
+
- 核心凭据是 BotFather token
|
|
9
|
+
- 如果启用自动绑定,私聊可以自动跟随最新活跃 quest
|
|
10
|
+
|
|
11
|
+
## 1. Telegram 支持包含什么
|
|
12
|
+
|
|
13
|
+
当前 Telegram connector 由以下部分组成:
|
|
14
|
+
|
|
15
|
+
- `TelegramPollingService`:负责入站轮询
|
|
16
|
+
- `GenericRelayChannel`:负责绑定、inbox/outbox、target 与运行时状态
|
|
17
|
+
- `TelegramConnectorBridge`:负责通过 Bot API 直接出站发送
|
|
18
|
+
|
|
19
|
+
这意味着 Telegram 已经接入了和其他 connector 一致的 quest 绑定模型。
|
|
20
|
+
|
|
21
|
+
## 2. 推荐配置路径
|
|
22
|
+
|
|
23
|
+
1. 打开 BotFather。
|
|
24
|
+
2. 执行 `/newbot`。
|
|
25
|
+
3. 保存生成的 bot token。
|
|
26
|
+
4. 打开 `Settings > Connectors > Telegram`。
|
|
27
|
+
5. 启用 Telegram。
|
|
28
|
+
6. 保持 `transport: polling`。
|
|
29
|
+
7. 填写 `bot_token`。
|
|
30
|
+
8. 保存连接器配置。
|
|
31
|
+
9. 从 Telegram 给 bot 发送一条真实私聊,例如 `/start` 或 `/help`。
|
|
32
|
+
10. 回到 DeepScientist,确认运行时已经发现这个 target conversation。
|
|
33
|
+
|
|
34
|
+
## 3. 关键配置字段
|
|
35
|
+
|
|
36
|
+
主要字段包括:
|
|
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
|
+
完整字段说明请参考 [01 设置参考](./01_SETTINGS_REFERENCE.md)。
|
|
52
|
+
|
|
53
|
+
## 4. 绑定模型
|
|
54
|
+
|
|
55
|
+
Telegram 会话会被规范化成 quest-aware connector id,例如:
|
|
56
|
+
|
|
57
|
+
- `telegram:direct:<chat_id>`
|
|
58
|
+
- `telegram:group:<chat_id>`
|
|
59
|
+
|
|
60
|
+
DeepScientist 绑定的是这个规范化后的 conversation id,而不是临时 webhook 状态。
|
|
61
|
+
|
|
62
|
+
重要规则:
|
|
63
|
+
|
|
64
|
+
- 一个 quest 会保留本地访问,并且最多只绑定 1 个外部 connector target
|
|
65
|
+
- 如果启用了自动绑定,Telegram 私聊可以自动跟随最新活跃 quest
|
|
66
|
+
- 之后也可以在项目设置页修改绑定
|
|
67
|
+
|
|
68
|
+
## 5. 群聊行为
|
|
69
|
+
|
|
70
|
+
默认情况下:
|
|
71
|
+
|
|
72
|
+
- Telegram 私聊允许直接触发
|
|
73
|
+
- 群聊行为由 `group_policy` 控制
|
|
74
|
+
- 如果 `require_mention_in_groups` 为 `true`,机器人只有在被明确 mention,或收到命令时才会响应
|
|
75
|
+
|
|
76
|
+
这也是更适合多人群聊的推荐默认值。
|
|
77
|
+
|
|
78
|
+
## 6. 出站投递
|
|
79
|
+
|
|
80
|
+
当前 Telegram connector 主要聚焦于 text-first 的 quest 更新:
|
|
81
|
+
|
|
82
|
+
- 进度
|
|
83
|
+
- 里程碑摘要
|
|
84
|
+
- 绑定通知
|
|
85
|
+
- 结构化 quest 回复
|
|
86
|
+
|
|
87
|
+
当前 bridge 使用 Telegram Bot API 的 `sendMessage` 发送。
|
|
88
|
+
|
|
89
|
+
## 7. 常见问题排查
|
|
90
|
+
|
|
91
|
+
### 设置页里看不到 Telegram
|
|
92
|
+
|
|
93
|
+
Telegram 可能被 system connector gate 隐藏了。请确认:
|
|
94
|
+
|
|
95
|
+
- `config.connectors.system_enabled.telegram` 为 `true`
|
|
96
|
+
|
|
97
|
+
### 校验提示缺少凭据
|
|
98
|
+
|
|
99
|
+
请检查:
|
|
100
|
+
|
|
101
|
+
- `bot_token` 是否已填写
|
|
102
|
+
- 或 `bot_token_env` 是否指向真实存在的环境变量
|
|
103
|
+
|
|
104
|
+
### 机器人收不到消息
|
|
105
|
+
|
|
106
|
+
请检查:
|
|
107
|
+
|
|
108
|
+
- bot token 是否正确
|
|
109
|
+
- 是否至少从 Telegram 端先和 bot 交互过一次
|
|
110
|
+
- `transport` 是否仍然是 `polling`
|
|
111
|
+
- 是否存在旧的 webhook 抢占了更新流
|
|
112
|
+
|
|
113
|
+
### 群聊里 bot 不响应
|
|
114
|
+
|
|
115
|
+
请检查:
|
|
116
|
+
|
|
117
|
+
- `group_policy`
|
|
118
|
+
- `groups`
|
|
119
|
+
- `group_allow_from`
|
|
120
|
+
- `require_mention_in_groups`
|
|
121
|
+
|
|
122
|
+
### Telegram 里无法继续已有 quest
|
|
123
|
+
|
|
124
|
+
请检查:
|
|
125
|
+
|
|
126
|
+
- 当前会话是否已经绑定到目标 quest
|
|
127
|
+
- 或 `auto_bind_dm_to_active_quest` 是否已经启用
|
|
128
|
+
|
|
129
|
+
## 8. 相关文档
|
|
130
|
+
|
|
131
|
+
- [01 设置参考](./01_SETTINGS_REFERENCE.md)
|
|
132
|
+
- [02 Start Research 参考](./02_START_RESEARCH_GUIDE.md)
|
|
133
|
+
- [09 启动诊断](./09_DOCTOR.md)
|
|
134
|
+
- [13 核心架构说明](./13_CORE_ARCHITECTURE_GUIDE.md)
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# 17 WhatsApp Connector 指南
|
|
2
|
+
|
|
3
|
+
当你希望通过 WhatsApp 继续推进 DeepScientist quest 时,请阅读这份指南。
|
|
4
|
+
|
|
5
|
+
当前开源版本里的 WhatsApp 推荐路径使用本地 local-session 方案:
|
|
6
|
+
|
|
7
|
+
- 不需要公网 webhook
|
|
8
|
+
- 本地认证 / 会话状态保存在你自己的机器上
|
|
9
|
+
- 如果启用自动绑定,私聊可以自动跟随最新活跃 quest
|
|
10
|
+
|
|
11
|
+
## 1. WhatsApp 支持包含什么
|
|
12
|
+
|
|
13
|
+
当前 WhatsApp connector 由以下部分组成:
|
|
14
|
+
|
|
15
|
+
- `WhatsAppLocalSessionService`:负责本地会话同步与入站接入
|
|
16
|
+
- `GenericRelayChannel`:负责 bindings、inbox/outbox、targets 与运行时状态
|
|
17
|
+
- `WhatsAppConnectorBridge`:负责出站投递
|
|
18
|
+
|
|
19
|
+
在推荐路径下,出站消息会先写入 local-session outbox,再由本地 session / sidecar 处理。
|
|
20
|
+
|
|
21
|
+
## 2. 推荐配置路径
|
|
22
|
+
|
|
23
|
+
1. 打开 `Settings > Connectors > WhatsApp`。
|
|
24
|
+
2. 启用 WhatsApp。
|
|
25
|
+
3. 保持 `transport: local_session`。
|
|
26
|
+
4. 保持默认或指定一个可写的 `session_dir`。
|
|
27
|
+
5. 保存连接器配置。
|
|
28
|
+
6. 完成本地 WhatsApp 会话登录流程。
|
|
29
|
+
7. 从 WhatsApp 发送一条真实消息。
|
|
30
|
+
8. 回到 DeepScientist,确认目标会话已经被自动发现。
|
|
31
|
+
|
|
32
|
+
## 3. 关键配置字段
|
|
33
|
+
|
|
34
|
+
主要字段包括:
|
|
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
|
+
完整字段说明请参考 [01 设置参考](./01_SETTINGS_REFERENCE.md)。
|
|
50
|
+
|
|
51
|
+
## 4. 绑定模型
|
|
52
|
+
|
|
53
|
+
WhatsApp 会话会被规范化成 quest-aware connector id,例如:
|
|
54
|
+
|
|
55
|
+
- `whatsapp:direct:<jid>`
|
|
56
|
+
- `whatsapp:group:<jid>`
|
|
57
|
+
|
|
58
|
+
DeepScientist 绑定的是这个规范化后的 conversation id,而不是临时浏览器状态或短期 session 状态。
|
|
59
|
+
|
|
60
|
+
重要规则:
|
|
61
|
+
|
|
62
|
+
- 一个 quest 会保留本地访问,并且最多只绑定 1 个外部 connector target
|
|
63
|
+
- 如果启用了自动绑定,WhatsApp 私聊可以自动跟随最新活跃 quest
|
|
64
|
+
- 之后也可以在项目设置页修改绑定
|
|
65
|
+
|
|
66
|
+
## 5. local-session 运行方式
|
|
67
|
+
|
|
68
|
+
当前开源版本里的 WhatsApp 路径是 local-session 导向的:
|
|
69
|
+
|
|
70
|
+
- 运行时状态会镜像写入 DeepScientist 的 connector 日志目录
|
|
71
|
+
- 入站消息会从本地 session inbox 中被消费
|
|
72
|
+
- 出站消息会被写入本地 session outbox
|
|
73
|
+
|
|
74
|
+
这也符合 DeepScientist 的本地优先设计。
|
|
75
|
+
|
|
76
|
+
## 6. 群聊行为
|
|
77
|
+
|
|
78
|
+
默认情况下:
|
|
79
|
+
|
|
80
|
+
- 私聊可以和活跃 quest 自动配对
|
|
81
|
+
- 群聊行为由 `group_policy` 控制
|
|
82
|
+
- 也可以通过 `groups` 与 `group_allow_from` 强制使用白名单
|
|
83
|
+
|
|
84
|
+
## 7. 常见问题排查
|
|
85
|
+
|
|
86
|
+
### 设置页里看不到 WhatsApp
|
|
87
|
+
|
|
88
|
+
WhatsApp 可能被 system connector gate 隐藏了。请确认:
|
|
89
|
+
|
|
90
|
+
- `config.connectors.system_enabled.whatsapp` 为 `true`
|
|
91
|
+
|
|
92
|
+
### 校验提示连接器未就绪
|
|
93
|
+
|
|
94
|
+
请检查:
|
|
95
|
+
|
|
96
|
+
- `transport` 是否为 `local_session`
|
|
97
|
+
- `session_dir` 是否指向可写目录
|
|
98
|
+
|
|
99
|
+
### 没有自动发现目标会话
|
|
100
|
+
|
|
101
|
+
请检查:
|
|
102
|
+
|
|
103
|
+
- 本地登录 / 配对流程是否已经完成
|
|
104
|
+
- 是否至少有一条真实入站消息进入 local session inbox
|
|
105
|
+
|
|
106
|
+
### 无法从 WhatsApp 继续已有 quest
|
|
107
|
+
|
|
108
|
+
请检查:
|
|
109
|
+
|
|
110
|
+
- 当前会话是否已经绑定到目标 quest
|
|
111
|
+
- 或 `auto_bind_dm_to_active_quest` 是否已经启用
|
|
112
|
+
|
|
113
|
+
### 出站消息没有送达
|
|
114
|
+
|
|
115
|
+
请检查:
|
|
116
|
+
|
|
117
|
+
- 本地 session sidecar / processor 是否正在运行
|
|
118
|
+
- 本地 session outbox 是否正在被消费
|
|
119
|
+
- 目标 JID 是否正确
|
|
120
|
+
|
|
121
|
+
## 8. 相关文档
|
|
122
|
+
|
|
123
|
+
- [01 设置参考](./01_SETTINGS_REFERENCE.md)
|
|
124
|
+
- [02 Start Research 参考](./02_START_RESEARCH_GUIDE.md)
|
|
125
|
+
- [09 启动诊断](./09_DOCTOR.md)
|
|
126
|
+
- [13 核心架构说明](./13_CORE_ARCHITECTURE_GUIDE.md)
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# 18 Feishu Connector 指南
|
|
2
|
+
|
|
3
|
+
当你希望通过 Feishu / Lark 继续推进 DeepScientist quest 时,请阅读这份指南。
|
|
4
|
+
|
|
5
|
+
当前开源版本中的 Feishu 推荐路径使用内置 long-connection 方案:
|
|
6
|
+
|
|
7
|
+
- 不需要公网 event callback
|
|
8
|
+
- 核心凭据是 `app_id` 和 `app_secret`
|
|
9
|
+
- 如果启用自动绑定,私聊可以自动跟随最新活跃 quest
|
|
10
|
+
|
|
11
|
+
## 1. Feishu 支持包含什么
|
|
12
|
+
|
|
13
|
+
当前 Feishu connector 由以下部分组成:
|
|
14
|
+
|
|
15
|
+
- `FeishuLongConnectionService`:负责 long-connection 入站接收
|
|
16
|
+
- `GenericRelayChannel`:负责 bindings、inbox/outbox、targets 与运行时状态
|
|
17
|
+
- `FeishuConnectorBridge`:负责直接出站发送
|
|
18
|
+
|
|
19
|
+
这意味着 Feishu 已经接入了和其他 connector 一致的 quest 绑定模型。
|
|
20
|
+
|
|
21
|
+
## 2. 推荐配置路径
|
|
22
|
+
|
|
23
|
+
1. 打开 Feishu / Lark 开发者平台。
|
|
24
|
+
2. 创建应用。
|
|
25
|
+
3. 保存 `app_id` 和 `app_secret`。
|
|
26
|
+
4. 打开 `Settings > Connectors > Feishu`。
|
|
27
|
+
5. 启用 Feishu。
|
|
28
|
+
6. 保持 `transport: long_connection`。
|
|
29
|
+
7. 填写 `app_id` 与 `app_secret`。
|
|
30
|
+
8. 保存连接器配置。
|
|
31
|
+
9. 给 bot 发送一条真实消息。
|
|
32
|
+
10. 回到 DeepScientist,确认目标会话已经被自动发现。
|
|
33
|
+
|
|
34
|
+
## 3. 关键配置字段
|
|
35
|
+
|
|
36
|
+
主要字段包括:
|
|
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
|
+
完整字段说明请参考 [01 设置参考](./01_SETTINGS_REFERENCE.md)。
|
|
54
|
+
|
|
55
|
+
## 4. 绑定模型
|
|
56
|
+
|
|
57
|
+
Feishu 会话会被规范化成 quest-aware connector id,例如:
|
|
58
|
+
|
|
59
|
+
- `feishu:direct:<chat_id>`
|
|
60
|
+
- `feishu:group:<chat_id>`
|
|
61
|
+
|
|
62
|
+
DeepScientist 绑定的是这个规范化后的 conversation id,而不是临时 callback payload。
|
|
63
|
+
|
|
64
|
+
重要规则:
|
|
65
|
+
|
|
66
|
+
- 一个 quest 会保留本地访问,并且最多只绑定 1 个外部 connector target
|
|
67
|
+
- 如果启用了自动绑定,Feishu 私聊可以自动跟随最新活跃 quest
|
|
68
|
+
- 之后也可以在项目设置页修改绑定
|
|
69
|
+
|
|
70
|
+
## 5. 群聊行为
|
|
71
|
+
|
|
72
|
+
默认情况下:
|
|
73
|
+
|
|
74
|
+
- 私聊允许直接触发
|
|
75
|
+
- 群聊行为由 `group_policy` 控制
|
|
76
|
+
- 如果 `require_mention_in_groups` 为 `true`,机器人只有在被明确 mention,或收到命令时才会响应
|
|
77
|
+
|
|
78
|
+
这也是更适合多人协作群的推荐默认值。
|
|
79
|
+
|
|
80
|
+
## 6. 出站投递
|
|
81
|
+
|
|
82
|
+
当前 Feishu connector 主要聚焦于 text-first 的 quest 更新:
|
|
83
|
+
|
|
84
|
+
- 进度
|
|
85
|
+
- 里程碑摘要
|
|
86
|
+
- 绑定通知
|
|
87
|
+
- 结构化 quest 回复
|
|
88
|
+
|
|
89
|
+
当前 bridge 使用 Feishu Open Platform 的消息接口发送。
|
|
90
|
+
|
|
91
|
+
## 7. 常见问题排查
|
|
92
|
+
|
|
93
|
+
### 设置页里看不到 Feishu
|
|
94
|
+
|
|
95
|
+
Feishu 可能被 system connector gate 隐藏了。请确认:
|
|
96
|
+
|
|
97
|
+
- `config.connectors.system_enabled.feishu` 为 `true`
|
|
98
|
+
|
|
99
|
+
### 校验提示缺少凭据
|
|
100
|
+
|
|
101
|
+
请检查:
|
|
102
|
+
|
|
103
|
+
- `app_id` 是否已填写
|
|
104
|
+
- `app_secret` 是否已填写
|
|
105
|
+
- 或 `app_secret_env` 是否指向真实存在的环境变量
|
|
106
|
+
|
|
107
|
+
### 没有自动发现目标会话
|
|
108
|
+
|
|
109
|
+
请检查:
|
|
110
|
+
|
|
111
|
+
- 应用凭据是否正确
|
|
112
|
+
- bot 是否已经收到至少一条真实入站消息
|
|
113
|
+
- `transport` 是否仍然是 `long_connection`
|
|
114
|
+
|
|
115
|
+
### 群聊里 bot 不响应
|
|
116
|
+
|
|
117
|
+
请检查:
|
|
118
|
+
|
|
119
|
+
- `group_policy`
|
|
120
|
+
- `groups`
|
|
121
|
+
- `group_allow_from`
|
|
122
|
+
- `require_mention_in_groups`
|
|
123
|
+
|
|
124
|
+
### 无法从 Feishu 继续已有 quest
|
|
125
|
+
|
|
126
|
+
请检查:
|
|
127
|
+
|
|
128
|
+
- 当前会话是否已经绑定到目标 quest
|
|
129
|
+
- 或 `auto_bind_dm_to_active_quest` 是否已经启用
|
|
130
|
+
|
|
131
|
+
## 8. 相关文档
|
|
132
|
+
|
|
133
|
+
- [01 设置参考](./01_SETTINGS_REFERENCE.md)
|
|
134
|
+
- [02 Start Research 参考](./02_START_RESEARCH_GUIDE.md)
|
|
135
|
+
- [09 启动诊断](./09_DOCTOR.md)
|
|
136
|
+
- [13 核心架构说明](./13_CORE_ARCHITECTURE_GUIDE.md)
|
package/docs/zh/README.md
CHANGED
|
@@ -96,6 +96,12 @@ DeepScientist 灵活且易于使用,支持:
|
|
|
96
96
|
|
|
97
97
|
## 如果你想通过外部协作面继续推进
|
|
98
98
|
|
|
99
|
+
- [16 Telegram Connector 指南](./16_TELEGRAM_CONNECTOR_GUIDE.md)
|
|
100
|
+
通过内置 polling 运行时绑定 Telegram,并从 bot 会话继续推进 quest。
|
|
101
|
+
- [17 WhatsApp Connector 指南](./17_WHATSAPP_CONNECTOR_GUIDE.md)
|
|
102
|
+
通过本地 local-session 运行时绑定 WhatsApp,并从本地聊天会话继续推进 quest。
|
|
103
|
+
- [18 Feishu Connector 指南](./18_FEISHU_CONNECTOR_GUIDE.md)
|
|
104
|
+
通过内置 long-connection 运行时绑定 Feishu,并从 bot 会话继续推进 quest。
|
|
99
105
|
- [10 微信连接器指南](./10_WEIXIN_CONNECTOR_GUIDE.md)
|
|
100
106
|
适合通过 DeepScientist 内置扫码流程,把个人微信直接绑定进来。
|
|
101
107
|
- [03 QQ 连接器指南](./03_QQ_CONNECTOR_GUIDE.md)
|
package/install.sh
CHANGED
|
@@ -230,6 +230,7 @@ copy_source_tree() {
|
|
|
230
230
|
tar -C "$SOURCE_ROOT" -cf - \
|
|
231
231
|
--exclude='./.git' \
|
|
232
232
|
--exclude='./.pytest_cache' \
|
|
233
|
+
--exclude='./build' \
|
|
233
234
|
--exclude='./node_modules' \
|
|
234
235
|
--exclude='./ui' \
|
|
235
236
|
--exclude='./src/ui/node_modules' \
|
|
@@ -247,6 +248,7 @@ prune_tree() {
|
|
|
247
248
|
rm -rf \
|
|
248
249
|
"$target/.git" \
|
|
249
250
|
"$target/.pytest_cache" \
|
|
251
|
+
"$target/build" \
|
|
250
252
|
"$target/node_modules" \
|
|
251
253
|
"$target/ui" \
|
|
252
254
|
"$target/src/ui/node_modules" \
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@researai/deepscientist",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.15",
|
|
4
4
|
"description": "DeepScientist is not just a fully open-source autonomous scientific discovery system. It is also a research map that keeps growing from every round.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"files": [
|
package/pyproject.toml
CHANGED