最近由于要求,我们需要在 Trae 编辑器中安装 Claude Code 终端工具,通过这个工具学习前端,然后生成每日的学习记录。没想到这一路踩了不少坑,从 API 认证错误到版本兼容问题,折腾了好几天才终于搞定。今天把整个踩坑过程和解决方案整理成一篇博客,希望能帮到同样在折腾的小伙伴们。


一、前言:为什么选择 Claude Code?

作为一名前端学习者,我一直在找一款能深度集成到 IDE 的 AI 编程助手。Claude Code 以其强大的代码理解能力和终端集成特性,成为了我的首选。它可以直接在项目目录中启动会话,读取本地文件,帮我写代码、改 bug、解答问题,非常适合我这种正在系统学习 Vue3 的学生。

二、前期准备:API Key 与中转服务配置

1. 选择中转服务:小米 MiMo

因为一些限制,我选择了国内常用的小米 MiMo 中转服务,它提供了兼容 Claude API 的接口,同时支持自定义模型,对新手比较友好。

2. 关键配置文件:settings.json

Claude Code 的核心配置文件位于用户目录下的 .claude/settings.json,一开始我就是在这里踩了第一个大坑。

第一由于之前根据一个笼统的教程,自己创建了settings.json文件,其实本来该生成一个文本,最后就一直报错,cc-switch也没办法用,一直报API的错误。弄了好久也没有找到正确的办法解决,折磨我好长时间,最后我只能请求学长了,学长几下操作给我锁定了错误。下面是其他的问题。

错误配置示例(导致 401/400 错误):

{
  "autoUpdatesChannel": "latest",
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "sk-xxxxxx", // 错误:使用了不兼容的sk开头Key
    "ANTHROPIC_BASE_URL": "https://api.xiaomimimo.com/anthropic",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "mimo-v2-pro",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "mimo-v2-pro",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "mimo-v2-pro",
    "ANTHROPIC_MODEL": "mimo-v2-pro"
  },
  "includeCoAuthoredBy": false
}

正确配置示例(适配小米 MiMo 中转):

{
  "autoUpdatesChannel": "latest",
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "tp-xxxxxx", // 正确:使用中转服务提供的tp开头Key
    "ANTHROPIC_BASE_URL": "https://api.xiaomimimo.com/anthropic",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1", // 关键配置:关闭非必要流量
    "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"
  },
  "includeCoAuthoredBy": false
}

3. 关键坑点 1:API Key 格式不匹配

小米 MiMo 中转服务的 Key 分为两种:

  • tp-开头:适配中转服务的自定义格式,需要配合中转地址使用
  • sk-开头:官方格式 Key,无法在第三方中转服务上使用

我一开始错误地使用了别人分享的sk-开头 Key,导致一直报401 Auth rejected错误,换成自己在后台生成的tp-开头 Key 后,认证问题立刻解决了。


三、致命错误:400 messages[1].role must be either 'user' or 'assistant', but got 'system'

这是我遇到的最顽固的问题,折腾了整整两天才搞清楚根源。

1. 错误原因分析

从 Claude Code 2.1.x 版本开始,客户端会在对话请求中自动加入system角色的系统提示词,但小米 MiMo 中转服务的接口版本较旧,不支持system角色,只能识别userassistant角色,所以直接返回 400 错误。

2. 解决方案:降级到 2.0.0 版本

唯一能彻底解决这个问题的办法,就是将 Claude Code 降级到不发送system角色消息的 2.0.0 版本。

降级步骤:

  1. 打开系统终端,执行卸载命令:
    npm uninstall -g @anthropic-ai/claude-code
    
  2. 清理缓存(可选,避免残留文件干扰):
    Remove-Item -Recurse -Force $env:APPDATA\npm-cache\* -ErrorAction SilentlyContinue
    
  3. 安装指定版本:
    npm install -g @anthropic-ai/claude-code@2.0.0
    
  4. 验证版本:
    claude -v
    
    输出显示2.0.0 (Claude Code)即为成功。

3. 额外坑点:Trae 终端环境变量缓存

降级后我发现,系统终端已经是 2.0.0 版本,但 Trae 里的终端还是显示 2.1.156,这是因为 Trae 启动时会缓存系统环境变量,不会自动刷新。

解决办法:

  • 彻底关闭 Trae(包括后台进程),重启电脑
  • 重启后打开 Trae,在终端里执行claude -v,就能看到 2.0.0 版本了

四、使用过程中的其他坑点

1. 会话卡住:Marinating...长时间无响应

降级后第一次启动会话,一直卡在Marinating...状态,无法进入对话模式。

解决办法:

  • 不要在 OneDrive 目录下启动会话,OneDrive 的同步功能会导致文件读取卡顿
  • 切换到普通本地目录,比如C:\Users\你的用户名\Desktop\code
  • Ctrl + C中断会话,重新启动即可

2. Trae 自动补全干扰输入

在使用 Claude 终端会话时,Trae 自带的 Copilot 自动补全功能会抢输入焦点,导致内容直接打到 PowerShell 命令行里,无法被 Claude 接收。

解决办法:

  • 打开 Trae 设置,搜索Chat: Disable AI Features,勾选禁用所有 Copilot AI 功能
  • 这样既不会干扰 Claude 会话,也能避免不必要的后台请求

五、最终效果:成功启动会话

完成以上所有步骤后,在 Trae 终端里输入claude,就能成功启动会话,看到信任目录的提示,输入问题后 Claude 也能正常回复,再也没有报过 API 错误。

附:如何通过终端提交到仓库

直接复制这 3 行,逐行运行:

cd .\python-fullstack\
# 1. 保存所有代码改动
git add .

# 2. 打包提交(引号里随便写点备注)
git commit -m "本次更新:写完了前端页面/修复了bug"

# 3. 推送到云端(完成!)
git push
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐