2025/9/14

claude code router

claude-code 的 api 不是和其他人一樣的 openai (?) 的方式,所以就有人做了一個 gateway,把 anthropic 呼叫轉為openai 呼叫,同時把回應也改成 anthropic api 回應。
當然,這是用 reverse engineering 做的。
claude code router 也是用 npm 安裝。
安裝完後就是setup,他有提供一個 ui 界面,方便設定。
安裝完用:
ccr ui
就會開啟 browser,顯示設定頁面。
以 openrouter 為例,就選新增 provider - openrouter,然後到openrouter 選一些 (free) 或是 $0/M token 的 model。
在 model 的 democode 中會有 model 的名子。
舉例來說: 他的code 就有:
model="z-ai/glm-4.5-air:free"
就是他的model name,填入 provider的 add model.
一個 provider 可以add 一堆 model.

oprouter 需要一個 api_key,所以去settings--API keys 產生一個 key,把 key copy 到剛剛 claude code router 的 UI 的 openrouter 項目。
UI 設定好像這樣就可以了。
之後 'save'
就會在home 之下create ./claude-code-router/config.json

然後就可以用
ccr code
啟動 claude-code
用 stats 看,可以看到 model 還是 anthropic sonnet,
所以要用 command 來改:
/model openrouter, a-ai/glm-4.5-air:free
就可以改成 openrouter 的 glm-4.5-air model


This is my config.json (API_KEY marked)
$ cat .claude-code-router/config.json 
{
  "LOG": true,
  "LOG_LEVEL": "debug",
  "CLAUDE_PATH": "",
  "HOST": "127.0.0.1",
  "PORT": 3456,
  "APIKEY": "123",
  "API_TIMEOUT_MS": "600000",
  "PROXY_URL": "",
  "transformers": [],
  "Providers": [
    {
      "name": "openrouter",
      "api_base_url": "https://openrouter.ai/api/v1/chat/completions",
      "api_key": "sk-or-v1",
      "models": [
        "nvidia/nemotron-nano-9b-v2:free",
        "openrouter/sonoma-sky-alpha",
        "deepseek/deepseek-chat-v3.1:free",
        "z-ai/glm-4.5-air:free",
        "qwen/qwen3-coder:free",
        "moonshotai/kimi-k2:free"
      ],
      "transformer": {
        "use": [
          "openrouter"
        ]
      }
    }
  ],
  "StatusLine": {
    "enabled": false,
    "currentStyle": "default",
    "default": {
      "modules": []
    },
    "powerline": {
      "modules": []
    }
  },
  "Router": {
    "default": "openrouter,openrouter/sonoma-sky-alpha",
    "background": "",
    "think": "",
    "longContext": "",
    "longContextThreshold": 60000,
    "webSearch": "",
    "image": ""
  },
  "CUSTOM_ROUTER_PATH": ""
}



有關openrouter的 model,不是所有model 都 support claude-code-router,需要support tool 的才行: 所以可以follow 說明,在list model 時加上 filter: tool
另外光support tool 好像也不能完全 support claude code router,像mistral 的 model,雖然 support,但是一對tool command 他不認識。


要注意的是,ccr server 啟動之後,修改 config.json 不會生效。
要restart ccr server 才會重新 load config.json

沒有留言:

張貼留言