SuperAPI AI 工具集

running-claude-code-via-litellm-copilot

编程与开发

查看项目

更新于 10-16 04:47

技能介绍

用途

本技能针对一种特定的变通做法: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 暴露的模型可用性可能变化。