前言¶
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)、webhookdedupeWindowMs、按源的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。