dsh-plugin-feishu-im:DeepSeek Harness 的飞书 IM 通道

前言

DSH(DeepSeek Harness)默认在网页上与智能体交互。在终端受限或只能通过移动端访问的环境里,把指令与结果搬到 IM 渠道会更方便。drliuhuan/dsh-plugin-feishu-im 插件提供了飞书 IM 通道:通过扫码创建专属飞书应用,把任务进展、审批请求和问题推送到飞书,并在飞书里直接指挥 DSH。

插件信息

  • 名称:dsh-plugin-feishu-im
  • 维护者:drliuhuan
  • 分类:客户端
  • 版本:1.16.0
  • 许可证:MIT

安装与启用

# 从 npm 安装(推荐)
plugin_manager install_bundle dsh-plugin-feishu-im

# 或者
npm i -g dsh-plugin-feishu-im

装好后进入 DSH Web 的「设置 → 飞书 IM」即可开始配置。

核心能力

  • 连接:支持通过二维码扫码创建专属飞书应用(自动带消息权限),也支持手动填写 App ID / App Secret。
  • 任务通知:会话一轮结束时推送卡片,包含结论与用时;失败时附上原因。
  • 审批:工具需要授权时推送卡片,选择「允许一次 / 拒绝」后继续执行。
  • 提问:ask_user_question 的选项变成按钮,也可点「输入你的答案」用文字回答。
  • 进度:收到消息后在消息上打 Typing 反应,处理完撤掉,失败时显示 CrossMark。
  • 指挥:在飞书里发消息,DSH 会话执行后结果回传到同一对话。
  • 插话:任务还在跑时再发消息,默认作为插话引导并入当前这一轮(不排队),可改用 /queue 排队。
  • 会话列表与切换:/sessions [关键字] 或 /history 列会话并切换;/resume <编号|id|标题> 切换;/current 查看当前绑定;/new 开新会话。
  • 会话位置:新建会话建在可配置的文件夹(默认 ~/dsh-plugin-feishu-im),工作区名默认「飞书IM」。
  • 权限模式:每个飞书对话可选四种模式:只读 / 工作区读写 / Auto Review / 完全权限。
  • 卡片渲染:消息以卡片 JSON 2.0 发送,标题、引用、代码块都能渲染;表格用原生 table 元素(表头纯色、行高紧凑),超长按段分页不截断。

部署为服务(无需 sudo)

设置页「部署方式」可以把 DSH 装成用户级 systemd 服务(~/.config/systemd/user/dsh.service,Restart=always),全程不需要 sudo。Windows 下该选项禁用并提示「当前仅支持 Linux(用户级 systemd)与 macOS(launchd)」。安装前会检测是否已托管系统级或用户级服务,避免冲突。

连接飞书

  • 扫码创建(推荐):点「生成连接二维码」,用飞书手机端扫码,按提示确认创建。飞书使用开放平台的设备码注册流程(archetype=PersonalAgent),创建出的应用已带消息权限。
  • 手动填写:已有应用时直接填 App ID / App Secret,但需在飞书开放平台开启「机器人」能力,配置权限(im:message、im:message:send_as_bot、im:resource、im:chat)、事件(im.message.receive_v1)与回调(card.action.trigger),并发布一个应用版本。

指挥与询问策略

审批与提问默认只走飞书;打开「网页与飞书同时询问」会恢复并行。飞书等待上限为 1–120 分钟或「永不超时」,超时后卡片失效并转回 DSH 网页。

会话管理命令

  • /sessions [关键字]、/history:列会话并切换。
  • /resume <编号|id|标题>:切换当前会话。
  • /current:查看当前绑定。
  • /new:开一个新会话。
  • /queue <内容>:排队处理,不插话。
  • /permission、/mode:查看并切换本对话的权限模式。
  • /restart:重启 DSH(有任务在跑时拒绝并说明)。
  • /stop:让当前会话停下。
  • /id:当前会话 id。
  • /help:命令说明。

会话权限

模式 沙箱 审批 说明
只读 read-only 询问 只能读;越界操作会来问你
工作区读写 workspace-write 询问 工作区内可读写;越界要你确认
Auto Review 由 Auto Review 决定 裁决 优先使用宿主的 dsh-experimental-auto-review;没有时退回「只读 + 插件按文本判断」的兜底
完全权限 danger-full-access 不再询问 不做沙箱限制,也不再打扰你

切换权限先发一张带四种模式的卡片,再弹确认卡片,点「确认修改」才生效。

安全模型

  • App Secret 只存在 <DSH_HOME>/feishu-im/state.json,权限 0600,不回传浏览器、不写进 cordis.patch.yml。
  • 设置页接口是 DSH 的 exact Fetch 路由(/api/feishu-im/*),只有本机已认证的 owner 浏览器能访问。
  • 飞书侧按 open_id 允许列表过滤;列表为空时接受第一个来消息的人并设为唯一使用者。
  • 关闭「允许在飞书里指挥 DSH」后,飞书只收通知,不接指令。
  • 危险操作仍走 DSH 的审批策略;卡片只是把同一次请求搬到手机上回答。
  • 同一个飞书应用不要在别处同时开长连接(飞书会把事件随机投给其中一条)。

排障

打开宿主追踪(默认关闭,也可 touch <DSH_HOME>/feishu-im/trace.on 运行时打开):

DSH_FEISHU_IM_TRACE=1 dsh web

日志在 <DSH_HOME>/feishu-im/host-probe.log。

开发与测试

  • 测试脚本:scripts/tool-schema.mjs、scripts/inbound-smoke.mjs、scripts/target-smoke.mjs、scripts/permissions-smoke.mjs、scripts/permission-flow-smoke.mjs、scripts/answers-smoke.mjs、scripts/sessions-smoke.mjs、scripts/session-card-smoke.mjs、scripts/service-smoke.mjs、scripts/table-card-smoke.mjs、scripts/render-smoke.mjs。
  • npm scripts:test、test:render、test:live、test:timeout。

适用场景与注意

适合在终端受限、只能通过网页或 IM 访问的环境下使用 DSH。安装前建议检查源码与许可证(MIT)。插件以当前 DSH 进程权限运行,注意权限与安全配置。

总结

dsh-plugin-feishu-im 让 DSH 的会话管理、任务通知、审批与提问都能在飞书里完成,并通过权限模式与安全模型控制风险。通过目录页与 GitHub 仓库可以查看更多细节。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye