OpenClaw 开源贡献与记忆系统重构
PR 已被官方合并;Fork 重构记忆与上下文管理两大核心模块
问题
官方版的记忆是单层向量检索:没有遗忘机制、不会主动提取,embedding 服务一旦异常整个记忆系统直接崩溃;长会话下上下文管理也会爆 token——而且官方对 CJK 文本的 token 估算偏低约 40%,中文场景问题更严重。
做法
先从小处建立信任:提交修复 MiniMax API 端点配置错误的 PR,已被官方合并。然后 Fork 深度定制:① 把单层向量检索重构为三层认知记忆架构(检索引擎层/认知记忆层/调度层),补上遗忘与主动提取;② 四级检索降级链:embedding 失败 → fallback provider → keyword-only → SQL LIKE 多 token 打分,任何一级挂掉都有下一级兜底;③ 四层上下文管理:入口截断(60% 头 + 30% 尾,完整内容落盘可按需读取)→ 三级递进裁剪 → 持久化会话清理(原子写入替换已消化的冗余工具输出)→ CJK 感知的 token 预算。
结果
已合并
官方 PR
四级降级,单点故障不再致命
检索可用性
修正约 40% 低估
CJK token 估算
AI 在这个项目里的角色
改造对象就是 Agent 系统本身:读懂一个别人写的大型 Agent 代码库,找到架构级问题并重构——比从零写一个更能说明工程深度。
这个项目证明什么
从零写项目容易「只在自己的舒适区里转」。OpenClaw 这件事的难度在于:读懂一个活跃开源 Agent 项目的内部架构,指出它的结构性问题,然后动手改掉。
改了什么
记忆:从单层到三层。 官方版本质是「往向量库里塞、按相似度捞」——没有遗忘,不会主动提取。重构后分为检索引擎层、认知记忆层、调度层,记忆有了生命周期管理。
可用性:四级检索降级。 官方版 embedding 服务一挂,记忆整个不可用。重构后:embedding → fallback provider → keyword-only → SQL LIKE 多 token 打分,逐级兜底。(眼熟吗?这个网站聊天链路的「真 AI → 演示模式」降级是同一个设计哲学。)
上下文:四层管理。 入口截断保留头 60% 尾 30%、完整内容落盘按需读取;三级递进裁剪;持久化会话清理用原子写入替换已消化的冗余工具输出;最后是 CJK 感知的 token 预算——官方对中文约 40% 的低估会让所有上游策略失准,这个修正是中文场景能用的前提。
起点是一个已合并的 PR
修复 MiniMax API 端点配置错误——很小,但走完了完整的开源协作流程:发现问题、定位、提 PR、过 review、合并。