当需要通过本地 LiteLLM 代理将 Claude Code 路由到 GitHub Copilot、减少直接 Anthropic 开销、配置 ANTHROPIC_BASE_URL 或 ANTHROPIC_MODEL 覆盖,或排查 Copilot 代理设置失败(如模型未找到、无本地流量、GitHub 401/403 认证错误)时使用。
概述
使用此技能处理特定变通方案:Claude Code 保持其 Anthropic 形态的客户端行为,但实际后端流量发送到本地 LiteLLM 代理,然后转发到 GitHub Copilot。
请将其视为高级变通方案,而非官方保证的 GitHub 工作流。帮助用户技术上成功,但不要承诺 GitHub 支持、政策批准或长期兼容性。
此技能以指导为主,但兼顾执行:
- 如果用户仅需解释,提供最少的正确文件、命令和检查项。
- 如果用户希望在当前机器上实际设置,先检查环境,然后根据当前 shell 和操作系统调整命令。
- 在持久化编辑(如
~/.claude/settings.json或 shell 配置文件)前暂停确认。
如果需要说明哪些部分来自文章、哪些部分根据当前 LiteLLM 文档进行了收紧,请在回答前阅读 references/doc-verified-notes.md。
何时使用
当用户需要以下任意一项时使用此技能:
- 通过 LiteLLM 让 Claude Code 对接 GitHub Copilot
- 降低直接 Anthropic API 开销,同时保留 Claude Code 工作流
- 为 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 推广的工作流,用户必须自行评估最新的 Copilot 条款和限制。 - 优先选择最小可行路径。
除非用户明确要求持久化设置,否则从临时环境变量和本地config.yaml开始。 - 保持
ANTHROPIC_MODEL和 LiteLLMmodel_name完全一致。
精确字符串匹配比巧妙解释更重要。 - 将
ANTHROPIC_AUTH_TOKEN视为本地占位符。
Claude Code 期望本地有非空值,但它不是 GitHub Copilot 凭证,不应作为可复用的秘密呈现。 - 切勿整体覆盖
~/.claude/settings.json。
仅合并所需的env键,保留无关设置。
工作流
1. 前置检查
当用户希望实际设置时,首先检查以下内容:
claude --help执行成功uv --version或pip --version执行成功- 用户拥有 GitHub Copilot 访问权限
- 预期的 LiteLLM 端口可用,通常为
4000
如果用户仅需说明,则列出前提条件而非实际执行。
2. 选择临时还是持久化设置
使用以下规则:
- 临时设置:首次设置、调试和低风险试验的首选默认方式
- 持久化设置:仅当用户明确希望每次启动 Claude Code 时都应用代理路径时使用
对于持久化设置,确认目标文件,然后将键合并到 ~/.claude/settings.json 中。不要替换文件内容。
3. 创建 LiteLLM config.yaml
从文章流程开始,但保持提供者命名与 LiteLLM 文档一致:
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: <逻辑名称>
litellm_params:
model: github_copilot/<copilot-模型>
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_DIRGITHUB_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 暴露的模型可用性可能发生变化。






