mimo code的长期上下文能力依赖四层本地记忆系统而非扩大上下文窗口:项目记忆(memory.md)、会话检查点(checkpoint.md)、任务进度追踪和notes.md,支持跨会话规则复用与自动修复测试。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

MiMo Code 的长期上下文能力不是靠“拼命塞更多文字进窗口”实现的,而是靠一套可落地的记忆系统——它真能记住你上周改过的测试逻辑,下次跑测试时自动对齐。
记忆怎么存:四层结构,不是堆日志
它不靠模型自己硬记,而是把记忆分层管理:
- 项目记忆(MEMORY.md):跨会话持久保存,比如你写过“所有Service层方法必须抛BusinessException而非返回null”,这个规则就存在这里,下次生成代码或修复测试时会被主动调用
-
会话检查点(checkpoint.md):每次对话中关键节点自动生成,含任务树、错误摘要、设计决策。比如你上次运行test失败,报错是
NullPointerException in OrderService.calculateTotal(),这个信息就被结构化存进检查点 - 任务进度追踪:每个子任务有自己的状态标记(pending / fixed / verified),修复测试用例这类任务会单独记录“已修正断言值,已补全mock行为”
- notes.md(会话便签):你手动写的临时备注,主Agent可读可写,但其他记忆文件只读——避免误改核心规则
自动修复测试用例的典型流程
当你输入“修复OrderServiceTest里testCalculateTotalWithDiscount()的断言失败”,MiMo Code会这么做:
- 先查
MEMORY.md确认项目规范:比如“折扣计算必须基于BigDecimal,精度为2” - 再读最近的
checkpoint.md,找到上次执行该测试时的错误堆栈和实际返回值(比如返回了19.999999999,但断言写的是20.00) - 定位到测试文件,分析被测方法逻辑,发现它用了
double做中间运算 → 这违反了MEMORY.md里的精度规范 - 同步修改两处:① 把
calculateTotal()内部改为BigDecimal链式计算;② 更新测试用例,用assertEquals(expected, actual, 0.001)或BigDecimal.equals()替代原始浮点断言 - 最后写回新的checkpoint,并在MEMORY.md里追加一条:“OrderService数值计算统一使用BigDecimal.setScale(2, HALF_UP)”
什么时候会“记错”或“记不住”?
它的记忆不是万能的,几个常见边界情况要注意:
- 首次接触新模块时,
MEMORY.md为空,它会按通用Java/JS规范生成测试,不会凭空猜你的业务约束 - 如果你手动删了
MEMORY.md或checkpoint.md,重启后记忆就清零——它不依赖云端同步,纯本地SQLite存储 - 跨项目切换时,记忆严格隔离:A项目的规则不会污染B项目,
MEMORY.md按工作目录自动切换 - 遇到模糊指令如“让测试更健壮”,它会优先复用最近一次类似任务的检查点,而不是瞎猜——所以你第一次明确写清楚“mock所有外部API调用”,后续就能自动继承
怎么让记忆真正“好用起来”?
不用等它慢慢学,你可以主动喂养关键信息:
- 在项目根目录放一个
.mimo/rules.md,写几条你团队的真实约定,启动时MiMo会自动导入到MEMORY.md - 每次修复完测试,顺手加一句
/remember 测试需覆盖空订单场景,这条就会进notes.md,下次计划模式(plan)会把它纳入检查清单 - 用
/dream命令手动触发一次记忆收敛,它会合并重复规则、验证路径有效性(比如确认你提到的某个类名现在还存在),压缩冗余内容
不复杂但容易忽略:记忆不是被动容器,而是参与决策的活部件。你给它一条清晰规则,它下次就能帮你守住那条线。











