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 配置
- 打开 CC-Switch,选择 DeepSeek 供应商
- 请求地址:
https://api.deepseek.com/anthropic - API 格式:
Anthropic Messages (原生) - 点「使用/启用」
- 不要选「官方登录」
诊断命令速查
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