前言¶
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。