Agentmemory + Hermes 深度运行机制分析

May 17, 2026

Agentmemory + Hermes 深度运行机制分析

问题

AI 编码 Agent 有一个共同的痛点:每次新会话都是一张白纸。你花了 30 分钟解释项目架构、JWT 认证方案、测试规范,下次对话一切归零。传统的 CLAUDE.md / .cursorrules 文件上限 200 行且内容容易过时。更致命的是,没有任何自动机制把 Agent 自己学到的东西沉淀下来——每次工具调用的上下文、每次失败的教训、每次成功的模式,全部随会话结束而消失。

agentmemory 的答案

agentmemory 是 2026 年增长最快的 Agent 记忆系统之一(10.4k stars,3 个月)。它专为编码 Agent 设计,通过 12 个生命周期 hook 自动捕获每一次工具调用,压缩为结构化记忆,下次会话自动注入相关上下文。零手动操作,零外部数据库。

本文从 Hermes Agent 的视角,深度剖析 agentmemory 的运行机制:它如何与 Hermes 集成、数据如何在流水线中流动、性能开销多大、以及与你可能已经部署的 GBrain 如何分工。

三层记忆架构

agentmemory 官方文档明确区分了三个记忆层:

层级系统存储什么例子
世界知识GBrain人物、公司、会议、概念"Pedro 是 Brex 的 CEO"
Agent 操作agentmemory偏好、模式、会话连续性"用户喜欢简洁格式"
当前对话Session Context对话历史、当前任务"我们在讨论 PR #42"

这不是两个竞品之间的选择,而是同一个 Agent 的两个记忆器官。GBrain 管"知道什么",agentmemory 管"怎么操作"。两者通过 MCP 协议同时接入 Hermes,各司其职。

两种集成模式

模式 A:MCP Server(零侵入)

最简单的接入方式——在 Hermes 的 config.yaml 中加几行配置:

mcp_servers:
  agentmemory:
    command: npx
    args: ["-y", "@agentmemory/mcp"]

memory:
  provider: agentmemory

这会暴露 43 个 MCP 工具给 Hermes。agentmemory 服务器作为独立进程运行在 localhost:3111,与 Hermes 完全解耦。Hermes 按需调用这些工具,无 hook 注入,无运行时开销。

模式 B:Memory Provider Plugin(深度集成)

integrations/hermes 复制到 ~/.hermes/plugins/agentmemory/,注册 3 个生命周期 hook:

Hook触发时机关键:用户是否等待?
on_session_end会话结束——用户已离线
on_pre_compress上下文压缩前——后台执行
on_memory_write手动写入记忆时按需触发

这是最关键的架构决策:与 Claude Code 的 12 个 hook(每个 PostToolUse 都触发)不同,Hermes 的 hook 全部在会话边界触发。活跃对话中没有任何 hook 执行。用户感受到的延迟为零。

内部流水线:一条记忆的旅程

on_session_end 触发时,一条记忆经历以下转换:

on_session_end hook 触发
  ↓
SHA-256 去重(5 分钟窗口)
  ↓
隐私过滤器(剥离 API key、secrets、<private> 标签)
  ↓
存储原始观察记录(完整保真度)
  ↓
LLM 压缩 → 结构化事实 + 概念 + 叙事
  ↓
向量嵌入(all-MiniLM-L6-v2,384 维,本地 CPU)
  ↓
BM25 + Vector + Knowledge Graph 三路索引
  ↓
下次 SessionStart 自动注入 ~2000 token

注意:无需配置任何 API key 即可运行。默认模式下使用合成压缩(synthetic compression)代替 LLM 调用,使用本地 all-MiniLM-L6-v2 模型做向量嵌入。整套流水线零外部依赖。

三路混合搜索

agentmemory 的检索是三重信号融合(RRF 排序):

机制适用场景
BM25词干提取 + 同义词扩展精确关键词匹配
Vector余弦相似度(384 维)语义相似搜索
Graph知识图谱 BFS 遍历实体关联扩展

这意味着你可以问"上次我们怎么修的那个 N+1 查询问题?",即使记忆中从未出现"N+1"这个词——向量搜索能匹配到"数据库查询性能优化",图谱能关联到相关的 ORM 配置。

性能特征:对 Hermes 体验的影响

时间维度

阶段操作延迟用户感知
SessionStart注入 ~2000 token 上下文<100ms一次性加载
工具调用中无任何 hook0ms零感知
SessionEnd压缩 + 向量化 + 索引1-5s用户已离线
PreCompress重新注入记忆<100ms后台

核心结论:活跃对话期间零开销。所有重量级操作(压缩、向量化、索引)都在会话结束后后台执行。

资源占用(树莓派 5 实测估算)

状态CPURAM磁盘
空闲~0%~50MB
搜索(10k 条)<5%~30MB35.7MB 索引
向量嵌入20-40%~150MB

增量仅 ~250MB RAM。在已有 GBrain (265MB) + Hermes (391MB) + Postgres (200MB) 的树莓派上,总占用仍不到 8%。远未触及 15GB 上限。

Token 经济

这是 agentmemory 最被低估的价值:

传统方式(CLAUDE.md):全部记忆注入上下文
  1,000 条观察  = 43,834 token(占据 22% 上下文窗口)
  5,000 条观察  = 220,335 token(已超出 200K 窗口上限)

agentmemory:只注入 Top-10 相关记忆
  任意规模      = ~1,972 token(仅 0.3% 上下文窗口)

记忆库越大,节省越显著。对于长期运行的编码 Agent,这是上下文窗口利用率的关键优化。

与同类系统的定位

维度agentmemoryMem0LettaZep
检索 R@595.2%~68%~83%
自动捕获12 hook 全自动手动 add()Agent 自编辑API 写入
Token 效率/会话~2,000~1,764中等600,000
外部依赖0(SQLite)可选向量DBPostgresNeo4j
编码 Agent 优化
Hermes 原生集成插件 + MCP教程间接间接

实战要点

  • 从模式 A 开始:MCP Server 零配置,性能影响为 0。先跑一周看效果。
  • 模式 B 才需 hook:需要自动上下文注入时才启用 Plugin。两者可共存。
  • 不配 API key 也能用:合成压缩 + 本地嵌入的检索精度依然达到 95.2%(基准测试)。
  • 与 GBrain 不冲突:世界知识放 GBrain,操作记忆放 agentmemory。同一条 SSH 命令不会同时写入两个系统。
  • PR #307 是关键:即将支持 OpenAI 兼容本地 LLM(Ollama/LM Studio/vLLM),届时可完全脱离云端。

一句话总结:agentmemory 做的事就是——你下次打开 Hermes 时,它已经知道你上次在修哪个 bug、用的什么方案、为什么选那个方案。不再需要重新解释。