前言¶
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與 HMR1.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 檢查。