IT2026年5月23日

Agent 集群的共享记忆:hermes-memory-pgvector

作者:Andrea Borghi
Agent 集群的共享记忆:hermes-memory-pgvector

Agent 集群的共享记忆:hermes-memory-pgvector

当您运行不止一个 AI agent —— 一个营销 minion、一个交易 minion、一个事件响应 minion —— 它们每一个都需要记忆。内置的记忆工具为每个 agent 提供各自的记忆。在它们需要共享之前是没问题的,或者在您不想仅仅为了查找记忆就支付一次 LLM 往返开销来回忆六周前 agent 学到了什么之前,也是没问题的。

hermes-memory-pgvector 是一个小巧的 Postgres + pgvector 插件,可将 agent 的记忆写入镜像到一个支持嵌入、可查询的共享存储中。PyPI 上的当前版本:v1.0.0。

v1.0.0 的新特性 —— 稳定的接口

1.0.0 依据语义版本控制声明公共接口稳定:配置键、工具名称、CLI 命令与退出码,以及表名。它经过多轮预发布审查后发布,修复了一个数据丢失 bug 和若干小问题,自 0.6.0 起没有发生 schema 变更。从 v0.5.0 起,普通的 pip install 会通过 entry point 注册该 provider,因此下文描述的发现垫片仅在较旧的宿主机上需要。详情:hermes-memory-pgvector 1.0:稳定的记忆接口。

v0.4.2 的新特性 —— 原生 pip 安装

hermes-agent 通过扫描 plugin 目录(打包内置的 plugins/memory/<name>/,用户侧的 $HERMES_HOME/plugins/<name>/)来发现记忆 provider —— 它从不查找 site-packages,因此仅 pip install 会使插件正确安装却完全不可见。v0.4.2 填补了这一缺口:pip install 将代码安装到机器上,然后一条 hermes-pgvector install 命令会生成框架实际读取的发现垫片。

v0.4.1 的新特性 —— 混合召回(向量 + 全文)

recall_memory 与 recall_conversation 现在使用 Reciprocal Rank Fusion(k=60)将 HNSW 余弦排名与 PostgreSQL 全文排名融合。只要任意一个排名器认可,某一行就会浮出,从而修复了纯向量搜索的两个盲点:被余弦平滑掉的精确词法命中(错误码、主机名、标志、罕见标识符),以及仅有 NULL 嵌入的纯文本行 —— 这类行是在嵌入端点宕机时写入的,向量索引完全看不到。混合召回同时充当这些行的尽力恢复机制,直到下一次 backfill 运行。

v0.4.0 新增内容

该版本保留了「热路径中没有 LLM」的规则,并新增了四项存储层能力:

  • 身份治理。 私信会话密钥会折叠到一个隐私安全的桶中 —— 没有按联系人拆分的主题膨胀,不含 PII —— 基准流量会被隔离,并且一个可选的 allow-list 会将拼写错误的主题名路由到一个安全默认值,而不是静默地铸造新主题。
  • Agent 归因与委托。 一个新的注册表和来源边记录了哪个 agent 将什么委托给了谁,可通过数据库视图查询。纯粹的谁/何时来源 —— 绝不是事实存储。
  • 嵌入回填。 在嵌入端点中断期间以纯文本写入的行不再孤立:一条幂等命令会重新嵌入它们,使其再次可被搜索。
  • 会话 TTL 与成本控制。 由运维人员运行的 prune 会修剪旧的聊天轮次(持久化记忆永远不会被触及),并且一项嵌入策略可上调或下调嵌入成本。

所有这些都通过一个维护 CLI(hermes-pgvector)交付,其破坏性命令默认采用 dry-run。0.4.x 系列是 v0.3.x 的兼容升级 —— 应用累加式迁移后新钩子即被点亮;跳过它们,其他一切照常运行。

它的实际作用

一句话概括:「一个存储层,为内置记忆模型提供持久化、多租户、可语义搜索的后端支持,且热路径中没有 LLM。」

两张表,都带有 HNSW 向量索引。memory_entries 将写入镜像到 agent 的 MEMORY.md/USER.md 文件。conversations 存储实质性聊天轮次(≥40 个字符,已过滤样板内容)。嵌入为 768 维,由外部端点计算 —— Ollama、OpenAI 兼容端点,随您选择。Agent 不会因嵌入而被阻塞:写入在微秒内返回,嵌入 worker 在后台队列中处理其余工作。

默认按 agent 主题划分

每个请求都带有一个 X-Hermes-Session-Key 头,按 agent_identity 对数据进行作用域划分。营销的笔记不会污染交易的召回。当您真正需要跨主题搜索时,显式传入 scope='all'。默认是安全的那个。

为何独立存在,而不是 fork

hermes-agent 按照策略关闭了其内置记忆 provider 列表,因此本项目以独立的 /plugins 目录扫描形式存在,而不是上游 fork。将其放在 agent 旁边,设置少量配置键,重启即可。回滚是对称的:禁用 provider,可选地删除表。没有需要迁移的长生命周期状态,没有需要维护的内核补丁。

它不是什么

不是 Honcho 的替代品。不是知识图谱。不是 RAG 框架。它刻意做为一个只做一件事的薄层 —— 将内置记忆工具转变为共享、持久化、可向量搜索的存储 —— 然后让路到一边。没有 LLM 推导器,没有辩证循环,没有关于您应该如何分块或重排的观点。只有向量数学。

获取方式

pip install hermes-memory-pgvector
hermes-pgvector install

源码、迁移与配置位于 GitHub:

👉 github.com/andreab67/hermes-memory-pgvector