Claude Code Router:重新定義 AI 開發的連接樞紐

Claude Code Router 完整使用指南:從零開始的本地部署與成本優化攻略

說實話,當我第一次收到 Anthropic 的月度帳單時,看到那個數字差點讓我的咖啡灑出來。一個月下來,光是用 Claude Code 寫程式,API 費用就超過了 200 美金。對於一個個人開發者來說,這不是小錢啊。

就在我考慮要不要減少使用 Claude Code 的時候,偶然間發現了一個叫做 Claude Code Router 的開源專案。這個工具徹底改變了我的 AI 開發體驗——不僅保留了 Claude Code 的所有強大功能,還讓我的 API 成本直接降低了 90%!

今天就來分享一下我這幾個月使用 Claude Code Router 的完整經驗,包括安裝配置、多供應商設定、本地部署,還有一些踩坑經驗。

Claude Code Router 技術架構圖

什麼是 Claude Code Router?為什麼它這麼香?

Claude Code Router 本質上是一個智慧代理工具,它會攔截 Claude Code 發送給 Anthropic 的請求,然後根據你的配置將這些請求轉發到其他更便宜的 AI 供應商。

聽起來有點複雜?其實用起來超簡單。你還是用原來的 claude code 命令,但背後的請求已經偷偷換成了 DeepSeek、Gemini 或者本地運行的 Ollama 模型。

最關鍵的是,它完全不會破壞你現有的工作流程。所有的 Claude Code 功能,包括 MCP 伺服器、subagents、檔案操作等等,都能正常使用。

快速上手:5 分鐘完成基本安裝

第一步:安裝必要組件

首先確保你已經安裝了 Claude Code:

# 如果還沒安裝 Claude Code
npm install -g @anthropic-ai/claude-code

# 安裝 Claude Code Router
npm install -g @musistudio/claude-code-router

安裝過程很順利,我在 MacBook 上大概花了 2 分鐘就完成了。

第二步:建立配置目錄和基本配置

# 建立配置目錄
mkdir -p <sub>/.claude-code-router

# 建立基本配置檔案
cat > </sub>/.claude-code-router/config.json << 'EOF'
{
  "Providers": [
    {
      "name": "deepseek",
      "api_base_url": "https://api.deepseek.com/chat/completions",
      "api_key": "${DEEPSEEK_API_KEY}",
      "models": ["deepseek-chat", "deepseek-reasoner"]
    }
  ],
  "Router": {
    "default": "deepseek,deepseek-chat"
  },
  "Settings": {
    "API_TIMEOUT_MS": 60000,
    "LOG_LEVEL": "info"
  }
}
EOF

第三步:設定 API 金鑰

# 在你的 .bashrc 或 .zshrc 中加入
export DEEPSEEK_API_KEY="你的-deepseek-api-key"

# 重載設定
source <sub>/.zshrc  # 或 source </sub>/.bashrc

第四步:測試運行

# 啟動 Claude Code Router
ccr code

如果一切順利,你會看到 Claude Code 啟動,但請求會被路由到 DeepSeek。我第一次運行時還有點不敢相信,真的這麼簡單就搞定了!

多供應商配置:打造你的 AI 軍火庫

單一供應商雖然簡單,但真正的威力在於多供應商配置。經過幾個月的使用,我總結出了一套比較實用的配置策略。

完整的多供應商配置範例

{
  "APIKEY": "your-secret-key",
  "PROXY_URL": "http://127.0.0.1:7890",
  "LOG": true,
  "API_TIMEOUT_MS": 600000,
  "NON_INTERACTIVE_MODE": false,
  "Providers": [
    {
      "name": "openrouter",
      "api_base_url": "https://openrouter.ai/api/v1/chat/completions",
      "api_key": "sk-xxx",
      "models": [
        "google/gemini-2.5-pro-preview",
        "anthropic/claude-sonnet-4",
        "anthropic/claude-3.5-sonnet",
        "anthropic/claude-3.7-sonnet:thinking"
      ],
      "transformer": {
        "use": ["openrouter"]
      }
    },
    {
      "name": "deepseek",
      "api_base_url": "https://api.deepseek.com/chat/completions",
      "api_key": "sk-xxx",
      "models": ["deepseek-chat", "deepseek-reasoner"],
      "transformer": {
        "use": ["deepseek"],
        "deepseek-chat": {
          "use": ["tooluse"]
        }
      }
    },
    {
      "name": "ollama",
      "api_base_url": "http://localhost:11434/v1/chat/completions",
      "api_key": "ollama",
      "models": ["qwen2.5-coder:latest"]
    },
    {
      "name": "gemini",
      "api_base_url": "https://generativelanguage.googleapis.com/v1beta/models/",
      "api_key": "sk-xxx",
      "models": ["gemini-2.5-flash", "gemini-2.5-pro"],
      "transformer": {
        "use": ["gemini"]
      }
    },
    {
      "name": "volcengine",
      "api_base_url": "https://ark.cn-beijing.volces.com/api/v3/chat/completions",
      "api_key": "sk-xxx",
      "models": ["deepseek-v3-250324", "deepseek-r1-250528"],
      "transformer": {
        "use": ["deepseek"]
      }
    },
    {
      "name": "modelscope",
      "api_base_url": "https://api-inference.modelscope.cn/v1/chat/completions",
      "api_key": "",
      "models": ["Qwen/Qwen3-Coder-480B-A35B-Instruct", "Qwen/Qwen3-235B-A22B-Thinking-2507"],
      "transformer": {
        "use": [
          [
            "maxtoken",
            {
              "max_tokens": 65536
            }
          ],
          "enhancetool"
        ],
        "Qwen/Qwen3-235B-A22B-Thinking-2507": {
          "use": ["reasoning"]
        }
      }
    },
    {
      "name": "dashscope",
      "api_base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions",
      "api_key": "",
      "models": ["qwen3-coder-plus"],
      "transformer": {
        "use": [
          [
            "maxtoken",
            {
              "max_tokens": 65536
            }
          ],
          "enhancetool"
        ]
      }
    },
    {
      "name": "aihubmix",
      "api_base_url": "https://aihubmix.com/v1/chat/completions",
      "api_key": "sk-",
      "models": [
        "Z/glm-4.5",
        "claude-opus-4-20250514",
        "gemini-2.5-pro"
      ]
    }
  ],
  "Router": {
    "default": "deepseek,deepseek-chat",
    "background": "ollama,qwen2.5-coder:latest",
    "think": "deepseek,deepseek-reasoner",
    "longContext": "openrouter,google/gemini-2.5-pro-preview",
    "longContextThreshold": 60000,
    "webSearch": "gemini,gemini-2.5-flash"
  }
}

截圖 2025-09-21 凌晨12.01.21

路由策略說明

這套配置的核心思路是:

  • default: 日常任務用 DeepSeek,性價比最高
  • background: 背景任務用 Gemini 免費額度
  • think: 複雜推理用 DeepSeek Reasoner
  • longContext: 長文本處理用 Gemini 2.0 Flash

實際使用下來,這套策略既保證了品質,又最大程度降低了成本。

成本分析:真實的省錢效果

讓我用實際數據來說話。這是我使用 Claude Code Router 前後的成本對比:

最新價格對比 (2025年2月更新)

供應商 輸入價格 (每百萬 tokens) 輸出價格 (每百萬 tokens) 相對節省
Claude 3.5 Sonnet $3.00 $15.00 -
DeepSeek V3 $0.27 $1.10 90%
Gemini 2.0 Flash $0.10 $0.40 95%
Ollama (本地) $0.00 $0.00 100%

我的實際使用成本

以我一個月的典型使用量來算:

  • 輸入:約 500 萬 tokens
  • 輸出:約 200 萬 tokens

使用 Claude 直接 API:$15 + $30 = $45

使用 Claude Code Router

  • 70% 使用 DeepSeek:$0.95 + $1.54 = $2.49
  • 20% 使用 Gemini:$0.10 + $0.16 = $0.26
  • 10% 使用 Ollama:$0

總計約 $2.75,節省 94%!

LM Studio + Ollama 本地部署完整攻略

為了進一步降低成本,我還配置了本地 Ollama 模型。對於一些不太複雜的任務,本地模型完全夠用。

截圖 2025-09-20 晚上11.25.14

LM Studio 安裝和配置

  1. 下載 LM Studio 從官方網站 https://lmstudio.ai 下載對應平台的版本。我用的是 Mac 版本,安裝過程就是拖拽到 Applications 資料夾。

  2. 下載模型 第一次打開 LM Studio 時,可以直接搜尋和下載模型。我推薦幾個實用的:

    • Qwen2.5-Coder-7B: 程式碼生成表現不錯
    • DeepSeek-Coder-6.7B: 輕量級但很實用
    • Llama-3.2-3B: 通用任務的好選擇
  3. 啟動本地伺服器 在 LM Studio 中載入模型後,點擊 "Start Server",默認會在 http://localhost:1234 啟動 OpenAI 相容的 API 伺服器。

Ollama

如果你更喜歡命令列操作,Ollama 是更好的選擇:

# 安裝 Ollama (Mac)
brew install ollama

# 啟動 Ollama 服務
ollama serve

# 下載並運行模型
ollama pull openai/gpt-oss-20b
ollama pull qwen/qwen3-coder-30b

配置Mstudio

截圖 2025-09-21 凌晨12.17.45

整合到 Claude Code Router

在配置檔案中加入本地模型:

{
      "name": "ollama",
      "api_base_url": "http://localhost:1234/v1/chat/completions",
      "api_key": "lmstudio",
      "models": [
        "openai/gpt-oss-20b",
        "qwen/qwen3-coder-30b"
      ],
      "transformer": {
        "use": [
          "OpenAI"
        ]
      }
    }

然後可以設定某些任務專門使用本地模型:

  "Router": {
    "default": "kimi-k2-turbo-preview ,kimi-k2-turbo-preview",
    "background": "kimi-k2-turbo-preview ,kimi-k2-turbo-preview",
    "think": "deepseek,deepseek-reasoner",
    "longContext": "gemini,gemini-2.5-pro",
    "longContextThreshold": 60000,
    "webSearch": "gemini,gemini-2.0-flash",
    "image": ""
  }

本地模型的使用體驗

說實話,本地模型的回應速度和品質確實不如雲端模型,但對於一些簡單的程式碼補全、註解生成、重構建議等任務,已經完全夠用了。而且完全免費,這點特別香。

我通常會把一些敏感的程式碼或者內部專案的任務分配給本地模型,既保護了隱私,又節省了成本。

Claude Code Router UI 操作指南

除了命令列模式,Claude Code Router 還提供了 UI 界面,讓操作更加直觀。

# 啟動 UI 模式
ccr ui

UI 界面會在瀏覽器中打開,你可以:

  • 視覺化地切換不同的模型
  • 即時查看 API 調用統計
  • 調整路由規則
  • 監控各供應商的回應時間和成本

(這裡會加入用戶提供的 CCR UI 範例圖片)

實戰優化技巧

經過幾個月的使用,我總結了一些實用的優化技巧:

1. 智慧回退策略

配置回退機制,當主要供應商出現問題時自動切換:

"Settings": {
  "FALLBACK_ENABLED": true,
  "FALLBACK_PROVIDERS": ["deepseek", "gemini", "ollama"]
}

2. 成本監控

定期檢查 API 使用量:

# 查看使用統計
ccr statusline

3. 環境變數管理

建立一個環境變數管理腳本:

# <sub>/.claude-env
export DEEPSEEK_API_KEY="sk-xxxxxx"
export OPENROUTER_API_KEY="sk-or-xxxxxx"
export GEMINI_API_KEY="AIxxxx"

# 使用時載入
source </sub>/.claude-env

常見問題排除

Q1: 模型切換後回應格式異常

這通常是轉換器配置問題。確保在配置中指定了正確的 transformer:

{
  "name": "deepseek",
  "transformer": "deepseek"
}

Q2: API 超時問題

某些模型回應較慢,可以調整超時設定:

"Settings": {
  "API_TIMEOUT_MS": 180000  // 3分鐘
}

Q3: 本地模型載入失敗

檢查 Ollama 服務是否正常運行:

# 檢查 Ollama 狀態
ollama list

# 重啟服務
ollama serve

最佳實踐建議

  1. 分層使用策略:簡單任務用便宜模型,複雜任務用高階模型
  2. 定期監控成本:每週檢查一次 API 使用量和費用
  3. 備份配置:將配置檔案加入版本控制
  4. 測試新模型:定期試用新的供應商和模型
  5. 隱私保護:敏感程式碼使用本地模型

社群資源和更新

Claude Code Router 作為開源專案,社群非常活躍:

值得關注的增強版本

  • @tellerlin/claude-code-router: 加入了 API 密鑰輪換功能
  • @jasonzhangf/claude-code-router-enhanced: 增加了重試機制

總結:為什麼我推薦 Claude Code Router

回顧這幾個月的使用經驗,Claude Code Router 不僅僅幫我省了錢,更重要的是給了我選擇的自由。

我可以根據不同的任務選擇最合適的模型,不再被綁定在單一供應商上。對於個人開發者和小團隊來說,這種靈活性和成本優勢是巨大的。

當然,它也不是完美的。設定過程需要一些技術基礎,而且需要管理多個 API 密鑰。但相比節省的成本和獲得的靈活性,這些小麻煩完全可以接受。

如果你也在為 AI 開發成本發愁,或者想要更多的模型選擇,我真心推薦試試 Claude Code Router。說不定它也會像改變我的開發體驗一樣,改變你的。

畢竟,在這個 AI 快速發展的時代,有選擇總比沒選擇好,對吧?


相關連結:


本文最初發布於 HackMD @BASHCAT

留言

這個網誌中的熱門文章

Arduino 課本可能沒教的事(1)

SI4432 搭配Arduino

燒錄 Arduino mini Pro 燒錄