把零散的 Token Plan、Coding Plan、大模型 API 额度聚合成一个虚拟 Plan,一键接入 Claude Code、Claude Desktop App、OpenClaw、OpenCode 等工具 —— 省钱!省 Token!完全本地运行! Bundle your scattered Token Plan, Coding Plan, and LLM API quotas into a single virtual Plan, and plug it into Claude Code, Claude Desktop App, OpenClaw, OpenCode, and more.
$ npx -y skills add finch-xu/cc-router --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
Repo: finch-xu/cc-router
What's inside
把零散的 Token Plan、Coding Plan、大模型 API 额度聚合成一个虚拟 Plan,一键接入 Claude Code、Claude Desktop App、OpenClaw、OpenCode、Codex 等工具 —— 省钱!省 Token!完全本地运行!
注意⚠️ 本工具仅限于自动切换订阅套餐,请求体几乎完全透传,不涉及逆向、不涉及破解等操作。用户需自行遵守每个编程套餐的使用规则。此工具只能用于 Claude Code 等编程工具,切勿用于其他用途。
各家 provider 的 ToS 不一定明确允许"订阅 Key 接第三方代理 + 多虚拟模型混调度"的用法,尤其是 Coding Plan / Token Plan 这类 per-seat 订阅,可能触发风控。因使用本工具导致账号被限速、被封禁、订阅被取消的,作者不承担任何责任。
本软件按 As-Is 提供,不对任何因使用造成的直接或间接损失负责,包括但不限于额度异常消耗、数据丢失、业务中断。
功能亮点:
model-opus / claude-opus-4-7 / anthropic/model-opus / anthropic/claude-opus-4-7 都路由到同一虚拟模型,工具用什么命名都不挑Anthropic /v1/messages 与 OpenAI /v1/responses 两套端点并行,Claude Code / Codex 等 Anthropic 与 OpenAI 生态的客户端都能一键接入下方的 AI Agent / Coding Agent 工具都支持接入cc-router并使用你的所有大模型plan。
| id | 名称 | Token Plan | API | 兼容性 |
|---|---|---|---|---|
anthropic | Anthropic 官方 API(仅按量付费,不含 Plan) | ❌ | ✅ | verified |
openai_codex | OpenAI Codex (ChatGPT Plus/Pro 订阅) 有封号风险,不推荐使用 | ✅ | ❌ | tested |
kiro | Kiro IDE (AWS) 免费 Claude 订阅额度,灰色地带有封号风险,不推荐使用 | ✅ | ❌ | tested |
google_ai_studio | Google AI Studio (Gemini) 按量付费 + 免费 quota | ❌ | ✅ | verified |
google_gemini_interactions | Google Gemini (Interactions API) 新统一接口 /v1beta/interactions(协议翻译) | ❌ | ✅ | partial |
zhipu | 智谱 GLM(按量付费/中国订阅) | ✅ | ✅ | verified |
deepseek | DeepSeek(按量付费) | ❌ | ✅ | verified |
moonshot | Moonshot Kimi(按量付费/中国订阅/国际订阅) | ✅ | ✅ | untested |
minimax | MiniMax(按量付费/中国订阅/国际订阅) | ✅ | ✅ | verified |
xiaomi | 小米 MiMo(按量付费/中国订阅/国际订阅) | ✅ | ✅ | verified |
alibaba | 阿里云百炼(Token Plan 团队版 + 按量付费 2 地域 + 停售的 Coding Plan) | ✅ | ✅ | verified |
volcengine | 字节跳动 火山方舟(Coding Plan 订阅 + Agent Plan 订阅 + 按量付费) | ✅ | ✅ | untested |
openrouter | OpenRouter 聚合平台(500+ 模型路由) | ❌ | ✅ | untested |
tencent | 腾讯云大模型(Token Plan 订阅 + TokenHub 按量付费境内/境外) | ✅ | ✅ | untested |
aiberm | Aiberm(按量付费 API,模型按 token group 动态返回) | ❌ | ✅ | untested |
whatai | 神马中转 API(按量付费,OpenAI/Anthropic 双协议中转,仅用 Anthropic 路径) | ❌ | ✅ | untested |
ollama | Ollama 本地推理(仅 localhost:11434,含云端模型 tag 如 glm-4.7:cloud) | ❌ | ✅ | partial |
fireworks | Fireworks AI(按量付费/国际订阅Fire Pass) | ✅ | ✅ | verified |
stepfun | 阶跃星辰(按量付费/中国订阅/国际订阅) | ✅ | ✅ | untested |
baidu | 百度千帆(按量付费/中国订阅) | ✅ | ✅ | untested |
modelscope | 魔搭 ModelScope(按量付费) | ❌ | ✅ | partial |
ucloud | 优云智算 UCloud Modelverse(Coding Plan 订阅 + 按量付费 API 国内/海外) | ✅ | ✅ | untested |
openai | OpenAI 官方 API(按量付费,含 GPT-5 / o3 / 4.1 等 reasoning 模型,自动翻译 Anthropic thinking ↔ OpenAI reasoning) | ❌ | ✅ | untested |
xai | xAI Grok(按量付费,含 Grok 4.5 / 4.3,官方 Anthropic 兼容端点) | ❌ | ✅ | untested |
自定义 | 自定义任意Anthropic协议API | ✅ | ✅ | verified |
自定义 (Gemini 兼容) | 接入任意 Gemini generateContent 兼容端点(中转站等),messages_path 用 {model} 占位符 | ❌ | ✅ | tested |
自定义 (Gemini Interactions 兼容) | 接入任意 Gemini Interactions API /v1beta/interactions 兼容端点(Google 新统一接口 / 兼容中转站),自动协议翻译;与旧 generateContent 不同,model 在请求 body 里,无需 {model} 占位符 | ❌ | ✅ | partial |
自定义 (OpenAI Responses 兼容) | 接入任意 OpenAI /v1/responses 兼容端点(one-api / new-api 等中转站),自动协议翻译 | ❌ | ✅ | tested |
自定义 (OpenAI Chat Completions 兼容) | 接入任意 OpenAI /v1/chat/completions 兼容端点(DeepSeek / Together / Groq / Ollama / one-api / new-api 等中转站),自动协议翻译,DeepSeek R1 等模型的 reasoning_content 暴露为 Claude Code thinking 块 | ❌ | ✅ | tested |
Token Plan 列包含各厂商的套餐订阅形态(Token Plan / Coding Plan / Agent Plan 等);API 列指按量付费的 Anthropic Messages 兼容端点。
社区可 PR 补充。
macOS 上 cc-router 的 Dock 图标随窗口显隐:窗口打开时 Dock 有图标、可 Cmd+Tab 切换;关闭窗口后图标消失,入口只剩屏幕右上角的菜单栏。关闭窗口只是隐藏,代理会继续运行;要再打开窗口,点菜单栏图标、或在 Spotlight 里再搜一次 cc-router 即可。彻底退出请用菜单栏图标 →「退出 cc-router」。
设置 页会动态显示完整的 env snippet;默认端口被占用时自动 +1 递增。
{
"env": {
"ANTHROPIC_BASE_URL": "http://127.0.0.1:23456",
"ANTHROPIC_AUTH_TOKEN": "your token, show in this app settings",
"API_TIMEOUT_MS": "3000000",
"ANTHROPIC_MODEL": "model-fable",
"ANTHROPIC_DEFAULT_FABLE_MODEL": "model-fable",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "model-opus",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "model-sonnet",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "model-haiku",
"CLAUDE_CODE_SUBAGENT_MODEL": "model-opus",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
"CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK": "1",
"CLAUDE_CODE_ATTRIBUTION_HEADER": "0",
"CLAUDE_CODE_EFFORT_LEVEL": "max"
}
}
当OPUS_MODEL支持1m上下文的时候,可以设置为model-opus[1m]以获得Claude code工具的完整上下文支持。
也兼容 LiteLLM 风格的 anthropic/ 前缀:anthropic/model-opus / anthropic/model-sonnet / anthropic/model-haiku 等同于无前缀写法,方便接入需要带 provider 前缀才能识别 Anthropic 协议的工具。
虚拟模型和别名:
| 虚拟模型 | 别名 |
|---|---|
model-fable | anthropic/model-fable anthropic/claude-fable* claude-fable* gpt-5.6 gpt-*-sol openai/gpt-5.6 openai/gpt-*-sol |
model-opus | anthropic/model-opus anthropic/claude-opus* claude-opus* gpt-5.5 gpt-*-terra openai/gpt-5.5 openai/gpt-*-terra |
model-sonnet | anthropic/model-sonnet anthropic/claude-sonnet* claude-sonnet* gpt-5.4 gpt-*-luna openai/gpt-5.4 openai/gpt-*-luna |
model-haiku | anthropic/model-haiku anthropic/claude-haiku* claude-haiku* gpt-*-mini openai/gpt-*-mini |
claude-opus*的含义是模糊匹配,你可以传入任意符合规则的模型名,都会被归一为虚拟模型model-opus,比如claude-opus-4-8claude-opus-4-7-20260101claude-opus-100都没问题。gpt-*-sol这类按档位段匹配:gpt-5.6-solgpt-6-solgpt-5.6-sol-20261201都命中 sol 档(terra/luna/mini 同理)。
没有 cc-router 时:AI Agent(Claude Code / OpenCode 等)一次只能接一家厂商,小额度订阅在关键时刻断流,得手动切配置——体验糟糕。
接上 cc-router 后:Agent → cc-router → 厂商 A + B + C,自动负载均衡、自动故障转移,三家订阅当一家用。
收益:
Claude Code 按任务难度分三档:opus 做规划、sonnet 写代码、haiku 跑工具调用。
cc-router 把这三档抽象成 model-opus / model-sonnet / model-haiku 三个虚拟槽位,每个槽位绑一组真实模型 + 调度模式:
model-opus → DeepSeek-V4-Pro + GLM-5.1(轮询)model-sonnet → MiniMax-M2.7 + MiMo-V2.5-Pro(轮询)model-haiku → GLM-4-FlashCC 请求来了就按映射转发,不用再频繁改 ~/.claude/settings.json。
举例:订阅 A = GLM-5 / MiniMax-2.7 / DeepSeek-Flash,订阅 B = DeepSeek-V4-Pro / MiniMax-2.7 / GLM-5。
model-opus 轮询,交叉使用大概率 1 + 1 ≥ 2依赖:Node.js ≥ 20(推荐 pnpm),Rust ≥ 1.88(建议直接用 rustup 最新 stable),Xcode CLT(macOS)。
pnpm install
pnpm tauri dev # 启动开发模式(同时运行前端 + Rust 后端 + 代理)
首次启动 app 会进入 onboarding:
~/.claude/settings.json如果你使用Claude Code,我提供了一个SKILL,可以执行new-provider并附加provider的官方文档或接口地址等信息,能够自动创建provider的配置。
pnpm tauri build
产出:src-tauri/target/release/bundle/ 下对应平台的安装包。
1. 必须用 MSVC toolchain,不能用 GNU
Tauri 在 Windows 上打包依赖 MSVC,CI 用的也是 x86_64-pc-windows-msvc。确认:
rustup show # active toolchain 应带 -msvc 后缀
rustc --version # 应 ≥ 1.88
2. 需要 Visual Studio Build Tools
MSVC toolchain 依赖 C++ 编译器和 Windows SDK,缺了会报 link.exe not found。装 Build Tools for Visual Studio 时勾选「使用 C++ 的桌面开发」工作负载,装完重开终端。
3. rustc --version 和 rustup show 对不上?查 PATH
若曾用 msi / scoop / Visual Studio 组件装过独立 Rust,它可能排在 rustup shim 之前,导致 rustup default stable 说什么都不生效:
Get-Command rustc, cargo -All | Select-Object Source
Source 应指向 %USERPROFILE%\.cargo\bin。否则把该目录提到 PATH 最前(rundll32 sysdm.cpl,EditEnvironmentVariables),或卸掉那份独立安装。
4. dev server 端口残留
Ctrl+C 常杀不干净 tauri dev 的进程树,再次启动会报 Port 1420 is already in use(strictPort: true 刻意不自动换端口,因为 devUrl 写死了 1420):
Get-NetTCPConnection -LocalPort 1420 -State Listen |
Select-Object -ExpandProperty OwningProcess -Unique |
ForEach-Object { Stop-Process -Id $_ -Force }
Provider 品牌 logo 来自 @lobehub/icons(MIT)。各品牌商标归原所有者所有。
MIT
.claude/
skills/
new-provider/
SKILL.md
.github/
workflows/
release.yml
.gitignore
assets/
build_icon.py
icon.png
screenshot-logs.png
screenshot-models.png
screenshot-receipts-page.png
screenshot-receipts.png
screenshot-routing.png
source.png
components.json
docs/
responses-api-probe.md
superpowers/
plans/
2026-07-31-macos-dynamic-dock-icon.md
specs/
2026-07-31-macos-dynamic-dock-icon-design.md
index.html
LICENSE
package.json
pnpm-lock.yaml
postcss.config.js
README.en.md
README.ja.md
README.md
scripts/
generate-latest-json.mjs
set-version.mjs
src/
src-tauri/
build.rs
capabilities/
default.json
Cargo.lock
Cargo.toml
examples/
chatgpt_smoke.rs
icons/
128x128.png
128x128@2x.png
32x32.png
64x64.png
android/
mipmap-anydpi-v26/
ic_launcher.xml
mipmap-hdpi/
ic_launcher_foreground.png
ic_launcher_round.png
ic_launcher.png
mipmap-mdpi/
ic_launcher_foreground.png
ic_launcher_round.png
ic_launcher.png
mipmap-xhdpi/
ic_launcher_foreground.png
ic_launcher_round.png
ic_launcher.png
mipmap-xxhdpi/
ic_launcher_foreground.png
ic_launcher_round.png
ic_launcher.png
mipmap-xxxhdpi/
ic_launcher_foreground.png
ic_launcher_round.png
ic_launcher.png
values/
ic_launcher_background.xml
icon.icns
icon.ico
icon.png
ios/
AppIcon-20x20@1x.png
AppIcon-20x20@2x-1.png
AppIcon-20x20@2x.png
AppIcon-20x20@3x.png
AppIcon-29x29@1x.png
AppIcon-29x29@2x-1.png
AppIcon-29x29@2x.png
AppIcon-29x29@3x.png
AppIcon-40x40@1x.png
AppIcon-40x40@2x-1.png
AppIcon-40x40@2x.png
AppIcon-40x40@3x.png
AppIcon-512@2x.png
AppIcon-60x60@2x.png
AppIcon-60x60@3x.png
AppIcon-76x76@1x.png
AppIcon-76x76@2x.png
AppIcon-83.5x83.5@2x.png
Square107x107Logo.png
Square142x142Logo.png
Square150x150Logo.png
Square284x284Logo.png
Square30x30Logo.png
Square310x310Logo.png
Square44x44Logo.png
Square71x71Logo.png
Square89x89Logo.png
StoreLogo.png
migrations/
001_init.sql
002_add_supports_thinking_blocks.sql
003_add_events_and_diagnostics.sql
004_add_thinking_block_field_name.sql
005_drop_thinking_block_field_name.sql
006_add_request_stats_daily.sql
007_drop_supports_thinking_blocks.sql
008_add_subscription_oauth.sql
009_add_client_info.sql
010_add_subscription_balance.sql
011_add_request_entry_kind_and_http_version.sql
012_add_model_slot_fable.sql
013_add_slot_efforts.sql
014_rename_custom_provider_ids.sql
015_add_receipt_stats_daily.sql
016_add_model_slot_fallback.sql
providers/
_schema.json
aiberm.yaml
alibaba.yaml
anthropic.yaml
baidu.yaml
deepseek.yaml
fireworks.yaml
google-ai-studio.yaml
google-gemini-interactions.yaml
kiro.yaml
minimax.yaml
modelscope.yaml
moonshot.yaml
ollama.yaml
openai-codex.yaml
openai.yaml
openrouter.yaml
stepfun.yaml
tencent.yaml
ucloud.yaml
volcengine.yaml
whatai.yaml
xai.yaml
xiaomi.yaml
zhipu.yaml
src/
commands/
app.rs
debug.rs
events.rs
integrations.rs
mod.rs
oauth.rs
onboarding.rs
providers.rs
proxy.rs
receipts.rs
requests.rs
settings.rs
statistics.rs
subscriptions.rs
tls.rs
updater.rs
virtual_models.rs
db/
mod.rs
paths.rs
error.rs
integrations/
claude_code.rs
codex.rs
mod.rs
lib.rs
main.rs
oauth/
chatgpt_models.rs
chatgpt.rs
kiro.rs
mod.rs
observability/
body_dump.rs
cleanup.rs
events.rs
logger.rs
mod.rs
request_log.rs
provider/
loader.rs
mod.rs
model.rs
schema.rs
proxy/
client_fingerprint.rs
extractors.rs
gemini_dispatch.rs
gemini_interactions_dispatch.rs
handler.rs
middleware.rs
mod.rs
oauth_dispatch.rs
openai_chat_completions_dispatch.rs
openai_responses_dispatch.rs
overloaded.rs
pipeline.rs
retry.rs
sanitize.rs
server.rs
sse_framing.rs
sse.rs
transform/
aws_event_stream.rs
gemini_interactions.rs
gemini.rs
kiro_codewhisperer.rs
mod.rs
openai_chat_completions.rs
openai_responses.rs
openai.rs
responses_common.rs
responses_inbound.rs
upstream.rs
settings/
mod.rs
model.rs
state.rs
subscription/
balance_discovery.rs
mod.rs
model_discovery.rs
model.rs
ping.rs
recheck_worker.rs
state_machine.rs
store.rs
tls/
ca.rs
config.rs
leaf.rs
mod.rs
store.rs
tray.rs
updater_source.rs
virtual_model/
mod.rs
model.rs
scheduler.rs
store.rs
window.rs
tauri.conf.json
tests/
integrations_claude_code.rs
api/
tauri.ts
App.tsx
assets/
logo.png
components/
ChatGptOAuthDialog.tsx
ClaudeCodeSettingsEditor.tsx
ClientToolBadge.tsx
CodexSettingsEditor.tsx
CopyableBlock.tsx
EmptyState.tsx
KiroAuthDialog.tsx
layout/
AppShell.tsx
OnboardingGate.tsx
Sidebar.tsx
ModelSlotPicker.tsx
Pagination.tsx
ProviderBadge.tsx
ProviderIcon.tsx
ProviderLogo.tsx
receipts/
BarcodeSVG.tsx
ReceiptControls.tsx
ReceiptSlip.tsx
RequestDetailDialog.tsx
RouteFlowDiagram.tsx
SortableSubscriptionList.tsx
Spinner.tsx
StatusBadge.tsx
SubscriptionBalanceCard.tsx
SubscriptionEventsList.tsx
SystemErrorsList.tsx
Toggle.tsx
ui/
alert.tsx
badge.tsx
button.tsx
card.tsx
dialog.tsx
input.tsx
label.tsx
select.tsx
switch.tsx
textarea.tsx
hooks/
useClaudeCodeSettings.ts
useCodexSettings.ts
useEvents.ts
useProviders.ts
useReceipts.ts
useRequests.ts
useRouteFlash.ts
useSettings.ts
useStatistics.ts
useSubscriptions.ts
useTheme.tsx
useUpdater.tsx
useVirtualModels.ts
i18n/
index.tsx
locales/
en.json
ja.json
zh.json
lib/
authTypes.ts
clientTools.ts
connectionValidation.ts
format.ts
modelSlots.ts
providerLabels.ts
receipt-aggregations.ts
recommendedClaudeCodeEnv.ts
recommendedCodexConfig.ts
updater.ts
utils.ts
virtualModels.ts
main.tsx
routes/
About.tsx
Guide.tsx
LiveRouting.tsx
Logs.tsx
OnboardingDisclaimer.tsx
Receipts.tsx
RequestLogs.tsx
Settings.tsx
Statistics.tsx
SubscriptionEdit.tsx
SubscriptionNew.tsx
Subscriptions.tsx
Updates.tsx
VirtualModels.tsx
styles.css
types.ts
utils/
exportReceipt.ts
vite-env.d.ts
tailwind.config.ts
test-ccrouter.html
tsconfig.json
tsconfig.node.json
vite.config.tsFAQ
cc-router is a Claude Code plugin with 1 hand-picked skill for development work, indexed on Flowy. Install it with the command on its page. It includes new-provider. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.