前阵子,小米在编程工具领域投下了一枚重磅炸弹——基于 OpenCode 打造的 MiMo Code 0.1 版正式发布,并以 MIT 许可协议在 GitHub 彻底开源。这波操作直接把“算力换可靠性”和“无限上下文记忆”两大痛点摆上了台面,信息量很足。
目前 MiMo Code 支持四大特性:
- MiMo Auto(限时免费):想薅 token 羊毛的小伙伴得抓紧了。
- 小米 MiMo 平台 OAuth 登录。
- 从 Claude Code 一键迁移:已有的认证配置直接导入。
- 自定义 Provider:支持添加任意兼容 OpenAI 接口的 API。
安装方式极度简单,一行命令全搞定:
curl -fsSL https://mimo.xiaomi.com/install | bash

不得不说,小米在做工和审美上确实有两把刷子。这个安装界面的 UI 设计美感,在同类型开发者工具里绝对算得上第一梯队。
内部集成了 https://ai-sdk.dev/ 的 SDK,支持多模型和多平台的无缝对接;以及 https://models.dev/ 的模型库,提供极其丰富的预训练模型选择。
01、安装与上手实战
官方文档说启动简单,直接敲 mimo 就行。但我实测下来,这第一步就给我“上了一课”——终端直接无情地抛出了报错。

好在 Warp 自带了默认的 Agent 服务,顺着给出的修复指引操作即可。

这里也把解决方案亮出来给大家瞧瞧。

其实说白了,就是重新执行一下 source ~/.zshrc 让环境变量立刻生效,或者干脆新开一个终端窗口。

好家伙,开屏界面居然还有流星划过的动画特效。
输入 /connect 连接我们的服务商。

为了省事,直接选择 Auto 模式,这样可以免登录体验。
顺带配一下 DeepSeek V4 模型。同样执行 /connect,选定 DeepSeek 供应商,填入 API Key,再勾选你想接入的具体模型就完事了。

02、Harness 架构:不只是调用模型
MiMo Code 的整体 Harness 架构设计得非常全面,可以说在“计算、记忆、进化”三个维度上下足了功夫。

这套架构主要瞄准了两大核心痛点:
- 上下文耗尽:由于窗口终有上限,除了做必要的摘要压缩,更要在检索与持久化存储上发力,让 Agent 能更智能地写入和召回关键记忆。
- 指令遵循衰减:模型的长文本指令遵循能力会随着输入变长而走弱,得靠机制来“强行纠偏”,保证它在超长对话中依然稳定输出。
03、实战演练:给 PaiCLI 做个宣传页
先给它派个活:参考 MiMo Code 官网的风格,为我们的项目 PaiCLI 搞一个宣传页。

来看 MiMo Code 的执行表现。

挺可惜的。它先是尝试用 WebFetch,啥也没捞着;接着又想用 CDP 抓取,结果还是空手而归。
得,遇到这种情况必须上点“家法”伺候了。

直接让它去安装 web-access 这个 Skill。从命令行输出能看到,它直接复用了 Claude Code 的默认目录。

理论上我之前在 Claude Code 里装过,不知为何还得再来一遍。不管了,先把权限给它。

继续授权。

到手。

这次终于能抓到页面内容了。很快就摸清了参考网站的设计调性:浅色暖调背景、极简排版、PingFang SC 字体、终端风安装命令。
接下来就是重头戏,让它直接重写 PaiCLI 的宣传页。

稍等片刻,来看效果。

搞定了。直接打开看看,整体风格清爽高级,颇有 MiMo Code 的神韵。


MiMo Code 还支持运行时的新指令排队功能,边跑边改,交互体验相当丝滑。

完工后给它配个子域名,大家也可以直接访问体验一下: https://paicli.paicoding.com/

04、计算的哲学:用算力换可靠性
前面提到 MiMo Code 是围绕“计算、记忆、进化”来设计的,咱们逐一拆解。
首先看“计算”这层。
一个编程 Agent 的基本盘就是把大模型丢进运行时里循环调用。模型只管推理与决策,运行时则负责管理工具、持久化状态、组装每一轮的输入。因为模型本身无状态,每次调用都是空白的,所有的连续性全靠运行时兜底。
对于短任务(10轮以内),直接扔完整的历史对话给模型完全没问题。但一旦任务规模飙升到几十甚至上百步,每一步微小的错误率都会被指数级放大——偏偏长程任务里 Agent 又极度缺乏外部纠错信号。
MiMo Code 的思路很直白:在不同粒度上砸更多的计算资源,以此来换取可靠性。
Max Mode:并行采样 + judge 选优
Max Mode 是 MiMo Code 里最有意思的一项创新设计。
在每一轮做决策时,它会并行生成 N 个候选方案(默认 N=5),每个候选方案独立完成推理和工具调用规划,但不实际执行。随后,由同一个模型充当“裁判(judge)”,横向对比所有候选者的推理过程与行动计划,最终挑出一个最优解去执行。
默认用 temperature=1 进行 5 次独立采样,几乎很难撞车产出完全一样的结果。如果多个候选方案恰好都指向同一个方向,那就说明这条路径置信度极高;反之,当大家意见分歧较大时,再由低温度的 judge 出面选最稳的那条路,显然比指望单次采样靠谱得多。

在 SWE-Bench Pro 上,Max Mode 相比单次采样能有 10-20% 的提升。代价就是大约 4 到 5 倍的 token 消耗。这代价说小不小,但对那些“一步走错,全盘皆输”的长任务而言,非常值。
目前 Max Mode 还只是实验性功能,需手动开启。配置文件通常放在项目根目录 .mimocode/mimocode.json 或者全局 ~/.config/mimocode/mimocode.json,在里面将 experimental.maxMode 设为 true 即可。
Goal:死磕“做完”的验证机制
Max Mode 解决的是“做对”,而 Goal 解决的则是“做完”。
在长任务里有一种极其常见的翻车情况:Agent 扫了一眼后面轮次已有的进展,就急着想宣布“完事了”,甚至反过来向用户“甩锅”提问。
Goal 的机制就是针对这种偷懒行为的。

用户给定一段自然语言描述的停止条件,比如“所有测试通过且代码已提交”。每当 Agent 想终止任务时,系统会自动发起一次独立的模型调用来审查完整对话历史,判断条件是否真正满足。没满足?那就把差距甩给 Agent,让它继续肝;判定为彻底没戏?那就直接退出。
这个验证者不参与实际干活,因此丝毫不会对 Agent 已完成的部分产生认同偏差。实际运行中,误拦的情况比漏放常见得多,整体死循环概率小于 0.5%,达到上限也会自动退出。
如果说 Max Mode 是并行维度(同一步花 N 倍算力选最优),那 Goal 就是串行维度(同一任务上做更顽固的自我检查)。二者可以同时开启,效果拔群。
Dynamic Workflow:将编排逻辑代码化
当任务大到一定程度,比如把整个项目从一种语言迁移到另一种语言,需要协调上百个并行工作单元,这时候逐轮的工具调用就显得力不从心了。
传统做法是把 SOP 流程写进 Skill 文件,试图用自然语言教模型“先做 A,再做 B,如果 C 就做 D”。这在简单场景下还能凑合用,但在复杂流程中会系统性崩盘:上下文压缩可能吞掉关键步骤,模型可能跳过某些环节,分支和重试逻辑全靠模型“自觉”而非代码保证。
问题的症结就在于,编排逻辑以自然语言存在,而自然语言天生就是模糊、可遗忘且不可验证的。
Dynamic Workflow 干了一件事:把编排逻辑变成代码。

主 Agent 会生成一段 JavaScript 脚本,在隔离沙箱中确定性执行。脚本通过 agent() 派出 Sub-agent,借助 parallel() 和 pipeline() 精准控制并发。
换个角度看,Skill 是自然语言写的 SOP,而 Workflow 是代码写的 SOP——高下立判。
05、记忆的艺术:让上下文无限延伸
把会话想象成一串从左至右排列的对话轮次。窗口有上限,轮次却在不断累积,窗口迟早会被撑爆。如果不做干预,会话要么戛然而止,要么悄悄退化。
MiMo Code 的做法是在窗口被填满前的几个固定位置“打点”,这些位置被称为 Checkpoint。

每到一处 checkpoint,系统会派出独立的 Writer 子代理,读取所有对话,将结构化状态落盘。主 Agent 继续干活,Writer 并发执行,互不耽误。
当窗口快摸到天花板的瞬间,执行一次 Rebuild,切断当前窗口,开启新窗口,再用已持久化的文件作为种子重建上下文。主 Agent 在新窗口里“醒”来后就能无缝衔接接着干。
由“Checkpoint 打点 + Rebuild 重建”完结的对话轮次序列,就是一个 Cycle。Cycle 没有数量上限,单次 Cycle 受物理窗口限制,但逻辑会话是 Cycle 组成的链,而那条链,没有最大长度。
四层记忆体系
Writer 可不是只写一个文件,它维护着一套分层的记忆体系,不同层级有着截然不同的生命周期。

- Session 记忆(checkpoint.md):仅存活于当前逻辑会话中,记录这次会话的完整工作状态。
- Project 记忆(MEMORY.md):项目级的持久知识库,保存架构决策、用户规则、反复验证过的技术事实。
- Global 记忆:用户级偏好,跨项目生效。
- History:每个会话的完整 SQLite 轨迹。每条消息、每次工具调用都原样存储,不建索引。当结构化记忆翻不到某个细节时,Agent 通过 history 工具直接回溯原始记录。
你可以把主 Agent 想象成一个只管随手记笔记的人,它不需要操心信息该归档到哪个结构化字段,只需在 checkout 时把“便签”丢给 Writer,由 Writer 去精准分拣。
总结
必须点名表扬 OpenCode 这个开源项目。

MiMo Code 正是站在 OpenCode 的肩膀上构建的,它不仅几乎完整保留了原项目的核心能力(多 Provider、TUI、LSP、MCP、插件),还在此基础上拓展出了持久化记忆、智能上下文管理、子智能体编排、目标驱动的自主循环以及 Compose 工作流等重磅特性。
这或许就是开源的真正意义——站在巨人的肩膀上,造出更具颠覆性的东西来。
说真的,从 DeepSeek 走出来的这群技术人,对推动国产模型的进化做出了不可磨灭的贡献。技术圈就该这样,只有更多的选择、更优秀的产品,才真正值得被用户信赖。