dsh-feishu-digest:把 DSH 任务结束结果推到飞书群

前言

用 DeepSeek Harness(DSH)跑任务时,回合往往在本地或 IDE 里结束,同事却在飞书群里等结论。手动复制粘贴既慢,又容易把过程性输出整段丢进群里,信息噪声高。常见做法是自建通知服务或手写 Webhook 脚本,但要自己处理签名、重试、摘要和聚合,维护成本不低。

下面介绍社区插件 dsh-feishu-digest(维护者 subeichen1,分类:工作流):订阅 DSH 的 turn/end 事件,在回合结束的同一刻把结果经「通知精简管线」压缩后推送到飞书自定义机器人,无需公网 IP、无需单独起服务,填好 Webhook 即可使用。插件仓库:GitHub;目录页:SkillHub。

这是什么

dsh-feishu-digest 是 DSH 的 bundle 插件:把每一次任务结束结果推送为飞书群消息。成功且无需跟进的任务默认聚合成一行(30 分钟窗口或满 5 条汇总);含待办、失败或错误的任务发短卡片,结构固定为「结论 → 产物 → 需要你 → 风险」,原文在发送前归档到本地,配置 archiveBaseUrl 后卡片可带「查看原文」。默认走本地规则,不调用模型;仅「成功但含待办关键词或失败项」的卡片路径在开启 LLM 时会尝试压缩,未配置或超时则退回本地兜底。

当前 npm 包版本为 1.4.1(见仓库 package.json),许可证 MIT,运行时要求 Node.js 18.17+、DSH 0.1.x 及以上(需 session/event 事件)。

核心功能

资料中列出的能力要点如下,便于对照是否满足你的运维预期。

能力 说明
回合结束即推 监听 turn/end,不轮询、不攒批到外部服务
成功 / 失败都推 completed 用 ✅,error 用 ❌,取消等状态用 ⏸️
精简与聚合 成功无待办 → 一行型聚合;失败 / 待办 → interactive 卡片
三级名称 卡片显示项目(cwd 目录名)、对话(会话标题)、任务名(本回合首条人类 prompt)
安全与可靠 支持飞书签名校验;HTTPS Webhook(http 仅 localhost);失败重试与连续失败告警
零第三方依赖 仅 node:crypto 与内置 fetch;回调异步执行,不阻塞 DSH 主流程

1.4.0 起统一走通知精简管线:outputMode、summaryMaxChars 在发送管线中不再生效(字段保留仅为兼容旧配置);progress 类消息默认丢弃,需保留时可设 dropProgress: false。

消息形态示例(摘自 README):

成功聚合一行:

✅ 修复登录接口的空指针 —— 成功 | 任务完成飞书传回·审计并修复 | 3.0 分钟

有待办或失败时发卡片(节选):

✅ 修复登录接口的空指针
项目:任务完成飞书传回 | 对话:审计并修复
结论:登录接口空指针已修复,回归测试通过
▸ 产物
· src/auth/login.ts
...
[查看原文]

安装与启用

安装前在飞书目标群创建自定义机器人,复制 Webhook 地址;团队场景建议开启签名校验并把密钥记入插件配置(未配 secret 时带签名校验的请求会被飞书拒绝,code: 19021)。

安装插件

通过 dsh plugin 安装时本机需要 pnpm;亦可按 README「方式 B」手动放进 profile 的 node_modules 并改 package.json 的 dsh.profile.bundles。

将下文 --profile web 换成你实际使用的 profile(如 desktop、tui)。

已发布到 npm 后(README 方式 C):

dsh plugin --profile web add dsh-feishu-digest

本地目录调试(在插件目录上一级执行,README 方式 A):

dsh plugin --profile web add file:./dsh-feishu-digest

改代码即时生效可用 link: 前缀替代 file:。验证 bundle 是否挂上:

dsh --profile web --dump-config | grep feishu

应能看到 id: feishu-digest 或 name: dsh-feishu-digest。

填写配置

在对应 profile 的插件配置中填写飞书机器人 Webhook(生产环境须为 https;支持字符串或数组以实现多群推送)。开启签名校验时填写 secret。业务群与运维群分离时,可配置 alertWebhook / alertSecret 接收连续推送失败告警。需要卡片底部「查看原文」时,配置 archiveBaseUrl,并知悉原文目录默认为 ~/.dsh/feishu-digest/archive。

README 还提供 环境变量兜底 与 配置项完整说明;1.0 用户若仍要发送全文,在 1.1+ 曾可用 outputMode: full,1.4 管线以精简结果为主,全文以归档为准。

安装完成后重启 DSH,使 bundle 层生效。

典型用法

整体流程可归纳为三步。

  1. 在飞书群添加自定义机器人,保存 Webhook(及可选签名密钥)。
  2. 对目标 profile 执行安装命令,写入 Webhook 等配置。
  3. 正常在 DSH 中执行任务;每个回合结束时插件自动推送,无需在对话里额外触发。

README 提供 自测 小节与 常见问题,推送异常时可对照重试规则:网络错误、HTTP 429 / 5xx、飞书 code=9499 等会重试;同一 Webhook 连续最终失败 3 次会发「⚠️ DSH 推送告警」(5 分钟冷却)。

卸载方式见 README「卸载」一节;不再使用时删除 bundle 依赖并移除配置中的 Webhook 即可。

适用场景与注意

适合谁:已在用 DSH 做日常开发或自动化任务、希望团队在飞书群收到「可扫一眼」的任务结论,而不是整段 Agent 输出的人;尤其适合多任务并行、需要区分成功一行与失败卡片的场景。

权限与安全:插件以当前 DSH 进程权限运行,会向配置的 Webhook 发送任务结论与归档相关内容;安装前应阅读仓库源码与 MIT 许可证,确认 Webhook / secret 不入库、不入公开日志。SkillHub 上的社区插件目录与 DeepSeek / 幻方无官方从属关系,按需自行评估后再装。

运维边界:请求体上限 20KB,超长会截断;插件设计为推送失败不影响主任务,但飞书侧限流或关键词设置可能导致消息被拒——README 建议不要随意给机器人设关键词拦截。

结尾

dsh-feishu-digest 把 DSH 回合结束与飞书群通知接在一起,用聚合一行与结构化卡片减少刷屏,并把全文留在本地归档。若要查看完整配置、升级说明(1.0→1.4)与合规提示,以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/subeichen1/dsh-feishu-digest
  • GitHub:https://github.com/subeichen1/dsh-feishu-digest
羽毛球分组比赛记分
小程序二维码

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

Xiaoye