MiMo Code的持久化记忆是工程化状态维持系统,基于SQLite FTS5构建本地记忆底座,通过项目记忆、会话检查点、动态简报压缩三层协同,并支持/dream自我进化与人工干预。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
MiMo Code 的持久化记忆不是“把聊天记录存下来”那么简单,而是围绕真实开发场景设计的一套工程化状态维持系统。它解决的核心问题是:当一个编程任务需要跨天、跨会话、跨上百轮交互时,AI 怎么还能记得你上周定的接口规范、昨天改过的配置路径、甚至临时放弃的某个分支策略?答案不在模型里,而在它的记忆架构中。
SQLite FTS5 驱动的本地记忆底座
所有记忆数据默认写入项目根目录下的 memory.db 文件,基于 SQLite 的 FTS5(Full-Text Search)扩展构建。这不是普通数据库表,而是专为语义检索优化的索引结构——支持模糊匹配、词干提取、权重排序,比如搜 “暗色模式组件” 能命中 “dark mode toggle” 或 “theme switcher”。
- 每次会话结束时,主 Agent 不保存原始对话流,而是由 Writer 子 Agent 提取关键实体(文件路径、函数名、决策结论、错误日志)生成结构化条目
- MEMORY.md 是可读摘要,checkpoint.md 是二进制快照,二者都由 FTS5 索引同步维护,保证搜索响应在毫秒级
- 数据库自动按项目隔离,不同仓库各自独立记忆,不混用也不泄露
三重记忆机制协同工作
单一存储无法应对长程任务的复杂性,MiMo Code 把记忆拆成三个层次,各司其职:
- 项目记忆:长期沉淀。自动生成 MEMORY.md,记录架构选型、编码规范、已知坑点、第三方依赖约束。例如你第一次问“这个服务要不要加 JWT 验证”,回答会被提炼为一条规则写入项目记忆,后续所有鉴权相关操作自动参考
-
会话检查点:中断续写保障。每 15 轮交互或检测到 Git 提交/文件保存时,自动创建 checkpoint.md。下次用
mimo --resume启动,直接加载最新检查点,跳过重复解释 - 动态简报压缩:上下文守门员。当对话接近模型窗口上限时,独立子 Agent 启动压缩流程:合并同类操作(如连续三次修改同一 config.ts)、剔除中间调试输出、保留最终状态和失败原因,生成精简版上下文供主 Agent 继续使用
/dream 命令:让记忆自我进化
记忆不是静态归档,而是持续演化的知识体。/dream 是 MiMo Code 内置的记忆治理命令,每 7 天自动触发(也可手动执行),它调用专用 Distill Agent 完成四件事:
圆弧形进度条插件arc-progress.js
下载
- 扫描全部历史会话与当前 MEMORY.md,识别重复描述(如多次提到“API 返回 401 时要刷新 token”)并去重合并
- 验证所有引用的文件路径是否仍存在,失效路径自动标记为 obsolete 并降权
- 将分散的同类决策(比如五次重构某模块的尝试)聚类,生成“该模块重构建议”新条目
- 输出一份 human-readable 的 dream-summary.md,告诉你这周项目认知有哪些更新
开发者可干预的记忆控制点
记忆系统默认全自动,但关键节点留出人工干预入口:
- 用
/forget file:src/utils/api.ts主动清除某文件相关记忆,适合重构后清理旧上下文 - 编辑 MEMORY.md 可直接增删项目规则,保存后立即生效(FTS5 索引自动重建)
- 设置
MIMO_MEMORY_RETENTION=30d环境变量,控制历史会话在数据库中的保留天数 - 启用
--no-memory启动参数可完全关闭持久化,适合敏感代码仓临时调试
这套机制不依赖大模型自身记性,而是用确定性工程手段兜住不确定性。它不承诺“永远不忘”,但确保“该记住的,一定记得住;该遗忘的,干净利落。”
