Repository navigation
Releases
v0.1.1
dsh-webhook-notifier — Release Notes
0.1.1
迁移:配置存储改为插件自有文件(0.1.5 / 0.1.7 行为一致,不再走宿主设置写通路)
新增
- 配置的唯一事实源改为插件自有文件
<profile>/.dsh-webhook-notifier/settings.json,与日志同目录。 - 一次性迁移:文件不存在时,从 profile entry 的旧值播种,并从
settings.yaml/settings.yaml.imported(0.1.5 时代的配置文档)读取本插件的旧 section——宿主只导入“名字与 profile 条目 id 相同”的 section,本插件旧命名空间webhook-notifier与条目dsh-webhook-notifier不同名,不被导入,数据只存在于那份文档里,由插件自行读取。 - 新增 HTTP 设置面
GET/POST /dsh-webhook-notifier/settings(loopback + per-process key 鉴权),浏览器卡片经它读写;一次请求写入全部字段。 - 迁移完成后,自动把 profile patch 里本插件写过的字段删掉,只删自己的。
性能
- 保存一次配置从多次设置写入 + 整树重组变为一次本地原子写(实测 ~17ms),不再触发 profile 树重组、插件 fiber 热重载和客户端镜像刷新。代价恒定,与宿主后续版本对设置写入的优化无关(0.1.7-rc.2 已改善切换模型时的等待)。
修复
- 保存后 UI 被回冲覆盖:旧实现逐字段写入,每次写入都触发一次订阅回调,回调中途把整个配置回冲,用户刚改的字段被盖掉。改为一次批量写入 + 保存期互斥。
/logs与/test路由不可用:inject没有声明webServer,导致路由从未注册(表现为 404);同时ctx.inject(["webServer"])被当作同步函数调用,而它只提供回调式。已改为回调式注入,并在ctx.effect内释放路由,OPTIONS/405带Allow头。- 0.1.5 上插件树加载失败:宿主半
import "@deepseek-ai/schemastery"在 0.1.5 的加载器下从插件目录真实路径解析,此前该目录缺少依赖(0.1.7 走 junction 路径解析所以侥幸可用)。已补齐依赖链,0.1.5 / 0.1.7 均可加载。 - 迁移种子规则的默认值改为从 schema 的
meta.default读取(此前手写默认值与 schema 不一致,导致 schema 自身的默认值被误判为“真实覆盖”,0.1.5 文档里的旧配置——triggers、fields、URL、bodyMode——永远同步不过来)。受影响的字段现已按旧值恢复。
UI
- 下拉选择框(方法 / Body / 发送方式)与宿主「设置 - 通用设置」的 selector 对齐:36px 高、18px 圆角、
bg-module-platform底、hover 态、官方同款 chevron(14×14 / viewBox 16 / stroke 1,取自宿主 primitives 的IconChevronDownOutline)。有宿主Menu组件时是真菜单(键盘上下/Enter/Escape、外部点击关闭、选中 ✓);不可用时自动退回原生<select>的等价外观。
兼容性
宿主要求:DSH ≥ 0.1.5-rc.2(0.1.5 线终点)。该下限已写入 package.json 的 engines.dsh,宿主会按它跳过不兼容的版本并提示。peer:schemastery(必需),@deepseek-ai/dsh-client-ui-primitives / @deepseek-ai/dsh-client-ui-slots(可选,缺失时自动降级)。
| 宿主版本 | 状态 | 说明 |
|---|---|---|
| 0.1.5-rc.2 | ✅ 支持 | 最低支持版本;已修复该版本上插件树加载失败的问题 |
| 0.1.7-rc.1 | ✅ 已验证 | 端到端实测:迁移、9 个字段从旧文档恢复、patch 行清理、/logs 与 /test 路由、下拉菜单 |
| 0.1.7-rc.2 | ✅ 支持 | 该版本改善了切换模型时的等待,本插件路径不受影响 |
为什么两个版本行为一致:配置不再经过宿主设置服务,而是插件自有的 <profile>/.dsh-webhook-notifier/settings.json;宿主之间设置写通路的差异(0.1.5 的设置服务、0.1.7 的 configEditor.edit 全树 reconcile)都不参与读写。旧分支(多个 installSection + 逐字段 settings.update / configEditor.edit)已移除,两条宿主线复用同一套实现。
按宿主线取值的两处(运行时探测,不写版本号判断):
| 探测点 | 0.1.5 | 0.1.7 |
|---|---|---|
| cleanup 写入通路 | configEditor 不存在 → 走设置服务 replace |
configEditor 存在 → configEditor.edit |
| 下拉选择框 | 宿主未导出 Menu → 退回原生 <select>(同款外观) |
Menu 可用 → 真菜单(键盘 / Esc / 外部点击 / 选中态) |
依赖解析的版本差异(已修复):0.1.7 的加载器经 junction 路径解析依赖,0.1.5 经真实路径解析。此前插件目录缺少 @deepseek-ai/schemastery 依赖链,0.1.5 上直接加载失败。已补齐(schemastery + cosmokit + @standard-schema/spec),两个版本均可加载。
迁移来源(0.1.5 时代配置):插件自行读取 settings.yaml / settings.yaml.imported 中的 webhook-notifier section——宿主只导入名字与 profile 条目 id 相同的 section,本插件旧命名空间与条目 dsh-webhook-notifier 不同名,不被导入,数据只存在于那份文档里。js-yaml 缺失时该层自动跳过,其余功能不受影响。
版本差异与取舍:设置入口始终是「设置 - 插件设置」里的本插件卡片,两个版本一致;仅下拉框交互形态不同(见上表),外观一致。
升级注意
- 首次启动自动完成迁移与 patch 清理;URL、请求方法、Body 类型、发送方式、自定义文本、请求头和全部字段开关都会从旧配置恢复。若此前保存未生效,本次迁移后会按
settings.yaml中的旧值纠正。
v0.1.0
DSH 事件通知插件 —— 在 AI 回合完成、权限申请、提问、出错、开始运行等 5 种场景发生时,向 Webhook 发送自定义 HTTP 通知。
功能
- 🔔 5 种触发场景(设置中自由开关):
- AI 回合完成时
- 权限申请时(approval)
- AI 提问时
- AI 出错时
- AI 开始运行时
- 🌐 GET / POST,Body 支持 JSON / Form
- 📦 两种发送方式:预设文本(勾选字段 + 模板)/ 自定义文本(msg 参数)
- 🏷️ 固定发送
type+type_cn(英文 + 中文) - 🔧 自定义请求头
- 🔍 测试发送
- 📜 发送日志(可展开查看完整请求内容/响应/错误)
- 💾 配置持久化到 settings.yaml
安装
dsh plugin --profile web add github:masknull/dsh-webhook-notifier可配合 桌宠 项目使用。