ly6170/dsh-messager2

dsh-messager

DeepSeek Harness 通知插件:会话交互/任务完成/出错时通过系统通知、浏览器通知、飞书/企业微信/Discord/钉钉/Telegram 推送提醒

AI Analysis

核心用途是实现异步任务的实时通知。适合运行长时间任务、需要离开屏幕并希望在任务结束或出错时通过即时通讯软件接收提醒的用户。

Package
dsh-messager
Version
0.2.0
License
MIT
Last updated
Aug 16, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:ly6170/dsh-messager

配置

配置优先级:schema 默认值 → base(该插件行的 config:)→ 用户层(Web 设置页)。 host 端把 Loader config 注册为 settings 命名空间 messager 的 base 层,因此:

  • base 的写法按使用方式不同:dev 调试写在 cordis.yml(patch 覆盖层)里该行的 config:;正式安装写在 profile 的 cordis.patch.yml 里按 id: messager 覆盖该行,或直接改 bundle 包内的 cordis.patch.yml
  • 用户层三处入口,同源不冲突、任一处变更均实时生效(host 端 watch 重建通道; client 端经 settings/document-updated 失效重拉):
    1. 设置页分区:设置 →「通知&信使」分区(完整字段表单,所有环境可用);
    2. 设置文档:直接编辑 $DSH_HOME/settings.yamlmessager: 段(完整字段, 含 dedup 节流等表单未展示的项);
    3. RPC:settings.describe / settings.mutate(host 侧可用;Web 端白名单不影响本插件 的分区,因为分区走插件自己的配置路由)。

配置读写链路:设置分区 → GET/POST /dsh-messager/config(webServer 路由,同源校验) → host 端 settings 服务(describe 脱敏视图 / mutate 逐字段 ops)→ settings.yaml。 写后 settings/document-updated 事件(DSH 内置转发)驱动前端刷新。

🌐 国际化:分区菜单与表单文案随 DSH 设置的语言切换(中文 / English), 字典注册在 ctx.locale(zh/en 键集一致,缺失键 fail loud 显示键名)。

字段类型默认值说明
triggers.interactionbooleantrue需要交互时通知(审批/提问/计划待审)
triggers.completedbooleantrue任务完成时通知
triggers.errorbooleantrue任务出错时通知
system.enabledbooleantrue系统通知通道
system.iconstring-图标绝对路径(node-notifier 需要文件路径,且该文件必须存在
system.verbosityminimal|normal|detailednormal系统通知内容繁复度
browser.enabledbooleantrue浏览器通知通道
browser.iconstring-图标 URL 或 data URL
browser.onlyWhenHiddenbooleantrue仅页面隐藏/未聚焦时弹(看着界面不打扰)
browser.verbosityminimal|normal|detailednormal浏览器通知内容繁复度
feishu.enabledbooleanfalse飞书机器人(webhook)通道
feishu.webhookUrlstring-自定义机器人 webhook 地址
feishu.secretstring(secret)-签名密钥(机器人「安全设置-签名校验」)
feishu.timeoutMsnumber5000单次请求超时
feishu.verbosityminimal|normal|detailednormal卡片内容繁复度
wecom.enabledbooleanfalse企业微信群机器人(webhook)通道
wecom.webhookUrlstring-群机器人 webhook 地址(含 ?key=
wecom.secretstring(secret)-加签密钥(「安全设置-加签」,HMAC-SHA256,无需 URL 编码)
wecom.timeoutMsnumber5000单次请求超时
wecom.verbosityminimal|normal|detailednormal消息内容繁复度
discord.enabledbooleanfalseDiscord 通道(webhook)
discord.webhookUrlstring-Discord webhook 地址(.../api/webhooks//
discord.timeoutMsnumber5000单次请求超时
discord.verbosityminimal|normal|detailednormalembed 内容繁复度
dingtalk.enabledbooleanfalse钉钉自定义机器人(webhook)通道
dingtalk.webhookUrlstring-自定义机器人 webhook 地址(含 ?access_token=
dingtalk.secretstring(secret)-加签密钥(「安全设置-加签」,HMAC-SHA256 + URL 编码)
dingtalk.timeoutMsnumber5000单次请求超时
dingtalk.verbosityminimal|normal|detailednormal卡片内容繁复度
telegram.enabledbooleanfalseTelegram 通道(Bot API)
telegram.botTokenstring(secret)-Bot Token(@BotFather 获取)
telegram.chatIdstring-接收 chat_id(数字 ID 或 @频道用户名
telegram.timeoutMsnumber5000单次请求超时
telegram.verbosityminimal|normal|detailednormal消息内容繁复度
dedup.interactionCooldownMsnumber10000同会话同触发冷却(也用于跨标签去重窗口)
dedup.completedDebounceMsnumber1000完成通知防抖(等待 turn/end 原因、合并边界)
dedup.perChannelPerMinutenumber20每通道每分钟上限(防第三方限流/刷屏)
message.titlePrefixstring-标题前缀,如 [DSH]
message.includeSessionTitlebooleantrue正文附带会话标题
message.guiUrlstringhttp://127.0.0.1:3080通知「打开」链接/按钮目标

内容繁复度:minimal 只有标题;normal 增加会话标题/工具名/结束原因/错误摘要; detailed 再增加 turn/step、审批原因与 GUI 链接。