Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

windycn/xiaomi-mimo-proxy

Repository files navigation

Xiaomi MiMo Proxy

面向小米 MiMo Anthropic 兼容接口的本地代理服务。它可以修复 Claude Code / AI 编程客户端中常见的 400 Param Incorrectreasoning_content 回传缺失、Claude Code 模型信息接口不兼容、count_tokens 缺失、1M 上下文模型别名等问题,并提供 macOS / Windows 一键启动包。

这个项目优先适配 Claude Code,但不是只能给 Claude Code 用。只要客户端支持自定义 Anthropic 兼容接口,就可以接入本代理。Trae、Cursor、Continue、Cline 等工具如果能配置 Anthropic / Custom Anthropic Provider,理论上可以使用;如果只能配置 OpenAI-compatible 的 /v1/chat/completions/v1/responses,当前版本还不支持。

English README | 中文详细手册

为什么需要它

小米 MiMo 推理模型在工具调用场景中,要求后续请求把之前 assistant 响应里的 thinking / reasoning_content 一起回传。有些编程客户端会保留 tool_use 历史,但不会保留对应的推理内容块,于是小米接口会返回:

{
 "error": {
 "code": "400",
 "message": "Param Incorrect"
 }
}

本代理作为本地中间层:

Claude Code / Anthropic 兼容客户端 -> 本地 MiMo Proxy -> 小米 MiMo API

它会缓存 MiMo 响应里的 thinking 内容块,并在后续请求里尽量自动补回。如果旧工具调用无法命中缓存,则会把陈旧的 tool_use / tool_result 降级成普通文本,尽量避免直接 400。

功能

  • 修复缺失 reasoning_content / thinking block 回传导致的请求错误。
  • 自动把 Authorization: Bearer ... 转成小米接口需要的 api-key
  • 默认使用 Token Plan 上游地址。
  • 本地兼容 Claude Code 会调用的 /v1/models/v1/models/{id}/v1/messages/count_tokens
  • 自动把 Claude Code 新版插入到消息序列里的 role: "system" 迁移到顶层 system 字段。
  • 支持 Claude Code 的 1M 模型别名,例如 mimo-v2.5-pro[1m],也能处理重复后缀 mimo-v2.5-pro[1m][1m]
  • macOS / Windows 单文件可执行,一键启动。
  • 使用打包产物时不需要安装 npm 运行时依赖。

官方链接

支持哪些客户端

Claude Code 支持最好,因为本项目专门补了 Claude Code 需要的兼容接口。

其他客户端只要能配置 Anthropic 兼容提供商,也可以使用:

  • Anthropic 兼容 Base URL:http://127.0.0.1:8899/anthropic
  • API Key:你的小米 MiMo API Key
  • 模型名:例如 mimo-v2.5-pro

Trae 这类工具如果支持自定义 Anthropic Base URL,可以选择 Anthropic / Custom Anthropic Provider,然后把 Base URL 指向本地代理。如果工具只支持自定义 OpenAI-compatible Provider,本代理当前还不能直接使用。

OpenAI 兼容接口

当前不支持。

本代理现在实现的是小米 MiMo 的 Anthropic 兼容消息协议,不提供 OpenAI 兼容 endpoint,例如:

  • /v1/chat/completions
  • /v1/responses
  • OpenAI 返回格式的 /v1/models

要支持 OpenAI-compatible 客户端,需要额外做一层协议转换:把 OpenAI chat / responses 请求转成 Anthropic messages,再把响应转回 OpenAI 格式。这个可以作为后续功能加,但当前版本先聚焦 Claude Code 和 Anthropic 兼容客户端。

模型和多模态注意事项

请以小米官方模型文档为准。按当前 MiMo V2.5 文档整理:

模型 文本 / 代码 图片输入 说明
mimo-v2.5-pro 支持 不支持 / 不建议 适合代码和推理,Claude Code 中建议纯文本使用
mimo-v2.5 支持 支持 通用模型,支持图片理解
mimo-v2-omni 支持 支持 Omni / 多模态模型
mimo-v2-flash 支持 不支持 / 不建议 快速文本模型

如果不支持多模态的模型收到了图片 block,小米接口仍可能报错。Claude Code 里的处理办法:

  1. 执行 /compact,让 Claude Code 压缩当前上下文。
  2. 明确告诉 Claude Code:当前模型不支持图片,请不要再传图片,只保留文字描述。
  3. 后续只发送文字,不要再粘贴图片或让它复用图片上下文。

代理默认不会偷偷删除用户图片,因为这会改变请求语义。更稳妥的方式是压缩会话并让客户端停止传图片。

快速开始

根据系统选择 release 目录:

系统 目录
Apple Silicon Mac release/mimo-proxy-mac-arm64
Intel Mac release/mimo-proxy-mac-x64
Windows 64 位 release/mimo-proxy-win-x64

启动:

# macOS
./start-macos.command
:: Windows
start-windows.bat

代理窗口不要关闭。启动成功时会看到:

[mimo-proxy] listening on http://127.0.0.1:8899
[mimo-proxy] upstream https://token-plan-cn.xiaomimimo.com/anthropic
[mimo-proxy] Claude Code ANTHROPIC_BASE_URL=http://127.0.0.1:8899/anthropic

健康检查:

http://127.0.0.1:8899/health

Claude Code 配置

编辑 ~/.claude/settings.json:

{
 "env": {
 "ANTHROPIC_BASE_URL": "http://127.0.0.1:8899/anthropic",
 "ANTHROPIC_AUTH_TOKEN": "YOUR_MIMO_API_KEY",
 "ANTHROPIC_MODEL": "mimo-v2.5-pro",
 "ANTHROPIC_DEFAULT_SONNET_MODEL": "mimo-v2.5-pro",
 "ANTHROPIC_DEFAULT_OPUS_MODEL": "mimo-v2.5-pro",
 "ANTHROPIC_DEFAULT_HAIKU_MODEL": "mimo-v2.5-pro"
 }
}

保存后重启 Claude Code。

小米文档里提到的 1M 上下文模型后缀是 [1m],例如 mimo-v2.5-pro[1m]。本代理同时接受 mimo-v2.5-promimo-v2.5-pro[1m],转发给小米前会自动剥离后缀。如果你的 Claude Code 版本把后缀叠成 mimo-v2.5-pro[1m][1m],代理也会兜底处理。

其他客户端配置

当客户端支持自定义 Anthropic 兼容服务时,填:

字段
Provider Anthropic-compatible / Custom Anthropic
Base URL http://127.0.0.1:8899/anthropic
API Key 你的小米 MiMo API Key
Model mimo-v2.5-pro 或其他支持的 MiMo 模型

如果客户端发送的是 Anthropic 风格的工具调用历史,本代理的 reasoning-content 修复仍然有效。如果客户端发送 OpenAI-compatible chat / responses 格式,本代理不会自动做协议转换。

配置文件

mimo-proxy.config.json:

{
 "host": "127.0.0.1",
 "port": 8899,
 "upstream": "https://token-plan-cn.xiaomimimo.com/anthropic",
 "apiKey": "",
 "cacheTtlSeconds": 7200,
 "cacheMax": 2000,
 "upstreamRetries": 2,
 "upstreamRetryDelayMs": 800
}

默认使用小米 Token Plan。若要使用按量计费 API,把 upstream 改成:

{
 "upstream": "https://api.xiaomimimo.com/anthropic"
}

从源码构建

npm install
npm run check
npm run package:all

产物会生成在 release/ 目录下。

常见问题

仍然出现 400 Param Incorrect

确认客户端实际使用的是:

http://127.0.0.1:8899/anthropic

如果是很长的旧会话,代理可能没有缓存到启动前生成的 reasoning 内容。可以新开会话,或先 /compact

提示 selected model may not exist

Claude Code 可能会先调 /v1/messages/count_tokens。本代理已经本地兼容这个接口。如果仍然看到错误,重启代理和 Claude Code,然后看代理窗口日志。

Claude Code 新版插入 role: "system" 后报 400

v0.1.2 起代理会自动扫描 messages 序列,把不被部分 Anthropic 兼容接口接受的 role: "system" 消息迁移到顶层 system 字段。用户不需要额外配置 CLAUDE_CODE_SIMPLE=1

502 Bad Gateway 或日志里出现 terminated

这通常是小米 Token Plan 上游连接中途断开或网关短暂抖动。v0.1.1 起代理会对 terminated、502、503、504 等瞬时错误自动短重试。

如果仍然频繁出现,可以把 mimo-proxy.config.json 里的 upstreamRetries 调大,例如 34,然后重启代理。

图片 / 多模态报错

不要把图片传给 mimo-v2.5-pro 这类文本模型。Claude Code 中先 /compact,再告诉它不要继续传图片。

端口被占用

修改 mimo-proxy.config.jsonport,同时修改客户端的 Base URL。

License

MIT

About

面向 Claude Code 和 Anthropic 兼容客户端的小米 MiMo 本地代理:修复 reasoning_content 400,兼容 1M 别名/count_tokens,支持 macOS/Windows 一键启动。Local Anthropic-compatible Xiaomi MiMo proxy for Claude Code and coding agents: fixes reasoning_content 400 errors, handles 1M aliases/count_tokens, and ships macOS/Windows builds.

Topics

Resources

License

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /