Hermes Agent重启就失忆?外部记忆系统配置详解,让你的AI永不忘记
用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每次启动自动加载。
*你在配置外部记忆时遇到过哪些坑?欢迎分享解决方案。*