VSCode + Claude Code for VSCode + cc-switch 接入第三方 API 配置复盘
本文详细介绍了如何配置VSCode的ClaudeCode插件通过cc-switch工具转发到第三方API(如DeepSeek/SiliconFlow)的完整流程。关键步骤包括:1)理解ClaudeCode、cc-switch等组件的角色;2)在cc-switch中配置供应商信息;3)设置VSCode环境变量指向cc-switch本地代理;4)验证请求链路。文章特别强调了VSCode不应直接连接第三
这篇文章记录我从零配置 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 的完整过程。
更多推荐



所有评论(0)