返回全部 Skills

running-claude-code-via-litellm-copilot

开发工具

用于在通过本地 LiteLLM 代理将 Claude Code 路由到 GitHub Copilot 时,减少直接 Anthropic 支出、配置 `ANTHROPIC_BASE_URL` 或 `ANTHROPIC_MODEL` 覆盖,或排查 Copilot 代理设置失败问题(例如模型未找到、无 localhost 流量、GitHub 401/403 认证错误)。

113.9k

下载量

AI SkillHub 能力展示图

安装方式

命令行安装

在项目根目录执行以下命令,完成 Skill 安装。

npx bzskills add xixu-me/skills --skill running-claude-code-via-litellm-copilot

skill.md

name: running-claude-code-via-litellm-copilot
description: 用于在通过本地 LiteLLM 代理将 Claude Code 路由到 GitHub Copilot 时,减少直接 Anthropic 支出、配置 `ANTHROPIC_BASE_URL` 或 `ANTHROPIC_MODEL` 覆盖,或排查 Copilot 代理设置失败问题(例如模型未找到、无 localhost 流量、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_URLANTHROPIC_MODELCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC
  • 了解 LiteLLM 启动过程中的 GitHub 设备授权
  • 解决模型不匹配、类似 404 的错误、请求未到达 LiteLLM 或 GitHub 401/403 失败问题

请勿将本技能用于以下目的:

  • 判断该变通方案是否被 GitHub 条款允许
  • 与 Claude Code 加 Copilot 无关的通用 LiteLLM 架构
  • 不涉及 Copilot 或 LiteLLM 的直接 Anthropic API 设置

核心规则

  1. 首先给出简短合规声明。

说明这是基于本地代理路径的变通方案,并非 GitHub 推广的工作流程,用户需自行评估最新的 Copilot 条款与限制。

  1. 优先采用最小可行路径。

除非用户明确要求持久性设置,否则先使用临时环境变量和本地 config.yaml

  1. 保持 ANTHROPIC_MODEL 和 LiteLLM model_name 完全一致。

精确的字符串匹配比巧妙的解释更重要。

  1. ANTHROPIC_AUTH_TOKEN 视为本地占位符。

Claude Code 期望本地有一个非空值,但它不是 GitHub Copilot 凭证,也不应被当作可复用的密钥。

  1. 切勿整体覆盖 ~/.claude/settings.json

仅合并所需的 env 键,保留其他不相关的设置。

工作流程

1. 前置检查

当用户希望执行实际设置工作时,先检查以下内容:

  • claude --help 执行成功
  • uv --versionpip --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 可能会触发设备授权流程:

  1. LiteLLM 打印验证 URL 和设备代码
  2. 用户打开 URL 并批准请求
  3. 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_MODELmodel_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 或需要应用的差值(delta)
  • 适用于当前 Shell 的命令
  • 设置是临时还是持久
  • 验证路径
  • 如果出现失败,提供最小的相关故障排除部分

安全提醒

  • 不要声明 GitHub 官方支持此变通方案。
  • 不要暗示假的 ANTHROPIC_AUTH_TOKEN 是真正的 Copilot 凭证。
  • 不要推荐整体替换 ~/.claude/settings.json
  • 不要将过时的模型名称表述为保证可用;如果用户询问特定模型,请保持 github_copilot/<model> 模式,并指出 Copilot 暴露的模型可用性可能发生变化。