Claude Code 固定版本 2.1.153 卸载重装(Windows + CC-Switch)

记录时间:2026-05-29 适用场景:DeepSeek 接入 Claude Code 报 400 system role 错误;或 npm 降级后 claude --version 仍显示 2.1.156


背景

问题 1:DeepSeek 400 报错

API Error: 400 Failed to deserialize the JSON body into the target type:
messages[1].role: unknown variant `system`, expected `user` or `assistant`

原因:Claude Code 2.1.154+ 把 system 提示写进 messages 数组,DeepSeek /anthropic 接口不接受。

解决:固定使用 2.1.153,并禁用自动更新。

问题 2:降级后版本不变

npm install -g @anthropic-ai/claude-code@2.1.153
claude --version   → 仍显示 2.1.156

原因:电脑上有两份 Claude Code,PATH 优先用了旧的那份:

路径 版本 状态
D:\npm-global\ 2.1.156 PATH 排第一,实际在跑
%APPDATA%\npm\ 2.1.153 npm 刚装的,没被用到

第一步:完全卸载

先关闭 Cursor、VS Code、所有终端

REM 停止进程
taskkill /f /im claude.exe 2>nul

REM 删除 npm 全局安装(两个位置都删)
npm uninstall -g @anthropic-ai/claude-code 2>nul
rmdir /s /q "D:\npm-global\node_modules\@anthropic-ai\claude-code" 2>nul
del /f "D:\npm-global\claude" "D:\npm-global\claude.cmd" 2>nul
rmdir /s /q "%APPDATA%\npm\node_modules\@anthropic-ai\claude-code" 2>nul
del /f "%APPDATA%\npm\claude" "%APPDATA%\npm\claude.cmd" 2>nul

REM 删除原生安装
del /f "%USERPROFILE%\.local\bin\claude.exe" 2>nul
del /f "%USERPROFILE%\.local\bin\claude" 2>nul

REM 删除 Claude Desktop 残留运行时
rmdir /s /q "%APPDATA%\Claude\claude-code" 2>nul

可选:保留 API 配置

若继续用 CC-Switch,不要删 %USERPROFILE%\.claude\settings.json

备份:

copy "%USERPROFILE%\.claude\settings.json" "%USERPROFILE%\Desktop\settings.json.bak" 2>nul

验证已删干净

where claude
claude --version

应提示找不到命令


第二步:重装固定版本 2.1.153

REM 统一装到 D:\npm-global,避免双份安装
npm config set prefix "D:\npm-global"

npm install -g @anthropic-ai/claude-code@2.1.153 --force --registry=https://registry.npmmirror.com

where claude
claude --version

期望输出:2.1.153 (Claude Code)

若仍显示 2.1.156

where /r %USERPROFILE% claude.exe 2>nul
where /r D:\ claude.cmd 2>nul

删掉找到的残留路径后重装。


第三步:禁用自动更新(最小改动,继续用 CC-Switch)

打开配置:

notepad "%USERPROFILE%\.claude\settings.json"

只加 3 项,不要手改 CC-Switch 写的 ANTHROPIC_*

{
  "autoUpdates": false,
  "env": {
    "DISABLE_UPDATES": "1",
    "DISABLE_AUTOUPDATER": "1"
  }
}

完整示例(在 CC-Switch 原有配置基础上追加):

{
  "autoUpdates": false,
  "env": {
    "DISABLE_UPDATES": "1",
    "DISABLE_AUTOUPDATER": "1",
    "ANTHROPIC_AUTH_TOKEN": "your-api-key-here",
    "ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-flash",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro"
  },
  "includeCoAuthoredBy": false,
  "model": "opus"
}

CC-Switch 重新切换供应商后,若 DISABLE_* 被覆盖,再补一次。

验证禁用更新

claude doctor

或在 Claude Code 里输入 /status,看 Auto-updates 是否为 disabled。


第四步:CC-Switch 配置

  1. 打开 CC-Switch,选择 DeepSeek 供应商
  2. 请求地址:https://api.deepseek.com/anthropic
  3. API 格式:Anthropic Messages (原生)
  4. 点「使用/启用」
  5. 不要选「官方登录」

诊断命令速查

REM 查看实际用的是哪个 claude
where claude

REM 分别看两个路径的版本
"D:\npm-global\claude.cmd" --version
"%APPDATA%\npm\claude.cmd" --version

REM 看 npm 全局前缀
npm prefix -g
npm root -g

REM 看 package.json 版本
type "D:\npm-global\node_modules\@anthropic-ai\claude-code\package.json" | findstr version
type "%APPDATA%\npm\node_modules\@anthropic-ai\claude-code\package.json" | findstr version

REM 看 CC-Switch 写入的配置
type "%USERPROFILE%\.claude\settings.json"

临时应急(不降级版本时)

claude --bare

或:

claude --strict-mcp-config --disable-slash-commands

清理缓存(可选)

只清缓存,保留配置:

taskkill /f /im claude.exe 2>nul
rmdir /s /q "%USERPROFILE%\.claude\debug" 2>nul
rmdir /s /q "%USERPROFILE%\.claude\paste-cache" 2>nul
rmdir /s /q "%USERPROFILE%\.claude\image-cache" 2>nul
rmdir /s /q "%USERPROFILE%\.claude\session-env" 2>nul
rmdir /s /q "%USERPROFILE%\.claude\shell-snapshots" 2>nul
rmdir /s /q "%USERPROFILE%\.claude\projects" 2>nul
del /f /q "%USERPROFILE%\.claude\stats-cache.json" 2>nul
rmdir /s /q "%LOCALAPPDATA%\.claude-code-cache" 2>nul
for /d %i in ("%TEMP%\claude-code-*") do rmdir /s /q "%i" 2>nul

相关链接