Hermes Agent 记忆满了报错?图文教你快速压缩整理释放空间

你好,我是茂林,一个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消耗。

Leave a Comment