
1. 为什么 Claude Code 需要 LiteLLM 多模型网关Claude Code 多模型网关部署这件事本质上是在解决一个很具体的痛点Claude Code CLI 默认只认一个ANTHROPIC_BASE_URL和一个 Key你没法在同一个会话里既让 Claude 写核心逻辑又让 DeepSeek 去查 bug再让 Kimi 去总结长文档。每次切换都要改环境变量、重启终端上下文还断了。LiteLLM 在这里扮演的角色是「模型翻译器 路由器」。它在本机起一个代理服务对外暴露 Anthropic 兼容接口对内把请求翻译成各家厂商的 API 格式。Claude Code 只管往http://localhost:4000发请求至于这个请求最终落到 Claude、GLM、DeepSeek 还是 MiniMax由 LiteLLM 的config.yaml决定。适合谁用三类人最合适一是同时订阅了多家模型、想按任务类型分流的开发者二是团队里想统一管理 Key、避免每个人到处配环境变量的三是做 Agent 编排、需要子代理并行调用不同模型的。如果你只是偶尔用 Claude Code 写点小脚本单模型直连就够了不必上网关。我实测下来这套方案最大的价值不是「省钱」而是「任务分流」。需求分析这种中文理解密集的活交给 GLMBug 定位这种推理密集的活交给 DeepSeek代码实现交给 Claude长文档总结交给 Kimi 的 128K 上下文。每个模型干自己最擅长的事整体效率比单模型硬扛高不少。下面从零开始把 LiteLLM 网关搭起来再用 TaoToken 统一 Key 通道接入最后跑一次并行请求验证多模型路由确实生效。2. TaoToken 统一 Key 通道前置准备在动手写config.yaml之前先把 Key 通道这件事理清楚。传统做法是去五家厂商分别注册、分别拿 Key、分别配环境变量光是管理这些 Key 就够烦的。TaoToken 的思路是提供一个统一的 API 通道你只需要一个 Key就能访问多家模型。先到官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册账号然后在控制台里创建 API Key。控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 进去之后找到 API Keys 页面点新建复制出来的 Key 形如sk-开头的一串字符。拿到 Key 之后你需要确认两件事Base URL 和 Model ID。TaoToken 的 API 入口是 https://taotoken.net/api 这个地址不加任何 UTM 参数直接用于程序调用。Model ID 则取决于你想调哪家模型比如claude-sonnet-4-6、glm-4、deepseek-chat、minimax-m2-5、moonshot-v1-128k这些。这里有个关键点LiteLLM 的config.yaml里api_base要指向 TaoToken 的 API 入口api_key用你从控制台拿到的那个统一 Key。这样 LiteLLM 转发请求时走的是 TaoToken 的通道而不是直连各家厂商。好处是 Key 管理集中了坏处是你要确认 TaoToken 支持你想用的模型——目前主流的那几家都覆盖了。如果你暂时只想接一两家模型也可以先配一两个后续随时往config.yaml里加。LiteLLM 支持热加载配置改完文件重启一下代理就行不用重装。另外提醒一句API Key 是敏感信息别提交到 Git 仓库。建议用环境变量读取config.yaml里写os.environ/TAOTOKEN_API_KEY真实 Key 放在~/.zshrc里。这样配置文件可以安全地分享给团队。3. 可复制的 LiteLLM config.yaml 与 Claude Code 环境变量这一节是核心直接给可复制的配置。先装 LiteLLMpip3 install litellm[proxy] litellm --version如果提示command not found试试python3 -m litellm --version或者确认 pip 安装路径在 PATH 里。然后建目录、写配置mkdir -p ~/litellm-gateway cd ~/litellm-gateway创建config.yaml内容如下。注意api_base统一指向 TaoToken 的 API 入口api_key从环境变量读model_list: # Claude 系列代码实现主力 - model_name: claude-coder litellm_params: model: anthropic/claude-sonnet-4-6 api_base: https://taotoken.net/api api_key: os.environ/TAOTOKEN_API_KEY - model_name: claude-opus litellm_params: model: anthropic/claude-opus-4-7 api_base: https://taotoken.net/api api_key: os.environ/TAOTOKEN_API_KEY # GLM 系列中文需求分析 - model_name: glm-4 litellm_params: model: openai/glm-4 api_base: https://taotoken.net/api api_key: os.environ/TAOTOKEN_API_KEY - model_name: glm-4-flash litellm_params: model: openai/glm-4-flash api_base: https://taotoken.net/api api_key: os.environ/TAOTOKEN_API_KEY # DeepSeek 系列Bug 查找、推理 - model_name: deepseek-chat litellm_params: model: openai/deepseek-chat api_base: https://taotoken.net/api api_key: os.environ/TAOTOKEN_API_KEY - model_name: deepseek-reasoner litellm_params: model: openai/deepseek-reasoner api_base: https://taotoken.net/api api_key: os.environ/TAOTOKEN_API_KEY # MiniMax 系列代码审查 - model_name: minimax-m2-5 litellm_params: model: openai/minimax-m2-5 api_base: https://taotoken.net/api api_key: os.environ/TAOTOKEN_API_KEY # Kimi 系列长文总结 - model_name: kimi-128k litellm_params: model: openai/moonshot-v1-128k api_base: https://taotoken.net/api api_key: os.environ/TAOTOKEN_API_KEY litellm_settings: drop_params: true set_verbose: false general_settings: master_key: sk-litellm-local-key这里有个细节因为走的是 TaoToken 统一通道模型前缀统一用openai/即可LiteLLM 会按 OpenAI 兼容格式发请求TaoToken 那边负责路由到真实厂商。master_key是本地网关的访问密钥Claude Code 连过来时用这个跟 TaoToken 的 Key 是两回事。配置环境变量编辑~/.zshrcexport TAOTOKEN_API_KEYsk-你的TaoToken统一Key export ANTHROPIC_BASE_URLhttp://localhost:4000 export ANTHROPIC_API_KEYsk-litellm-local-key export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY1ANTHROPIC_BASE_URL指向本地网关ANTHROPIC_API_KEY填网关的master_key。最后一行开启模型自动发现这样 Claude Code 的/model选择器能列出网关里所有模型。加载生效source ~/.zshrc启动网关cd ~/litellm-gateway litellm --config config.yaml --port 4000看到LiteLLM Proxy running on http://0.0.0.0:4000就成功了。想后台常驻的话用nohup litellm --config ~/litellm-gateway/config.yaml --port 4000 ~/litellm-gateway/litellm.log 21 。4. 验证请求与并行调度成功结果网关起来之后先别急着开 Claude Code用 curl 逐个测模型是否可达。这一步能快速定位是网关问题还是 Claude Code 配置问题。# 测试 Claude curl http://localhost:4000/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-litellm-local-key \ -d {model:claude-coder,messages:[{role:user,content:说你好}]} # 测试 GLM curl http://localhost:4000/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-litellm-local-key \ -d {model:glm-4-flash,messages:[{role:user,content:说你好}]} # 测试 DeepSeek curl http://localhost:4000/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-litellm-local-key \ -d {model:deepseek-chat,messages:[{role:user,content:说你好}]}每个请求都应该返回一段 JSON包含choices字段和模型回复内容。如果返回401检查Authorization里的值是否跟config.yaml的master_key一致。如果返回model not found检查model_name拼写。接下来验证并行调度。在项目根目录建子代理定义mkdir -p .claude/agents需求分析代理用 GLMcat .claude/agents/requirement-analyzer.md EOF --- model: glm-4-flash --- 你是需求分析专家。负责拆解用户需求、梳理功能点和边界条件输出结构化需求文档。 EOFBug 查找代理用 DeepSeekcat .claude/agents/bug-finder.md EOF --- model: deepseek-chat --- 你是 Bug 查找专家。负责分析代码逻辑缺陷、检查边界条件和异常处理输出问题列表和修复建议。 EOF代码审查代理用 MiniMaxcat .claude/agents/code-reviewer.md EOF --- model: minimax-m2-5 --- 你是代码审查专家。负责审查代码质量和规范、检查安全隐患输出审查报告。 EOF长文总结代理用 Kimicat .claude/agents/doc-summarizer.md EOF --- model: kimi-128k --- 你是文档总结专家。负责总结长文档核心内容、提取关键信息输出精简摘要。 EOF现在启动 Claude Codeclaude在会话里用/model切换模型或者直接让主代理调度子代理。比如你输入「分析这个需求然后让 bug-finder 检查一下现有实现」主代理会调用requirement-analyzer走 GLM和bug-finder走 DeepSeek两个请求并行发到 LiteLLMLiteLLM 再分别转发到 TaoToken 通道。你可以在网关日志里看到两条并行的请求记录模型名不同说明路由生效了。实测下来并行调度的延迟取决于最慢的那个模型但因为请求是同时发出的总耗时比串行快不少。尤其是需求分析和 Bug 查找这种互不依赖的任务并行优势明显。5. 本篇常见报错排查报错一litellm: command not found安装后命令找不到通常是 pip 安装路径不在 PATH。用python3 -m litellm --version验证或者pip3 show litellm看安装位置把对应 bin 目录加到 PATH。报错二curl 返回401 Authentication Error两种可能一是Authorization: Bearer后面的值跟config.yaml里master_key不一致二是 TaoToken 的 Key 无效或过期。先确认本地网关 Key再确认TAOTOKEN_API_KEY环境变量是否正确加载echo $TAOTOKEN_API_KEY。报错三local proxy failed或ECONNREFUSEDClaude Code 连不上本地网关。先curl http://localhost:4000/health确认网关在跑再echo $ANTHROPIC_BASE_URL确认指向http://localhost:4000。如果网关没起检查litellm.log里的启动错误。报错四reading choices相关解析错误通常是 TaoToken 通道返回的格式跟 LiteLLM 预期不一致。检查config.yaml里模型前缀是否用了openai/api_base是否指向https://taotoken.net/api。如果某个模型不支持换一个 Model ID 试试。报错五OAuth或认证跳转Claude Code 有时会尝试 OAuth 流程但走网关时应该用 API Key 模式。确认ANTHROPIC_API_KEY已设置且没有其他认证相关的环境变量干扰。如果之前登录过 Anthropic 官方账号可能需要清理~/.claude下的缓存。报错六/model选择器看不到自定义模型确认CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY1已设置并source生效。如果还是不行手动指定export ANTHROPIC_CUSTOM_MODEL_OPTIONdeepseek-chat和export ANTHROPIC_CUSTOM_MODEL_OPTION_NAMEDeepSeek。报错七网关日志怎么看前台模式日志直接输出到终端。后台模式用tail -f ~/litellm-gateway/litellm.log。想看详细请求日志启动时加--detailed_debug。排查顺序建议先 curl 测网关再测单个模型最后开 Claude Code。这样能把问题范围缩小到具体环节。6. 长期编码与 Agent 场景的接入建议如果你只是临时用一下上面的配置够了。但如果你打算长期用 Claude Code 做编码和 Agent 编排有几个点值得优化。第一把网关做成开机自启。Linux 用 systemdmacOS 用 launchctl这样不用每次手动敲命令。systemd 的 service 文件里ExecStart指向litellm --config ... --port 4000Restarton-failure保证崩溃后自动拉起。第二子代理分层策略。主 Agent 用 Claude Sonnet 做指挥调度子代理按任务类型分流需求分析走 GLM-Flash便宜Bug 查找走 DeepSeek推理强代码审查走 MiniMax够用长文总结走 Kimi-128K上下文大。这样整体成本比全用 Claude 低不少效果还不差。第三Key 管理。TaoToken 的统一 Key 放在环境变量里config.yaml里只写os.environ/TAOTOKEN_API_KEY。团队协作时配置文件可以进 GitKey 各自配。如果要用 Coding Plan 做长期编码任务可以到 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 看看套餐比按量计费更适合高频使用。第四模型对话调试。有时候你想单独测某个模型的回复质量不用开 Claude Code直接到 https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 的模型对话页面选模型、输 prompt快速对比不同模型的表现。调好了再写进子代理配置。第五接入文档常备。LiteLLM 的配置项挺多遇到不确定的参数查 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 的接入文档里面有各模型的 Model ID 和参数说明。API Key 管理在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 可以随时新建或吊销。最后说个实际经验并行调度不是越多越好。子代理开太多网关并发压力大反而拖慢响应。一般 3 到 4 个并行任务比较合适再多就串行分批。另外每个子代理的 prompt 要写清楚职责边界不然模型之间会互相「抢活」输出重复内容。