MCPcopy Index your code
hub / github.com/XiaomiMiMo/MiMo-Code

github.com/XiaomiMiMo/MiMo-Code @v0.1.4 sqlite

repository ↗ · DeepWiki ↗ · release v0.1.4 ↗
8,374 symbols 28,169 edges 1,787 files 277 documented · 3%
README

MiMoCode

MiMoCode

MiMo Code: Where Models and Agents Co-Evolve

中文 | English

官网 | 博客


MiMoCode 是一个终端原生的 AI 编程助手。它能读写代码、执行命令、管理 Git,通过持久化记忆系统,在多次会话间保持对你项目的深度理解,并自我进化。

内置 MiMo Auto 限时免费通道——零配置即可开始使用。也支持接入各家主流 LLM 厂商 API。


快速开始

# 一键安装
curl -fsSL https://mimo.xiaomi.com/install | bash

# 或通过 npm 安装
npm install -g @mimo-ai/cli

# 运行
mimo

首次启动自动引导配置。支持: - MiMo Auto(限时免费) — 匿名通道,零配置 - 小米 MiMo 平台 — OAuth 登录 - 从 Claude Code 导入 — 一键迁移已有认证 - 自定义 Provider — TUI 内添加任意 OpenAI 兼容 API

WSL:剪贴板问题

如果在 WSL 上复制出现乱码,安装 xsel

sudo apt install xsel

Windows:shell 输出中文(CJK)乱码

在系统区域为非 UTF-8 的 Windows 上(如简体中文,活动代码页为 936/GBK),命令输出里的 中日韩字符可能显示为乱码。MiMoCode 已为 PowerShell/cmd 子进程强制开启 UTF-8 输出。 如果在尚未覆盖的场景下仍遇到乱码,可以开启 Windows 的系统级 UTF-8 支持:

设置 → 时间和语言 → 语言和区域 → 管理语言设置 → 更改系统区域设置 → 勾选「Beta 版: 使用 Unicode UTF-8 提供全球语言支持」→ 重启。

这会把活动代码页(ACP)切换为 UTF-8(65001),所有程序都生效,子进程不再继承旧代码页。 注意这是系统级 Beta 开关,可能导致部分老的非 Unicode 程序显示异常,建议作为临时方案。


MiMo 生态

除了 MiMoCode,小米 MiMo 模型也能在 Cursor、Cline、Zed 等各种 Agent 和编程工具里使用。

awesome-mimo-agent 收集了这些工具接入 MiMo 模型的配置教程,想换个工具试试 MiMo 的话可以去看看。也欢迎把你自己的接入方式提 PR 分享出来。


核心特性

多智能体

智能体 说明
build 默认。完整工具权限,用于开发
plan 只读分析模式,适合代码探索和方案设计
compose 编排模式,适合 specs-driven 开发和 Skill 驱动流程

Tab 在主智能体间切换。子智能体由系统按需生成。

持久化记忆

基于 SQLite FTS5 全文搜索的跨会话记忆:

  • 项目记忆 (MEMORY.md) — 跨会话持久的项目知识、规则、架构决策
  • 会话检查点 (checkpoint.md) — 结构化状态快照,由 checkpoint-writer 子智能体自动维护
  • 笔记暂存 (notes.md) — Agent 临时记录区
  • 任务进展 (tasks/<id>/progress.md) — 逐任务日志

记忆自动在会话恢复时注入上下文,agent 无需重新理解项目背景。

智能上下文管理

  • 自动检查点 — 根据模型上下文窗口自动决定什么时候保存会话状态
  • 上下文重建 — 当上下文接近上限时,从最新 checkpoint、项目记忆、任务进展和保留的近期消息重建上下文,让 agent 继续当前任务
  • 预算化注入 — 用 token budget 控制 checkpoint / memory / notes 注入上下文的大小,按重要性排序

任务追踪

树状任务系统(T1, T1.1, T1.2…),自动与检查点系统联动,恢复会话时任务进度不丢失。

子智能体系统

主智能体可按需生成子智能体,共享当前会话上下文并行工作,支持生命周期追踪、取消机制和后台执行。

Goal / 停止条件

/goal 命令为会话设置停止条件。当 agent 想停下来时,由独立裁判模型评估对话内容,判断条件是否真正满足——防止自主工作中的"乐观停止"。

Compose 编排模式

Compose 模式提供结构化的 specs-driven 开发流程,内置规划、执行、代码审查、TDD、调试、验证、合并等技能——编排从 spec 到交付的完整开发生命周期。

语音输入

基于 TenVAD 和 MiMo ASR 的实时流式语音输入。通过 /voice 激活,按停顿分片转写,文本逐段追加到输入框。仅对 MiMo 登录用户可用。需要安装 sox(macOS 上 brew install sox,其他平台类似)。

WSLg 音频配置

sudo apt install -y sox pulseaudio libasound2-plugins
export PULSE_SERVER=unix:/mnt/wslg/PulseServer

SSH 远程音频(Mac → 远程主机)

# Mac(本地)
brew install pulseaudio
pulseaudio --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1" --exit-idle-time=-1 --daemonize
# 在 ~/.ssh/config 中添加: RemoteForward 4713 127.0.0.1:4713

# 远程主机
apt install -y pulseaudio pulseaudio-utils sox
export PULSE_SERVER=tcp:127.0.0.1:4713
# 验证: pactl info

非 MiMo 渠道语音输入(OpenRouter、内部 API 等)

语音输入可通过 voice 配置字段路由到其他 OpenAI 兼容 provider。ASR 模型(mimo-v2.5-asr)仅在 MiMo 平台可用;语音控制模式(mimo-v2.5)可通过 OpenRouter 等中转平台使用。

OpenRouter(仅语音控制):

使用 /connect 连接 OpenRouter 后,只需在配置中添加:

{
  "voice": {
    "control_model": "openrouter/xiaomi/mimo-v2.5"
  }
}

内部 / 自建中转平台(ASR + 语音控制):

{
  "provider": {
    "internal": {
      "options": {
        "baseURL": "https://your-api-gateway.example.com/v1",
        "apiKey": "sk-..."
      },
      "models": {
        "xiaomi/mimo-v2.5-asr": { "name": "MiMo-V2.5-ASR" },
        "xiaomi/mimo-v2.5": { "name": "MiMo-V2.5" }
      }
    }
  },
  "voice": {
    "asr_model": "internal/xiaomi/mimo-v2.5-asr",
    "control_model": "internal/xiaomi/mimo-v2.5"
  }
}

自定义 provider 必须在 models 中注册至少一个模型才能被系统识别。voice.*_model 中的模型名直接传给 API,不必与注册的 key 完全一致。OpenRouter 等内置 provider 无需手动配置 models。

注意:自定义 provider 注册的模型会出现在主模型选择列表中。请勿将 ASR 专用模型(如 mimo-v2.5-asr)用作编程主模型。

Dream & Distill

  • /dream — 扫描近期会话轨迹,提取持久知识到项目记忆,清理过时条目
  • /distill — 发现近期工作中重复的手动工作流,将高置信度候选打包成可复用的 skill、subagent 或 command

配置

通过项目目录下的 .mimocode/mimocode.json(或全局 ~/.config/mimocode/mimocode.json)配置。主要选项包括:

  • Provider 和模型选择
  • Agent 权限和自定义 Agent
  • 检查点和记忆行为
  • MCP 服务器连接
  • 快捷键和主题

Max Mode(并行 best-of-N 推理 + 裁判选优)可通过配置中的 experimental.maxMode 开启。

允许访问系统临时目录(/tmp

默认情况下,读写项目工作目录之外的文件会触发 external_directory 权限询问——系统临时目录也不例外。 这是有意为之:MiMoCode 不会静默放宽权限,你始终掌控模型在项目之外能触碰什么。

临时目录之所以经常被用到,是因为多数模型习惯把它当作临时工作空间(比如临时脚本、一次性数据文件)。 如果你信任所处环境、不想每次都被询问,可以在配置中主动放行:

```json title=".mimocode/mimocode.json" { "$schema": "https://opencode.ai/config.json", "permission": { "external_directory": { "/tmp/**": "allow" } } }


**此设置存在已知风险——使用风险由你自行承担。** 临时目录对所有用户和进程可写,与机器上的其他进程
共享。自动放行意味着模型无需确认即可在其中读写,这会扩大你对“可预测临时路径 / 软链替换”一类攻击的
暴露面(例如其他进程提前把 `/tmp/foo` 创建为指向敏感文件的软链)。因此仅建议在单人、可控的环境或
容器内使用。请尽量缩小放行范围。





---

## 开发

```bash
bun install              # 安装依赖
bun run dev              # 开发模式运行
bun turbo typecheck      # 类型检查

与 OpenCode 的关系

MiMoCode 基于 OpenCode fork 构建,保留其全部核心能力(多 Provider、TUI、LSP、MCP、插件),并在此基础上构建了持久化记忆、智能上下文管理、子智能体编排、目标驱动的自主循环、Compose 工作流,以及通过 dream/distill 实现的自我进化。


社区

扫描二维码加入社区群聊:

社区群聊二维码 1    社区群聊二维码 2


许可证

源代码基于 MIT 许可证 开源。

使用 MiMoCode 还需遵守使用限制。 使用小米 MiMo 托管服务须遵守 MiMo 服务条款。 使用 MiMo 名称、标志和商标须遵守 MiMo 商标政策。

Extension points exported contracts — how you extend this code

FetchDecompressionError (Interface)
Error shape thrown by Bun's fetch() when gzip/br decompression fails mid-stream
packages/opencode/src/session/message-v2.ts
Resource (Interface)
(no doc)
sst-env.d.ts
Hooks (Interface)
(no doc)
packages/plugin/src/index.ts
Resource (Interface)
(no doc)
packages/function/sst-env.d.ts
Window (Interface)
(no doc)
packages/desktop/src/renderer/env.d.ts
Resource (Interface)
(no doc)
packages/console/function/sst-env.d.ts
Window (Interface)
(no doc)
packages/app/src/app.tsx
Config (Interface)
(no doc)
packages/sdk/js/src/v2/gen/client/types.gen.ts

Core symbols most depended-on inside this repo

push
called by 1199
packages/opencode/src/util/queue.ts
write
called by 890
packages/enterprise/src/core/storage.ts
get
called by 887
packages/opencode/src/history/resolve.ts
tmpdir
called by 854
packages/opencode/test/fixture/fixture.ts
use
called by 840
packages/sdk/js/src/gen/client/utils.gen.ts
create
called by 824
packages/opencode/src/server/adapter.ts
find
called by 461
packages/sdk/js/src/v2/gen/sdk.gen.ts
log
called by 401
packages/sdk/js/src/gen/sdk.gen.ts

Shape

Function 6,843
Class 540
Method 534
Interface 453
Enum 4

Languages

TypeScript100%

Modules by API surface

packages/web/src/components/icons/index.tsx299 symbols
packages/sdk/js/src/v2/gen/sdk.gen.ts259 symbols
packages/sdk/js/src/gen/sdk.gen.ts127 symbols
packages/app/src/pages/layout.tsx86 symbols
packages/app/src/pages/session.tsx70 symbols
packages/opencode/src/cli/cmd/tui/routes/session/index.tsx66 symbols
packages/opencode/src/cli/cmd/tui/plugin/api.tsx64 symbols
packages/ui/src/components/message-part.tsx63 symbols
packages/app/src/addons/serialize.ts58 symbols
packages/opencode/test/lib/llm-server.ts56 symbols
packages/opencode/src/cli/cmd/tui/plugin/runtime.ts55 symbols
packages/opencode/src/cli/cmd/github.ts54 symbols

Dependencies from manifests, versioned

@actions/artifact5.0.1 · 1×
@actions/core1.11.1 · 1×
@actions/github6.0.1 · 1×
@agentclientprotocol/sdk0.16.1 · 1×
@ai-sdk/alibaba1.0.17 · 1×
@ai-sdk/amazon-bedrock4.0.96 · 1×
@ai-sdk/anthropic3.0.64 · 1×
@ai-sdk/azure3.0.49 · 1×
@ai-sdk/cerebras2.0.41 · 1×
@ai-sdk/cohere3.0.27 · 1×
@ai-sdk/deepinfra2.0.41 · 1×
@ai-sdk/gateway3.0.104 · 1×

For agents

$ claude mcp add MiMo-Code \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact