前言¶
用 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.bundle,dsh 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 / 幻方无官方从属关系。