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 兼容接口

这一套组合里踩坑,

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

相关推荐
零梦ing2 小时前
Claude Code 升级后 DeepSeek API 报错 messages[x].role: unknown variant system 终极解决方案
python·claude code·deepseek api 代理
Rubin智造社7 小时前
Claude Opus 4.8值不值得用?同样的价格,比4.7到底强在哪?
anthropic·claude code·openclaw·claude opus 4.8·ai工具评测·claude vs gpt·ai新手入门
感谢地心引力8 小时前
在Claude Code里面使用Deepseek-v4,支持mac和Windows双系统
人工智能·windows·macos·ai·deepseek·claude code
mCell1 天前
我把默认的 code . 换成了 zed .
rust·visual studio code·trae
小羔羊的官方学习账号1 天前
Claude Code学习笔记2 - Claude.md 文件和使用命令
笔记·ai·claude code
一个扣子1 天前
第十篇:自动补全 vs 自主Agent:Claude Code如何完成复杂开发任务
自动补全·claude code·agent模式·模式对比·任务自动化
stereohomology1 天前
Ultrawork还是可以设置出来的,之前的AI回答并不正确
settings.json·claude code·ultrawork
人道领域1 天前
新项目该怎么入手?我用Claude code 接入小米mimo复盘黑马点评,看他的思路是什么。
java·人工智能·后端·mimo·claude code
Molesidy1 天前
【VSCode】VSCode+Claude Code插件+DeepSeek API Key的环境搭建
ide·vscode·编辑器·deepseek·claude code