galvanize-dsh:在 DSH 智能體內註冊事件觸發,按需喚醒無頭會話

前言

DeepSeek Harness(DSH)裏跑智能體時,常見需求是「某事發生了再叫我處理」:下載目錄裏來了簡歷、郵箱收到報告、Webhook 被調用、倉庫有新的 push。自己寫定時輪詢腳本,要麼延遲大,要麼佔資源,還要單獨維護喚醒邏輯和 DSH 會話的銜接。

galvanize-dsh 是社區維護的 DSH 原生 Cordis bundle,把「註冊觸發器 → 事件到達 → 拉起新的 DSH 會話並帶上 prompt 與事件數據」接到 galvanize core 上。插件本身只做薄客戶端:在智能體 schema 裏暴露五個 trigger_* 工具,具體調度與喚醒由本機 galvanize core 的 loopback API 完成。安裝結束會做一次 heartbeat 證明,避免「裝上了其實沒加載」的靜默失敗。

這是什麼

  • 名稱與歸屬:插件包名 galvanize-dsh,倉庫 lychee888/galvanize-dsh,維護者 lychee888;在 SkillHub 插件目錄 分類爲「工作流」。
  • 定位:給 DSH 智能體一套事件觸發能力(文件夾、郵件 IMAP、Webhook、emit、git 等由 core 支持的路徑);觸發後 core 執行 wake,spawn 一次新的 headless DSH 會話,攜帶你的 prompt 與事件載荷。
  • 許可:MIT(見倉庫 README)。

核心功能

安裝並驗證通過後,智能體可用下表工具(均代理到 galvanize core 本地 API,不在 JS 裏實現 wake 邏輯):

工具 作用
trigger_add 註冊觸發器(folder / webhook / emit / imap 等)
trigger_list 查看當前監聽項及配置
trigger_test 走真實分發路徑發送合成事件
trigger_status 守護進程、最近觸發、今日次數、最近錯誤等健康信息
trigger_remove 移除觸發器(含路由清理)

事件路徑可概括爲:

event ── galvanize core ── wake ──▶ dsh --profile <wakeProfile> "<prompt>"
 (folder/mail/webhook/git/emit)     (去重、冷卻、路由、投遞)          新的 DSH 會話

要點(均來自 README):

  • 薄客戶端:通過 core 的 GET /version、POST /manage/<op> 等接口通信,行爲與 core 面向 Hermes / Claude Code / Codex 的插件一致。
  • 單 surface:插件與 galvanize mcp 不應同時掛載;core 的 doctor 會標記 double-mount。
  • Wake 預設:每次事件 core 執行 dsh --profile <wakeProfile> "<prompt>";profile、命令與 heartbeat 週期寫在 bundle 的 cordis 配置行裏。
  • Webhook + DSH/shell wake:trigger_add 在 kind=webhook 時需要 relay_url,可選 relay_token;未部署 relay 會在創建觸發器前報錯。relay 部署見 galvanize 倉庫 relay 說明。

當前 package 版本爲 0.1.6(以倉庫 package.json 爲準);Node 要求 ^22.19 || >=24,與 DSH 自身範圍一致。支持 Windows、macOS、Linux。

安裝與啓用

安裝前本機需準備好兩樣東西。

1. galvanize core(含 daemon 與自啓動):

pipx install "git+https://github.com/lychee888/galvanize.git"
galvanize init

2. DeepSeek Harness,且 dsh CLI 在 PATH 上:

npm install -g @deepseek-ai/dsh

然後無需 clone 倉庫,一條命令從 GitHub 安裝 bundle 並掛載到 DSH 的 web profile(可用 --profile <p> 換 profile):

npx github:lychee888/galvanize-dsh install

也可全局安裝後執行:

npm install -g github:lychee888/galvanize-dsh

安裝器會 bootstrap headless wake profile、對目標 profile 與 wake profile 分別探測,並在四項檢查均通過時才報告成功,例如:

  ✔ core /version handshake        core 0.2.0, api 1
  ✔ authenticated core access      read-only trigger list succeeded
  ✔ patch row 'galvanize/tools'    row present, package resolvable
  ✔ plugin heartbeat               plugin 0.1.6, core_api_ok=true, 3s ago
LOADED: all four checks green.

說明:

  • galvanize-dsh verify --profile <name> 在對應 profile 運行時可重跑上述檢查。
  • galvanize-dsh uninstall 可撤銷安裝;若曾用自定義 --profile / --wake-profile,卸載時需帶上相同選項。
  • --wake-profile <name> 可指定非默認 headless 的喚醒 profile;安裝器會把選擇寫入各 profile 的 cordis.patch.yml。
  • 會話 heartbeat 記錄在 ~/.galvanize/dsh-heartbeats/<profile>/;驗證不接受已停、過期或不健康的會話。升級插件後若需補全 profile 身份,應重新運行安裝器。
  • 安裝器會更新 core 共享項 dsh_wake_profile,使 galvanize add --wake dsh 與插件創建的觸發器使用同一 wake profile;請與插件一併升級 core,否則安裝可能報錯。該設置僅影響新創建的觸發器。

典型用法

CLI 註冊文件夾觸發並 wake DSH:

galvanize add folder ~/inbox --name triage --wake dsh \
  --prompt 'Read {file} and write a triage summary to ~/inbox-out/{file}.md'

echo hello > ~/inbox/demo.txt   # 約一分鐘後可看到 ~/inbox-out/demo.txt.md

在 DSH 對話裏讓智能體自行註冊:

用自然語言說明需求,例如「inbox 裏來了 lab report 就喚醒我」;智能體會調用 trigger_add,並 test-fire 一次以便確認路徑,之後僅在真實事件發生時再喚醒。

適用場景與注意

適合誰

  • 已在用或計劃用 galvanize 做本機事件編排,並希望 DSH 智能體能在對話裏直接增刪查觸發器、看狀態。
  • 需要「事件驅動的一次性 DSH 會話」,而不是長期佔用的輪詢 job。

使用前請注意

  • 插件與 galvanize core 以當前用戶、當前機器權限運行;觸發器監聽的路徑、郵件、Webhook 等同理會落在該環境下。安裝前應閱讀倉庫源碼與 MIT 許可證,確認符合你的安全與合規要求。
  • DSH 社區插件目錄(SkillHub)是獨立站點,與 DeepSeek / 幻方無官方從屬關係;生態理念是「一切皆插件」,本文僅介紹該社區插件的能力與官方 README 中的步驟。
  • 與 core 版本需匹配;README 要求 plugin 與 core 一起升級,並依賴 heartbeat 與 authenticated core access 做加載證明。
  • 開發集成測試 fixture 固定 DSH 0.1.1-rc.2 與 HMR 1.0.16(README 說明較新 HMR 移除了該 DSH 版本使用的 API);生產環境請以你本機安裝的 DSH 版本爲準。

結尾

galvanize-dsh 把 galvanize 的事件觸發與 DSH 無頭喚醒接成一條可驗證的安裝路徑:智能體側五個 trigger_* 工具,core 側 dedupe、路由與 dsh --profile … 喚醒。若你要在 Harness 裏做「文件 / 郵件 / Webhook / git 到了再跑一輪 agent」,可從目錄頁瞭解摘要,並按 GitHub README 完成 core、DSH 與 npx github:lychee888/galvanize-dsh install 的安裝與四項 LOADED 檢查。

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

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

小夜