MiMo Code 源码解读

逐层拆读小米开源的终端编码 Agent“MiMo Code”的源码——它从 OpenCode 分叉而来,这本书讲它为长程任务加了什么:检查点与上下文重建、分层记忆、防空转、Actor 与 Workflow。

作者 David更新于

MiMo Code(命令行叫 mimo)是小米 MiMo 团队开源的终端编码 Agent:跑在终端里的全屏 TUI,能读写代码、执行命令、管理 Git,并靠持久化的记忆在多次会话之间保持对项目的理解。它不绑定模型,除了小米 MiMo 平台,也能接入各家厂商的 API。

它不是从零写的。MiMo Code 以 OpenCode 为底座,2026 年 6 月以一个整体提交开源,按源码比对最接近 OpenCode v1.14.19(2026-04-20),此后独立演进。底座之上,它把功夫下在长程任务上:一个任务跑上几百步、跨越好几个上下文窗口时,怎样不丢状态、不原地打转、不过早收工。

这个专栏把这些改动逐层拆开读。

源码基准

本专栏所有引用以下述快照为准:

项值
仓库github.com/XiaomiMiMo/MiMo-Code
commit2a0eb706e95a77cba34a319e9f11f33f26d4450c(即 v0.1.14 标签)
版本@mimo-ai/cli v0.1.14
快照日期2026-09-02
上游基线OpenCode v1.14.19(2026-04-20)
许可MIT
运行要求从源码开发需 Bun 1.3.14

所有路径都相对仓库根,例如 packages/opencode/src/session/checkpoint.ts。注意引擎目录仍叫 packages/opencode,产品层面的名字才改成了 MiMo:配置目录是 .mimocode/,环境变量以 MIMOCODE_ 开头。

规模:git 跟踪的 .ts/.tsx 文件(不含测试)全仓 1433 个、约 30.2 万行;其中引擎所在的 packages/opencode/src 有 674 个文件、14.1 万行,而上游 v1.14.19 的同一目录只有 443 个文件、8 万行。多出来的部分——新增 238 个文件约 4.2 万行、改动 254 个文件,外加约 5.3 万行的内置技能包——就是本书的主题,全景见从 OpenCode 分叉:增量全景。

读者预设:默认你会读 TypeScript。MiMo 沿用了 OpenCode 的 Effect 写法,不熟的话先读《OpenCode 源码解读》的“怎么读这份源码”。上游原有的机制,本书一两句带过并链接到那本书;但那本对照的是 OpenCode v1.18.30,比 MiMo 的基线新了近五个月,细节未必相同,凡本书涉及之处都以 MiMo 的代码为准。

这个专栏怎么读

每一章尽量走两条线:

  • 怎么用——这个功能在 mimo 里长什么样、怎么开启、怎么配置;
  • 怎么实现——翻到对应模块的源码,看它在底层到底怎么做,以及相对上游 OpenCode 改了什么。

侧重结构与数据流:讲清“一件事经过哪些模块、数据怎么流、边界契约是什么”,而不是逐行贴代码——关键处才引一小段源码点睛。MiMo 仓库自带不少设计文档与博客说明,本书逐条对照过代码,二者不一致时写代码的实际行为,并在正文里指出出入。

和站内其他专栏的关系

专栏视角
《OpenCode 源码解读》底座:MiMo 沿用的服务端架构、会话引擎、工具与提供方适配
《从 LLM 到 Coding Agent》教学最小实现:一个 Coding Agent 在裸 LLM API 之上该做哪些事
《Grok Build 源码解读》Rust 生产实现:xAI 的终端 Agent 怎么做
《Kimi Code 源码解读》另一种 TypeScript 生产实现:DI × Scope 引擎、vendored 的 pi-tui 与自研嵌入式数据库
《Claude Code 中文手册》、《Codex 中文手册》MiMo 能导入这两家的会话,也能在原地打转时把活交给它们的命令行
本专栏在底座上做长程任务改造:状态怎么跨窗口、Agent 怎么自己判断该不该停、多个 Agent 怎么协作

它有什么特别的

读之前先知道这份源码值得看的地方:

  • 一个会话,多段窗口。检查点按上下文用量分档在后台写入,由隐藏的 checkpoint-writer 子智能体按 11 节模板维护;用量越过触发线,就用检查点、用户原话和各级记忆重建上下文,写不出检查点才退回传统压缩。
  • 记忆分层,定期整理。项目 MEMORY.md、会话笔记、任务进展都是磁盘上的文件,FTS5 只当检索缓存;dream 与 distill 两个隐藏智能体回看近期会话(可手动触发,自动运行要在配置里打开),把知识并进记忆、把反复出现的手工流程打包成可复用的技能等资产。
  • 防空转。/goal 让一次单独的裁判调用决定能不能收工;Try-Best 检测器(默认关闭)发现原地打转就暂停当前轮,可交给 Codex CLI 或 Claude Code CLI 接手;n-gram 监控打断复读;实验性的 Max 模式每一步并行生成多个候选再挑一个。
  • 多智能体。actor 注册表取代了上游的 task 子代理,前台后台、同会话切片与独立子会话都能表达;持久化的收件箱把后台结果与权限请求送回父会话;实验性的 Orchestrator 用一个会话调度一群子会话。
  • 可编程的编排。Workflow(实验开关,默认关闭)把多智能体流程写成跑在 QuickJS 里的脚本,内置 compose、deep-research、fact-check、research-experiment 四个;GPT 类模型顶层只看到一个 exec 工具,在同一个沙箱里批量调用宿主工具。
  • 为 token 与模型差异做的工程。配置打开后,actor、task、cron、session 四个工具可以改用受限的命令行语法调用,实验开关下 bash 输出还会按形状剪裁;系统提示词按模型家族挑选;每个实例还内置一套 OpenAI 兼容的 /v1 接口,让技能和子进程借用已配置的模型。

路线图

  • 第 0 部分 · 导论与全景——它是什么、从 OpenCode 分叉的增量全景、怎么读这份源码、一条消息的旅程。
  • 第 1 部分 · 长程上下文——周期与检查点、检查点写手、上下文重建、压缩与修剪。
  • 第 2 部分 · 记忆与自我进化——分层记忆、历史轨迹检索、Dream 与 Distill。
  • 第 3 部分 · 自主运行——Goal 裁判、树状任务、Try-Best 与 Hand-off、复读检测与重试、Max 模式、定时任务。
  • 第 4 部分 · 多智能体——Actor、收件箱与进度检查、Orchestrator。
  • 第 5 部分 · 编排——Compose、Workflow 运行时、四个内置 Workflow、exec 与 QuickJS 沙箱。
  • 第 6 部分 · 工具、技能与护栏——内置技能与检索、命令行式工具调用与 Token 精简、Git 隔离与安全护栏、MCP。
  • 第 7 部分 · 模型、服务与终端——提供方与提示词路由、内置 LLM 服务、从其他 Agent 迁移、终端体验,以及全书回顾。

准备好了,就从 MiMo Code 是什么 开始。

本页目录