running-claude-code-via-litellm-copilot

running-claude-code-via-litellm-copilot

當需要將 Claude Code 透過本機 LiteLLM 代理路由至 GitHub Copilot、減少直接 Anthropic 花費、設定 ANTHROPIC_BASE_URL 或 ANTHROPIC_MODEL 覆寫,或排解 Copilot 代理設定失敗(如 model-not-found、無 localhost 流量、GitHub 401/403 驗證錯誤)時使用。

65星標
6分支
更新於 2026/6/14
SKILL.md
readonlyread-only
name
running-claude-code-via-litellm-copilot
description

當需要將 Claude Code 透過本機 LiteLLM 代理路由至 GitHub Copilot、減少直接 Anthropic 花費、設定 ANTHROPIC_BASE_URL 或 ANTHROPIC_MODEL 覆寫,或排解 Copilot 代理設定失敗(如 model-not-found、無 localhost 流量、GitHub 401/403 驗證錯誤)時使用。

概述

此技能適用於特定變通方案:Claude Code 維持其 Anthropic 風格的客戶端行為,但實際後端流量會發送到本機 LiteLLM 代理,再轉發至 GitHub Copilot。

請將此視為進階變通方案,而非官方保證的 GitHub 工作流程。協助使用者技術上成功,但不要承諾 GitHub 支援、政策核准或長期相容性。

此技能以引導為主,但具備執行意識:

  • 如果使用者只需要說明,提供最小且正確的檔案、指令與檢查項目。
  • 如果使用者想在當前機器上實際設定,先檢查環境,再根據當前 shell 與作業系統調整指令。
  • 在進行持久性編輯(如 ~/.claude/settings.json 或 shell 設定檔)前先暫停確認。

如果需要說明哪些部分來自文章、哪些部分是根據最新 LiteLLM 文件調整,請先閱讀 references/doc-verified-notes.md 再回答。

使用時機

當使用者需要以下任一項目時使用此技能:

  • 讓 Claude Code 透過 LiteLLM 使用 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 條款與限制。
  2. 優先採用最小可行路徑。
    除非使用者明確要求持久性設定,否則先從暫時環境變數與本機 config.yaml 開始。
  3. 保持 ANTHROPIC_MODEL 與 LiteLLM model_name 完全一致。
    精確字串比對比巧妙解釋更重要。
  4. ANTHROPIC_AUTH_TOKEN 視為本機佔位符。
    Claude Code 在本機需要非空值,但這不是 GitHub Copilot 憑證,不應視為可重複使用的密鑰。
  5. 切勿直接覆寫整個 ~/.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-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 可能會開啟裝置授權流程:

  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 回報 model-not-found、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 或需套用的差異
  • 適合 shell 的指令
  • 設定為暫時或持久性
  • 驗證路徑
  • 如果發生失敗,提供最小相關排錯章節

安全提醒

  • 不要聲稱 GitHub 官方支援此變通方案。
  • 不要暗示假的 ANTHROPIC_AUTH_TOKEN 是真實的 Copilot 憑證。
  • 不要建議直接取代整個 ~/.claude/settings.json
  • 不要將過時的模型名稱當作保證可用的模型;如果使用者詢問特定模型,保持 github_copilot/<model> 模式,並提醒 Copilot 開放的模型可能隨時變更。