如果你使用 AI 代码助手,你一定知道那种挫败感。结束了一整场漫长的会话——调试、重构、探索新代码库——第二天代理打开的是一个空白的终端。它什么也不记得。它不知道你对架构做了什么决定,不知道你为项目定下了哪些规则,也不知道你为什么在两小时测试后放弃了那个库。
每一次会话都从零开始。
这个问题——白板状态(blank slate)——是当前编程代理的阿喀琉斯之踵。而小米刚刚发布的一个项目正迎面直击这个痛点。
编程代理的记忆问题
目前主流的代码助手都依赖短暂的上下文。打开一个对话,代理接收当前项目状态和前面几条消息,但一旦你关闭终端,一切就都消失了。模型没有地方保存它学到的东西。
有一些局部解决方案——指令文件、项目规则、预设提示系统——但没有一个能让代理在工作过程中有机地积累知识。在一次长时间会话中发现的一切(哪些模块有耦合问题、你决定采用什么模式、哪些函数已弃用但仍在用)在上下文过期时全部消失。
小米问了一个问题:如果代理能自己书写记忆呢?
MiMo-Code 的工作原理
MiMo-Code 是一个原生终端编程代理,小米于 2026 年 6 月 10 日以 MIT 开源许可证发布,基于 OpenCode 的一个分支。其核心思想简单但强大:不再仅仅依赖模型的上下文窗口,代理会将信息持久化写入项目仓库中的 Markdown 文件,在下次工作时利用这些文件重建状态。
系统包含三种记忆类型:
MEMORY.md — 主文件。代理在此保存项目的持久化知识:架构决策、样式规则、代码组织方式的细节、重要依赖和警告。这是代理对项目”知道”且不应在会话间遗忘的内容。它设计为人类可读——你可以打开它,直接看到代理保留了哪些信息。
checkpoint.md — 当前会话状态的结构化快照。一个检查点编写子代理会根据模型上下文大小决定何时保存。当恢复会话时,代理从最近的检查点重建上下文,结合 MEMORY.md、任务进度和保留的近期消息。
notes.md — 临时笔记区域,供代理在会话期间快速记录。它不设计为跨项目持久化,而是给代理一个记事本,可以随手记录想法而不污染永久记忆。
任务(tasks/
所有这些信息都通过 SQLite FTS5(全文搜索)建立索引,使代理在需要检索特定细节时能高效搜索自己的记忆。而且全部是可读的 Markdown——你可以打开文件,手动编辑修正内容,或者直接阅读代理对你的项目学到了什么。
关键之处在于智能注入:MiMo-Code 不会在每次模型调用时塞入全部记忆。它使用 Token 预算来控制有多少检查点内容、记忆和笔记进入上下文,根据当前任务优先选择最相关的内容。
Dream:每 7 天做梦一次的代理
这个名字听起来很诗意,但 “dream” 实际上是一个非常实用的维护机制。
每 7 天——自动执行,无需用户请求——MiMo-Code 启动一个独立代理,审查近期会话历史和当前记忆文件。它做的事情本质上就是清理和压缩:
- 去重:如果多条记忆条目中存在重复信息,将其合并为一条。
- 验证路径:如果有文件或目录引用因重构、移动或重命名而发生变化,予以更新。
- 压缩:降低记忆的冗长度,只保留相关内容,剔除过去会话中的噪音。
- 提取持久化内容:识别近期会话中哪些信息值得进入 MEMORY.md,哪些应该丢弃。
这就像代理把自己学到的东西”睡”了一遍,巩固记忆,剔除冗余。无需人工干预。结果是记忆不会无限增长——它保持紧凑、相关且不断更新。
Distill:将重复工作转化为技能
如果说 dream 是被动巩固过程,那么 distill 就是主动的可复用知识提取。
Distill 是一个需要手动调用的命令。它的工作是分析代理近期的工作,检测重复出现的模式(你经常做的手动工作流、总是组合执行的一系列命令、反复设置的配置),然后将它们打包为可复用的技能。
具体来说,distill 可以生成三种类型的输出:
- 技能(Skills):代理可按需执行的能力,将重复步骤封装为单条指令。
- 子代理(Subagentes):为处理完整的周期性任务而创建的专门化代理。
- 自定义命令(Comandos personalizados):针对以往需要多个手动步骤的操作序列的快捷方式。
这里的承诺是:你在数周或数月间持续使用的代理会随着时间的推移变得越来越高效——不是因为底层模型变强了,而是因为它积累了一套越来越丰富的、符合你工作方式的知识制品(knowledge artifacts)。
65% 有效性到底意味着什么?
小米公布了一项双盲 A/B 研究的结果,涉及 576 名开发者和 474 个私有仓库,将 MiMo-Code 与 Claude Code 进行了对比。数据很有意思:
在少于 200 步执行的任务中,两个代理的表现几乎相同——各自获得约 50% 的偏好。这很合理:在短任务中,短暂的上下文已经够用。修复一个小 bug 或编写一个函数不需要持久记忆。
但当任务超过 200 步执行时,天平开始倾斜:MiMo-Code 以超过 65% 的偏好胜出。这是一个显著的跃升,直接归因于跨会话记忆。当工作持续数小时或数天时,记住已经做了什么、学到了什么,就带来了质的区别。
有必要把这个放在背景中看待:该研究由小米自行报告,该工具才公开几天。目前还没有独立的复现验证。但其方法论——双盲、人类评审、真实仓库——是扎实的,样本量(576 名开发者)也具有一定的说服力。
还有一项补充指标:SWE-bench 报告 MiMo-Code 得分为 57.2%,这是一个可观但并不革命性的数字。65% 不是一个标准基准,而是在真实世界任务中的人类偏好度量——而这最终才是最重要的。
与开源生态系统的联系
MiMo-Code 并非凭空而生。它是 OpenCode 的一个分支,OpenCode 是生态系统中已有的开源编程代理。小米以此为基础,增加了记忆系统、dream/distill 命令、子代理系统和三种操作模式(build、plan、compose)。
这之所以重要,有两个原因。
第一,OpenCode 已经拥有一个社区和经过验证的代码基础。小米没有重新发明轮子——它将持久记忆整合进一个功能正常的代理中,并以 MIT 许可证将其释放回社区。任何源自 OpenCode 的衍生产品都有可能受益于这些思路。
第二,这一举措验证了一个策略:与其在基础模型上竞争(入场成本高得离谱),不如在代理架构上竞争——它如何管理上下文、如何持久化知识、如何自动化自身的维护。这对生态系统来说是一个有前景的方向。
这对未来的意义
MiMo-Code 指明了编程代理的一个明确方向:持久化且自我管理的记忆将成为关键差异化因素。
如今,大多数代码助手在会话之间是”无知的”。明天,那些能够学习和保留知识的代理在大型项目中会拥有质的优势。不是因为模型更聪明了,而是因为包围它的系统更复杂了。
一些值得关注的启示:
长期项目,代理历久弥新:一个在同一个项目上工作数月的代理积累了任何初始提示都无法比拟的上下文知识。它知道反模式在哪里,使用了哪些约定,代码的哪些部分很脆弱。
更自然的人机协作:当代理记住之前的对话时,互动更像与同事合作,而不是每次都向搜索引擎提问。你不需要重复上下文。
维护自动化:dream 和 distill 表明,代理可以在不需要人工干预的情况下维护自己的记忆。更自主的代理方向由此展开。
记忆债务的风险:也有不那么光明的一面。如果记忆被污染(错误信息通过 dream 循环持续存在),如果不加控制地增长,或者如果代理过度依赖过时的记忆,可能会引发新的问题。记忆质量管理将成为一个重要领域。
就目前而言,MiMo-Code 才刚刚诞生。但它已经在版图上钉下了一个标记:会记住的编程代理将成为常态,而不是例外。而小米每 7 天的”做梦”机制,也许只是代理通过经验真正学习的第一步。