dsh-hermes-bridge:DSH 与微信的双向桥接插件

DSH 理念是「一切皆插件」。在构建 DSH 智能体与微信交互时,传统的单向链路(WeChat → Hermes skill → dsh --profile headless)存在冷启动耗 Token、丢失会话上下文以及长时间任务无法通知的问题。dsh-hermes-bridge 插件通过复用常驻会话和 hermes send 零 LLM 消耗,解决了这些问题。

插件定位

由 dsh-pulse 维护的 DSH 插件,提供 DSH 与微信的双向通信能力:入站调度(微信消息 → DSH agent 执行)和出站推送(任务进度/结果 → 微信)。它以 Hermes gateway 作为微信传输层,支持按工作目录复用 DSH agent 会话,比一次性 headless 调用省 15–20× token。

核心功能

  • 会话复用:按工作目录(cwd)持久化常驻会话池,后续消息继续同一对话,避免冷启动。
  • 自动回推:任务状态(接单、开跑、完成/失败)以结构化数据推送到微信。
  • 零 LLM 出站:通知通过 hermes send 发送,不消耗模型 Token。
  • Web UI 可见:任务注册至 ctx.jobs,可在 Web 界面查看。
  • 持久化与崩溃恢复:任务队列落盘(JSONL 格式),重启后自动恢复 queued 任务或重入 running 任务。
  • 中断重入:支持将中断的任务重新入队,保持会话状态。

安装与启用

插件需要安装在 web profile 下,以保持 HTTP 循环监听常驻。

  1. 安装插件
   dsh plugin --profile web add @dsh-pulse/dsh-hermes-bridge
  1. 配置注册
    插件依赖 @deepseek-ai/cordis peer dependency。在 ~/.dsh/profiles/web/cordis.patch.yml 中添加以下内容:
   - insert:
       - id: hermes-bridge
         name: 'file:/absolute/path/to/dsh-hermes-bridge/lib/index.js'
         config:
           port: 8643
           authToken: '${env.DSH_BRIDGE_TOKEN}'   # 必填,拒绝无 Token 启动
           pushTarget: 'weixin:<chat_id>'          # 必填,目标聊天 ID
           hermesBin: '/path/to/hermes'            # 可选,默认 'hermes'
           workspaceRoots: ['/path/to/workspace']  # 可选,工作目录白名单

环境假设

插件基于特定开发环境编写,无法开箱即用于所有环境,请核对以下假设:

  • DSH 版本:开发基于 0.1.0-rc.7(Node ≥ 22)。ctx.agents / ctx.agentPresets 等为 rc 阶段快照,升级可能导致 API 漂移。
  • DSH Profile:必须使用 web profile(dsh web),保证插件进程常驻。
  • Hermes 安装:需自行部署 Hermes Agent gateway(如 hermes-gateway.service)。出站依赖 hermes send 命令。
  • 微信通道:默认使用 iLink 个人机器人通道(ilinkai.weixin.qq.com)。出站目标需通过 hermes send --list 验证。
  • 会话路径:默认使用 ~/.dsh/sessions,若 DSH_HOME 不同需调整。

配置项

key type default description
port number 8643 本地监听端口(host 硬编码为 127.0.0.1)
authToken string — 必填,每次请求验证的 Bearer Token
pushTarget string — 必填,如 weixin:<chat_id>,由 hermes send 解析
hermesBin string hermes hermes CLI 可执行文件路径
retries number 1 出站推送重试次数
maxTextLen number 1500 推送文本截断长度
preset string standard session setup 时挂载的 agent 预设

适用场景与注意事项

  • 适用场景:需要在微信中接收任务并执行,且希望复用会话上下文、节省 token 的 DSH 用户。
  • 注意事项:
  • 无认证层:插件本身无认证机制,host 仅监听 127.0.0.1,请勿对外暴露。
  • 微信限流:iLink 通道存在 sendmessage 限流(ret=-2),突发推送可能被丢弃。
  • API 漂移:任何 DSH 升级后需回归验证。

生态链接

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

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

小夜