news 2026/9/17 3:51:58

把 CC-Switch 的上游 Key 换成 TaoToken 后,WSL2 里也能跑通 Claude Code

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
把 CC-Switch 的上游 Key 换成 TaoToken 后,WSL2 里也能跑通 Claude Code

为了在 Windows 和 WSL2 两套环境都能跑通 Claude Code,我原先把上游 Key 放在 Agnes.AI,再借 CC-Switch 在 15721 端口起一个本地路由,让 WSL2 里的 Claude Code 也走同一个出口;问题是 Agnes.AI 的 Key 和请求地址要单独记,跨系统时总担心路由对不上。这次我把上游换成 TaoToken(https://taotoken.net/?utm_source=taotoken_aicg_blog_end),路由端口、WSL2 镜像模式全部不动,只需要在 CC-Switch 自定义供应商里换一把 Key 和一个请求地址。如果你的 WSL2 里 Claude Code 之前已经能通过 CC-Switch 跑通,下面这套改动大概五分钟就能完成。

1. 为什么原方案在 WSL2 里总差一步

1.1 CC-Switch 在整套链路里扮演的角色

Claude Code 默认从ANTHROPIC_BASE_URL读请求地址,从ANTHROPIC_AUTH_TOKEN读密钥。CC-Switch 做的事情,是在本地 15721 端口起一个类似代理的服务,把 Claude Code 发给这个地址的请求,转发到你在自定义供应商里填的「请求地址」,也就是真正的上游 API。

原文用 Agnes.AI 作为上游,所以我需要在 Windows 上注册 Agnes.AI 的账号、创建 API Key,再把这个 Key 填进 CC-Switch。问题就在这里:Key、请求地址、模型 ID 三个信息全部跟 Agnes.AI 绑定,换一个供应商就要重新记一遍,跨系统时还得保证 WSL2 里的 Claude Code 和 Windows 的 CC-Switch 用的是同一份配置。步骤本身不难,难的是「每次换上游都要跟着改一堆参数」。

1.2 换 TaoToken 后哪些可以保持原样

TaoToken 是统一 API 兼容通道,提供相对固定的 Base URL:https://taotoken.net/api。把 CC-Switch 里的请求地址从 Agnes.AI 的https://apihub.agnes-ai.com/v1换成这个地址,Key 换成在 TaoToken 创建的 Key,整条链路其余部分完全不用动。

CC-Switch 仍然监听 15721 端口;.wslconfig的镜像模式仍然保留;WSL2 里 Claude Code 的ANTHROPIC_BASE_URL仍然指向localhost:15721。换句话说,这次迁移只改「供应商配置」这一层,系统网络层和 Claude Code 的本地路由层都保持原样。

2. Windows 端:拿 TaoToken Key 并写进 CC-Switch

2.1 先到模型广场确认模型 ID

打开 TaoToken 注册并登录,创建一个 API Key。创建好的 Key 形如YOUR_API_KEY,注意它只完整显示一次,先复制到记事本里。接下来去模型广场看当前有哪些模型、ID 分别是什么,这一步很关键:后面 CC-Switch 和 Claude Code 都要填同一个模型 ID。

不要用别人在教程里贴的旧 ID。模型广场的列表会随上游更新,以当时列表为准;你只需要确认当前要用的那个模型的 ID 字符串,复制下来准备填到 CC-Switch 里。

2.2 在 CC-Switch 里添加自定义供应商

下载并启动 CC-Switch(GitHub 上farion1231/cc-switch的 releases 页面)后,进入「供应商」页面添加自定义供应商,字段按下面的对照填:

配置项填什么
供应商名称TaoToken
官网链接(选填)https://taotoken.net/?utm_source=taotoken_aicg_blog_end
API KeyYOUR_API_KEY
请求地址https://taotoken.net/api
API 格式OpenAI Chat Completions
认证字段ANTHROPIC_AUTH_TOKEN
模型映射从模型广场复制的模型 ID

注意请求地址不要加/v1,也不要带任何 UTM 参数。CC-Switch 会在这个 Base URL 基础上拼接具体的路由路径;你的 Claude Code 发的是 Anthropic 格式的请求,TaoToken 的兼容通道会把请求转换成 OpenAI 可识别的内容再发给模型。

2.3 需要手动补的兼容字段

保存供应商后,CC-Switch 的配置 JSON 里会自动生成一些字段。为了让 Claude CLI 通过 CC-Switch 调用 OpenAI-Compatible API 时更稳定,建议手动补上下面两段:

{ "allowed_openai_params": [ "thinking", "context_management" ], "litellm_settings": { "drop_params": true } }

allowed_openai_params让指定的参数能通过网关传递;drop_params会自动丢弃模型不兼容的未知参数,避免因为多传了一个参数导致整条请求被拒。这个兼容字段在切换成 TaoToken 后仍然需要,它和上游是谁没有关系,解决的是 Claude Code 与 OpenAI 格式 API 之间的参数差异。

3. 让 CC-Switch 在 15721 端口把请求转给 TaoToken

3.1 路由设置

点击 CC-Switch 左上角的设置按钮,进入「路由」标签页。端口保持默认的 15721 即可,前提是与 WSL2 里 Claude Code 的ANTHROPIC_BASE_URL端口保持一致。打开路由总开关,再打开「Claude 路由应用」开关。

这一步的作用相当于把 CC-Switch 变成 Claude Code 的本地服务端:Claude Code 只认localhost:15721,CC-Switch 负责把请求转发到https://taotoken.net/api。只要路由开关没开,后面 WSL2 里怎么改配置都会卡在连接失败。

3.2 CMD 里先探一次 /health

配置完路由,先在 Windows 的 CMD 里验证:

curl http://localhost:15721/health

如果返回了数据,说明 CC-Switch 已经正常监听。如果提示connection refused,优先检查路由总开关是否打开、端口是否被其他程序占用。

3.3 端口冲突怎么处理

15721 被占用的概率不高,但如果你的机器上已经有别的开发工具在用这个端口,CMD 里先查一下:

netstat -ano | findstr 15721

记下最后一列的 PID,再到任务管理器里找到对应进程。你也可以直接在 CC-Switch 路由设置里换成别的端口,比如15722,但记得 WSL2 里 Claude Code 的ANTHROPIC_BASE_URL也要同步改成http://localhost:15722,两边必须一致,否则 curl 能通、Claude Code 仍然连不上。

4. WSL2 镜像模式:让 Linux 侧和 Windows 共享网络

4.1 为什么默认访问不到 15721

WSL2 默认运行在 NAT 模式下,它的网络和 Windows 是两套独立虚拟网卡。你在 WSL2 里执行curl http://localhost:15721/health,访问的是 WSL2 自己的 localhost,而不是 Windows 上的 CC-Switch。

WSL1 没有完整的 Linux 内核,靠中间层把系统调用翻译成 Windows 系统调用,网络行为相对简单;WSL2 底层是基于 Hyper-V 的轻量级虚拟机,运行完整 Linux 内核,所以必须把网络模式改成镜像模式(Mirrored Mode),让 WSL2 直接使用 Windows 的网络配置、共享相同的 IP 地址。

4.2 配置 .wslconfig

在 Windows 用户根目录(通常是C:\Users\<用户名>),新建一个文件名为.wslconfig的文本文件,内容如下:

[wsl2] networkingMode=mirrored firewall=true autoProxy=true

firewall=true保持 Windows 防火墙开启,避免 WSL2 绕过系统安全策略;autoProxy=true让 WSL 自动同步 Windows 的代理设置,如果之后 Windows 上还要挂别的网络工具,这个开关会省很多事。注意文件名必须严格是.wslconfig,如果系统把它保存成了.wslconfig.txt,WSL2 是不会读取的。

4.3 重启 WSL2 并验证 /health

打开 PowerShell,执行:

wsl --shutdown

执行完稍等几秒,重新进入 WSL2,再执行:

curl http://localhost:15721/health

这里同样返回数据,就说明 WSL2 已经可以访问 Windows 上的 CC-Switch 了。如果仍然访问不到,先确认镜像模式有没有真正生效。在 WSL2 里执行ip addr,如果看到网卡地址和 Windows 的主机网卡一致,说明镜像模式已经生效;如果还是原来的172.x.x.x网段,说明.wslconfig写错了位置或者没有执行wsl --shutdown

5. WSL2 里 Claude Code 的 settings.json

5.1 env 配置内容

在 WSL2 的~/.claude/settings.json里写入:

{ "env": { "ANTHROPIC_BASE_URL": "http://localhost:15721", "ANTHROPIC_AUTH_TOKEN": "PROXY_MANAGED", "ANTHROPIC_MODEL": "YOUR_MODEL_ID", "ANTHROPIC_DEFAULT_OPUS_MODE": "", "ANTHROPIC_DEFAULT_SONNET_MODEL": "", "ANTHROPIC_DEFAULT_HAIKU_MODE": "", "API_TIMEOUT_MS": "3000000", "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1", "CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY": "1", "CLAUDE_CODE_ATTRIBUTION_HEADER": "0", "MAX_OUTPUT_TOKENS": 50000 } }

YOUR_MODEL_ID替换成你在模型广场复制的 ID。如果你不确定这个字段应该填什么,把ANTHROPIC_MODEL留空,让 Claude Code 从网关自动发现模型也是可行的。

5.2 几个关键参数怎么理解

ANTHROPIC_BASE_URL必须指向http://localhost:15721,端口和 CC-Switch 路由端口保持一致;不要直接指向 TaoToken 的 API 地址,否则就绕过了 CC-Switch 这层统一管理,WSL2 和 Windows 的配置也会因此分成两套。

ANTHROPIC_AUTH_TOKENPROXY_MANAGED,这个值是约定好的标记,代表「密钥由 CC-Switch 代理统一管理」。实际生效的上游 Key 就是你在自定义供应商里填的 TaoToken Key,它不会暴露给 Claude Code 进程,即使你在 WSL2 里写错地方,也不会把真正的 Key 打出来。

MAX_OUTPUT_TOKENS设 50000 是为了限制单次最大输出,避免上下文超限报错。如果你在模型广场选中的模型支持更大的上下文,这个值可以删掉或者调大,它不是一个必须项。

5.3 启动 claude 走通一次对话

在 WSL2 里进入一个项目目录,执行:

claude

正常进入对话界面后,随便问一个和当前项目相关的问题,能拿到回复就说明整条链路已经通了:WSL2 里的 Claude Code 把请求发给localhost:15721的 CC-Switch,CC-Switch 把请求转发给 TaoToken 的 Base URL,模型返回结果再沿原路回来。

如果报401,基本可以确定是自定义供应商里的 Key 没填对,或者 Key 没有在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 控制台成功创建。如果报404,回 CC-Switch 里检查请求地址是不是多写了/v1;TaoToken 的 Base URL 是https://taotoken.net/api,末尾不带/v1

6. 跑通后去 TaoToken 控制台对一下这次调用

6.1 在模型对话里先用同一把 Key 验证

WSL2 里的 Claude Code 跑通之后,可以顺手在 TaoToken 模型对话 里用同一把 Key 发一条消息,确认模型 ID 和 Base URL 都没填错。这样后面 Claude Code 端如果再出问题,你能立刻判断是路由问题还是上游问题。

6.2 控制台看用量

刚才在 WSL2 里那次对话已经产生了一次真实调用,去 控制台 API Keys 页面看用量记录,能看到这次请求有没有被记上。如果打算长期用 Claude Code 写代码,建议顺便打开 Coding Plan 看套餐是否够用,免得模型对话跑得正顺,突然收到额度提醒。

Claude Code 的完整环境变量对照,可以在 接入文档 里核对。CC-Switch 这边的配置其实只有三层:供应商填 Key 和请求地址、路由开 15721、Claude Code 指到localhost:15721;三层都对上,Windows 和 WSL2 的体验就完全一致了。

6.3 额外提一句 Docker 的场景

如果你开启镜像模式之后,在 WSL2 里用 Docker 启动了一个端口映射容器,比如docker run -d -p 8080:80 nginx,然后通过localhost:8080访问不到,可以修改/etc/docker/daemon.json

{ "iptables": false }

改完重启 Docker 服务即可。这个和文章主题关系不大,但既然开了镜像模式,早晚会遇到一次,记住这个文件位置能省不少排查时间。

整体来说,把上游从 Agnes.AI 换成 TaoToken,改动范围集中在 CC-Switch 的供应商配置;Windows 和 WSL2 两侧的localhost:15721路由、.wslconfig镜像模式以及 Claude Code 的settings.json都不需要大改。你只需要记住一个新的请求地址https://taotoken.net/api,以及从 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 创建的那把新 Key,剩下的链路和原来完全一样。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 3:51:08

Linux卡在emergency mode?fstab的UUID错配是主因

周六早上我远程连家里那台Linux NAS&#xff0c;结果怎么都ping不通。过了一会儿家人拍来一张照片&#xff0c;屏幕停在黑底白字的启动界面&#xff0c;上面明晃晃一行字&#xff1a;“Welcome to emergency mode!”看到这行字我反而松了口气&#xff0c;因为这类故障我处理过太…

作者头像 李华
网站建设 2026/9/17 3:49:03

Spring三级缓存机制:循环依赖与AOP代理全解析

最近有个同事跑来问我&#xff0c;说在智谱清言里搜“三级缓存具体是什么”&#xff0c;AI给讲了一堆Spring源码。他看完还是懵的&#xff0c;就跑来让我用人话再讲一遍。这个题目确实经典&#xff0c;面试问烂了&#xff0c;网上文章也一大把&#xff0c;但能把“为什么非得是…

作者头像 李华
网站建设 2026/9/17 3:48:53

grub> 命令行救援指南:Linux 引导故障修复与预防

开机之后没看到熟悉的桌面或者登录界面&#xff0c;屏幕上顶着一行grub>或者grub rescue>&#xff0c;下面还跟着一句minimal bash-like line editing is supported。第一次遇到的人十有八九会慌&#xff0c;以为系统挂了&#xff0c;其实大部分情况下数据都还在&#xf…

作者头像 李华