用途
本技能针对一种特定的变通做法:Claude Code 客户端仍保持其面向 Anthropic 的行为,但实际的后端流量被发送到本地 LiteLLM 代理,再由该代理转发到 GitHub Copilot。这被定位为高级变通方案,而非 GitHub 官方保证的工作流;使用者应自行评估最新的 Copilot 条款与限制,技能本身不判断该做法是否符合 GitHub 条款。
适用场景包括:让 Claude Code 经由 LiteLLM 调用 GitHub Copilot;在保留 Claude Code 工作流的同时降低直接 Anthropic API 支出;为 LiteLLM 的 GitHub Copilot 提供方编写本地 config.yaml;配置 ANTHROPIC_BASE_URL、ANTHROPIC_MODEL 或 CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC;理解 LiteLLM 启动过程中的 GitHub 设备授权;以及排查模型不匹配、类 404 错误、请求未到达 LiteLLM、GitHub 401/403 失败等问题。
不适用场景:判断该变通方案是否被 GitHub 条款允许;与 Claude Code 加 Copilot 无关的一般 LiteLLM 架构;完全不涉及 Copilot 或 LiteLLM 的直接 Anthropic API 配置。
核心规则
开头先给出简短的合规提示,说明这是基于本地代理路径的变通方式,不是 GitHub 推荐的工作流。优先使用最小可行路径,除非用户明确要求持久化设置,否则从临时环境变量和本地 config.yaml 开始。ANTHROPIC_MODEL 与 LiteLLM 的 model_name 必须完全一致,精确字符串匹配比解释更重要。ANTHROPIC_AUTH_TOKEN 只是本地占位值,Claude Code 在本地需要一个非空值,但它不是 GitHub Copilot 凭据,不应被当作可复用的密钥。切勿整体覆盖 ~/.claude/settings.json,只合并所需的环境变量键并保留无关设置。
工作流程
1. 预检
在用户需要实际搭建时,先检查:claude --help 是否成功;uv --version 或 pip --version 是否成功;用户是否具备 GitHub Copilot 访问权限;目标 LiteLLM 端口(通常为 4000)是否可用。如果用户只需要说明,则陈述这些前提条件而无需执行。
2. 选择临时或持久化设置
临时设置:首次搭建、调试和低风险试用时推荐作为默认。持久化设置:仅当用户明确希望每次 Claude Code 启动都应用该代理路径时使用。持久化时先确认目标文件,再把键合并进 ~/.claude/settings.json,不要替换文件内容。
3. 创建 LiteLLM config.yaml
model_list:
- model_name: claude-opus-4.5
litellm_params:
model: github_copilot/claude-opus-4.5
drop_params: true
字段说明:model_name 是 Claude Code 请求的逻辑名称;model 是 LiteLLM 提供方路由,使用 github_copilot/<model>;drop_params: true 会在转发到 Copilot 前剥离不受支持的 Anthropic 专有字段。若要使用其他由 Copilot 支持的模型,保持同一模式:
model_list:
- model_name: <logical-name>
litellm_params:
model: github_copilot/<copilot-model>
drop_params: true
除非用户已经遇到需要覆盖请求头的拒绝情况,否则不要在默认路径中硬编码额外的请求头。
4. 安装并启动 LiteLLM
推荐安装方式:
uv tool install "litellm[proxy]"
备用方式:
pip install "litellm[proxy]"
在包含 config.yaml 的目录中启动代理:
litellm --config config.yaml --port 4000
提醒用户保持该终端打开,因为日志是验证过程中最直接的真实信息来源。
5. 解释 GitHub 设备授权
首次成功向 GitHub Copilot 提供方发起请求时,LiteLLM 可能打开设备授权流程:LiteLLM 打印验证 URL 和设备代码;用户打开 URL 并批准请求;LiteLLM 将生成的凭据保存在本地以供后续使用。可选的令牌位置覆盖变量包括 GITHUB_COPILOT_TOKEN_DIR 和 GITHUB_COPILOT_ACCESS_TOKEN_FILE,仅在用户需要自定义令牌存储、共享环境或排查凭据过期或错放问题时提及。
6. 配置 Claude Code
临时 PowerShell 会话:
$env:ANTHROPIC_AUTH_TOKEN = "sk-any-string"
$env:ANTHROPIC_BASE_URL = "http://localhost:4000"
$env:ANTHROPIC_MODEL = "claude-opus-4.5"
$env:CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC = "1"
claude
临时 Bash 或 Zsh 会话:
export ANTHROPIC_AUTH_TOKEN="sk-any-string"
export ANTHROPIC_BASE_URL="http://localhost:4000"
export ANTHROPIC_MODEL="claude-opus-4.5"
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
claude
持久化配置时,将这些键合并进 ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "sk-any-string",
"ANTHROPIC_BASE_URL": "http://localhost:4000",
"ANTHROPIC_MODEL": "claude-opus-4.5",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
}
}
合并安全行为:文件不存在则创建;文件存在则保留所有无关顶层键;保留与本工作流无关的已有 env 条目;仅更新上述四个键;若 JSON 格式错误,停止并报告解析问题,而不是覆盖文件。
7. 验证请求链路
尽量使用两个终端:终端 A 运行 LiteLLM,终端 B 运行 claude。提出一个小提示,如短脚本或代码审查请求,然后验证:Claude Code 正常启动;LiteLLM 日志显示有入站请求;LiteLLM 日志表明走的是 GitHub Copilot 模型路由(通常为 github_copilot/<model>)。健康路径为:Claude Code -> LiteLLM -> GitHub Copilot -> LiteLLM -> Claude Code。
8. 故障排查
若 Claude Code 报告模型未找到、类 404 失败,或 LiteLLM 提示模型不存在:逐字比较 ANTHROPIC_MODEL 与 model_name,检查大小写、标点和连字符。若 LiteLLM 从未收到请求:确认 ANTHROPIC_BASE_URL 指向 http://localhost:4000;确认 LiteLLM 仍在该端口运行;确认环境变量是在启动 claude 的同一 shell 会话中设置的;若 URL 正确但仍无响应,检查本地防火墙或端口冲突。若 LiteLLM 已到达 GitHub Copilot 但收到 401 或 403:重启 LiteLLM 并重试以重新执行设备授权流程;确认该 GitHub 账户仍具备 Copilot 访问权限;若设置了自定义令牌目录变量,确认其指向预期的文件。
高级回退:请求头覆盖
原始文章使用了显式的 Copilot 风格请求头,当前 LiteLLM 文档将 GitHub Copilot 作为提供方并支持请求头覆盖。仅在以下情况才使用显式 extra_headers:基础提供方流程已到达 Copilot 但仍需客户端形态覆盖;用户已有证据表明特定环境在编辑器风格请求头下表现更好。示例回退配置:
model_list:
- model_name: claude-opus-4.5
litellm_params:
model: github_copilot/claude-opus-4.5
drop_params: true
extra_headers:
editor-version: "vscode/1.85.1"
editor-plugin-version: "copilot/1.155.0"
Copilot-Integration-Id: "vscode-chat"
user-agent: "GithubCopilot/1.155.0"
此配置应作为高级回退呈现,而不是通用默认值。
输出清单
回答真实用户请求时应包含:简短的合规提示;确切的 config.yaml 或需要应用的差异;与 shell 匹配的命令;说明设置是临时还是持久;验证路径;若出现故障,给出最小的相关排查部分。
安全提醒
不要声称 GitHub 官方支持此变通方案;不要暗示占位的 ANTHROPIC_AUTH_TOKEN 是真实的 Copilot 凭据;不建议整体替换 ~/.claude/settings.json;不要把过时的模型名称当作当前确定可用的模型;若用户询问特定模型,保持 github_copilot/<model> 模式并说明 Copilot 暴露的模型可用性可能变化。