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
AI Analysis
核心用途是建立本地 DSH 与飞书机器人的双向通信。适合希望通过飞书客户端远程调用本地 DSH 智能体执行任务的用户。
Install
This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗
README
Read the full 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 空闲的上限;超时回复“仍在处理中” |