dsh-event-gate:用文件变化与本机 Webhook 唤醒 DSH 会话

前言

DeepSeek Harness(DSH)里,会话通常等人发消息才动。若希望「下载目录一有新文件就整理」「CI 失败脚本 POST 一条本机请求后立刻分析日志」,单靠手动 @ 会话或定时插件不够:前者要人盯着,后者是「闹钟」式按点唤醒,接不住外部世界的瞬时信号。

社区插件 dsh-proactive 负责按时间自我唤醒;dsh-event-gate 补上另一半——文件监视与本地 Webhook 命中规则后,唤醒指定会话并注入渲染后的 prompt,作者 Willmylife 在 GitHub 仓库中将其称为事件驱动触发器(「门铃」)。本文介绍其定位、能力与可复现配置,事实以仓库 README 与 package.json(当前版本 v0.3.0)为准。

这是什么

dsh-event-gate 是 DSH 的工作流类插件:在规则文件里写清「听什么动静、叫醒哪个会话、醒了干什么」,插件在事件命中时把「发生了什么」作为 user 消息注入该会话——会话已打开则直接投递,关闭则先恢复再投递;每次触发写入审计记录,可通过工具与 JSONL 历史查询。

维护者:Willmylife。许可证:MIT。宿主要求:dsh >= 0.2.1-rc.2,node >= 22.5。

核心功能(v0.3.0)

文件系统事件源(fs)

递归监视目录,支持 glob 过滤与防抖合并;prompt 模板可用 {{paths}} 等变量携带合并后的文件列表。

Webhook 事件源

本机 POST /__dsh-event-gate/hook,按规则中的 token 鉴权,回环限定;模板变量 {{payload}} 为已剥离 token 的 JSON body。

唤醒与注入

活会话直接投递;冷会话通过宿主 agents.resume 恢复(尽力恢复模型选择与预设)后投递。规则文件 rules.json 保存即热更新,无需重启 DSH。

可观测性

提供 trigger_list / trigger_history 工具、/health 路由,以及 JSONL 触发历史(失败原因可查)。

安装与启用

插件收录到社区目录后,可在 DSH 设置 → 插件 → 添加插件中搜索 dsh-event-gate。命令行安装(资料原文,web profile)如下:

dsh plugin --profile web add github:Willmylife/dsh-event-gate#v0.3.0

桌面端请优先使用应用内「添加插件」。本地开发可用 link 方式,见仓库 README「开发安装」一节。

安装后可在本机访问健康检查(端口以当前 DSH 进程为准):

http://127.0.0.1:<端口>/__dsh-event-gate/health

应返回包含 "plugin":"dsh-event-gate" 的 JSON。

典型用法

1. 编写规则

规则文件路径:~/.dsh/event-gate/rules.json(JSON 数组;模板见仓库 rules.example.json)。

监视下载目录中的 PDF,防抖 3 秒后唤醒指定会话:

[
  {
    "id": "watch-downloads-pdf",
    "source": "fs",
    "enabled": true,
    "watch": "C:/Users/86188/Downloads",
    "filter": "**/*.pdf",
    "debounceMs": 3000,
    "targetSessionId": "<会话 id>",
    "promptTemplate": "新文件:{{paths}}\n请检查。"
  }
]

CI 或监控脚本通过 Webhook 触发:

  {
    "id": "ci-alarm",
    "source": "webhook",
    "enabled": true,
    "token": "至少 8 字符的随机口令",
    "targetSessionId": "<会话 id>",
    "promptTemplate": "收到消息:{{payload}}\n请分析。"
  }

模板变量:通用 {{ruleId}}、{{source}};fs 另有 {{count}}、{{paths}};webhook 有 {{payload}}。

会话 id:从会话 URL 或侧栏复制,或在会话中向模型询问。

2. 调用 Webhook(本机)

curl -X POST "http://127.0.0.1:<端口>/__dsh-event-gate/hook" \
  -H "content-type: application/json" \
  -H "x-event-gate-token: <你的token>" \
  -d '{"rule":"ci-alarm","message":"main 分支构建失败"}'

3. README 中的典型场景(机制说明)

  • 下载目录自动整理:新文件出现后会话按规则归档、改名或写摘要。
  • 报警自动诊断:监控或 CI 脚本 POST 消息后,会话分析失败原因并给出修复建议。
  • 日志哨兵:监视日志目录,出现 ERROR 时读上下文并定位问题。
  • 脚本衔接 DSH:打包流程或快捷指令结束时用一条 curl 让会话继续下一步。

适用场景与注意

适合已在 DSH 中固定使用某一「长期任务会话」、又希望本机文件系统或其它程序以事件方式驱动该会话的开发者。

插件与 DSH 同进程、同本机权限运行;Webhook 鉴权依赖规则 token 且限定回环,仍应在安装前阅读源码与 MIT 许可证,自行评估监视目录范围与 token 强度。社区插件目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-event-gate 把「外部事件 → 指定会话 + 结构化 prompt」收成一份 rules.json,与 dsh-proactive 的定时唤醒形成互补。进一步了解:

  • 目录页:https://www.skillhub.cn/plugins/Willmylife/dsh-event-gate
  • GitHub:https://github.com/Willmylife/dsh-event-gate
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜