你好,我是茂林,一个AI爱好者,最近一直在折腾OpenClaw/Hermes,踩过老多坑了。我把踩过的坑整理出来,帮你少走弯路。
我遇到的问题:
解决什么问题
你在用 Hermes Agent,突然弹出错误:
{
"success": false,
"error": "Memory at 2100/2200 chars. Adding this entry would exceed the limit. Replace or remove existing entries first."
}
这是 Hermes 提示你记忆容量满了,不能再加新内容。我教你一分钟快速压缩整理,释放空间。
原因分析
Hermes 设计哲学就是有界记忆:MEMORY.md 限制 2200 字符,USER.md 限制 1375 字符,目的是让系统prompt保持紧凑,不浪费token。满了就得主动整理,去掉没用的,合并重复的。
快速压缩五步走
步骤 1:看一下现在都存了什么
Hermes 报错的时候会返回当前所有条目,你先看一遍:
"current_entries": [
"User runs Ubuntu 22.04...",
"...",
"..."
]
找一找哪些可以删、哪些可以合并。
步骤 2:识别可以清理的内容
这些内容可以放心删:
- ❌ 已经完成的临时任务信息
- ❌ 记错了、已经纠正的错误信息
- ❌ 很容易就能搜到的常识(比如"Python 3.12支持f-string")
- ❌ 重复保存的相同信息
这些内容要保留:
- ✅ 环境信息(系统版本、工具路径、项目位置)
- ✅ 项目规范和约定
- ✅ 踩过的坑和解决方法
- ✅ 用户偏好和习惯
步骤 3:合并相关条目
把分散的几条合并成一条紧凑的。比如原来三条:
项目 ~/work/api 使用 Go 语言。
项目使用 sqlc 生成数据库代码。
项目使用 chi 路由器。运行测试用 make test。
合并成一条:
项目 ~/work/api: Go 1.22, sqlc for DB queries, chi router. Run tests with 'make test'.
从 80+ 字符压缩到 50 字符,省出 30 字符空间。
步骤 4:执行替换删除操作
清理好之后,用 replace 把旧条目替换成压缩后的版本:
memory(
action="replace",
target="memory",
old_text="项目 ~/work/api 使用 Go 语言",
content="项目 ~/work/api: Go 1.22, sqlc for DB queries, chi router. Run tests with 'make test'."
)
删掉没用的条目用:
memory(
action="remove",
target="memory",
old_text="这里放要删除条目的唯一片段"
)
步骤 5:检查容量,添加新内容
完成后再看一下容量,一般就能腾出几百字符空间,然后再加新内容。
懒人方案:自动压缩提示词(直接复制用)
如果你不想手动整理,直接把这段提示词发给 Hermes,它会帮你自动压缩:
当前MEMORY容量已满,请帮我:
1. 列出当前所有记忆条目
2. 识别可以删除的过时内容和重复内容
3. 将相关条目合并为更紧凑的版本
4. 保持总字符数在2000以内(留出200空间给新内容)
5. 用replace操作完成合并替换
实测下来,一次能腾出 300-500 字符空间,够用很久。
预防技巧:80% 规则
Hermes 文档推荐:当容量超过 80%(MEMORY.md > 1760 字符),就主动整理一次,不要等满了报错再动手。这样不会打断任务流程。
常见问题
Q:为什么 Hermes 要限制这么死?自动扩容不行吗?
A:设计初衷就是保持焦点,避免"记忆垃圾",让真正重要的信息总能在系统prompt里。如果需要更多记忆,用 session_search 搜历史会话。
Q:我就是想要更大容量,能改吗?
A:能,在 config.yaml 里改:
memory:
memory_char_limit: 3000
user_char_limit: 2000
改完重启生效。不过官方不建议改太大,会增加token消耗。