Last active
October 22, 2025 15:26
-
-
Save cht-k/62a27d1e8efea97b49db557fd85ceaff to your computer and use it in GitHub Desktop.
Revisions
-
cht-k revised this gist
Jun 23, 2025 . 1 changed file with 77 additions and 71 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -17,9 +17,78 @@ --- ### **推薦方案:直接代理 (穩定且靈活)** 此方案是我們最推薦的方式。它不使用額外的路由層,而是將 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) | | | ------------------> | | ------------------> | | ------------------> | | +--------------+ +-----------------------+ +---------------------+ +--------------------+ ``` #### 設定步驟 ##### 步驟一:安裝並運行 `copilot-api` (Fork 版本) ```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 參數) bun run start start --port 4141 --business ``` ##### 步驟二:安裝並設定 `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 ``` 編輯 `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 ```bash ccr code ``` -
cht-k created this gist
Jun 22, 2025 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal 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` 模型。