potterlee369-prog/dsh-feishu ↗★ 0
dsh-feishu
DSH host plugin: a Feishu (Lark) bot bridge — send @dsh messages from Feishu on your phone or PC, and the local DSH agent runs them and replies back to Feishu
安装
此插件尚未提供可验证的 bundle,或兼容性检查未通过。请先阅读仓库说明。 阅读完整 README ↗
说明文档
阅读完整 README ↗飞书后台要求(配置过一次即可)
- 飞书开放平台 → 自建应用 → 开通机器人能力(建议机器人名就叫
dsh,群聊里 @ 它)。 - 复制 App ID(
cli_...)与 App Secret。 - 权限管理添加(以应用身份开通):
im:message.p2p_msg:readonly(读取用户发给机器人的单聊消息)——私聊必须im:message.group_at_msg:readonly(读取群聊中 @ 机器人的消息)——群聊必须im:message:send_as_bot(以机器人身份发消息)- 如果希望机器人读取群里所有消息(不 @ 也触发),再额外加
im:message.group_msg
- 事件与回调:
- 订阅 接收消息
im.message.receive_v1 - 订阅方式选 “使用长连接接收事件”
- 订阅 接收消息
- 创建应用版本并发布(组织内可用即可,无需上架)。修改权限或事件后必须发新版,否则不会生效。
配置 App ID / App Secret(推荐:设置页面)
重启 dsh web 后打开 设置 → 飞书,在页面上填写:
- App ID(
cli_...)与 App Secret; - 触发词、工作目录等可选项;
- 点 保存 —— 凭据变化会立即重连飞书长连接,无需再重启。
设置保存在本机 DSH 设置文档中(settings 服务),也可以在 cordis.patch.yml 里给 feishu 行写 appId/appSecret 作为底层默认值,页面保存的值会覆盖它:
- id: feishu
name: dsh-feishu
config:
appId: '' # 可留空,在 设置 → 飞书 里填
appSecret: ''
trigger: '@dsh'
cwd: E:\your\workspace # DSH 会话工作目录(留空 = 宿主默认)
App ID / Secret 也可以用环境变量
DSH_FEISHU_APP_ID、DSH_FEISHU_APP_SECRET;环境变量仅在配置值为空时兜底。
使用
| 场景 | 操作 |
|---|---|
| 单聊机器人 | 直接发消息即可(默认私聊免 @,例如发“帮我看看当前目录有哪些文件”) |
| 群聊 | 把机器人拉进群,发 @dsh 帮我写一个周报,只有 @ 它才触发 |
| 发图片(私聊) | 直接发图片,DSH 会调用本机 dsh-image-recognizer 识别后回复 |
| 发图片(群聊) | 在群里 @机器人 后发图片,机器人识别后回复 |
| 发文件(私聊) | 直接发送文件;文件会下载到 DSH 工作目录的 .feishu-inbox/,然后交给当前会话处理 |
| 发文件(群聊) | 在群里 @机器人 后发送文件;文件会下载到 .feishu-inbox/,然后交给当前会话处理 |
| 从 DSH 发文件回飞书 | 发送 /send ,例如 /send reports/final.pdf;成功后只发送文件附件,不额外发送确认文本 |
| 私聊也要 @ | 在设置页关闭“私聊免 @ 触发”,或把 p2pNoTrigger 配为 false |
| 全部消息触发 | 把 trigger 配成空字符串 '' |
内置命令(私聊直接发命令,群聊前缀 @dsh ):
| 命令 | 作用 |
|---|---|
/help | 显示帮助 |
/status | 桥接状态(长连接、工作目录、会话数) |
/new(/reset) | 为当前飞书会话开启新的 DSH 会话,清空上下文 |
/send | 将 DSH 工作目录内的普通文件上传并发送到当前飞书会话(也支持 /发送 ),成功后不发送文字确认 |
每个飞书会话(chat_id)对应一个独立的 DSH 会话,历史上下文会跨消息保留;同一会话内消息按到达顺序串行执行,不会互相打断。
配置项
| 键 | 默认 | 说明 |
|---|---|---|
appId | '' | 飞书 App ID;空则读 DSH_FEISHU_APP_ID |
appSecret | '' | 飞书 App Secret;空则读 DSH_FEISHU_APP_SECRET |
trigger | '@dsh' | 群聊(及关闭免 @ 时的私聊)触发前缀;'' = 每条文本消息都触发 |
p2pNoTrigger | true | 私聊免 @:单聊机器人直接发消息即触发 |
cwd | '' | 飞书消息创建的 DSH 会话工作目录;空 = 宿主默认 |
agentPreset | '' | 可选 agent preset id |
ack | true | DSH 执行前先回复“收到,DSH 处理中…” |
replyChunkSize | 1800 | 长回复按字符预算分段(段落边界处切开) |
timeoutMs | 600000 | 等 DSH 空闲的上限;超时回复“仍在处理中” |