这篇文章记录我从零配置 VSCode + Claude Code for VSCode + cc-switch 的完整过程。

我的目标很简单:

在 VSCode 里使用 Claude Code 的开发体验,但实际请求不走 Claude 官方,而是通过 cc-switch 转发到第三方 API,比如 DeepSeek 官方接口或硅基流动 SiliconFlow。

最终链路是:

VSCode Claude Code 插件
        ↓
cc-switch 本地代理
        ↓
第三方供应商
        ↓
DeepSeek / SiliconFlow / Qwen 等模型

本文已经做过脱敏处理:

1. 用户名、内网 IP、SSH 主机名已替换为占位符。
2. API Key、真实 Token 不会出现在本文中。
3. VSCode settings.json 保留完整结构,但敏感路径、服务器名、IP、用户名已做最小脱敏。
4. cc-switch 代理端口统一用 <cc-switch代理端口> 表示。

一、安装 cc-switch CLI

cc-switch 是这套方案里的核心工具。它负责接管 Claude Code 的请求,并把请求转发到我们配置好的第三方供应商。

官方提供的一键安装方式大概是:

curl -fsSL https://github.com/SaladDay/cc-switch-cli/releases/latest/download/install.sh | bash

但我在服务器上直接执行时失败了,报错类似:

curl: (56) OpenSSL SSL_read: error:0A000126:SSL routines::unexpected eof while reading, errno 0

这个报错的核心意思是:

当前机器从 GitHub Release 下载文件时,TLS 连接中途断开了。

也就是说,问题不一定是 cc-switch 本身,而是当前服务器访问 GitHub Release 的网络链路不稳定。


1. 不建议直接 curl | bash

遇到这种情况,我不建议继续反复执行:

curl ... | bash

因为这样有两个问题:

1. 下载失败时不好判断失败位置。
2. 脚本内容没有经过检查就直接执行,不够安全。

更稳妥的方式是先把安装脚本下载到本地:

curl -4 --retry 5 --retry-all-errors --connect-timeout 20 -fsSL \
  -o /tmp/cc-switch-install.sh \
  https://github.com/SaladDay/cc-switch-cli/releases/latest/download/install.sh

如果仍然出现:

curl: (28) Connection timeout after 20000 ms

就说明当前机器直连 GitHub Release 基本不可用。


2. 使用 GitHub 加速镜像下载脚本

如果直连 GitHub 超时,可以临时使用 GitHub 加速镜像下载脚本。

示例:

curl -fsSL \
  -o /tmp/cc-switch-install.sh \
  "https://gh-proxy.com/https://github.com/SaladDay/cc-switch-cli/releases/latest/download/install.sh"

下载后先检查文件是否正常:

ls -lh /tmp/cc-switch-install.sh
head -n 30 /tmp/cc-switch-install.sh
bash -n /tmp/cc-switch-install.sh

如果 bash -n 没有输出,说明脚本语法没有明显问题。

然后执行:

bash /tmp/cc-switch-install.sh

如果脚本能启动,但卡在类似:

info: Downloading cc-switch-cli-linux-x64-musl.tar.gz

说明脚本本身没问题,但它内部还要继续从 GitHub Release 下载二进制包,而这一步仍然被网络问题卡住了。


3. 手动下载 cc-switch 二进制包

如果安装脚本内部下载二进制包失败,可以直接手动下载压缩包。

进入临时目录:

cd /tmp

下载 Linux x64 musl 版本:

curl --retry 5 --retry-all-errors --connect-timeout 20 -fL \
  -o cc-switch-cli-linux-x64-musl.tar.gz \
  "https://gh-proxy.com/https://github.com/SaladDay/cc-switch-cli/releases/latest/download/cc-switch-cli-linux-x64-musl.tar.gz"

下载完成后检查文件:

ls -lh /tmp/cc-switch-cli-linux-x64-musl.tar.gz
file /tmp/cc-switch-cli-linux-x64-musl.tar.gz
tar -tzf /tmp/cc-switch-cli-linux-x64-musl.tar.gz | head

如果压缩包内容里能看到:

cc-switch

说明下载到的是正常的可执行文件压缩包。


4. 解压并安装到 ~/.local/bin

接下来解压:

cd /tmp
tar -xzf cc-switch-cli-linux-x64-musl.tar.gz

添加执行权限:

chmod +x cc-switch

移动到用户级可执行目录:

mkdir -p ~/.local/bin
mv cc-switch ~/.local/bin/

检查是否能运行:

~/.local/bin/cc-switch --version

如果能输出版本号,就说明 cc-switch CLI 已经安装成功。


5. 把 ~/.local/bin 加入 PATH

如果执行:

cc-switch --version

提示找不到命令,说明 ~/.local/bin 还没有加入 PATH。

可以执行:

grep -qxF 'export PATH="$HOME/.local/bin:$PATH"' ~/.bashrc || echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

然后验证:

which cc-switch
cc-switch --version
cc-switch

如果 which cc-switch 输出类似:

/home/<linux-username>/.local/bin/cc-switch

就说明安装完成。


6. 安装阶段总结

这次安装过程中,实际经历了三层排错:

第一层:官方一键安装命令失败
原因:curl 访问 GitHub Release 时 SSL 连接中断。

第二层:加 retry 和 IPv4 后仍然失败
原因:当前机器到 GitHub Release 的连接超时。

第三层:通过镜像站下载 install.sh 成功,但执行脚本时仍然卡住
原因:install.sh 内部继续从 GitHub Release 下载二进制包。

最终跑通的方式是:

不用官方一键脚本直连 GitHub
        ↓
使用镜像站下载二进制压缩包
        ↓
手动解压 cc-switch
        ↓
放入 ~/.local/bin
        ↓
配置 PATH
        ↓
cc-switch --version 验证成功

需要注意:

使用第三方镜像站时,不建议直接执行 curl 镜像脚本 | bash
更稳妥的方式是先下载到本地,检查脚本或压缩包内容,再手动执行。


二、先搞清楚几个角色

1. Claude Code 是什么

Claude Code 是 Anthropic 官方的编程 Agent 工具。

它可以:

读项目代码
改文件
执行命令
分析报错
帮你重构项目

正常情况下,它默认走 Claude 官方账号或 Anthropic Console API。


2. Claude Code for VSCode 是什么

Claude Code for VSCode 是 VSCode 里的 Claude Code 插件。

它本质上还是 Claude Code,只不过把交互界面嵌入到了 VSCode 右侧面板里。

需要注意:

命令行里的 claude 和 VSCode 里的 Claude Code 插件,不一定读取同一套环境变量。

这是我这次踩坑的核心原因之一。


3. cc-switch 是什么

cc-switch 是一个 Claude / Codex / Gemini 等 AI 编程工具的供应商切换器。

它可以把:

Claude Code 发出的 Anthropic 请求

转发到:

DeepSeek
SiliconFlow
OpenAI 兼容接口
其他第三方平台

它相当于一个中间层:

Claude Code
    ↓
cc-switch
    ↓
第三方 API

三、最终正确链路

我最终跑通的链路是:

VSCode Claude Code 插件
        ↓
ANTHROPIC_BASE_URL=http://127.0.0.1:<cc-switch代理端口>
        ↓
cc-switch 本地代理
        ↓
当前选中的 cc-switch 供应商
        ↓
DeepSeek 官方 / SiliconFlow

重点是:

VSCode 不直接连 DeepSeek,也不直接连 SiliconFlow。
VSCode 只连 cc-switch 的本地代理。
以后切换模型和供应商,都在 cc-switch 里完成。


四、在 cc-switch 里配置供应商

启动 cc-switch:

cc-switch

进入:

供应商

然后新增或编辑供应商。

这里我主要测试了两类供应商:

1. DeepSeek 官方 Anthropic 兼容接口
2. SiliconFlow 硅基流动 OpenAI 兼容接口

五、DeepSeek 官方接口配置

如果使用 DeepSeek 官方 Anthropic 兼容接口,配置大概是:

API 请求地址:https://api.deepseek.com/anthropic
API 格式:Anthropic Messages(原生)
API Key:你的 DeepSeek API Key

模型不要乱填。

通过 cc-switch 的“获取模型”拿到的模型可能是:

deepseek-v4-flash

所以 Claude 模型配置里可以全部先填:

主模型:deepseek-v4-flash
推理模型:deepseek-v4-flash
默认 Haiku:deepseek-v4-flash
默认 Sonnet:deepseek-v4-flash
默认 Opus:deepseek-v4-flash

健康检查成功时,应该类似:

状态:正常
HTTP:200
模型:deepseek-v4-flash

这说明 DeepSeek 官方 provider 是通的。


六、SiliconFlow 硅基流动配置

如果使用 SiliconFlow,配置和 DeepSeek 官方不一样。

SiliconFlow 通常是 OpenAI 兼容接口,所以应该配置成:

API 请求地址:https://api.siliconflow.cn
API 格式:OpenAI Chat Completions
API Key:你的 SiliconFlow API Key

这里不要选:

Anthropic Messages(原生)

因为 SiliconFlow 不是 Claude 原生协议。

此时需要 cc-switch 负责做协议转换:

Claude Code 的 Anthropic 请求
        ↓
cc-switch 转换
        ↓
OpenAI Chat Completions 请求
        ↓
SiliconFlow

SiliconFlow 的模型名也和 DeepSeek 官方不一样。

DeepSeek 官方可能是:

deepseek-v4-flash

而 SiliconFlow 里可能是:

deepseek-ai/DeepSeek-V4-Flash
Qwen/Qwen3.6-35B-A3B

不要把这两套模型名混用。


七、开启 cc-switch 本地代理

这是关键步骤。

执行:

cc-switch proxy enable
cc-switch proxy show

正常应该看到类似:

本地代理
运行中: 是
活动路由: Claude=开启
监听地址: 127.0.0.1

代理应用路由:
- Claude: 开启, 配置 <cc-switch代理端口>, 运行 127.0.0.1:<cc-switch代理端口>

这说明 cc-switch 的 Claude 本地代理已经启动。

还会看到手动接线提示:

ANTHROPIC_BASE_URL=http://127.0.0.1:<cc-switch代理端口>
ANTHROPIC_AUTH_TOKEN=proxy-placeholder

这两个值非常重要,后面要写进 VSCode 的 settings.json

注意:

proxy-placeholder 不是你的真实 API Key。
真实 API Key 仍然保存在 cc-switch 的供应商配置里。


八、配置 VSCode Claude Code 插件

这是最容易踩坑的地方。

如果使用的是 SSH Remote,比如 VSCode 连到远程服务器,那么要打开的是:

Ctrl + Shift + P
Preferences: Open Remote Settings (JSON)

不要只改本机 Windows 的 User Settings。

我最终使用的是下面这份配置,已经做了脱敏处理:

{
  "files.autoSave": "onFocusChange",
  "files.autoGuessEncoding": true,
  "C_Cpp.default.compilerPath": "",
  "remote.SSH.remotePlatform": {
    "<server-alias-1>": "linux",
    "<server-alias-2>": "linux",
    "<server-alias-3>": "linux",
    "<server-ip-or-hostname-1>": "linux",
    "<server-ip-or-hostname-2>": "linux"
  },
  "python.defaultInterpreterPath": "C:\\Users\\<windows-username>\\.conda\\envs\\<conda-env-name>\\python.exe",
  "terminal.integrated.profiles.windows": {
    "PowerShell": {
      "source": "PowerShell",
      "icon": "terminal-powershell"
    },
    "Command Prompt": {
      "path": "C:\\Windows\\System32\\cmd.exe",
      "args": []
    },
    "Git Bash": {
      "source": "Git Bash",
      "icon": "terminal-git-bash"
    }
  },
  "terminal.integrated.defaultProfile.windows": "Command Prompt",
  "claudeCode.preferredLocation": "panel",
  "claudeCode.environmentVariables": [
    {
      "name": "ANTHROPIC_BASE_URL",
      "value": "http://127.0.0.1:<cc-switch代理端口>"
    },
    {
      "name": "ANTHROPIC_AUTH_TOKEN",
      "value": "proxy-placeholder"
    }
  ],
  "comments.openView": "never"
}

最关键的是:

{
  "name": "ANTHROPIC_BASE_URL",
  "value": "http://127.0.0.1:<cc-switch代理端口>"
}

它表示 VSCode Claude 插件不再直接访问 Claude 官方,而是访问 cc-switch 本地代理。

另一个关键是:

{
  "name": "ANTHROPIC_AUTH_TOKEN",
  "value": "proxy-placeholder"
}

这个值是给 cc-switch 本地代理看的占位 token,不是第三方平台的真实 API Key。


九、为什么不能直接把 VSCode 指向第三方 API

一开始我尝试过类似配置:

{
  "name": "ANTHROPIC_BASE_URL",
  "value": "https://api.deepseek.com/anthropic"
}

这会导致 VSCode Claude 插件绕过 cc-switch,直接请求 DeepSeek。

这样有几个问题:

1. cc-switch 的供应商切换失效。
2. cc-switch 的模型映射失效。
3. SiliconFlow 这种 OpenAI 格式接口无法自动转换。
4. VSCode 插件可能继续报模型不存在。

所以正确做法是:

VSCode 只连 cc-switch
cc-switch 再连第三方 API

十、改完 settings.json 后必须重载 VSCode

修改 settings.json 后,不是关闭聊天窗口就完事了。

需要执行:

Ctrl + Shift + P
Developer: Reload Window

然后重新打开 Claude Code 面板。

原因是:

Claude Code 的环境变量是在启动时读取的,不是实时刷新。

十一、如何验证是否成功

在 VSCode Claude Code 插件里问:

你现在走的是哪个 base url?请检查环境变量 ANTHROPIC_BASE_URL 和 ANTHROPIC_AUTH_TOKEN,只显示是否存在,不要泄露 token。

如果成功,它应该能看到:

ANTHROPIC_BASE_URL 存在
ANTHROPIC_AUTH_TOKEN 存在

或者能识别:

http://127.0.0.1:<cc-switch代理端口>

然后再看 cc-switch 页面:

代理:开
供应商:当前选中的供应商

如果 cc-switch 代理开着,并且 VSCode 插件能正常回答,那么链路基本已经成功。


十二、如何确认真实请求走到了哪个模型

Claude Code 的界面里可能仍然显示:

Opus
Sonnet
deepseek-v4-flash

这个不一定代表真实后端模型。

因为 Claude Code 本身可能只知道“请求模型”,而 cc-switch 可能在后面做模型映射。

最准确的方式是查 cc-switch 日志数据库:

sqlite3 ~/.cc-switch/cc-switch.db \
"SELECT provider_id, model, request_model, status_code, created_at FROM proxy_request_logs ORDER BY created_at DESC LIMIT 5;"

如果看到类似:

<provider-name> | <actual-backend-model> | <request-model> | 200

说明真实链路是:

VSCode Claude Code
    ↓
cc-switch
    ↓
第三方供应商
    ↓
实际后端模型

也可以直接去第三方平台控制台看用量记录。


十三、常见问题复盘

问题 1:安装 cc-switch CLI 时 GitHub 下载失败

常见报错包括:

curl: (56) OpenSSL SSL_read: unexpected eof while reading
curl: (28) Connection timeout after 20000 ms

这两个问题本质上都是当前机器访问 GitHub Release 不稳定。

解决思路:

1. 不要直接 curl | bash。
2. 先把 install.sh 下载到本地检查。
3. 如果 GitHub 直连失败,可以使用 GitHub 加速镜像站。
4. 如果 install.sh 内部下载二进制包卡住,就手动下载 cc-switch-cli-linux-x64-musl.tar.gz。
5. 解压后把 cc-switch 移动到 ~/.local/bin。

最终可用命令可以简化成:

cd /tmp

curl --retry 5 --retry-all-errors --connect-timeout 20 -fL \
  -o cc-switch-cli-linux-x64-musl.tar.gz \
  "https://gh-proxy.com/https://github.com/SaladDay/cc-switch-cli/releases/latest/download/cc-switch-cli-linux-x64-musl.tar.gz"

tar -xzf cc-switch-cli-linux-x64-musl.tar.gz
chmod +x cc-switch
mkdir -p ~/.local/bin
mv cc-switch ~/.local/bin/

grep -qxF 'export PATH="$HOME/.local/bin:$PATH"' ~/.bashrc || echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

cc-switch --version

问题 2:Claude Code 一直让我登录

原因通常是没有设置:

ANTHROPIC_BASE_URL
ANTHROPIC_AUTH_TOKEN

或者 VSCode 插件没有读到这些环境变量。

解决方式:

打开 Remote Settings JSON
写入 claudeCode.environmentVariables
执行 Developer: Reload Window

问题 3:命令行 claude 能用,VSCode 插件不能用

这是正常现象。

因为:

命令行 claude

和:

VSCode Claude Code 插件

不一定读取同一个环境。

解决方式是专门配置 VSCode 的:

"claudeCode.environmentVariables"

问题 4:cc-switch 健康检查通过,但 VSCode 插件报模型不存在

这通常说明:

VSCode 插件没有走 cc-switch

或者:

VSCode 插件里残留了旧的 ANTHROPIC_BASE_URL / 模型配置

解决方式:

1. 检查 settings.json。
2. 确认 ANTHROPIC_BASE_URL 是 http://127.0.0.1:<cc-switch代理端口>。
3. 确认 ANTHROPIC_AUTH_TOKEN 是 proxy-placeholder。
4. 执行 Developer: Reload Window。

问题 5:DeepSeek 官方和 SiliconFlow 模型名混了

这是我踩过的坑。

DeepSeek 官方可能是:

deepseek-v4-flash

SiliconFlow 可能是:

deepseek-ai/DeepSeek-V4-Flash

Qwen 可能是:

Qwen/Qwen3.6-35B-A3B

不同供应商的模型名不能混用。


问题 6:cc-switch 里显示“代理:关”

如果 VSCode 要走:

http://127.0.0.1:<cc-switch代理端口>

那 cc-switch 代理必须开启。

执行:

cc-switch proxy enable
cc-switch proxy show

确认:

运行中: 是
Claude: 开启
127.0.0.1:<cc-switch代理端口>

十四、最终推荐使用方式

以后日常使用流程可以固定成下面这样。

第一步:确认 cc-switch 已安装

which cc-switch
cc-switch --version

如果找不到命令,检查:

echo $PATH
ls -lh ~/.local/bin/cc-switch

第二步:启动或确认 cc-switch 代理

cc-switch proxy show

如果没开:

cc-switch proxy enable

也可以直接进入交互界面:

cc-switch

第三步:在 cc-switch 里选择供应商

例如:

DeepSeek 官方

或者:

SiliconFlow

第四步:保持 VSCode settings.json 不动

只保留下面这段关键配置:

"claudeCode.environmentVariables": [
  {
    "name": "ANTHROPIC_BASE_URL",
    "value": "http://127.0.0.1:<cc-switch代理端口>"
  },
  {
    "name": "ANTHROPIC_AUTH_TOKEN",
    "value": "proxy-placeholder"
  }
]

以后不要再把 VSCode 改成直连某个第三方 API。


第五步:重载 VSCode

Ctrl + Shift + P
Developer: Reload Window

十五、最终理解

这套方案最重要的思想是:

VSCode Claude Code 插件只负责连接 cc-switch。
供应商、模型、API Key、格式转换全部交给 cc-switch 管理。

所以最终稳定结构是:

VSCode Claude Code 插件
        ↓
ANTHROPIC_BASE_URL=http://127.0.0.1:<cc-switch代理端口>
        ↓
cc-switch 本地代理
        ↓
当前选中的供应商
        ↓
DeepSeek / SiliconFlow / Qwen / GLM

这套结构跑通以后,后面再切模型就很舒服了:

不用改 VSCode
不用改环境变量
不用重新登录 Claude
只需要在 cc-switch 里切供应商或模型

这就是我最终跑通 VSCode + Claude Code for VSCode + cc-switch + 第三方 API 的完整过程。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐