MiMoCode:终端里的编码 Agent,用 MEMORY.md + SQLite FTS5 把项目记忆跨会话留住
MiMoCode 是终端原生的 AI 编码助手:读写代码、执行命令、管理 Git,并靠一套持久记忆系统在会话之间保持对项目的理解。项目地址 XiaomiMiMo/MiMo-Code,官网 mimo.xiaomi.com/coder,设计思路见博客,中文说明在 README.zh.md,配套的 awesome-mimo-agent 收录了 Agent 生态。
安装与首次启动
curl -fsSL https://mimo.xiaomi.com/install | bash # macOS/Linux
powershell -ep Bypass -c "irm https://mimo.xiaomi.com/install.ps1 | iex" # Windows
npm install -g @mimo-ai/cli # 全平台
mimo
首次启动会自动引导配置,可选:小米 MiMo 平台 OAuth 登录、Codex(ChatGPT Pro/Plus)OpenAI OAuth、从 Claude Code 导入认证、在 provider 列表里按 API key 或 OAuth 接入,或接自定义 OpenAI 兼容 API。
已知问题
- WSL 复制乱码:
sudo apt install xsel - macOS 默认终端(Terminal.app)不支持,出现渲染错位/闪烁请换 iTerm2 或 VS Code 集成终端:
brew install --cask iterm2 - SSH 下 TUI 卡顿:远端跑服务、本地渲染。
# 远端(项目目录)
mimo serve --port 4096
# 本地
ssh -N -L 4096:127.0.0.1:4096 user@remote-host
# 本地另一个终端
mimo attach http://127.0.0.1:4096
装饰动画引起的卡顿,可以用 /vivid 或 ctrl+p 命令面板在 Vivid/Minimal 之间切换。
- Windows 非 UTF-8 区域(zh-CN,活动代码页 936/GBK)CJK 乱码:MiMoCode 会强制给 spawn 的 PowerShell/cmd 子进程使用 UTF-8;若仍乱码,可开启系统级 UTF-8 支持(设置 → 时间和语言 → 语言和区域 → 管理语言设置 → 更改系统区域设置 → 勾选 Beta: Use Unicode UTF-8... → 重启)。该选项属 Beta,可能让老的非 Unicode 程序显示异常。
三种 Agent
- build:默认,完整工具权限。
- plan:只读分析,用于代码探索与方案设计。
- compose:编排模式,specs 驱动开发与 skill 驱动工作流。
按 Tab 切换主 agent;subagent 由系统按需创建。首条消息后模式锁定:build 与 plan 可以互相切换,但 compose 一旦进入即隔离——从会话开始就固定 skill/tool 集合,工具调用可靠性明显更高。对前沿模型(Fable/Sol 级别),推荐用 build agent 搭配 /compose-next skill 跑 compose 式工作。
持久记忆
跨会话记忆由 SQLite FTS5 全文检索支撑,落在四类文件上:
- Project memory(
MEMORY.md):项目知识、规则、架构决策。 - Session checkpoint(
checkpoint.md):由 checkpoint-writer subagent 自动维护的结构化状态快照。 - Scratch notes(
notes.md):agent 的临时笔记区。 - Task progress(
tasks//progress.md):每个任务的日志。
会话恢复时记忆自动注入,agent 不必重新学习项目上下文。
上下文管理与压缩点
四个机制配合:自动 checkpoint(按模型上下文窗口决定何时保存)、上下文重建(接近上限时从最新 checkpoint、项目记忆、任务进展和保留的近期消息重建)、预算化注入(用 token 预算控制 checkpoint/memory/notes 进入上下文的比例,按重要性排序)、可调压缩点 /context-limit(或配置项 compaction.max_context),让模型比自身窗口更早压缩。
{
"compaction": {
"max_context": {
"openai/gpt-5.6": "272K",
"anthropic/*": "300K"
}
}
}
值会被夹紧到 provider 实际接受的范围,只能降低压缩点、不能抬高;设为 0 恢复模型自身窗口。想更早压缩的几种理由:成本分层,OpenAI 对 GPT-5.6 超过 272K 输入的请求整单按 2x 输入/1.5x 输出计费;广告窗口不等于实际可用窗口,ChatGPT/Codex 订阅、直连 API key、OpenRouter 等转售渠道的可用窗口各不相同,目录写 1M 不代表你的线路有 1M;质量与延迟,超长上下文更慢,过了某个点也未必更好。
mimo models 会打印每个模型解析出的窗口和压缩点;prompt 页脚用同一个数字作分母,例如 33.0K/260K↓ (13%),↓ 表示有预算生效;/status 有明细。
任务、Subagent 与停止条件
Task Tracking 是树形任务系统(T1、T1.1、T1.2…),与 checkpoint 系统自动集成,会话恢复时任务进展得以保留。
Subagent System 由主 agent 按需创建,共享当前会话上下文,可并行工作,带生命周期跟踪、取消与后台执行。
Goal / Stop Condition:/goal 为会话设置停止条件。agent 想停时,由独立的 judge 模型评估对话,判断条件是否真的满足,避免自主工作过早「乐观停止」。
Compose 模式
specs 驱动开发的结构化工作流,编排从 spec 到交付代码的完整生命周期。推荐用法是 build agent 上的 /compose-next skill:一份自包含契约覆盖 grill → workspace → spec → implement → verify → review → finalize → finish,功能文档写在 workspace 根下的 docs/compose/spec/.md。该路径为前沿模型设计。旧路径是专门的 compose agent(Tab 切换),编排 14 个内置 skills(规划、执行、代码审查、TDD、调试、验证、合并),对较弱模型仍有用。
内置 Workflows
Workflow 是确定性 JavaScript 脚本,在沙箱运行时里编排多个 agent。与 agent 对话不同,workflow 编码固定阶段序列、有界重试和自动并行,fire-and-forget,无需用户交互。内置四个:
- compose:Brainstorm → Design → Implement → Verify → Review → Report → Merge。完整开发流水线,自动把独立任务并行到隔离 git worktree,每任务按 TDD,阶段间链式传递结构化输出。适合能拆成独立子任务、定义清晰的工作。
- deep-research:Brief → Plan → Research → Reflect → Write → Review。多源深度研究报告生成器,规划独立研究角度、并行 sub-agent 收集带引用的发现、反思缺口、写出单一连贯的 Markdown 报告,再做冷读引用。可用文件 checkpoint 续跑。
- fact-check:Plan → Search → Extract → Group → Crosscheck → Report。对抗式事实核查,并行 web 搜索、抽取可核查事实、去除重复,再用 3 juror 对抗投票逐条交叉检查。
- research-experiment:Baseline → Loop → Audit → Report。针对可机械验证指标的自主优化循环:建立基线,迭代「假设 → 实现 → 评估 → 保留/回滚」,审计指标作弊,产出可复现的结果日志。需要固定预算的评估命令和明确的可编辑文件范围。
自定义:把 .js 放进 .mimocode/workflows/ 或 .claude/workflows/,同名可覆盖内置,例如 .mimocode/workflows/compose.js。
Builtin Skills
Skills 是可复用指令集。新任务时按精确名、本地化别名、BM25 相关性搜索可用的非 Compose skills;高置信匹配自动加载,不确定的排序后交给 agent 判断。TUI 里输入 / 浏览自动补全,或直接 / 调用;一条消息提到两个以上 skill 会自动加载并注入多 skill 编排计划。
内置清单:arxiv、claude-code(把编码/测试/审查/Git 任务委派给 Claude Code CLI)、codex、compose-next、data-analytics、deep-research、docx-official、html-to-video-pipeline、learn-everything、loop、mimocode-docs、modern-python-toolchain、pdf-official、pptx-official、product-design、research-paper-writing、sales、skill-creator、super-research、xlsx-official。其中 claude-code 与 codex 仅在装了对应 claude/codex 可执行文件时才暴露。
覆盖内置:同名 skill 放项目 .mimocode/skills//SKILL.md 或个人 ~/.config/mimocode/skills//SKILL.md;开放标准的 .agents/skills/ 与 ~/.agents/skills/ 也是兼容发现根;扫描顺序靠后的用户 skill 覆盖同名内置。
环境变量:MIMOCODE_DISABLE_BUILTIN_SKILLS=true 关全部内置;MIMOCODE_DISABLE_OFFICIAL_SKILLS=true 只关 office/media 那批;MIMOCODE_DISABLE_SLASH_SKILLS=true 只从 TUI / 补全里隐藏而不禁用。
外部 skill 根:默认 .mimocode + .agents;MIMOCODE_DISABLE_AGENTS_SKILLS=true 关 .agents;MIMOCODE_ENABLE_CLAUDE_CODE_SKILLS / CODEX_SKILLS / OPENCODE_SKILLS 选择性开启 .claude/.codex/.opencode skills。
Voice 输入
实时流式语音输入,由 TenVAD 与 MiMo ASR 驱动,/voice 激活后说话,按停顿分段并增量转写。仅 MiMo 登录用户可用,需要 sox。WSLg 音频:
sudo apt install -y sox pulseaudio libasound2-plugins
export PULSE_SERVER=unix:/mnt/wslg/PulseServer
SSH 远端音频需加载 pulseaudio 的 module-native-protocol-tcp 并 RemoteForward 4713。非 MiMo provider 可用 voice 配置把语音走其他 OpenAI 兼容提供商(control_model,如 openrouter/xiaomi/mimo-v2.5);ASR 模型 mimo-v2.5-asr 只在 MiMo 平台有。注意别把只做 ASR 的模型当主力编码模型。
Dream 与 Distill
/dream 扫描近期会话轨迹,把持久知识抽取进项目记忆并删除过时条目;/distill 从近期工作中发现重复的手工工作流,把高置信候选打包成可复用 skill、subagent 或命令。
配置
JSON/JSONC 配置,发布 JSON Schema 供补全与校验。
文件位置:
- 主配置
.mimocode/mimocode.jsonc(也支持.json);全局~/.config/mimocode/mimocode.jsonc - TUI 配置
.mimocode/tui.json/~/.config/mimocode/tui.json - 凭据
~/.local/share/mimocode/auth.json
Windows 上 XDG 路径位于 %LOCALAPPDATA%\mimocode\ 之下。MIMOCODE_HOME 可覆盖所有路径。
Schema:mimocode.jsonc,tui.json。VS Code/Cursor 需在 settings.json 里加 json.schemaDownload.trustedDomains 信任 https://mimo.xiaomi.com/。
数据目录:data 在 ~/.local/share/mimocode/(SQLite、auth.json、记忆、日志);state 在 ~/.local/state/mimocode/(kv.json、model.json);cache 在 ~/.cache/mimocode/。删掉 auth.json 即可移除存储的凭据。macOS 上 XDG data 默认是 ~/Library/Application Support/mimocode/。
接入自定义 OpenAI 兼容端点
{
"$schema": "https://mimo.xiaomi.com/mimocode/config.json",
"model": "custom/MODEL_NAME",
"provider": {
"custom": {
"name": "Custom",
"npm": "@ai-sdk/openai-compatible",
"only_configured_models": true,
"models": { "MODEL_NAME": { "name": "MODEL_NAME" } },
"options": { "baseURL": "BASE_URL", "apiKey": "API_KEY" }
}
}
}
要点:键名必须精确写成 baseURL 和 apiKey;baseURL 与 model ID 原样保留,不要自行增删 /v1;models 下的键是上游 model ID,含 / 的 model ID 也支持(只有 model 字段里第一个 / 用来分隔 provider ID 与 model ID);apiKey 以明文存储,文件权限只留给自己,不要提交到仓库。改完用 mimo models 或 TUI 模型选择器验证。
Xiaomi MiMo Desktop Beta
桌面应用以 MiMo Code 为核心引擎,提供:智能编排(评估任务类型与成本,动态选模型/框架/工具,复杂任务多 agent 并行);持续迭代(拖入多格式文件,做 PPT/网页/3D 资产/app,会话内预览操作、局部精确编辑、版本回滚);可控长任务成本(标准与旗舰模型间路由、只编辑必要区域,同会话最高 99%、跨会话 95% cache 命中);浏览器控制;计算机控制(国际版,读屏并操作鼠标键盘,Record & Replay 用自然语言复用录制的工作流)。测试期可试用 MiMo-X-Pro-Preview / MiMo-X-Flash-Preview 模型。