接口总览:入口与出口

cc-router 夹在你的工具和大模型厂商之间:

  • 入口:你的工具怎么连 cc-router。cc-router 对外开放三种协议的端点,工具讲哪种就接哪个。
  • 出口:cc-router 怎么连厂商。每条订阅按厂商支持的协议配置,cc-router 负责发出正确格式的请求。

两侧互不绑定,可以任意组合。比如 Codex 从 OpenAI Responses 入口进来,最终由 DeepSeek 的 Anthropic 端点作答。

 Claude Code    OpenCode    OpenClaw   pi ...   Codex ...      Open WebUI / Cherry Studio ...
      |             |           |         |         |                         |
      -------------------------------------         |                         |
                        |                           |                         |
                    Anthropic                    OpenAI                    OpenAI
                  Messages API                Responses API         Chat Completions API
                 (/v1/messages)              (/v1/responses)       (/v1/chat/completions)
                        |                           |                         |
                        -------------------------------------------------------
                                                  |  入口 · 虚拟模型
                                                  |
                                              cc-router
                                        (本地 127.0.0.1:23456)
                                                  |
                                                  |  出口 · 真实模型
           -----------------------------------------------------------------------------
           |            |            |            |            |            |          |
       DeepSeek        GLM         Kimi       Anthropic     OpenAI       Gemini     ......
          API        Coding       Coding      Messages    Responses &      API
                      Plan         Plan          API      Completions

内部统一:一切都先变成 Anthropic Messages

cc-router 内部只有一条调度 pipeline,它讲的是 Anthropic Messages 协议:

  1. 请求从任一入口进来。非 Anthropic 入口先翻译成 Anthropic Messages。
  2. pipeline 把 model 解析成虚拟模型(model-fable / model-opus / model-sonnet / model-haiku),按该槽位绑定的订阅列表与调度模式(顺序 / 轮询 / 会话亲和)选一家订阅。
  3. 按这家订阅的出口协议发出请求。非 Anthropic 出口再翻译成对应协议。
  4. 响应沿原路翻译回去,以客户端入口的协议格式返回。

所以三个入口共用同一套订阅、虚拟模型、限额与会话亲和;限流、失败时的自动重试和切换订阅也对所有入口生效。请求日志详情里的「入口接口」能看到每条请求从哪个入口进来。

入口:你的工具怎么连 cc-router

入口(点击查看详细参考)典型客户端Base URL协议翻译
Anthropic Messages
POST /v1/messages
Claude Code、Claude Desktop、OpenCode、OpenClaw、pi、Kimi Code CLIhttp://127.0.0.1:23456无,原样透传
OpenAI Responses
POST /v1/responses
Codex CLI、Codex Desktophttp://127.0.0.1:23456/v1Responses ⇄ Messages
OpenAI Chat Completions
POST /v1/chat/completions
Open WebUI、Cherry Studio、Cline、LobeChathttp://127.0.0.1:23456/v1Chat ⇄ Messages

三个入口之外还有两个公共端点:

端点用途鉴权
GET /v1/models虚拟模型清单,字段同时兼容 Anthropic 与 OpenAI SDK不需要
GET /health存活探测,返回纯文本 ok不需要

详见 GET /v1/models。

三个入口的差异速查

/v1/messages/v1/responses/v1/chat/completions
最低版本v3.0.0v3.0.0v5.0.0
推荐模型名model-opus 等gpt-5.5 等两种都行
思考强度thinking / output_config.effort 原样透传reasoning.effort → thinking 预算reasoning_effort → thinking 预算
思考内容返回thinking 块(带签名)reasoning item(带签名,可回传)reasoning_content 字段(回传会被丢弃)
图片输入支持不支持支持(data: base64 与 http(s) URL)
工具调用支持支持(function 类型)支持(tools / tool_choice,不支持旧版 functions)
流式终止标志message_stopresponse.completed(无 [DONE])data: [DONE]
流式 usagemessage_start / message_delta 中response.completed 中末尾固定一帧 usage
错误体风格AnthropicOpenAIOpenAI
会话亲和依据x-claude-code-session-id → metadata.user_id → 首条用户消息prompt_cache_key → session_id 请求头user → x-session-id 请求头 → 首条用户消息

选哪个入口? 工具支持 Anthropic Messages 就优先用它:零翻译,thinking、cache_control、图片、工具调用都按原生语义工作。只有工具只讲 OpenAI 协议时才用另外两个入口。

公共约定

监听与端口

配置默认值说明
监听地址127.0.0.1设置 → 代理服务 → 监听地址切到「局域网」后变为 0.0.0.0
HTTP 端口23456被占用时自动 +1,最多尝试 100 次
HTTPS 端口23457监听协议选「仅 HTTPS」或「HTTP + HTTPS」时启用,同样自动 +1
请求体上限32 MB多图 base64 请求可能超限返回 413,可在设置里调大

端口、协议、监听地址、请求体上限修改后都需要重启 cc-router 生效。

鉴权

  • 「Token 鉴权」默认开启(设置 → 鉴权与跨域)。开启时所有入口都从 x-api-key: <token> 或 Authorization: Bearer <token> 读取 token(x-api-key 优先),必须与设置页的 token 完全一致。
  • /v1/models、/health 与所有 OPTIONS 预检请求不需要鉴权。
  • 鉴权失败的 401 响应体固定是 Anthropic 风格,与入口无关,因为鉴权发生在入口 handler 之前。
  • 这个 token 只用于访问 cc-router,与上游厂商的 API Key 无关。上游 Key 由 cc-router 在转发时按订阅替换。

HTTPS

HTTPS 端口使用 cc-router 本地自签 CA 签发的证书,客户端需要先信任这张 CA。只接受 HTTPS 的客户端(如 Claude Desktop)才需要开启,配置方法见 与 Claude Desktop 集成(macOS)和 Windows 版。

CORS

默认开启,Access-Control-Allow-Origin: *,允许 GET / POST / OPTIONS,预检直接返回 204。401 响应同样带 CORS 头,浏览器里能读到错误体。

虚拟模型与别名

所有入口共用一套模型名解析规则,不同入口的模型名可以混用:

虚拟模型可用别名
model-fableclaude-fable*、gpt-5.6、gpt-*-sol
model-opusclaude-opus*、gpt-5.5、gpt-*-terra
model-sonnetclaude-sonnet*、gpt-5.4、gpt-*-luna
model-haikuclaude-haiku*、gpt-*-mini
  • 以上所有写法都可以加 anthropic/ 或 openai/ 前缀(LiteLLM 风格),效果相同。
  • claude-opus* 是前缀匹配,claude-opus-4-7、claude-opus-4-7-20260101 都命中 model-opus。
  • gpt-*-sol 按 - 分段匹配档位,gpt-5.6-sol、gpt-6-sol-20261201 都命中 model-fable;gpt-5.4-mini 命中 model-haiku。
  • 不匹配任何规则的模型名走 fallback:model 原样透传给 fallback 槽位的订阅。

出口:cc-router 怎么连厂商

出口按上游协议分四类。内置厂商预设和自定义端点走的是同一条路,区别只是内置预设已经填好了地址、鉴权方式和模型列表。完整内置清单以 app 内「添加订阅」页为准。

出口类型上游协议内置预设(节选)自定义端点协议翻译
Anthropic Messages 兼容/v1/messagesAnthropic 官方、DeepSeek、智谱 GLM、Kimi、MiniMax、小米 MiMo、阿里云百炼、火山方舟、腾讯云、百度千帆、阶跃星辰、ModelScope、优云智算、Fireworks、OpenRouter、xAI、Ollama 等任意 Anthropic Messages 兼容端点无,原样透传
OpenAI 兼容/v1/responses、/v1/chat/completionsOpenAI 官方 APIone-api / new-api 中转、Groq、Together、本地 vLLM / llama.cpp 等Messages → OpenAI
Gemini 兼容generateContent、/v1beta/interactionsGoogle AI Studio、Gemini Interactions API任意 Gemini 兼容端点Messages → Gemini
订阅账号(OAuth)各家私有协议Codex(ChatGPT Plus/Pro)、Kiro(AWS)不适用Messages → 私有协议

各类出口的行为要点:

  • Anthropic Messages 兼容:主路径。不做协议翻译,thinking、output_config.effort、cache_control、图片、工具调用全部按原生语义工作。厂商提供原生 Anthropic 端点时优先配这一类。
  • OpenAI 兼容:thinking 与 OpenAI reasoning 双向映射,多轮推理上下文自动回灌;Chat Completions 上游返回的 reasoning_content(DeepSeek R1 等)会转成 thinking 块。翻译层表达不了的内容(如 cache_control)会被丢弃。
  • Gemini 兼容:thinking 双向映射,工具调用往返时自动携带 thought signature。
  • 订阅账号(OAuth):不用 API Key,通过 OAuth 设备码登录。属于灰色地带,有封号风险,不建议当主力,只适合兜底。

入口 × 出口组合

任意入口都能搭配任意出口,差别在于中间经过几次协议翻译:

入口 ↓ / 出口 →Anthropic 兼容OpenAI 兼容 / Gemini 兼容 / OAuth
/v1/messages0 次,完全透传,保真度最高1 次(出口翻译)
/v1/responses1 次(入口翻译)2 次
/v1/chat/completions1 次(入口翻译)2 次

翻译次数越多,协议专有特性丢失的可能越大(例如 cache_control 只在全程 Anthropic 时有效)。实际使用中 1~2 次翻译对日常对话和工具调用影响不大,但如果你在意 prompt cache 命中率或推理细节,尽量让入口和出口都走 Anthropic 协议。