前言¶
在 DeepSeek Harness(DSH)里做智能体时,会话需要交互、任务完成、任务出错这些状态经常只体现在界面上。如果希望离开页面也能知道当前任务状态,dsh-messager 可以把这些事件推送到系统通知、浏览器通知,或飞书、企业微信、Discord、钉钉、Telegram。
下面介绍这个插件的能力、安装方式、配置入口,以及本地开发和接入第三方通道时需要注意的地方。
这是什么¶
dsh-messager 是一个 DSH 通知插件,由 ly6170 维护。它解决的是“任务状态需要主动提醒”的问题:当会话需要交互、任务完成、任务出错时,通过可用通道推送提醒。
DSH 的理念是“一切皆插件”。dsh-messager 属于社区插件,不是 DeepSeek / 幻方官方应用商店中的内置应用;本文列出的目录页是独立社区目录。
核心功能¶
dsh-messager 主要提供以下能力:
- 触发时机:会话需要交互、任务完成、任务出错。
- 系统通知:支持 OS toast。
- 浏览器通知:支持 Notification API。
- 第三方消息通道:
- 飞书:interactive 卡片 + HMAC-SHA256 签名。
- 企业微信:markdown + 可选加签。
- Discord:embed 卡片。
- 钉钉:actionCard + 可选加签。
- Telegram:Bot API HTML 消息。
- 单包双运行端:host 端负责系统通知与第三方通道,client 端负责浏览器通知。
- 设置页编辑:DSH 设置页左侧菜单出现「通知&信使」分区,可编辑且实时生效。
- 配置路由:配置经插件自身 webServer 路由
/dsh-messager/config,不受 DSH 设置白名单限制。 - 可配置项:触发开关、各通道启停、
verbosity、icon、去重冷却、标题前缀等。 - 扩展:支持通过
NotifyChannel接口扩展新通道。 - 国际化:设置分区与表单文案支持中文/English。
安装与启用¶
以下命令需要在插件仓库内执行。命令中的 <插件路径> 需要替换为实际插件目录。资料未提供可直接使用的 GitHub 安装命令,不建议凭插件名直接拼接安装地址。
- 先构建插件:
pnpm install
pnpm build
- 将插件安装到
webprofile,然后启动 DSH:
dsh plugin --profile web add <插件路径>
dsh web
如果从 DSH 源码仓库运行时,可以把 dsh 换成 pnpm dsh:
pnpm dsh plugin --profile web add <插件路径>
pnpm dsh web
安装 bundle 后,不要同时带 --patch 启动同一个插件。否则 host 端会加载两份,并出现 settings 命名空间重复注册报错。
典型用法¶
安装后,可以按下面几种方式使用。
1、在设置页修改配置¶
进入 DSH 设置页,左侧菜单会出现「通知&信使」分区。分区内是配置表单,任一处变更均实时生效。
这个分区不走 DSH 设置白名单,而是走插件自身的 webServer 路由:
/dsh-messager/config
2、直接编辑 settings.yaml¶
也可以直接编辑 $DSH_HOME/settings.yaml 中的 messager 段。
适合需要查看更完整字段、或希望把配置纳入文件管理的场景。
3、通过 RPC 读写配置¶
也可以使用:
settings.describe
settings.mutate
用于在 host 侧读取或修改配置。
4、启用第三方通道¶
飞书、企业微信、Discord、钉钉、Telegram 通道默认 disabled。需要配置对应的 webhook、token、chatId 等字段后启用。
各通道能力如下:
- 飞书:需要配置机器人 webhook 和签名密钥,使用 interactive 卡片,并做 HMAC-SHA256 签名。
- 企业微信:需要配置群机器人 webhook,可选加签,消息格式为 markdown。
- Discord:需要配置 webhook,使用 embed 卡片。
- 钉钉:需要配置自定义机器人 webhook,可选加签,使用 actionCard。
- Telegram:需要配置 Bot Token 和 chatId,使用 Bot API HTML 消息。
5、本地开发¶
只调试 host 端时,可以从 DSH 仓库根目录运行:
pnpm dsh web --patch <插件路径>/cordis.yml
这个方式用于开发调试,只加载 host 端,不写 profile,仅对本次启动生效。
完整双端开发时,需要把插件安装到 profile:
dsh plugin --profile web add <插件路径>
pnpm dsh web
执行 plugin add 后需要重启 pnpm dsh web。
修改 client 端代码后,在插件仓库重新构建 client 端并刷新页面:
pnpm run build:client
配置与限制¶
配置优先级为:
schema 默认值 → base(该插件行的 config:)→ 用户层(Web 设置页)
几个容易踩到的点:
system.icon需要文件路径,且该文件必须存在。- 浏览器通知需要用户授予权限。首次加载插件时,如果权限为
default,会自动请求一次;被拒绝时,浏览器通道会静默降级,其余通道不受影响。 - 插件存在去重冷却、完成通知防抖、每通道每分钟上限(默认 20)等限流配置。
- 从 git 安装时,如果
pnpm >= 10,需要把构建脚本包名加入 profile 的pnpm-workspace.yaml的allowBuilds。
适用场景与注意¶
适合以下场景:
- 在 DSH 中运行智能体,希望离开页面时也能收到状态提醒。
- 希望把任务状态接入飞书、企业微信、Discord、钉钉或 Telegram。
- 需要扩展自己的通知通道,并复用 DSH 的会话/任务状态事件。
注意事项:
- 插件以当前 dsh 进程权限运行。
- 安装前应检查源码与仓库许可证。
- 已核实资料中未出现许可证信息,具体以仓库实际内容为准。
- 不要安装来源不明的构建产物,尤其是会接收 webhook、token、chatId 等敏感配置的插件。