🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
1. 在 CC Switch 里新增 TaoToken 预设:Base URL 与 Key 怎么放
把 CC Switch 的自定义供应商指向 TaoToken 后,我会把 Base URL 固定成 https://taotoken.net/api,Key 从 TaoToken 创建,然后只改模型 ID,就能在同一条 Key 下切 GLM 5.3 Flash 与 DeepSeek V4.1 Flash。这个流程适合插件切换栏目:读者不是在 CC Switch 里“选模型”,而是先让 CC Switch 认识一个名叫 TaoToken 的供应商预设,再在预设里替换模型字段。这篇文章用一个 TypeScript 单测补全任务做对照:同一个仓库、同一份 Prompt、同一把 Key,分别跑 GLM 5.3 Flash 和 DeepSeek V4.1 Flash,记录 CC Switch 切换动作、Claude Code 落地配置、Token 用量读取方式、以及本地 Vitest 的执行结果。需要提前说明:本文不含排行分数,也没有把单次运行包装成公榜结论;模型 ID 请以模型广场为准,不要照抄占位符。
CC Switch 处理的是“供应商配置切换”,不是在一个供应商内部做模型路由。新增自定义供应商时,真正要填的字段只有三件套:Base URL、API Key、模型 ID。Base URL 用 https://taotoken.net/api,末尾不要带 /v1,也不要把网页的 UTM 查询串拼到接口地址上;网页链接才带 UTM,接口地址只保留到 /api。Key 从模型广场或控制台创建,模型 ID 去模型广场复制,页面显示什么就填什么,不要按记忆写。很多人一看到 Claude Code 配置就去找 ANTHROPIC_API_KEY,但在 CC Switch 的供应商预设里,更稳的写法是让预设统一写入 ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_MODEL 这三个值,后面切换只看当前预设,不用反复手改 Key。
1.1 自定义供应商三件套
在 CC Switch 界面里新增自定义供应商时,名称写你在配置里能识别的预设名,分类选自定义,不要选成某个官方供应商。Base URL 填 https://taotoken.net/api,注意不要写成 https://taotoken.net/api/v1,也不要从浏览器地址栏复制带 ?utm_source=... 的落地页链接。API Key 填 YOUR_API_KEY,实际值从控制台创建;如果你在多个预设里共用同一把 Key,第二个预设复制同一个 YOUR_API_KEY 即可。模型 ID 分别填 GLM 5.3 Flash 和 DeepSeek V4.1 Flash 在模型广场里的正式 ID,我这里用 YOUR_GLM_5_3_FLASH_MODEL_ID 和 YOUR_DEEPSEEK_V4_1_FLASH_MODEL_ID 占位,避免把过期的展示名当成接口 ID。CC Switch 的 GUI 可能会把模型 ID 叫成“默认模型”“Claude 模型”或“Model”,核心就是写入 ANTHROPIC_MODEL。
这里有一个容易踩的坑:CC Switch 的供应商预设和 Claude Code 的 ~/.claude/settings.json 是两层配置。CC Switch 负责把某套 env 推到当前生效位置,Claude Code 负责读取这些 env。你如果手动改过 ~/.claude/settings.json,又在 CC Switch 里切了一次,可能看到旧模型还在跑,因为终端里的 Claude Code 进程没有重启,或者 shell 里已经 export 了旧的 ANTHROPIC_MODEL。我一般会在切换后新开一个终端,用 env | grep ANTHROPIC 看一眼当前环境,再启动 Claude Code。切模型不等于换账号,也不等于换 Base URL,一条 Key 在同一个统一网关下可以对应多个模型 ID。
1.2 CC Switch 预设 JSON
不同版本的 CC Switch 字段名会有差异,下面这份 JSON 按常见的 providers.claude 结构写,作用是给你对照 GUI 里要填的内容。第一个预设名为 TaoToken,绑定 GLM 5.3 Flash;第二个预设叫 DeepSeek V4.1 Flash,共用同一把 Key,只换 ANTHROPIC_MODEL。如果你的 CC Switch 不支持整段导入,就照着字段在 GUI 里新增两个自定义供应商。websiteUrl 只是给你自己看的网页入口,带 UTM 没问题;接口地址 ANTHROPIC_BASE_URL 不要带 UTM。
{
"providers": {
"claude": [
{
"id": "taotoken-glm-5-3-flash",
"name": "TaoToken",
"category": "custom",
"websiteUrl": "https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_content=",
"settingsConfig": {
"env": {
"ANTHROPIC_BASE_URL": "https://taotoken.net/api",
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY",
"ANTHROPIC_MODEL": "YOUR_GLM_5_3_FLASH_MODEL_ID"
}
}
},
{
"id": "taotoken-deepseek-v4-1-flash",
"name": "DeepSeek V4.1 Flash",
"category": "custom",
"websiteUrl": "https://taotoken.net/?utm_source=taotoken_aicg_blog_generate&utm_content=",
"settingsConfig": {
"env": {
"ANTHROPIC_BASE_URL": "https://taotoken.net/api",
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY",
"ANTHROPIC_MODEL": "YOUR_DEEPSEEK_V4_1_FLASH_MODEL_ID"
}
}
}
]
},
"current": "taotoken-glm-5-3-flash"
}
这份 JSON 里有两个地方不要照抄:YOUR_API_KEY 和两个模型 ID 占位符。API Key 从控制台创建,模型 ID 从模型广场复制。current 字段表示当前激活的供应商预设,第一次可以先指向 GLM 5.3 Flash。之后切到 DeepSeek V4.1 Flash 时,只改 current 为 taotoken-deepseek-v4-1-flash,或者用 CC Switch 的界面切换。这样做的价值是:你不需要为第二个模型再建一把 Key,也不需要改 Base URL;Key 是账号级/项目级凭证,模型是请求参数,CC Switch 只是帮你把参数写进当前生效的 env。
1.3 切换命令与生效检查
如果你的 CC Switch 版本带 CLI,可以用命令切换。不同版本子命令名可能不同,先看 cc-switch --help,再按你的版本执行;没有 CLI 就在托盘菜单或主界面点。下面命令里的预设名要和 JSON 里的 name 一致,别把展示名和模型 ID 混在一起。
# 查看当前供应商预设和可用预设,子命令以本机 cc-switch --help 为准
cc-switch list
# 切到 GLM 5.3 Flash 预设
cc-switch use "TaoToken"
# 切到 DeepSeek V4.1 Flash 预设
cc-switch use "DeepSeek V4.1 Flash"
切换后检查 CC Switch 当前项和 Claude Code 读到的 env。很多问题不是 Key 错,而是当前项没切过去,或者 Claude Code 终端还在用旧环境。
# 查看 CC Switch 当前指向
jq -r '.current' ~/.cc-switch/config.json
# 查看 Claude Code settings.json 里的生效值,路径按你本机为准
jq -r '.env.ANTHROPIC_BASE_URL, .env.ANTHROPIC_MODEL' ~/.claude/settings.json
如果你不用 CC Switch 推配置,也可以直接写 ~/.claude/settings.json。下面这份是 Claude Code 的最小 env 结构,适合手工对照,替换掉模型 ID 和 Key 后即可。注意 Base URL 仍然是 https://taotoken.net/api,末尾不带 /v1,也不要带 UTM。
{
"env": {
"ANTHROPIC_BASE_URL": "https://taotoken.net/api",
"ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY",
"ANTHROPIC_MODEL": "YOUR_GLM_5_3_FLASH_MODEL_ID"
}
}
2. 同一个 TypeScript 单测补全任务:GLM 5.3 Flash 与 DeepSeek V4.1 Flash 怎么喂
为了看两个 Flash 模型在插件切换后的差异,我准备了一个很小的 TypeScript 单测补全任务。仓库用 pnpm 管理,测试框架用 Vitest,生产代码里有一个 src/pricing/discount.ts,导出一个 calculateDiscount(amount, memberLevel, coupon)。这个函数故意没有测试文件,任务要求模型补全 src/pricing/discount.test.ts,覆盖正常金额、零金额、负数、不同会员等级、优惠券叠加、浮点金额和非法参数。关键约束是:模型只生成测试文件,不修改生产代码,不直接执行命令;需要执行时只给命令,由我在本地跑,再把输出贴回对话。这样既能比较两个模型的代码补全风格,也不会让 AI 直接碰生产库或生产机。
这个任务比“写个贪吃蛇”更适合看差异,因为单测补全需要模型先理解已有实现。GLM 5.3 Flash 和 DeepSeek V4.1 Flash 在同一个 Prompt 下,有的会先要求读源码,有的直接按函数名猜行为,有的会给你完整文件,有的只给片段。你要记录的不是“谁更聪明”这种空话,而是可复核字段:是否输出完整测试文件、是否覆盖浮点精度、是否处理非法参数、是否把执行命令交还给你、以及同一把 Key 下的 Token 用量。模型 ID 仍然以模型广场为准,替换 CC Switch 预设里的 ANTHROPIC_MODEL 即可,Base URL 和 Key 不动。
2.1 任务文件与约束
我建议你先把生产文件控制在几十行,避免模型花大量 Token 去猜业务。比如 discount.ts 里写明会员等级只有 normal、silver、gold,优惠券是固定金额,折扣计算顺序是先会员折扣再减优惠券,金额为负时抛 RangeError,金额为 0 时返回 0。然后测试文件目标也写清楚:src/pricing/discount.test.ts 使用 Vitest 的 describe、it、expect,不要引入额外依赖,不要用快照测试,不要改 package.json。这些约束写进 Prompt 后,两个模型都会在同一组规则下输出,后面比较 Token 用量才有意义。
本地仓库提前安装依赖,保证命令本身能跑。AI 只生成测试文件,不替你执行 pnpm install,也不替你连数据库。单测里的 fixture 全部写成内存对象,不要让它去读生产配置。你如果确实要让模型分析一条 SQL 或一段命令,也只在对话里让它生成或解释,然后你本地执行,把结果贴回。这个边界在插件切换场景里尤其重要:CC Switch 切的是模型入口,不是执行权限;Claude Code 可以帮你写文件,但最终跑测试、提交代码、部署,都应该是你本地或 CI 的动作。
一个可用的目录结构大概是这样:
repo/
package.json
src/
pricing/
discount.ts
discount.test.ts # 待补全
vitest.config.ts
discount.ts 的公开签名可以先固定成:
export type MemberLevel = "normal" | "silver" | "gold";
export function calculateDiscount(
amount: number,
memberLevel: MemberLevel,
coupon: number
): number {
// 省略实现
}
2.2 提示词模板
同一个 Prompt 分别喂给 GLM 5.3 Flash 和 DeepSeek V4.1 Flash。先让 CC Switch 切到 GLM 5.3 Flash 预设,在 Claude Code 里新开一个会话,把下面模板发进去;跑完记录结果后,用 CC Switch 切到 DeepSeek V4.1 Flash 预设,重开会话,发同一段模板。不要在同一会话里切模型,不然上下文和缓存会混在一起,Token 用量也不干净。
你在一个 TypeScript + Vitest 项目里。请只输出 src/pricing/discount.test.ts 的完整内容。
不要修改生产代码,不要执行终端命令,不要新增依赖。
先阅读 src/pricing/discount.ts,按它的真实行为写测试。
必须覆盖:
1. amount 为 0 和负数;
2. memberLevel 为 normal、silver、gold;
3. coupon 大于、等于、小于折扣后金额;
4. 0.1 + 0.2 这类浮点金额;
5. 非法 memberLevel 或 NaN 参数。
测试文件必须能直接用 pnpm vitest run src/pricing/discount.test.ts 运行。
如果需要我执行命令,请把命令写在回复最后,由我本地跑,再把输出贴回。
这个模板里有两个细节值得保留。第一,明确“先阅读生产文件”,防止模型凭函数名编业务规则。第二,明确“不要执行命令”,避免某些 Agent 模式直接尝试跑测试。你用的是 Claude Code 还是普通对话,行为可能不同;CC Switch 只改供应商和模型,不改变工具权限。如果 Claude Code 仍然执行了命令,检查你的权限配置,不要把责任推给模型通道。
2.3 本地执行与回填
模型输出测试文件后,你本地保存,然后执行:
pnpm vitest run src/pricing/discount.test.ts
如果第一次失败,把失败摘要贴回对话,让模型只改测试文件,不要让它顺手改生产实现。单测补全任务里,测试失败可能有两种原因:模型误解了生产逻辑,或者生产逻辑本身有 bug。你要先判断是哪一种,再决定改测试还是改实现。两个模型都可能出现“为了让测试通过而改生产代码”的倾向,这在 Prompt 里已经禁止。CC Switch 切到另一个模型后,重复同样流程,记录字段包括:是否直接输出完整文件、是否覆盖浮点、是否处理 NaN、是否要求额外依赖、本地第一次是否通过、失败后修复轮数。Token 用量从响应 usage 或控制台读取,下一节会给对照表结构。
3. 两个模型的 Token 用量对照:同一把 Key 的读取与复现
Token 用量对照不要靠感觉,最好从接口响应或控制台拿。Claude Code 走 Anthropic 兼容协议时,响应里常见 input_tokens 和 output_tokens;OpenAI 兼容协议常见 prompt_tokens、completion_tokens、total_tokens。TaoToken 作为统一网关,底层返回字段可能随协议不同,但你在控制台看到的用量汇总更接近账单口径。做对照时,固定同一仓库、同一 Prompt、同一把 Key、同一份生产文件,只切换 CC Switch 预设里的 ANTHROPIC_MODEL。跑之前新开会话,避免缓存和长上下文污染,跑之后分别记录输入 Token、输出 Token、总 Token、本地 Vitest 结果。需要再次强调:本文不含排行分数,公榜上的是模型本身,不是通道;你只是用同一把 Key 和 Base URL 接同一个模型。
3.1 从响应 usage 取数
如果你在 Claude Code 里看不到完整 usage,可以用一个最小请求单独测一次。不要拿这个最小请求冒充整个单测任务的用量,它只帮你确认字段名。更稳的方式是跑完单测补全任务后,在控制台看这次调用是否入账。打开 TaoToken,进控制台看用量页面,按时间、模型 ID、Key 过滤。模型 ID 要和 CC Switch 预设里填写的完全一致,不要用展示名筛选。账单页显示的 Token 用量可能和单次响应略有差异,因为重试、缓存、系统提示词都会计入。对照表以控制台为准,响应 usage 用来解释差异。
3.2 对照表(一次运行,不代表公榜)
下面这张表是复现模板。你跑完两次后把数值填入,不要把我没有跑过的数字当成实测。模型 ID 一栏从模型广场复制,不要照抄占位符。输入 Token、输出 Token、总 Token 分别从控制台或响应 usage 读取。本地 Vitest 结果只记录第一次运行,修复轮数单独记。备注里写清是否覆盖浮点、是否处理 NaN、是否输出完整文件。
| 模型 | 模型 ID 来源 | 输入 Token | 输出 Token | 总 Token | 本地 Vitest 结果 | 备注 |
|---|---|---|---|---|---|---|
| GLM 5.3 Flash | 模型广场复制,填入 YOUR_GLM_5_3_FLASH_MODEL_ID | 跑完从控制台或 usage 填 | 跑完从控制台或 usage 填 | 跑完从控制台填 | 通过 / 失败 | 同一 Prompt,新会话 |
| DeepSeek V4.1 Flash | 模型广场复制,填入 YOUR_DEEPSEEK_V4_1_FLASH_MODEL_ID | 跑完从控制台或 usage 填 | 跑完从控制台或 usage 填 | 跑完从控制台填 | 通过 / 失败 | 同一 Prompt,新会话 |
这张表是一次运行记录,不代表公榜分数。公榜看的是模型在固定数据集上的表现,本地表看的是你在同一个任务、同一把 Key、同一天的一次调用。两者不要混在一张“综合实力表”里。你如果想看外部榜单,先确认榜名、查阅日期、名次或分数、页面来源,再决定是否引用;没有来源就不要写进文章。对插件切换来说,真正影响体验的是:切过去能不能马上用、模型 ID 是否一致、Token 用量是否可对账、失败后能不能快速切回另一个预设。
3.3 差异观察与复现口径
差异观察建议按字段记录,而不是只写“A 比 B 好”。例如:GLM 5.3 Flash 是否先读 discount.ts 再写测试,DeepSeek V4.1 Flash 是否直接给出完整文件;两者是否都覆盖了 0.1 + 0.2,是否都处理了 NaN,是否都要求新增 @types/node 之类的依赖;第一次 pnpm vitest run 是否通过;失败后修复了几轮。Token 用量方面,输入 Token 通常受系统提示词、仓库文件和读取工具影响,输出 Token 受测试文件长度和解释文字影响。你要比较的是同一任务下“完成度 / Token 用量 / 修复轮数”,不是把某次低 Token 当成模型更强。复现时固定日期和环境,例如 Node 版本、pnpm 版本、Vitest 版本、CC Switch 版本,都写进本地笔记。下次切回同一个预设,如果 Token 差异很大,先看上下文和工具调用,不要急着下结论。
4. 插件切换排障:401、模型 ID、settings.json 与 Codex 分栏
CC Switch 切到统一网关后,最常见的报错不是模型能力问题,而是配置没写对。401 多数是 Key 或认证头不对,404 多数是 Base URL 多写了 /v1 或模型 ID 不存在,403 可能和权限、配额、Key 状态有关。排查顺序应该是:先看 CC Switch 当前预设,再看 ~/.claude/settings.json 的 env,再看终端里有没有旧环境变量,最后看控制台账单和模型广场。不要一上来就重装 CC Switch,也不要把网页 UTM 参数复制到接口地址。下面按几个高频错误拆开,排障只写本篇配置会遇到的错,不跑题到系统网络层面。
4.1 401 与 Key 位置
401 的第一种情况是 ANTHROPIC_AUTH_TOKEN 还是 YOUR_API_KEY。CC Switch 预设里填的是实际 Key,不是占位符,也不是带 Bearer 前缀的字符串。有些工具会自动加 Bearer,有些工具要求原始 Key,你在 CC Switch 里按工具字段说明填。第二种情况是 Key 被删除、过期或复制时带了空格。去控制台重新创建一把,更新两个预设的 ANTHROPIC_AUTH_TOKEN,然后重启终端。第三种情况是 shell 里旧环境变量覆盖了 settings.json。用 env | grep ANTHROPIC 检查,有旧的 ANTHROPIC_AUTH_TOKEN 就 unset 或新开终端。401 解决后不需要改 Base URL,也不需要换模型,先让认证通过再切模型。
4.2 404 与 Base URL
404 最常见的原因是 Base URL 写成了 https://taotoken.net/api/v1。统一网关的 Base URL 是 https://taotoken.net/api,末尾不带 /v1;客户端自己会拼接具体路径。另一个原因是模型 ID 填错。GLM 5.3 Flash 和 DeepSeek V4.1 Flash 在 CC Switch 里的 ANTHROPIC_MODEL 必须来自模型广场,不要用聊天窗口里的展示名,也不要写 gpt-5 这类不存在的占位。第三个原因是切换后 Claude Code 没重启,仍然用旧模型 ID。改完预设后,先 jq 看 ~/.claude/settings.json,再新开 Claude Code。如果 404 里带路径,看路径是 /v1/messages 还是别的前缀,能帮你判断是 Base URL 还是模型 ID 问题。
4.3 Claude Code 与 Codex 不要混
CC Switch 可能同时管理 Claude Code 和 Codex 的供应商,但两者的配置格式不同。Claude Code 用 ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_MODEL,或者 ~/.claude/settings.json 的 env。Codex 用 ~/.codex/config.toml,不要把 ANTHROPIC_* 套到 Codex 上。下面是一个 Codex 配置方向的简例,字段名以你本地 Codex 版本文档为准,Base URL 仍然从 https://taotoken.net/api 开始,不要加 UTM。
model = "YOUR_MODEL_ID"
model_provider = "unified"
[model_providers.unified]
name = "Unified Gateway"
base_url = "https://taotoken.net/api"
env_key = "YOUR_API_KEY_ENV"
Codex 和 Claude Code 分栏配置,Key 可以共用同一把,但环境变量名、配置文件路径、模型 ID 字段不要互相抄。CC Switch 的 Claude 预设切换不会自动改 Codex 的 config.toml,反过来也一样。切换后验证:Claude Code 看 settings.json,Codex 看 ~/.codex/config.toml。如果你只用 Claude Code,可以暂时不管 Codex;如果两边都用,建议在 CC Switch 里建两套预设,名称区分清楚。
5. 跑完对照表之后:模型对话、Coding Plan 与创建 Key
单测补全任务跑完,你手里应该有两组记录:GLM 5.3 Flash 和 DeepSeek V4.1 Flash 在同一 Prompt 下的本地 Vitest 结果、Token 用量、修复轮数。接下来先确认这次评测调用是否入账。打开 模型对话,对照模型广场里的 Flash 模型 ID,试一条最小请求,看返回和 CC Switch 里的 ANTHROPIC_MODEL 是否一致。模型对话适合验证 ID 和连通性,不替代本地单测;本地测试仍然由你执行,AI 只生成测试文件或解释失败。
如果你准备长期用 Claude Code、CC Switch 或 Cline 跑编码任务,可以看 Coding Plan,把日常开发和高频评测的用量分开管理。要复现本文的对照表,先去 创建 Key,拿到 YOUR_API_KEY,在 CC Switch 里更新两个预设,Base URL 保持 https://taotoken.net/api,模型 ID 从模型广场复制。Claude Code 的 settings.json、CC Switch 预设、Codex 的 config.toml 三件套对照,可以看 接入文档。切换完成后,再跑一次同一个 TypeScript 单测补全任务,看这次调用是否入账,把新的输入、输出、总 Token 填回对照表。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度




被折叠的 条评论
为什么被折叠?



