dsh-feishu-notify:agent 会话结束或等待输入时,用飞书机器人推送通知卡片

前言

用 DSH 跑 agent 任务有一个常见困扰:任务往往不短,模型回复完可能要几分钟,中途还可能调用 ask_user_question 停下来等你回答。人一旦离开终端,任务结束了不知道,等输入更是干等。

已有的做法要么轮询日志,要么写脚本盯进程,都要额外维护成本。dsh-feishu-notify 换了个思路:让 DSH 在关键时机主动把通知卡片推到飞书群里。下面介绍这个插件是什么、怎么装、怎么配。

这是什么

dsh-feishu-notify 是 omdsh-dev 维护的 DSH 插件,通过飞书群自定义机器人发送通知卡片,已适配 DSH 0.1.0-rc.7(@deepseek-ai/cordis / @deepseek-ai/schemastery 等 fork 发行线)。许可证为 MIT,包版本 0.1.0。

核心功能

插件在两个时机触发通知:

  • 会话结束(agent 进入 idle)时,发送「dsh 会话结束」卡片;
  • 模型调用 ask_user_question 等待输入时,发送「dsh 等待输入」卡片。

卡片内容包含工作目录(末两段),方便区分是哪个项目在跑,另带可选的「打开会话」按钮。

几个工程上的细节:

  • subagent 会话不发送通知,不会被子任务刷屏;
  • webhook 发送失败只记日志,不影响 agent 主流程;
  • 包声明了 dsh.bundledsh plugin add 会自动挂载到 profile 的 bundle 层,无需手改 cordis.patch.yml;
  • 编译产物 lib/ 已提交到仓库,git 安装无需本地构建;
  • 支持 settings.yaml 热重载,每次通知都会重读配置,改完即时生效。

安装

前置依赖:git、pnpm、运行中的 DSH(≥ 0.1.0-rc.7)。

方式 A,直接从 git 安装(推荐):

# <profile> 换成实际名字,GUI 部署一般是 web
dsh plugin --profile <profile> add git+https://github.com/omdsh-dev/dsh-feishu-notify.git

方式 B,本地克隆构建后安装:

git clone https://github.com/omdsh-dev/dsh-feishu-notify.git
cd dsh-feishu-notify
pnpm install && pnpm build
dsh plugin --profile <profile> add <路径>/dsh-feishu-notify

后续更新(git 安装)只需一条命令,更新后重启 DSH 进程:

dsh plugin --profile <profile> update dsh-feishu-notify

配置

~/.dsh/settings.yaml 末尾追加 feishu-notify: 段,然后重启 DSH:

feishu-notify:
  enabled: true
  webhookUrl: <你的飞书群自定义机器人 Webhook 地址>
  webhookSecret: ""   # 仅开启「签名校验」时填,否则留空 ""
  webUrl: ""          # 「打开会话」按钮跳转地址;留空则不显示按钮

字段说明:

  • webhookUrl:飞书群 → 群设置 → 群机器人 → 添加机器人 → 自定义机器人 → 复制 Webhook 地址。注意它是私有 URL,等同密钥,不要泄露或提交到任何仓库;留空则不发送通知。
  • webhookSecret:仅在创建机器人时开启「签名校验」才需要填,否则留空 ""
  • webUrl:你的 DSH 网页端地址。YAML 中留空写 "" 则不显示按钮;不写该行则默认为 http://127.0.0.1:3080

配置支持热重载,之后修改无需重启,改完即时生效。

验证

先做一次端到端确认:发一条消息,模型回复完成后飞书应收到「会话结束」卡;模型调用 ask_user_question 时收到「等待输入」卡;subagent 结束不通知。

再单独验证 webhook,不经过 agent:

DSH_NOTIFY_WEBHOOK_URL=<你的地址> pnpm send-test
# 机器人开启了「签名校验」时,再加 DSH_NOTIFY_WEBHOOK_SECRET

跑单测:

pnpm test

单测使用 fetch 桩,不会发出真实消息。

卸载

经过上面三步即可卸载:

1、删除 cordis.patch.yml 中的两行;
2、重启;
3、在 profile 目录执行:

pnpm remove dsh-feishu-notify

适用场景与注意

适合两类人:一是跑长任务时人不守在终端前,想知道任务什么时候结束;二是任务中途需要人工输入,希望第一时间在手机上看到并回来处理。

使用前注意:

  • 由于 dsh-external/issues#397,目前不支持 sessionId + URL 跳转,「打开会话」按钮只会跳转到 webui;
  • webhookUrl 等同密钥,注意配置文件权限,不要提交到仓库;
  • 适配依赖 @deepseek-ai/cordis@deepseek-ai/schemastery 等 fork 发行线,DSH 版本升级时留意兼容性;
  • 插件以当前 dsh 进程的权限运行,安装前建议检查源码与许可证(本项目为 MIT),确认无误再装。

结尾

dsh-feishu-notify 解决的是一个很具体的问题:让 agent 的「结束」和「等待输入」两个状态能推到你实际在看的地方。装一个插件、配一段 YAML 就能用,值得跑长任务的 DSH 用户一试。

  • GitHub:https://github.com/omdsh-dev/dsh-feishu-notify
  • 社区插件目录:https://www.skillhub.cn/plugins/omdsh-dev/dsh-feishu-notify

目录页为社区独立维护的站点,与 DeepSeek / 幻方无官方从属关系。

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

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

小夜