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。

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

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

小夜