Skip to content

Instantly share code, notes, and snippets.

@cht-k
Last active October 22, 2025 15:26
Show Gist options
  • Save cht-k/62a27d1e8efea97b49db557fd85ceaff to your computer and use it in GitHub Desktop.
Save cht-k/62a27d1e8efea97b49db557fd85ceaff to your computer and use it in GitHub Desktop.

Revisions

  1. cht-k revised this gist Jun 23, 2025. 1 changed file with 77 additions and 71 deletions.
    148 changes: 77 additions & 71 deletions claude-code-with-github-copilot.md
    Original file line number Diff line number Diff line change
    @@ -17,9 +17,78 @@

    ---

    ### **方案一:進階方案 (智慧路由)**
    ### **推薦方案:直接代理 (穩定且靈活)**

    此方案透過 `claude-code-router` 實現智慧模型路由,能根據任務需求(如長文脈、深度思考)自動切換模型,兼顧效能與成本。
    此方案是我們最推薦的方式。它不使用額外的路由層,而是將 Claude Code 直接指向 `copilot-api`
    設定簡單、穩定,並且依然可以透過 Claude Code 內建的指令靈活切換模型。

    #### 設定步驟

    ##### 步驟一:運行 `copilot-api` (官方最新版本)

    此方案可直接使用官方最新版本的 `copilot-api`

    ```bash
    # 使用 npx 直接運行
    # 重要:最新版本已將 --business 參數改為 --account-type business
    npx copilot-api@latest start --port 4141 --account-type business
    ```

    首次運行會需要登入 GitHub 授權。成功後,請保持此終端機視窗運行。

    ##### 步驟二:設定 Claude Code

    有兩種方式可以讓 Claude Code 連接到我們啟動的代理服務,擇一即可。

    **方法 A:修改設定檔 (推薦,一勞永逸)**

    直接編輯 Claude Code 的設定檔,這是最推薦的方式。

    1. 開啟 (或建立) 設定檔:`~/.claude/settings.json`
    2. 填入以下內容,它會將 `gpt-4.1` 設為預設模型。

    ```json
    {
    "env": {
    "ANTHROPIC_BASE_URL": "http://localhost:4141",
    "ANTHROPIC_API_KEY": "dummy",
    "ANTHROPIC_MODEL": "gpt-4.1",
    "ANTHROPIC_BACKGROUND_MODEL": "gpt-4.1"
    }
    }
    ```

    設定完成後,直接在終端機執行 `claude` 即可啟動。

    **方法 B:使用環境變數 (臨時性)**

    如果你不想修改設定檔,也可以在每次啟動時傳入環境變數。

    ```bash
    export ANTHROPIC_BASE_URL=http://localhost:4141 \
    ANTHROPIC_API_KEY=dummy \
    ANTHROPIC_MODEL=gpt-4.1 \
    ANTHROPIC_BACKGROUND_MODEL=gpt-4.1 \
    && claude
    ```

    ##### 步驟三:在 Claude Code 中切換模型

    即使設定了預設模型,你依然可以在 Claude Code 的對話框中,隨時使用 `/model` 指令來切換當前對話要使用的模型。
    例如,如果你想臨時切換到 `claude-sonnet-4`

    ```
    /model claude-sonnet-4
    ```

    ---

    ### **進階/實驗性方案:智慧路由**

    **注意:** 此方案設定較為複雜,且依賴 `copilot-api` 的一個非官方 Fork 版本,可能存在未知的風險或不穩定性。
    僅推薦給了解其原理,並確實需要「自動化」模型路由功能的進階使用者。

    此方案透過 `claude-code-router` 實現智慧模型路由,能根據任務需求(如長文脈、深度思考)自動切換模型。

    #### 架構示意圖

    @@ -30,30 +99,12 @@
    | (Client) | (localhost:3456) | (Intelligent Routing) | (localhost:4141) | (API Proxy) | | (Service) |
    | | ------------------> | | ------------------> | | ------------------> | |
    +--------------+ +-----------------------+ +---------------------+ +--------------------+
    |
    | Rules-Based Routing:
    | 1. Default -> gpt-4.1
    | 2. Long Context -> gemini-2.5-pro
    | 3. Thinking -> claude-sonnet-4
    |
    ```

    #### 核心組件

    1. **`copilot-api` (Fork 版本)**
    * **作用**:將 GitHub Copilot 服務封裝成 OpenAI 相容 API 的代理。
    * **來源**[**nghyane/copilot-api (branch: fix-tokenizer-and-tool-support)**](https://github.com/nghyane/copilot-api/tree/fix-tokenizer-and-tool-support)

    2. **`claude-code-router`**
    * **作用**:智慧路由工具,根據規則將請求轉發至不同模型。
    * **來源**[**musistudio/claude-code-router**](https://github.com/musistudio/claude-code-router)

    #### 詳細設定步驟
    #### 設定步驟

    ##### 步驟一:安裝並運行 `copilot-api` (Fork 版本)

    首先,我們需要從原始碼啟動特定版本的 `copilot-api`

    ```bash
    # 1. 下載指定的 fork 版本
    git clone [https://github.com/nghyane/copilot-api.git](https://github.com/nghyane/copilot-api.git) -b fix-tokenizer-and-tool-support
    @@ -62,29 +113,22 @@ cd copilot-api
    # 2. 安裝依賴
    bun install

    # 3. 啟動伺服器 (包含認證流程)
    # 注意:此 fork 版本仍使用舊的 --business 參數
    # 3. 啟動伺服器 (注意:此 fork 版本仍使用舊的 --business 參數)
    bun run start start --port 4141 --business
    ```

    首次運行此命令時,它會開啟瀏覽器並要求您登入 GitHub 進行授權。
    成功後,`copilot-api` 會在本地的 `4141` port 上運行。

    ##### 步驟二:安裝並設定 `claude-code-router`

    接著,我們安裝並設定路由層。

    ```bash
    # 1. 全域安裝 claude-code-router
    npm install -g @musistudio/claude-code-router

    # 2. 建立並編輯設定檔
    # 設定檔路徑:~/.claude-code-router/config.json
    # 2. 建立並編輯設定檔:~/.claude-code-router/config.json
    mkdir -p ~/.claude-code-router
    touch ~/.claude-code-router/config.json
    ```

    現在,編輯 `~/.claude-code-router/config.json` 檔案,填入以下內容:
    編輯 `config.json` 檔案,填入以下內容:

    ```json
    {
    @@ -104,6 +148,7 @@ touch ~/.claude-code-router/config.json
    }
    ],
    "Router": {
    "default": "gh:gpt-4.1",
    "background": "gh:gpt-4.1",
    "think": "gh:claude-sonnet-4",
    "longContext": "gh:gemini-2.5-pro"
    @@ -113,45 +158,6 @@ touch ~/.claude-code-router/config.json

    ##### 步驟三:啟動 Claude Code

    透過 `claude-code-router` 啟動它。

    ```bash
    ccr code
    ```

    執行 `ccr code` 後,`claude-code-router` 會啟動一個在 `3456` port 的服務,並自動將 Claude Code 指向這個地址。

    ---

    ### **方案二:簡化方案 (直接代理)**

    此方案不使用 `claude-code-router`,而是將 Claude Code 直接指向 `copilot-api`
    所有請求都將使用單一固定模型(如 `gpt-4.1`),設定簡單,但缺乏靈活性。

    #### 設定步驟

    ##### 步驟一:運行 `copilot-api` (官方最新版本)

    此方案可直接使用官方最新版本的 `copilot-api`

    ```bash
    # 使用 npx 直接運行
    # 重要:最新版本已將 --business 參數改為 --account-type business
    npx copilot-api@latest start --port 4141 --account-type business
    ```

    同樣,首次運行會需要登入 GitHub 授權。

    ##### 步驟二:啟動 Claude Code

    透過環境變數直接指定 API 位址和模型來啟動。

    ```bash
    export ANTHROPIC_BASE_URL=http://localhost:4141 \
    ANTHROPIC_API_KEY=dummy \
    ANTHROPIC_MODEL=gpt-4.1 \
    ANTHROPIC_BACKGROUND_MODEL=gpt-4.1 \
    && claude
    ```

    此命令會直接將 Claude Code 的所有請求發送到 `copilot-api`,並統一使用 `gpt-4.1` 模型。
    ```
  2. cht-k created this gist Jun 22, 2025.
    157 changes: 157 additions & 0 deletions claude-code-with-github-copilot.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,157 @@
    ### 背景與動機

    在當前的技術社群,像 **Claude Code** 這類工具因其引領的「Vibe Coding」風潮而備受推崇。
    這種開發方式,指的是開發者透過自然語言描述問題,引導 AI 產生、修改及審閱程式碼,
    將傳統的手動編碼轉變為指導與迭代 AI 生成結果的過程,大幅提升了開發效率。

    然而,許多對資安較為嚴謹的公司會將原始碼視為機密資料,禁止使用未經審核的外部 AI 服務來處理程式碼。
    這意味著像 Cursor、Windtunnel,或是直接串接外部 API 的作法都可能不合規。

    在這種情況下,一個常見的合規方案就是 **GitHub Copilot Business** 訂閱。
    這份文件將以它為例,說明如何透過一些開源工具的巧妙組合,讓你在合規的框架下,也能享受到 Claude Code 的強大功能。

    ### 前置準備

    * 請確保您的電腦已安裝 [Bun](https://bun.sh/) (>= 1.2.x)。
    * 請確保您已經安裝好 [Claude Code](https://docs.anthropic.com/en/claude-code/getting-started)

    ---

    ### **方案一:進階方案 (智慧路由)**

    此方案透過 `claude-code-router` 實現智慧模型路由,能根據任務需求(如長文脈、深度思考)自動切換模型,兼顧效能與成本。

    #### 架構示意圖

    ```
    +--------------+ (HTTP Request) +-----------------------+ (HTTP Request) +---------------------+ (GitHub API) +--------------------+
    | | <-----------------> | | <-----------------> | | <---------------> | |
    | Claude Code | | claude-code-router | | copilot-api | | GitHub Copilot |
    | (Client) | (localhost:3456) | (Intelligent Routing) | (localhost:4141) | (API Proxy) | | (Service) |
    | | ------------------> | | ------------------> | | ------------------> | |
    +--------------+ +-----------------------+ +---------------------+ +--------------------+
    |
    | Rules-Based Routing:
    | 1. Default -> gpt-4.1
    | 2. Long Context -> gemini-2.5-pro
    | 3. Thinking -> claude-sonnet-4
    |
    ```

    #### 核心組件

    1. **`copilot-api` (Fork 版本)**
    * **作用**:將 GitHub Copilot 服務封裝成 OpenAI 相容 API 的代理。
    * **來源**[**nghyane/copilot-api (branch: fix-tokenizer-and-tool-support)**](https://github.com/nghyane/copilot-api/tree/fix-tokenizer-and-tool-support)

    2. **`claude-code-router`**
    * **作用**:智慧路由工具,根據規則將請求轉發至不同模型。
    * **來源**[**musistudio/claude-code-router**](https://github.com/musistudio/claude-code-router)

    #### 詳細設定步驟

    ##### 步驟一:安裝並運行 `copilot-api` (Fork 版本)

    首先,我們需要從原始碼啟動特定版本的 `copilot-api`

    ```bash
    # 1. 下載指定的 fork 版本
    git clone [https://github.com/nghyane/copilot-api.git](https://github.com/nghyane/copilot-api.git) -b fix-tokenizer-and-tool-support
    cd copilot-api

    # 2. 安裝依賴
    bun install

    # 3. 啟動伺服器 (包含認證流程)
    # 注意:此 fork 版本仍使用舊的 --business 參數
    bun run start start --port 4141 --business
    ```

    首次運行此命令時,它會開啟瀏覽器並要求您登入 GitHub 進行授權。
    成功後,`copilot-api` 會在本地的 `4141` port 上運行。

    ##### 步驟二:安裝並設定 `claude-code-router`

    接著,我們安裝並設定路由層。

    ```bash
    # 1. 全域安裝 claude-code-router
    npm install -g @musistudio/claude-code-router

    # 2. 建立並編輯設定檔
    # 設定檔路徑:~/.claude-code-router/config.json
    mkdir -p ~/.claude-code-router
    touch ~/.claude-code-router/config.json
    ```

    現在,編輯 `~/.claude-code-router/config.json` 檔案,填入以下內容:

    ```json
    {
    "OPENAI_API_KEY": "gh",
    "OPENAI_BASE_URL": "http://localhost:4141/v1",
    "OPENAI_MODEL": "gpt-4.1",
    "Providers": [
    {
    "name": "gh",
    "api_base_url": "http://localhost:4141/v1",
    "api_key": "dummy",
    "models": [
    "gpt-4.1",
    "claude-sonnet-4",
    "gemini-2.5-pro"
    ]
    }
    ],
    "Router": {
    "background": "gh:gpt-4.1",
    "think": "gh:claude-sonnet-4",
    "longContext": "gh:gemini-2.5-pro"
    }
    }
    ```

    ##### 步驟三:啟動 Claude Code

    透過 `claude-code-router` 啟動它。

    ```bash
    ccr code
    ```

    執行 `ccr code` 後,`claude-code-router` 會啟動一個在 `3456` port 的服務,並自動將 Claude Code 指向這個地址。

    ---

    ### **方案二:簡化方案 (直接代理)**

    此方案不使用 `claude-code-router`,而是將 Claude Code 直接指向 `copilot-api`
    所有請求都將使用單一固定模型(如 `gpt-4.1`),設定簡單,但缺乏靈活性。

    #### 設定步驟

    ##### 步驟一:運行 `copilot-api` (官方最新版本)

    此方案可直接使用官方最新版本的 `copilot-api`

    ```bash
    # 使用 npx 直接運行
    # 重要:最新版本已將 --business 參數改為 --account-type business
    npx copilot-api@latest start --port 4141 --account-type business
    ```

    同樣,首次運行會需要登入 GitHub 授權。

    ##### 步驟二:啟動 Claude Code

    透過環境變數直接指定 API 位址和模型來啟動。

    ```bash
    export ANTHROPIC_BASE_URL=http://localhost:4141 \
    ANTHROPIC_API_KEY=dummy \
    ANTHROPIC_MODEL=gpt-4.1 \
    ANTHROPIC_BACKGROUND_MODEL=gpt-4.1 \
    && claude
    ```

    此命令會直接將 Claude Code 的所有請求發送到 `copilot-api`,並統一使用 `gpt-4.1` 模型。