MiMo Code 的多智能体协作方案,其核心设计非常清晰:并非依赖模型间的隐性默契,而是通过一套结构化的通信协议实现可靠协同。具体而言,它采用标准化的 JSON Schema(包含 role、task_id、phase 等字段)、三重检查点机制、严格的工具调用绑定,并结合 /dream 记忆收敛功能,使得整个协作流程具备可验证性与可追溯性。

实际上,这种协作机制不依赖于模型对上下文的自发理解,而是通过清晰的字段定义和状态契约,确保每一步操作的稳固可靠。接下来我们逐一解析其核心机制。
Agent 间通信基于标准化消息格式
首先来看 Agent 间的通信机制。在 MiMo Code 中,所有子 Agent(包括 Planner、Coder、Reviewer、Memory Keeper)在交换消息时都必须遵循统一的 JSON Schema 格式,其核心字段包含:
- role:明确规定发送方角色,不可使用自由文本,仅允许预定义的枚举值
- task_id:跨 Agent 共享的唯一任务标识符,用于任务追踪与回溯
- phase:当前阶段标识(例如 "plan_start"、"code_gen"、"test_run"),用于驱动状态机流转
- artifact_ref:指向生成产物的路径或哈希值(例如 ./src/components/Button.tsx 或 sha256:abc123),避免引用歧义
- reasoning_content:当开启思考模式时必须传递的字段,包含推理链的快照信息,并且在多轮对话中需保持不变,否则将触发 HTTP 400 错误
状态同步靠三重检查点机制
在状态同步方面,MiMo Code 设计了三重检查点机制。主 Agent 无需自行保存状态,但必须能够随时读取最新的状态信息。具体而言,由子 Agent 自动维护以下三类检查点:
- 项目记忆快照:每当文件发生变更后,Memory Keeper 会提取 AST 结构及注释摘要,并写入 .mimo/memory/project.json 文件中
- 会话检查点:每经过 10 轮对话或遇到关键的 phase 切换时,自动将压缩后的上下文保存至 .mimo/checkpoint/
.ckpt - 任务进度标记:每个 task_id 对应一个 .mimo/progress/
.json 文件,包含 status(pending/running/done)、last_updated、next_phase 等字段,所有 Agent 在读写之前需要先进行加锁校验
工具调用与响应严格绑定
在工具调用方面,通信协议要求请求与响应严格绑定。例如,当 Planner 调用 shell 工具查询 Git 状态,或 Coder 调用 fs_write 修改文件时,协议强制要求:
- 工具调用请求(tool_call)必须包含 call_id 和 caller_role
- 执行结果返回(tool_response)必须与同一 call_id 匹配,并包含 exec_status(success/error)、stdout、stderr 以及 side_effects(例如“修改了 3 行 package.json”)
- 如果响应缺少任一必需字段,下游 Agent 将拒绝解析,并触发回退流程——要么重试,要么降级为人工确认
记忆协同靠 /dream 周期性收敛
分散的记忆信息容易产生碎片化,如何解决这个问题?MiMo Code 内置了 /dream 命令,每 7 天自动唤醒一个独立的 Memory Consolidator Agent 来执行以下操作:
- 扫描 .mimo/memory/ 和 .mimo/checkpoint/ 目录下的所有历史记录
- 合并重复的记忆条目,剔除已失效的路径(例如已被 git rm 删除的文件)
- 验证代码片段是否仍可编译运行(通过轻量级沙箱环境执行)
- 输出一份 current_state.md 文件,作为新会话的默认上下文锚点
- 整个流程不会干扰主工作流,全程异步执行、无阻塞
