dsh-trigger-hub:为 DeepSeek Harness 智能体统一接入定时、Webhook 与文件事件

前言

DeepSeek Harness(DSH)里的会话通常是「被动」的:有人打开对话,或别的插件创建会话并下发 prompt,智能体才开始工作。定时巡检、CI 通知、目录变更这类外部信号,往往要在宿主机上再写一层脚本,把事件「粘」到 DSH 上,分散且难维护。

dsh-trigger-hub 把这类胶水收进一个无额外运行时依赖的 DSH bundle:一种外部事件对应一次 agent 运行,并记入账本;具体业务含义仍由智能体自己决定。它不是工作流引擎,不做多步编排。

这是什么

维护者 vaniawang,仓库 vaniawang/dsh-trigger-hub,在社区目录 skillhub.cn 中归类为工作流。当前 package 版本为 0.2.1,许可证 MIT。简介概括为:cron/interval 调度、带鉴权的 webhook、文件监视与确定性 procedure——共用一套账本、一个控制台、一个全局并发上限。

核心功能

事件源(sources)

kind 作用
schedule 五字段 cron 或间隔 every(如 6h、30s),触发 sink 并重新调度
webhook POST /dsh-trigger-hub/hook/<id>,需 per-source token
watch 对路径做 fs.watch,默认 debounceMs 1500
procedure 只跑一条 shell 命令、不调用模型;失败可走 onFailure 再唤起会话或 HTTP

输出(sink)

  • session:在配置的 cwd 创建或恢复名为 trigger-hub-<source>-<runId> 的 Session,排队 prompt;hub 本身不执行工具。
  • http:向 URL POST JSON {source, runId, payload};非 2xx 记为失败,可对接外部 router。

prompt 中可用 {{payload}} 替换事件 JSON。

策略与账本

  • 全局 concurrency(示例默认 2)、webhook dedupeWindowMs、按源的 quietHours、启用/暂停。
  • 账本保留最近 200 次运行、计数器;只读控制台页 /dsh-trigger-hub/panel;loopback 或同源可 GET /state、GET /health。

HTTP 面(节选)

方法 路径 说明
POST /dsh-trigger-hub/hook/<source-id> Header x-trigger-token 或 ?token=
POST /dsh-trigger-hub/run/<source-id> 仅 loopback,手动触发任意源
GET /dsh-trigger-hub/health 健康检查 JSON

Webhook body 须为 JSON,上限 64 KiB;在 dedupeWindowMs 内重复 delivery 会被抑制为 deduped。

安装与启用

包为 DSH bundle,无构建步骤、无运行时 npm 依赖。官方 README 给出的方式是:

npm pack
# then install the tarball with your DSH plugin manager, or point it at this checkout

若 profile 用 patch 管理 bundle,安装包后按 cordis.patch.yml 增加一行;完整示例见仓库 examples/profile.cordis.patch.yml。配置写在该行上。

宿主 reload 后,用本机 DSH Web UI 地址探测(默认示例端口 59434,请换成你的 origin):

curl -s http://127.0.0.1:59434/dsh-trigger-hub/health
# {"ok":true,"state":"ready","paused":false,"sources":3,"failed":0}

运行要求:node >=22.19.0,dsh >=0.2.1-alpha.2 <0.3.0-0(见 package.json engines)。

典型用法

定时唤起会话

在 profile 的插件配置中设置 stateDir(默认 $DSH_HOME/dsh-trigger-hub)、concurrency、sources:

config:
  stateDir: /path/to/trigger-hub-state
  concurrency: 2
  dedupeWindowMs: 60000
  sources:
    - id: nightly-review
      kind: schedule
      cron: "0 9 * * *"
      prompt: |
        Review the repository and report a short summary.
      sink:
        kind: session
        cwd: /path/to/repository
        preset: standard

procedure:先跑命令,失败再叫智能体

- id: nightly-tests
  kind: procedure
  every: 6h
  command: "npm test"
  cwd: /path/to/repository
  timeoutMs: 900000
  onFailure:
    kind: session
    cwd: /path/to/repository
    prompt: "Nightly tests failed. Triage this output: {{payload}}"

procedure 以 /bin/bash -lc 执行,权限与宿主机用户相同;应把 command 视为受信配置,而非不可信输入。

适用场景与注意

适合:需要把 cron、Webhook、目录变更、单条 shell 检查统一接到 DSH Session 或 HTTP 下游的单机场景;希望有 ledger 与只读 panel 便于排查「有没有触发、触发结果如何」。

不适合:多步、多智能体编排——README 明确建议把 HTTP sink 指到 agent router;也不提供 HA、分片或失败重试队列(at-most-once,崩溃可能留下 running 记录)。

安全与运维:

  • Webhook 必须配置 token 或 tokenEnv;控制台与 state 仅 loopback/同源;hub 不单独开公网监听,暴露 DSH 时需自行 TLS 与鉴权。
  • 账本会存 prompt、payload、错误信息,勿在 webhook 里传密钥。
  • 文件监视为 best-effort,因平台而异。
  • 安装前请阅读源码与 MIT 许可证;插件在 当前 dsh 进程权限 下运行,procedure 尤其等同你在 shell 里执行同名命令。

结尾

dsh-trigger-hub 把「外部事件 → 一次 agent 运行」收敛到同一配置、账本与并发策略,减少分散脚本。目录页:https://www.skillhub.cn/plugins/vaniawang/dsh-trigger-hub;源码与完整字段表:https://github.com/vaniawang/dsh-trigger-hub。

羽毛球分组比赛记分
小程序二维码

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

小夜