前言¶
在开发 DeepSeek Harness (DSH) Agent 时,通常需要关注其生命周期状态,例如 Agent 何时进入空闲、被中断、需要用户输入,或何时退出。如果在后台运行,开发者很难获取这些状态。dsh-push 插件提供了一种机制,将 Agent 的生命周期事件通知推送到外部渠道,方便监控和调试。
是什么¶
dsh-push 是一个由 kiim-wong 维护的 DSH 插件。它将 Agent 的生命周期事件(如 idle、interrupted、needInput、exit)转发到 Bark、飞书、企业微信、钉钉、ntfy 或通用 webhook。该插件通过 cordis.patch.yml 挂载,无需修改 DSH 核心代码或写入配置文件。
安装¶
在安装前,确保已安装 DSH。根据使用的 DSH Profile 选择对应的安装命令。
dsh plugin --profile web add dsh-push
dsh plugin --profile headless add dsh-push
如果需要从 GitHub 安装并锁定版本,使用以下命令:
dsh plugin --profile web add github:kiim-wong/dsh-push#<sha>
注意:从 Git 安装会运行包的 prepare 脚本。首次安装前,需在目标 Profile 的 pnpm-workspace.yaml 中允许构建:
allowBuilds:
dsh-push: true
配置¶
插件使用 JSON 格式的配置文件。默认路径为 $DSH_HOME/dsh-push/config.json。可以通过环境变量 DSH_PUSH_CONFIG 指定其他路径。
配置文件支持通过环境变量引用,格式为 $VAR 或 ${VAR}。日志文件默认写入配置文件目录下的 push.log。
每个通知渠道至少需要配置 type(渠道类型)和 destination(目的地)。敏感信息应存储在配置文件或环境变量中,而非 cordis.patch.yml。
事件与命令¶
插件加载后,会监听并转发以下事件类型:
* idle
* interrupted
* needInput
* exit
同时,插件提供了命令行接口。即使在没有命令服务的 Headless 配置中,事件监听器也会正常加载。
可用命令如下:
* /push status:查看推送服务状态
* /push list:列出已配置的渠道
* /push get:获取特定配置
* /push set:设置配置
* /push enable / /push disable:启用或禁用特定渠道
* /push test:测试特定渠道
* /push events:列出可用事件
* /push on / /push off:全局启用或禁用事件监听
高级用法¶
- 过滤 Idle 事件:通过设置
minDurationSec,可以过滤掉持续时间过短的 idle 事件。 - 包含子代理:默认情况下,子代理的事件会被排除。设置
includeSubagents: true可包含origin: "subagent"的会话头事件。
注意事项与限制¶
- 投递策略:通知投递不支持重试机制。如果投递失败,消息将丢失。
- 超时与刷新:每个请求有独立的超时限制,进程销毁时使用有界刷新。
- Exit 事件含义:
exit事件表示插件树正在被销毁,而不是单个 Web 会话的关闭。 - 内容范围:通知正文仅包含生命周期摘要,不包含具体的对话内容。
总结¶
dsh-push 为 DSH Agent 开发者提供了一种标准化的方式来接收生命周期通知。通过配置各类推送渠道,可以实现对 Agent 运行状态的实时监控。使用时需注意其不支持重试和包含内容限制。