我从OpenClaw转到Hermes,结果它天天失忆,让我从一个坑掉进另一个坑!
事情要从上个月说起。年初小龙虾火的一塌糊涂,有一天打开自己家中的飞牛NAS,发现飞牛里边也有了小龙虾,安装步骤简单,几步就搞定了。
然后就和小龙虾聊了一会儿,记得当时接的是千问的大模型,几分钟后,我就到千问后台看了一下。
这不看不知道,看了真是吓一跳,因为我聊的这一会儿,竟然花费了几十块。
然后我每说一句话,千问的后台就会扣除我几块钱,这页太扯了吧!接着,我就查看了一下,关于OpenClaw费用这么高的原因。

大概知道了,就是因为OpenClaw每次都会将一大堆的Skill同时发给了大模型,导致每次输出比输出多得多,费用都发生在了输入。
大概都是教如何设置一下,这样就可以大幅度的减少输入所带来的费用,但是,我先繁琐。
这时恰好看到开源项目 Hermes Agent —— 它能接大模型、能读本地文件、能记上下文,甚至还能连微信。关键是也能部署在自己 NAS 上,而且消耗要比Openclaw要少得多。
这简直就是给我量身定做的,我兴冲冲打开自己飞牛 OS 的 Docker,一行命令就把它装上了。看着容器启动、端口监听,我心想:这不挺简单的嘛?

结果刚聊两句,聊天窗口意外关闭了,再进入之后它已经把我忘得一干二净。
我以为是没正确退出,后来严格用 /exit 退出、甚至重启容器再进去,依然像初次见面。最诡异的是,它明明能跟你聊,但就是记不住任何事。
说好的记忆呢,完全没有了。
我开始排查(其实我是让大模型帮我排查)。
先是怀疑 state.db 没写入。一查,数据库文件时间还停留在几天前,大小纹丝不动。
再看权限,容器里的 hermes 用户 UID 是 10000,而我宿主机数据目录属于 UID 1000,根本写不进去。
于是修权限:chown 10000:10000,然后重启。短时间似乎好了,可没过两天又失忆了。
再查日志,发现一行红色警告:database is locked。原来 Hermes 用 SQLite 存储记忆,多个进程同时读写的时候就会锁死,一旦锁死所有写入都失败。
我赶紧给 config.yaml 加上 WAL 模式、设置 busy timeout,但治标不治本。每次锁死都只能重启容器,而锁死前的对话全丢。
折腾了一周,我终于明白一个道理:Docker 虽然方便,但 SQLite 在容器里天生容易水土不服。
权限映射、文件系统隔离,加上 Hermes 的多进程架构,组合在一起就是记忆灾难。于是我做了一个决定——放弃 Docker,直接在飞牛 OS 上裸装 Hermes。
夜雨聆风