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