Back to home

GLFzr

dsh-hermes-memory-bridge

Bridge DeepSeek Harness (DSH) session compaction summaries into Hermes Agent persistent memory. 把 DSH 会话压缩总结自动桥接进 Hermes 永久记忆。

Stars
1
Language
JavaScript
Created
Aug 14, 2026
Updated
Aug 14, 2026

Introduction

dsh-hermes-memory-bridge

把 DeepSeek Harness(DSH)的会话压缩总结,自动桥接进 Hermes Agent 的永久记忆。

DSH(DeepSeek Harness)是 DeepSeek 的开源 agent harness("一切皆插件"),每个项目独立会话;Hermes Agent(Nous Research)是自带四层记忆与学习闭环的自进化 agent。本工具让两者互补:

  • DSH 负责执行:项目级任务,会话压缩总结(<compacted-summary>)是天然的"项目快照"
  • Hermes 负责记忆:MEMORY.md 常驻注入 + SQLite 全文检索,成为跨项目的全局记忆中枢
  • 本桥接器负责搬运:发现 DSH 的新压缩总结 → 交给 Hermes 吸收,无需人工干预

架构

DSH 会话(多帧 zstd JSONL)
  │  内置 dsh-compaction-basic 自动/手动触发压缩
  ▼
compaction/summary 事件(含 <compacted-summary> 总结块)
  │  watcher 每 60 秒轮询(bridge-state.json 去重)
  ▼
dsh-hermes-bridge.mjs
  ├─ mode=file:总结全文 → 项目 AGENTS.md「DSH 记忆总结」节
  │              + 指针行 → Hermes MEMORY.md(2200 字符预算控制)
  └─ mode=chat(推荐):hermes -z 让 Hermes 自行蒸馏进记忆
                        (失败自动回退 file 模式,保证不丢)
  ▼
Hermes:MEMORY.md 蒸馏行 + 会话记录(session_search 可检索)
        + 项目 AGENTS.md 归档 → 下次会话自动注入,跨项目"记得"DSH 做过的一切

快速开始

# 依赖:Node.js ≥ 22.12(node:zlib 自带 zstd)、本机已安装 hermes CLI

# 单次扫描(调试)
node dsh-hermes-bridge.mjs --once --mode chat

# 常驻轮询(60s 间隔)
node dsh-hermes-bridge.mjs --daemon --mode chat

# 备选模式:不调用 hermes,纯文件路由(AGENTS.md + MEMORY.md 指针)
node dsh-hermes-bridge.mjs --daemon --mode file

配置(环境变量,全部可选)

变量默认值说明
DSH_HOME~/.dshDSH 数据目录(会话在 $DSH_HOME/sessions
HERMES_HOME~/.hermesHermes 数据目录
HERMES_EXEwin32: $HERMES_HOME/hermes-agent/venv/Scripts/hermes.exe,其他: hermeshermes 可执行文件
HERMES_MEMORY$HERMES_HOME/memories/MEMORY.mdHermes 记忆文件
BRIDGE_STATE$DSH_HOME/bridge-state.json去重状态文件
BRIDGE_LOCK$DSH_HOME/bridge-daemon.lockdaemon 锁文件

三种模式(B / A / C)

模式谁写记忆用途
B · file桥接器自己(全文进 AGENTS.md,指针进 MEMORY.md)手动/验证,无 LLM 开销
A · watcher轮询自动化机制与 B/C 组合使用
C · chat(推荐)Hermes 自己决定(蒸馏、修剪、归档)生产终态;MEMORY.md 满时 Hermes 会自我管理预算

工作原理细节

  1. 会话解码:DSH 会话存档是"多帧 zstd"追加写(session.jsonl.zstd),按帧魔数拆分逐帧解压;也兼容明文 .jsonl
  2. 事件提取:只认 type === "compaction/summary" 且带 data.summary 的事件,提取 text 块并剥掉 <compacted-summary> 标签
  3. 去重(会话文件 + compactionId) 记录在 BRIDGE_STATE,重启不重放
  4. 项目归属:从会话头事件的 cwd 字段定位工作区,各项目 AGENTS.md 独立维护(互不污染),每个项目保留最近 5 条
  5. 失败安全:chat 调用失败自动回退 file 模式;单个事件异常不影响整轮扫描;daemon 用 PID 锁防重复实例;hermes 超时(240s)会杀掉整个进程树

测试与验证

仓库自带测试工具(均为合成事件,格式与 dsh-compaction-basic 写入 schema 一致):

  • make-test-event.mjs — 生成单个格式真实的压缩事件
  • gen-deep-tests.mjs — 生成深度测试事件集(真实 zstd 帧 / 跨项目 / 回退 / 回读)
  • scan-compactions.mjs — 只读扫描 DSH 会话里的压缩总结(不写任何东西)

已通过的验证路径:

测试内容结果
T1真实 zstd 多帧文件 + 追加帧 → 解码提取
T2两个项目事件 → 各自 AGENTS.md 隔离
T3hermes 不可用 → 自动回退 file 模式
T4吸收 → 全新 Hermes 会话回读测试标记(引用 MEMORY.md 与 AGENTS.md 两个来源)

已知限制

  • Hermes MEMORY.md 官方上限 2200 字符;已满时 file 模式的指针行会跳过(chat 模式无此问题,Hermes 自己会修剪)
  • hermes -z 每次吸收消耗一次 LLM 调用(本机默认 DeepSeek V4 Pro)
  • DSH 为开发者预览版,会话存储格式未来可能变化

授权

MIT