masknull/dsh-webhook-notifier

dsh-webhook-notifier

DSH 事件通知插件:AI 回合完成、权限申请、提问、出错、开始运行等 5 种场景发生时,向 Webhook 发送自定义 HTTP 通知,支持 GET/POST、预设字段/自定义文本、type+type_cn、发送日志

待分类

dsh-webhook-notifier

DSH 事件通知插件:在指定事件发生时向 Webhook 发送 HTTP 通知。

English · 中文

可配合 桌宠 项目使用 —— 例如回合完成时推送到桌宠显示通知。

功能特性

  • 🔔 5 种触发场景(可在设置中自由开关):
    • AI 回合完成时
    • 权限申请时(approval)
    • AI 提问时
    • AI 出错时
    • AI 开始运行时
  • 🌐 HTTP 请求:支持 GET / POST,Body 支持 JSON / Form
  • 📦 两种发送方式:
    • 预设文本:勾选字段,自定义模板(如 {"session":"{{sessionName}}"})
    • 自定义文本:发送参数固定为 msg,内容自由编写
  • 🏷️ 固定发送 type + type_cn:每次请求自动附带消息类型(英文 + 中文)
  • 🔧 自定义请求头:可添加任意 Header
  • 🔍 测试发送:一键验证配置连通性
  • 📜 发送日志:每行可展开查看完整请求内容、响应与错误
  • 💾 配置持久化:保存在 $DSH_HOME/settings.yaml,重启不丢失

安装

dsh plugin --profile web add github:masknull/dsh-webhook-notifier

安装后重启 dsh web 生效。

使用

  1. 打开 设置 → Webhook 通知
  2. 打开「Webhook 通知」开关
  3. 配置 请求配置:方法、URL、发送方式、请求头
  4. 勾选 触发场景(哪些事件发送通知)
  5. 在 预设文本 或 自定义文本 中填写要发送的内容
  6. 点 测试发送 验证,确认后点 保存

占位符

内容模板支持以下占位符({{ }} 包裹,区别于 JSON 的 {}):

占位符说明
{{type}}消息类型(固定发送,如 turnComplete)
{{type_cn}}消息类型中文(固定发送,如 回合完成)
{{sessionId}}会话 ID
{{sessionName}}会话名称
{{turn}}回合编号
{{time}}当前时间(UTC+8)
{{trigger}}触发场景
{{toolName}}触发工具名(权限申请时)
{{reason}}原因(权限申请时)
{{error}}错误信息(出错时)
{{question}}提问内容(AI 提问时)
{{status}}状态(开始运行时)
{{userMessage}}用户最后一条消息
{{assistantMessage}}AI 最后一条回复
{{createdAt}}会话创建时间

发送示例

POST + JSON(预设文本):

{"type":"turnComplete","type_cn":"回合完成","sessionId":"s1","sessionName":"测试会话"}

POST + JSON(自定义文本,msg 参数):

{"msg":"任务【测试会话】回合完成","type":"turnComplete","type_cn":"回合完成"}

GET: https://example.com/hook?type=turnComplete&type_cn=回合完成&sessionId=s1

可配合项目

  • 桌宠:将通知推送到桌面宠物展示,实时掌握 DSH 运行状态。

卸载

dsh plugin --profile web remove dsh-webhook-notifier

重启 dsh web 后插件移除,配置保留在 settings.yaml(如需彻底清除可手动删除对应字段)。

License

MIT