READMESource: main@d79fa130
dsh-tui-webhook
适用于 dsh-TUI(dshtui.com)的社区插件。
把 dsh-TUI 的关键事件推送到 IM 机器人(飞书 / 钉钉 / 企业微信 / 任意通用 webhook):长轮次完成、审批请求——人离开电脑也能收到提醒。
English below.
用法
/webhook " 查看配置状态(平台、URL 掩码、开关)
/webhook test " 发送一条测试消息,回报 HTTP 状态
配置在 /settings →「Webhook 通知」,保存后立即生效,无需重启。
| 设置 | 说明 | 默认 |
|---|---|---|
platform |
feishu / dingtalk / wecom / generic |
feishu |
url |
机器人 webhook 地址 | 空 |
secret |
加签密钥(仅飞书/钉钉 HMAC-SHA256;企业微信、generic 忽略) | 空 |
minTurnSeconds |
轮次完成通知的最短时长(秒),0 = 每轮都推 | 30 |
notifyTurnEnd |
轮次完成时推送(✅ 任务完成 · 用时 … · 第 N 轮) |
开 |
notifyApproval |
工具审批请求时推送(⚠️ 需要审批 · <工具/原因>) |
开 |
只统计顶层会话的轮次(子 agent 不重复推送);approval/asked 的摘要取 toolName 与 reason,尽力而为、绝不因异常负载报错。
创建机器人
- 飞书:群设置 → 群机器人 → 自定义机器人,复制 webhook;开启「签名校验」则把密钥填入
secret。官方文档 - 钉钉:群设置 → 机器人 → 自定义,复制 webhook;安全设置选「加签」则把密钥填入
secret。官方文档 - 企业微信:群设置 → 群机器人 → 添加,复制 webhook 即可(不支持加签)。官方文档
- generic:任意接收
POST {"text":"..."}的 HTTP 端点。
隐私
URL 与加签密钥保存在本机 dsh settings 文档中(webhook 命名空间),不上传任何第三方;/webhook 状态只显示 URL 前 30 个字符。
安装
dsh plugin --profile <你的profile> add dsh-tui-webhook
或从源码:npm pack 后 dsh plugin --profile <你的profile> add file:<tgz路径>。
开发
node --test " 单元测试(载荷构造、两种加签算法、时长格式化、防刷屏门槛、清单校验)
English
Pushes dsh-TUI events to IM bot webhooks (Feishu / DingTalk / WeCom / generic): long-turn completion and approval requests, so you know while away from the computer.
/webhookshows the status (platform, masked URL, toggles);/webhook testsends a test message and reports the HTTP status.- Configure under
/settings→ "Webhook 通知"; changes apply live, no restart. - Payloads: Feishu
{"msg_type":"text",…}(optional timestamp+sign: base64 HMAC-SHA256 of the empty message keyed with${ts}\n${secret}), DingTalk{"msgtype":"text",…}(sign rides the URL), WeCom{"msgtype":"text",…}, generic{"text":"…"}. - Only top-level sessions are tracked; turn-end pushes are gated by
minTurnSeconds(default 30s, 0 = every turn). - Privacy: the URL and secret live in the local dsh settings document; status output masks the URL to its first 30 chars.
MIT
No comments yet. Be the first to write one.