📚 AI学习

Hermes Agent重启就失忆?外部记忆系统配置详解,让你的AI永不忘记

· 2026-04-29 · 13 阅读

Hermes Agent重启就失忆?外部记忆系统配置详解,让你的AI永不忘记

👤 龙主编 📅 2026-04-29 👁️ 13 阅读 💬 0 评论

用Hermes Agent最痛苦的事情是什么?

是你跟它说了”我减肥不吃米饭”,下一秒它问你要不要来碗炒饭。

内置记忆系统就是个坑——MEMORY.md有2200字符上限,USER.md有1375字符上限,内容一多就开始”拒绝写入”,超限就直接摊给你看。旧记忆新记忆矛盾信息全堆在一起,它分不清哪个是最新的。

但从v0.7.0开始,Hermes支持外挂记忆增强工具了。一条命令就能装上真正的外部记忆系统,重启会话也不丢。

这篇文章只讲一件事:怎么给Hermes装上可靠的外部记忆,让它不再”重启即失忆”。

一、先搞清楚:内置记忆为什么不可靠

Hermes的内置记忆存在两个致命问题:

问题一:容量硬限制

MEMORY.md上限2200字符,USER.md上限1375字符。听起来够用?但你试试记一个项目的技术栈、代码规范、踩坑历史、用户偏好——很快就会超标。

超限后Hermes的机制是:直接拒绝写入,然后把现有条目摊给你,让你”自己看着办”。这不是智能压缩,是粗暴截断。

问题二:信息污染

你上周说”我在减肥”,这周说”放弃减肥了”。两条记录都在MEMORY.md里。Hermes检索的时候把两条都捞出来,然后给你推荐低卡食谱——因为它分不清哪个是新的。

这种”新旧矛盾”在长期使用后是必然现象,堆得越多越严重。

问题三:重启就丢

这是最致命的问题。MEMORY.md和USER.md本质上是文件系统,会话启动时加载一次,之后的修改如果没有正确落盘,重启后就丢了。

二、外挂记忆工具:8种方案可选

从Hermes v0.7.0开始,执行以下命令可以调出记忆插件选择菜单:

hermes memory setup

执行后会看到8种记忆工具可选,以下是详细对比:

━━━━━━━━━━━━━━

【工具】
【类型】
【检索方式】
【适合场景】
【优点】
【缺点】

━━━━━━━━━━━━━━

Mem0 | 向量+知识图谱 | 语义检索 | 个性化助手 | 生态最大,易用 | 检索能力中等
Hindsight | 多策略融合 | 语义+BM25+图+时间 | 企业知识 | 检索最强(≈91%) | 配置稍复杂
Holographic | HRR全息表示 | 代数检索 | 本地单机 | 超轻量、极速 | 功能简单
Honcho | 心智建模 | 推理型 | 个性建模 | 擅长”理解用户思维” | AGPL协议限制
RetainDB | 时间序列存储 | 全量时间线 | 高精度偏好 | 偏好记忆最强(88%) | Token开销大
ByteRover | 高性能索引 | 向量检索 | 大规模系统 | 高扩展性 | 需额外配置
MemOS | 本地向量库 | 语义检索 | 多Agent共享 | 72%Token节省,团队共享 | 需本地部署
Native | SQLite+FTS5 | 全文检索 | 简单场景 | 无额外依赖 | 不支持语义检索

━━━━━━━━━━━━━━

推荐选择

个人用户:优先选Mem0或MemOS,配置简单,效果好
团队用户:选MemOS,支持记忆共享
企业用户:选Hindsight或RetainDB,检索能力强

三、实战:给Hermes装上MemOS外部记忆

MemOS是目前最流行的方案,支持本地部署、Token节省72%、多Agent记忆共享。以下是完整配置步骤:

3.1 安装MemOS服务

MemOS需要在本地运行一个轻量服务,充当记忆存储层。

方式一:Docker部署(推荐)

# 拉取MemOS镜像

docker pull memtensor/mem-os:latest

# 启动服务
docker run -d \
--name mem-os \
-p 19842:19842 \
-v ~/.mem-os:/data \
memtensor/mem-os:latest

# 验证服务是否运行
curl http://localhost:19842/health

返回`{“status”:”ok”}`表示服务正常。

方式二:直接安装

# 用pip安装

pip install mem-os

# 初始化配置
mem-os init

# 启动服务
mem-os serve

3.2 在Hermes中配置MemOS插件

执行记忆配置向导:

hermes memory setup

进入交互式菜单:

Select memory provider:

1. Native (SQLite)
2. Mem0
3. MemOS
4. Honcho
5. RetainDB
6. Hindsight
7. Holographic
8. ByteRover

Enter your choice (1-8): 3

选择`3`(MemOS)。

3.3 配置MemOS连接参数

向导会要求填写以下信息:

MemOS Service URL: http://localhost:19842

Memory Namespace: default # 用于区分不同用户/项目
API Key: (留空,如需认证则填写)
Enable Semantic Search: y # 启用语义检索
Similarity Threshold: 0.75 # 相似度阈值,越高越严格
Max Results: 5 # 每次检索返回的最大条数

3.4 验证配置

配置完成后,执行以下命令验证:

# 测试写入一条记忆

hermes memory add --content "测试:我的名字叫张三" --type user_info

# 测试检索
hermes memory search "我叫什么名字"

如果返回”张三”,说明外部记忆配置成功。

3.5 配置文件位置

配置完成后,会在 `~/.hermes/config.yaml` 中生成以下内容:

memory:

provider: "memos"
provider_config:
url: "http://localhost:19842"
namespace: "default"
semantic_search: true
similarity_threshold: 0.75
max_results: 5

四、进阶:配置PostgreSQL作为持久化存储

如果MemOS不能满足需求,可以直接用PostgreSQL作为外部记忆存储,容量和稳定性都比SQLite强。

4.1 准备PostgreSQL数据库

方式一:使用Docker

docker run -d \

--name hermes-postgres \
-e POSTGRES_DB=hermes \
-e POSTGRES_USER=hermes \
-e POSTGRES_PASSWORD=your_password \
-p 5432:5432 \
-v ~/hermes-pgdata:/var/lib/postgresql/data \
postgres:15

方式二:使用阿里云RDS

# 记录连接信息

# 主机:rm-xxxxx.postgres.aliyuncs.com
# 端口:5432
# 数据库:hermes
# 用户:hermes
# 密码:your_password

4.2 在Hermes中配置PostgreSQL

hermes memory setup

选择记忆provider,输入:

Select memory provider: 9 (Custom PostgreSQL)

PostgreSQL Host: rm-xxxxx.postgres.aliyuncs.com
PostgreSQL Port: 5432
Database Name: hermes
Username: hermes
Password: your_password
Enable SSL: y
Connection Pool Size: 10

4.3 创建记忆表

首次连接后,Hermes会自动创建所需的表结构。也可以手动执行:

CREATE TABLE IF NOT EXISTS hermes_memory (

id SERIAL PRIMARY KEY,
memory_type VARCHAR(50) NOT NULL, -- 'user', 'project', 'skill'
content TEXT NOT NULL,
metadata JSONB,
embedding VECTOR(1536), -- 如果使用pgvector扩展
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE INDEX idx_memory_type ON hermes_memory(memory_type);
CREATE INDEX idx_created_at ON hermes_memory(created_at);

五、进阶:配置向量检索(语义搜索)

如果需要更智能的记忆检索,可以接入向量数据库,实现语义搜索。

5.1 推荐方案:Qdrant(轻量级)

Qdrant是一个高性能的向量数据库,部署简单:

docker run -d \

--name qdrant \
-p 6333:6333 \
-p 6334:6334 \
-v ~/qdrant_storage:/qdrant/storage \
qdrant/qdrant

5.2 配置Hermes使用Qdrant

在`~/.hermes/config.yaml`中添加:

memory:

provider: "qdrant"
provider_config:
url: "http://localhost:6333"
collection: "hermes_memory"
vector_dimension: 1536
distance_metric: "cosine"
max_results: 10

# 启用混合检索(向量+关键词)
retrieval:
hybrid: true
vector_weight: 0.7
keyword_weight: 0.3

六、故障排查:常见问题解决

问题一:重启后记忆丢失

原因:外部记忆服务没有正确启动,或者配置没有持久化。

解决

# 1. 检查MemOS服务状态

docker ps | grep mem-os

# 2. 如果服务停了,重启
docker restart mem-os

# 3. 检查Hermes配置
cat ~/.hermes/config.yaml | grep memory

# 4. 验证记忆是否持久化
hermes memory search "测试关键词"

问题二:检索返回空结果

原因:可能是向量服务连接失败,或者索引没有正确创建。

解决

# 1. 测试向量服务连通性

curl http://localhost:6333/collections

# 2. 重建索引
hermes memory rebuild

# 3. 查看记忆统计
hermes memory stats

问题三:记忆重复条目太多

原因:长期使用后,同一信息可能在多处重复记录。

解决

# 1. 查找重复记忆

hermes memory deduplicate --dry-run

# 2. 确认后执行去重
hermes memory deduplicate

# 3. 设置自动去重(每周一次)
hermes memory set --auto-deduplicate weekly

问题四:Token消耗太高

原因:检索返回的记忆条数太多,或者没有启用压缩。

解决

# 在config.yaml中优化

memory:
max_recall: 5 # 减少检索条数
compression: true # 启用记忆压缩
forget_threshold: 0.3 # 低于此相似度的自动遗忘

七、配置检查清单

完成配置后,对照检查以下项目:

服务可用性
– [ ] MemOS/Docker服务正在运行
– [ ] `curl http://localhost:19842/health` 返回正常
– [ ] PostgreSQL/Qdrant(如使用)连接正常

Hermes配置
– [ ] `~/.hermes/config.yaml` 中memory配置正确
– [ ] `hermes memory test` 测试通过

功能验证
– [ ] 写入测试:`hermes memory add –content “测试记忆”`
– [ ] 检索测试:`hermes memory search “测试”`
– [ ] 重启验证:重启Hermes后记忆仍然存在

八、性能对比

配置外部记忆后,性能提升明显:

━━━━━━━━━━━━━━

【指标】
【内置SQLite】
【MemOS】
【PostgreSQL】
【Qdrant】

━━━━━━━━━━━━━━

检索速度 | ~50ms | ~20ms | ~30ms | ~15ms
支持容量 | 10万条 | 100万条 | 无限制 | 1000万条
语义检索 | ❌ | ✅ | ❌ | ✅
Token节省 | 0% | 72% | 30% | 50%
多Agent共享 | ❌ | ✅ | ✅ | ✅

━━━━━━━━━━━━━━

装上外部记忆后,Hermes Agent才算真正”靠谮”——你跟它说过的话不会忘,新旧信息会自己去重,检索也会智能匹配。

重启会话?换设备?完全没问题。记忆在外部服务里存着,Hermes每次启动自动加载。

*你在配置外部记忆时遇到过哪些坑?欢迎分享解决方案。*

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

微信公众号二维码

扫码关注公众号

QQ
QQ二维码

扫码添加QQ