不是你的配置问题,是小米默默改了协议规则
一、十天前还能用,今天突然 400
十天前,我的 Claude Code 接着 MiMo-V2.5-Pro,配置没动过,一切正常。
今天打开终端,随便敲个命令:
text
❯ 浏览一下文件夹
⎿ API Error: 400 Param Incorrect
换了 Codex,一样的报错。切到中转站,还是 400。
我开始以为是自己的问题------API Key 过期了?配置写错了?中转站挂了?
折腾一圈后发现:所有人都在报这个错。
二、翻到官方文档,真相大白
群友甩过来一个链接,小米 MiMo 开放平台的一纸公告:
当在 Agent 类产品的多轮会话中开启 MiMo 思考模式,且历史会话中存在工具调用时,后续所有 user 交互轮次中回传的 assistant 如果包含了工具调用,必须完整回传 reasoning_content 字段,否则 API 将返回 400 错误。
翻译成人话:
MiMo 思考时产生的"推理过程"(reasoning_content),你必须在下一次请求中原样传回去。不传?直接 400。
受影响的模型几乎覆盖了 MiMo 全系:
-
MiMo-V2.5-Pro
-
MiMo-V2.5
-
MiMo-V2-Pro
-
MiMo-V2-Omni
-
MiMo-V2-Flash
受影响的 Agent 产品更是一长串:
| 协议 | 受影响产品 |
|---|---|
| OpenAI 兼容协议 | TRAE、Cursor、Roo Code、Codex、GitHub Copilot CLI、Zed、AutoGen、Goose |
| Anthropic 兼容协议 | TRAE、GitHub Copilot CLI、AutoGen、Goose、OpenClaw、OpenCode、Kilo Code |
看清楚了吗?Claude Code 不在任何一行。
它既不在 OpenAI 协议的名单里,也不在 Anthropic 协议的名单里。换句话说,官方压根没测试、也没打算适配 Claude Code。
三、为什么禁用思考也没用?
之前 DeepSeek-V4 也出过类似的兼容问题,解决方案很简单------把思考模式关掉就行。
环境变量设上:
json
"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1",
"DISABLE_INTERLEAVED_THINKING": "1"
DeepSeek 这么干能跑通,模型不再生成推理内容,自然不需要回传。
但小米这次更狠。
MiMo 的 400 报错里明确写了:
text
"param": "The reasoning_content in the thinking mode must be passed back to the API."
它不是"你开了思考所以报错",而是"你历史消息里有思考内容、但这次没传回来,所以报错"。
也就是说,只要之前的对话里 MiMo 产生过 reasoning_content,后续所有请求都必须带着它。你关掉新的思考模式,只是不再产生新的推理内容------但旧的推理内容还在对话历史里 ,只要历史里有一条 assistant 消息缺了 reasoning_content,MiMo 就不认。
你没法让 Claude Code 去传一个它根本不知道的字段。
四、Claude Code 和 Codex 为什么都用不了?
因为这些 Agent 框架的工具调用机制,和 MiMo 要求的历史回传机制,在架构上就冲突了。
Claude Code 的流程是这样的:
-
用户说一句话
-
Claude Code 发给模型
-
模型返回一个 tool_use(比如执行 Bash 命令)
-
Claude Code 执行工具,把结果拼成 tool_result
-
Claude Code 把整个历史再发给模型
关键在第 5 步------Claude Code 发出去的历史里,assistant 消息只包含 tool_use 和 content,没有 reasoning_content。
MiMo 看到这个消息,发现它和上一轮响应里的内容对不上,直接拒绝。
而 Codex 也是一样的逻辑------这些框架都不是小米开发的,它们遵循的是 Anthropic 或 OpenAI 的标准协议,而小米的"回传推理内容"是一个自定义扩展,不在标准协议里。
五、官方态度:正在沟通
公告里说:
"我们正积极与相关框架方沟通,推进适配调整。"
看名单------TRAE、Cursor、Roo Code、Codex、Zed......这些都是有商业合作或者用户量大的产品。小米会优先和它们对接。
而且官方最近大力推广自己的 Agent 产品 MiMo Code CLI (mimo-code),直接对标 Claude Code,功能几乎一样:Bash 工具、文件读写、MCP 支持、TUI 交互界面。官方文档里明说这就是 Claude Code 的替代品。
这就不难理解为什么 Claude Code 的兼容性迟迟不被重视了------官方更希望你去用它的 MiMo Code CLI。
六、还有救吗?社区方案汇总
如果你非要用 Claude Code 接 MiMo,社区目前有三条路:
方案一:本地代理(推荐)
在 Claude Code 和 MiMo API 之间加一层本地代理,自动处理 reasoning_content 的回传。开源项目 MiMo Reasoning Content Proxy 就是专门干这个的。
原理很简单:
-
拦截 MiMo 的响应,把
reasoning_content缓存起来 -
拦截 Claude Code 的请求,自动补上缺失的
reasoning_content -
缓存没命中时自动剥离
tool_calls,降级处理避免 400
部署后把 Claude Code 的 ANTHROPIC_BASE_URL 指向代理地址就行。
限制 :这个代理目前只支持 OpenAI 兼容的 /v1/chat/completions 端点。如果你的 Claude Code 走 Anthropic 协议,需要另找方案或者自己改代码。
方案二:用官方 MiMo Code CLI
bash
npm i -g @xiaomi-mimo/cli
mimo-code
体验和 Claude Code 几乎一样,原生支持 MiMo,零兼容问题。代价是换工具。
方案三:等
等小米把 Claude Code 加入适配名单,或者等 Claude Code 官方支持 reasoning_content 回传。
但老实说,以目前的态势,这条路可能很长。
七、写在最后
这次协议变更,技术上是合理的------保留推理上下文确实能提升多轮对话质量。但执行上,一刀切地要求所有 Agent 产品适配,没有给出过渡期或兼容模式,直接导致大量用户的生产环境崩掉。
而且官方主推自己 Agent 产品的时间点,和这次变更如此接近,很难不让人多想。
十天前还能用的东西,今天说挂就挂。
这就是用第三方 API 的现实:协议改一行,你的工具链全废。
你有遇到同样的报错吗?用的什么框架、什么中转站?评论区聊聊,看看还有多少人在踩这个坑。
参考链接: