Claude Code 接入 MiniMax API 报错:invalid message role: system (2013) 完整排查记录

Claude Code 接入 MiniMax API 报错:invalid message role: system (2013) 完整排查记录

结论

这是CC自动更新了,把版本降级回去就行了。

最近在折腾 Claude Code 接入 MiniMax 的 Anthropic 兼容接口时,踩了一个非常隐蔽的坑。

现象非常离谱:

  • 命令行 CLI 能正常使用

  • VSCode 插件却直接报错

  • 重装之后,CLI 也突然炸了

最终定位发现:

不是配置错了,而是 Claude Code 新版本修改了消息格式,而 MiniMax 的 /anthropic 兼容接口对 system message 的位置有严格限制。

这篇文章完整记录一下整个排查过程。


一、问题现象

VSCode 中使用 Claude Code 插件时,持续报错:

复制代码
API Error: 400 invalid params, chat content has invalid message role: system (2013)

但奇怪的是:

同样的 API Key、

同样的配置、

命令行里的 Claude Code CLI 却完全正常。


二、环境配置

我的 Claude Code 配置如下:

文件:

复制代码
~/.claude/settings.json

内容:

复制代码
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.minimaxi.com/anthropic",
    "ANTHROPIC_AUTH_TOKEN": "sk-cp-xxx...",
    "ANTHROPIC_MODEL": "MiniMax-M2.7"
  }
}

本质上就是:

让 Claude Code 不再请求 Anthropic 官方接口,

而是转发到:

复制代码
https://api.minimaxi.com/anthropic

也就是 MiniMax 提供的 Anthropic 兼容 API。


三、初始状态

最开始时:

组件 版本 状态
Claude Code CLI 2.1.113 ✅ 正常
VSCode 插件 2.1.156 ❌ 报错

这里已经埋下了关键线索:

CLI 和插件版本不一致。


四、开始怀疑:消息格式兼容性

因为错误信息里明确提到:

复制代码
invalid message role: system

于是开始直接测试 MiniMax API 对 message 格式的兼容情况。


五、直接测试 MiniMax Anthropic 接口

经过多轮实验,发现了一个关键问题:

MiniMax 的 /anthropic 兼容接口:

对 system message 有严格限制


测试结果

1. system message 在第一位

复制代码
[
  {
    "role": "system",
    "content": "you are helpful"
  },
  {
    "role": "user",
    "content": "hello"
  }
]

结果:

复制代码
✅ 成功

2. system message 不在第一位

复制代码
[
  {
    "role": "user",
    "content": "hello"
  },
  {
    "role": "system",
    "content": "you are helpful"
  }
]

结果:

复制代码
❌ 失败
错误码:2013

3. 多个 system message

复制代码
[
  {
    "role": "system",
    "content": "a"
  },
  {
    "role": "system",
    "content": "b"
  }
]

结果:

复制代码
❌ 失败

4. system message 出现在对话中间

结果:

复制代码
❌ 失败

六、根本原因终于出现了

问题本质:

MiniMax 的 Anthropic 兼容层并不完全兼容 Anthropic 官方协议

它要求:

  • system message 必须在 messages 数组第一位

  • 且只能有一个

而新版 Claude Code:

改变了内部消息组织方式

Claude Code 新版本(大约 2.1.154+):

在某些 Agent / Tool 调用场景下,

会动态插入新的 system message。

于是:

原本合法的:

复制代码
[
  system,
  user
]

变成了:

复制代码
[
  user,
  assistant,
  system
]

或者:

复制代码
[
  system,
  user,
  system
]

这直接触发了 MiniMax 的 2013 错误。


七、更离谱的事情发生了

后来我卸载重装了 Claude Code。

结果:

CLI 也突然炸了。

原因是:

Claude Code CLI 自动升级了

原本:

组件 版本
CLI 2.1.113

升级后:

组件 版本
CLI 2.1.154

于是:

CLI 和 VSCode 插件都开始报同一个错。


八、最终解决方案:降级

目前最稳定的方案:

锁定 Claude Code 到旧版本


1. 卸载当前版本

复制代码
winget uninstall "Claude Code" --silent

2. 安装旧版 CLI

复制代码
winget install Anthropic.ClaudeCode --version 2.1.113

3. VSCode 插件降级

复制代码
code --uninstall-extension anthropic.claude-code

code --install-extension anthropic.claude-code@2.1.112

九、最终可用版本

组件 版本 状态
CLI 2.1.113 ✅ 正常
VSCode 插件 2.1.112 ✅ 正常

十、如何防止自动升级

否则下次还会炸。

可以直接 pin:

复制代码
winget pin add Anthropic.ClaudeCode

十一、问题总结

这次问题的本质:

Claude Code 新版本 + MiniMax 不完整 Anthropic 兼容

两边共同导致的。


Claude Code 新版行为变化

新版会:

  • 动态插入 system message

  • 修改 message 顺序

  • Agent 模式下插入额外 system prompt


MiniMax 兼容层限制

MiniMax /anthropic 接口:

  • 不允许多个 system

  • 不允许 system 不在第一位

而 Anthropic 官方 API 实际上更宽松。


十二、临时方案与长期方案

临时方案

直接锁版本:

  • CLI:2.1.113

  • VSCode 插件:2.1.112

目前最稳。


长期方案

有两个方向:

方案一:MiniMax 更新兼容层

支持:

  • 多 system message

  • 任意位置 system message

真正兼容 Anthropic。


方案二:Claude Code 增加兼容模式

例如:

复制代码
compatibility_mode=minimax

自动:

  • 合并 system

  • 规范化位置

不过目前还没有。


十三、结语

这个问题最坑的地方在于:

表面看像 API Key 配错

但实际上:

是消息协议层面的兼容性问题。

而且:

CLI 能用、

插件不能用、

非常容易把人带偏。

如果你也在:

  • Claude Code

  • MiniMax API

  • Anthropic 兼容接口

这一套组合里踩坑,

希望这篇文章能帮你少走一点弯路。

相关推荐
余槐i1 小时前
Claude Code 切换中转站后 401 不断:先查环境变量覆盖顺序
api·开发工具·mcp·claude code·cc-switch
余槐i1 天前
Claude Code Skills 放对目录却不生效:插件启用顺序与缓存的三个坑
git·开发工具·ai agent·mcp·claude code
formulahendry2 天前
在 VS Code 里自由切换 Copilot、Claude、Codex、OpenCode、Pi、Kimi、Qwen:任何 Agent 都能接
visual studio code·vs code·acp
开开心心就好4 天前
打印机卡住打不了?一键清理卡死打印队列
服务器·开发语言·算法·pdf·ocr·idea·visual studio code
码哥字节5 天前
AI重构代码40%会悄悄改坏,我是怎么用7步SOP防住的
claude code·ai 编码工作流·ai重构遗留代码
余槐i6 天前
Skills 增至 30 个,Claude Code 反而变慢:token 与加载实测
性能优化·开发工具·ai agent·claude code·agent skills
码哥字节7 天前
185,000 星的 Superpowers 插件,90% 的人只用了它 10% 的功能
claude code·superpowers
VIP_CQCRE11 天前
Claude Code 接入 NanoBanana MCP:用 Ace Data Cloud 在开发对话里生成与编辑图片
ai绘画·mcp·claude code·nanobanana·ace data cloud
范中勤11 天前
Agent IDE 双层异步调用机制:前端流式与后端多分支调度,到底各自解决什么问题
llm·agent·claude code·subagent·异步架构