cc-router
简体中文 · 繁體中文 · English · 日本語
📖 中文文档 ·
📖 English Docs ·
📖 日本語ドキュメント ·
🤖 DeepWiki ·
🌐 官方网站ccrouter.app
本地运行的大模型聚合网关,GUI桌面端app,零代码部署,把零散的 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 提供,不对任何因使用造成的直接或间接损失负责,包括但不限于额度异常消耗、数据丢失、业务中断。
cc-router 是独立的第三方开源项目,与 Anthropic 无任何关联,未获其授权或背书,也不是 Claude / Claude Code 的官方应用。文中提及的 Anthropic、Claude、Claude Code 均为 Anthropic 的商标,仅用于说明兼容对象。
架构与请求走向一览:
Claude Code OpenCode pi ... Codex ... Open WebUI ... 你的代码 / Agent 框架
| | | | | |
----------------------- | | |
| | | |
Anthropic OpenAI OpenAI Jev
Messages API Responses API Chat Completions API System One
(/v1/messages) (/v1/responses) (/v1/chat/completions) (/v1/systemone)
| | | |
-----------------------------------------------------------------------
| 入口 · 虚拟模型
|
cc-router
(本地 127.0.0.1:23456)
|
| 出口 · 真实模型
------------------------------------------------------------------------------
| | | | | | | |
DeepSeek GLM Kimi Anthropic OpenAI Gemini Jev ......
API Coding Coding Messages Responses & API System One
Plan Plan API Completions
功能亮点:
- 入口三协议,工具随便接 —— 同时开放 Anthropic Messages / OpenAI Responses / OpenAI Chat Completions 三个端点,Claude Code、Codex、OpenClaw、Hermes Agent、Kimi Code、ZCode、Cherry Studio 等无需改造直接接入;另有
/v1/systemone 入口专供 Jev(System One)决策模型,走独立的虚拟模型 model-jev
- 出口三协议,订阅一站调度 —— 内置 24 家厂商预设(DeepSeek、Qwen、Kimi、MiMo、MiniMax、GLM、Claude、OpenAI、Gemini 等),任何 Anthropic / OpenAI / Gemini 兼容端点也能直接配进来
- 聚合所有模型Token —— 顺序 / 轮询 / 会话亲和、自动切换、故障转移
- 用量小票 —— token 用量一键导出成一张「超市小票」样式的消费凭证,晒图、留档都方便
- 四语完整翻译 —— 简体中文 / 繁體中文 / English / 日本語,可跟随系统或在设置页手动切换
- 桌面 / 网页 / 终端三种界面 —— 除了桌面 GUI,还能在浏览器里打开与桌面完全相同的网页界面,或用终端 TUI 界面在命令行里管理订阅、查看实时路由与请求日志
- 虚拟模型多别名 —— fable / opus / sonnet / haiku 四个槽位各识别多种命名,以 opus 为例,
model-opus / claude-opus-4-7 / anthropic/model-opus / anthropic/claude-opus-4-7 都路由到同一虚拟模型,工具用什么命名都不挑
- 本地 HTTPS —— 一键生成自签 CA 与服务器证书,让只支持 HTTPS 的客户端也能接入 cc-router,详见配置教程
- 接入 Claude Desktop App —— 借助本地 HTTPS 与虚拟模型别名,Anthropic 官方桌面端可直接走 cc-router 聚合的多家订阅,详见配置教程
 实时路由 · 请求流向一图看全 |
 虚拟模型 · 拖拽排订阅优先级 |
 请求日志 · 每次请求的模型、耗时与 token |
 用量小票 · token 用量导出成小票 |
 终端界面总览 · 订阅健康与额度一屏看完 |
 终端界面请求详情 · 单次请求的完整记录 |
接入指南
下方这些 AI Agent / Coding Agent 工具都能接入 cc-router,用上你手里的全部大模型 Plan:
Claude Code cli ·
Claude Desktop App ·
OpenAI Codex cli ·
OpenAI Codex Desktop App · OpenCode · OpenClaw · Kimi code cli · pi coding agent 等,还有很多。
安装使用
- 从下表下载对应平台的安装包并安装。
- 添加各家厂商的订阅,给虚拟模型绑定真实模型并选好调度模式。
- 把生成的配置粘到 Claude Code 等工具里即可使用。
| 系统 |
架构 |
安装包 |
下载 |
| macOS |
Apple Silicon |
cc-router_macOS-arm64.dmg |
全球下载 · 中国下载 |
| macOS |
Intel |
cc-router_macOS-x64.dmg |
全球下载 · 中国下载 |
| Windows |
x64 |
cc-router_windows-x64-setup.exe |
全球下载 · 中国下载 |
| Windows |
x64 (MSI) |
cc-router_windows-x64.msi |
全球下载 · 中国下载 |
| Windows |
arm64 |
cc-router_windows-arm64-setup.exe |
全球下载 · 中国下载 |
| Linux |
x64 |
cc-router_linux-x64.AppImage |
全球下载 · 中国下载 |
| Linux |
x64 |
cc-router_linux-x64.deb |
全球下载 · 中国下载 |
| Linux |
arm64 |
cc-router_linux-arm64.AppImage |
全球下载 · 中国下载 |
| Linux |
arm64 |
cc-router_linux-arm64.deb |
全球下载 · 中国下载 |
两个地址内容完全相同,中国大陆用户选「中国下载」更快。链接始终指向最新版本,历史版本见 Releases。Linux 推荐 AppImage,支持应用内自动更新;deb 需手动重新下载升级。
在 Claude Code 中使用
{
"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-*-astra openai/gpt-*-astra |
model-opus |
anthropic/model-opus anthropic/claude-opus* claude-opus* gpt-*-sol openai/gpt-*-sol |
model-sonnet |
anthropic/model-sonnet anthropic/claude-sonnet* claude-sonnet* gpt-*-terra openai/gpt-*-terra |
model-haiku |
anthropic/model-haiku anthropic/claude-haiku* claude-haiku* gpt-*-luna openai/gpt-*-luna |
model-jev |
anthropic/model-jev openai/model-jev(只在 /v1/systemone 入口可用,对话入口收到会返回 400) |
claude-opus* 的含义是模糊匹配,你可以传入任意符合规则的模型名,都会被归一为虚拟模型model-opus,比如 claude-opus-4-8 claude-opus-4-7-20260101 claude-opus-100 都没问题。gpt-*-sol 这类按档位段匹配:gpt-6-sol gpt-6.1-sol gpt-5.6-sol-20261201 都命中 sol 档(astra/terra/luna 同理)。只认档位名:gpt-5.5 这类纯版本号和 gpt-*-mini 不映射,会落到 model-fallback。
入口与出口
cc-router 夹在你的工具和大模型厂商中间:工具从入口连进来,请求从出口发给厂商。两头各支持三种主流大模型接口,可以任意组合——比如 Codex 从 OpenAI Responses 入口进来,最终由 DeepSeek 的 Anthropic 端点作答。另有一条 Jev(System One)决策模型的专用通道,入口和出口都是 /v1/systemone,原样透传。
入口:你的工具怎么连 cc-router
三个对话入口共用同一套订阅、虚拟模型、限额与会话亲和;第四个入口 /v1/systemone 专供 Jev 决策模型,只调度 model-jev。请求日志的「入口接口」一栏能看到每条请求从哪个入口进来。按你的工具支持的协议展开对应一节:
Anthropic Messages /v1/messages —— Claude Code、Claude Desktop、OpenCode、OpenClaw、pi、Kimi code cli 等
| 配置项 |
填写 |
| Base URL |
http://127.0.0.1:23456(不带 /v1,工具会自己拼 /v1/messages) |
| 鉴权 |
x-api-key: <token> 或 Authorization: Bearer <token>,对应 Claude Code 的 ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN |
| 模型名 |
model-fable / model-opus / model-sonnet / model-haiku,或上方别名表里的任意写法(含 anthropic/ 前缀) |
- 这是主入口,请求原样透传不做协议翻译,thinking、
output_config.effort、cache_control、图片、工具调用全部按 Anthropic 原生语义工作。
- Claude Code 的完整 env 示例见上方「在 Claude Code 中使用」;Claude Desktop 需要本地 HTTPS,见配置教程。
- 会话亲和优先按
x-claude-code-session-id 请求头、其次 metadata.user_id 识别会话。
- 每条订阅可在编辑页设置「请求头透传」:不透传 / Claude Code 预设 / 白名单 / 黑名单 / 透传全部。Anthropic 官方订阅默认 Claude Code 预设(
anthropic-*、x-claude-code-* 等),其余默认不透传;凭据类请求头任何模式都不会转发。订阅还可以加自定义请求头。
- auto mode 的服务端分类器只有 Anthropic 官方上游提供;Claude Code 用到的槽位里有第三方厂商时会提示「this session isn’t eligible」,可设
CLAUDE_CODE_AUTO_MODE_SERVER=0 关掉提示(计费不变)。
OpenAI Responses /v1/responses —— Codex CLI、Codex Desktop App 及其他 Responses 客户端
| 配置项 |
填写 |
| Base URL |
http://127.0.0.1:23456/v1 |
| API Key |
cc-router 设置页里的 token,Codex 从 OPENAI_API_KEY 或 ~/.codex/auth.json 读取 |
| 模型名 |
gpt-*-astra / gpt-*-sol / gpt-*-terra / gpt-*-luna 档位名(如 gpt-6-sol,可带 openai/ 前缀),分别落到 fable / opus / sonnet / haiku;也接受 model-* 写法 |
~/.codex/config.toml 片段(app 内「接入指南 → Codex」有完整步骤,之后用 codex -p cc-router 启动):
[model_providers.cc-router]
name = "cc-router"
base_url = "http://127.0.0.1:23456/v1"
wire_api = "responses"
env_key = "OPENAI_API_KEY"
[profiles.cc-router]
model_provider = "cc-router"
model = "model-sonnet"
- 请求在内部翻译为 Anthropic Messages:
instructions 与 developer 消息并入 system,reasoning.effort 映射为 thinking 预算,max_output_tokens 映射为 max_tokens(缺省 4096,并会自动抬高到覆盖 thinking 预算)。
- reasoning 双向:上游的 thinking 以带签名的 reasoning item 返回,客户端下一轮原样回传即可保持多轮推理上下文。
- 不支持图片输入,也不支持
file_search / web_search / computer_use 这类 OpenAI 专有工具;parallel_tool_calls 会被忽略。
- 会话亲和按
prompt_cache_key、其次 session_id 请求头识别,Codex 都会自带。
- 详细步骤见配置教程。
OpenAI Chat Completions /v1/chat/completions —— Open WebUI、Cherry Studio、Cline、LobeChat 等
Open WebUI、Cherry Studio、Cline、LobeChat 等只支持 OpenAI Chat Completions 的工具,把「OpenAI 兼容」端点指向 cc-router 即可:
| 配置项 |
填写 |
| Base URL |
http://127.0.0.1:23456/v1(有的工具要求不带 /v1,按工具提示调整) |
| API Key |
cc-router 设置页里的 token(关闭鉴权时随便填一个非空值) |
| 模型名 |
model-fable / model-opus / model-sonnet / model-haiku,或 gpt-6-astra / gpt-6-sol / gpt-6-terra / gpt-6-luna 等档位别名,从 GET /v1/models 可直接拉取 |
行为说明:
- 请求在 cc-router 内部翻译成 Anthropic Messages 走同一套调度,订阅、虚拟模型、限额、会话亲和全部生效;请求日志里「入口接口」显示
/v1/chat/completions。
- 上游的 thinking 以
reasoning_content 字段返回(DeepSeek 惯例,主流客户端都能折叠显示);对话历史里客户端回传的 reasoning_content 会被丢弃,不影响后续对话。
- 图片支持
data: base64 与 http(s) 两种 image_url;工具调用双向支持;流式响应末尾总会带一帧 usage。
- 不支持旧版
functions / function_call 字段,传了直接返回 400,请改用 tools / tool_choice。
n>1、logprobs、response_format 的 JSON Schema 强制均会被忽略(不报错)。
- 会话亲和(sticky)优先按
user 字段、其次 x-session-id 请求头识别会话,两者都没有时按首条用户消息内容。
- 响应里出现工具调用时
finish_reason 恒为 tool_calls,客户端可放心据此判断是否执行工具。
Jev System One /v1/systemone —— 你自己的代码、Agent 框架,或任何能发 HTTP 请求的程序
Jev(System One)是一类结构化决策模型:请求给出一段状态 state 和一组问题 questions,响应按问题逐个返回结构化答案 answers,不生成对话文本。cc-router 把多家上游的 Key 聚合在独立的虚拟模型 model-jev 下,协议原样透传、不做翻译。
| 配置项 |
填写 |
| 接口地址 |
http://127.0.0.1:23456/v1/systemone(写完整路径) |
| 鉴权 |
Authorization: Bearer <token>,x-api-key: <token> 也可以 |
| 模型名 |
model-jev(可带 anthropic/ / openai/ 前缀),也可以直接写上游的真实模型名 |
命令行验证:
curl http://127.0.0.1:23456/v1/systemone \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{
"model": "model-jev",
"state": "Hello World",
"questions": {
"says_hello": {
"type": "noul",
"instructions": "Does the state text contain a greeting?"
}
}
}'
- 写
model-jev 时,cc-router 按命中订阅配置的 Jev 模型改写;没配就用该接入点的示例模型(如 clef-flash、jev-latest),响应里的 model 仍回显 model-jev。写真实模型名时,订阅配了 Jev 模型就改写,没配就原样透传。
- 只调度绑在
model-jev 上、接入点为 System One 的订阅;对话类订阅不会被用到,System One 订阅也不会进入其他虚拟模型。三个对话入口收到 model-jev 会直接返回 400。
- 只支持非流式。某一家返回 4xx 会换下一家(各家的校验规则不完全一样);全部失败时,如果是请求本身写错,原样返回最后一家的错误,否则返回 503。
- 会话亲和只认
x-session-id 请求头,不带就按轮询分配。
- 用量计入「数据统计」与「用量小票」。
出口:cc-router 怎么连厂商
出口按协议分三类,另有一类走 OAuth 登录的订阅账号,以及只服务 model-jev 的 System One 接入点。内置厂商预设和自定义端点走的是同一条路,区别只是内置预设已经替你填好地址、鉴权方式和模型列表。完整内置清单以 app 内「添加订阅」页为准,描述文件在 src-tauri/providers/,欢迎 PR 补充。
Anthropic Messages 兼容 —— 主路径,请求原样透传
- 内置:Anthropic 官方、DeepSeek、智谱 GLM、Moonshot Kimi、MiniMax、小米 MiMo、阿里云百炼、火山方舟、腾讯云、百度千帆、阶跃星辰、魔搭 ModelScope、优云智算、Fireworks、OpenRouter、Requesty、xAI Grok、Aiberm、Ollama 等,覆盖各家的 Token Plan / Coding Plan / Agent Plan 订阅与按量付费 API
- 自定义:任何 Anthropic Messages 兼容端点(中转站、自建网关等),填 Base URL + Key 即可
- 不做协议翻译,thinking、
output_config.effort、cache_control、图片、工具调用全部按 Anthropic 原生语义工作。只要厂商提供原生 Anthropic 端点,就优先走这条路,翻译路径多少会丢内容
OpenAI 兼容 /v1/responses · /v1/chat/completions —— 协议翻译
- 内置:OpenAI 官方 API(GPT-5 / o3 / 4.1 等 reasoning 模型)
- 自定义:任意 OpenAI Responses 或 Chat Completions 兼容端点,如 one-api / new-api 中转站、Groq、Together、本地 vLLM / llama.cpp
- cc-router 把 Anthropic Messages 翻译成对应协议再发出:Anthropic thinking ↔ OpenAI reasoning 双向映射,多轮推理上下文自动回灌;Chat Completions 返回的
reasoning_content(DeepSeek R1 等)会以 thinking 块的形式交给 Claude Code
- 翻译层表达不了的内容(如
cache_control)会被丢弃,所以有原生 Anthropic 端点的厂商请配到上一类,不要配到这里
Gemini 兼容 generateContent · /v1beta/interactions —— 协议翻译
- 内置:Google AI Studio(generateContent,按量付费 + 免费 quota)、Google Gemini Interactions API(新统一接口)
- 自定义:任意 Gemini generateContent 兼容端点(messages_path 用
{model} 占位符),或 Interactions 兼容端点(model 在请求 body 里,无需占位符)
- thinking 双向映射,工具调用往返时自动携带 thought signature
订阅账号出口(OAuth) —— Codex(ChatGPT Plus/Pro)、Kiro(AWS)
- 不用 API Key,通过 OAuth 设备码登录,把 ChatGPT 订阅 / Kiro 免费 Claude 额度当作出口
- 属于灰色地带,有封号风险,不推荐当主力,建议只做兜底或副号;由此导致的限速、封禁或订阅取消,作者概不负责
Jev System One /v1/systemone —— 只服务 model-jev,原样透传
- 内置:TypeSafe、OpenRouter(System One 接入点)、Ollama 0.35+(本地 System One 接入点)、Cloudflare Clef;在「添加订阅」里选对应厂商的 System One 接入点即可
- 这类订阅只有一个可选的 Jev 模型槽,留空时按上文入口一节的规则改写或透传
- 订阅创建后协议固定,不能在对话接入点和 System One 接入点之间切换,要换请新建订阅
网页界面(可选,默认关闭)
设置 → 网页界面 → 启用后,用浏览器打开 http://127.0.0.1:23456/ui/ 即可得到与桌面完全相同的管理界面。局域网其他设备访问需把代理监听地址切到 0.0.0.0,设置页会列出可用地址。登录使用代理访问令牌;「登录鉴权」开关可关闭(关闭后同网段设备无需登录即可修改配置,慎用)。
终端界面(可选,默认关闭)
用 cc-router-tui 在终端里管理正在运行的 cc-router。设置 → 安全与访问 → 终端界面 → 打开「启用终端界面」后即可使用(只接受本机连接,桌面 app 需保持运行)。同一张卡片里可以复制完整的启动路径;点「添加到 PATH」后,在任何终端里直接输入 cc-router-tui 即可:macOS 在 /usr/local/bin 建一个符号链接(可能弹出系统授权框),Windows 把安装目录加入用户 PATH(已打开的终端需重开),AppImage 复制一份到 ~/.local/bin(副本不随 app 更新,更新后再点一次),deb 随系统安装、本来就在 PATH 上。
- 能做什么 —— 总览、订阅(启停 / 测试连接 / 刷新模型与余额 / 改槽位 / 新建 / 删除)、虚拟模型、实时路由、请求日志;按
? 查看全部键位。界面语言跟随桌面 app 的语言设置(改了之后重开终端界面生效)
- 已知限制 —— 终端至少 80×24;部分符号属于「模糊宽度」字符,在东亚语言环境下可能按两列显示导致错位,遇到时在终端设置里打开「模糊宽度字符按窄字符(单宽)显示」一类的选项;新建 OAuth 类订阅与修改 API Key 仍需在桌面 app 里完成
分时段虚拟模型
客户端继续使用同一个虚拟模型,cc-router 按星期和时段自动切换各订阅槽位对应的真实模型。在桌面 app 的订阅编辑页中,可以为 fable、opus、sonnet、haiku 分别配置时段规则。
- 按时间安排模型 —— 为规则选择星期、起止时间和真实模型,右侧日历直观展示一周的安排;规则也可以复制到其他槽位。
- 默认模型兜底 —— 未命中时段规则时使用槽位的默认模型;如果未配置默认模型,该订阅在未覆盖的时间不参与这个槽位的调度。
- 预览调度关系 —— 在虚拟模型页选择星期并拖动时间轴,查看对应时刻的模型映射和调度关系;点击「现在」回到当前时刻。时间以运行 cc-router 的电脑为准。
模型槽位:设置时段规则与日历预览

虚拟模型:查看各订阅的模型与生效时段

常见问题&使用场景
cc-router 解决了什么问题?
没有 cc-router 时:AI Agent(Claude Code / OpenCode 等)一次只能接一家厂商,小额度订阅在关键时刻断流,得手动切配置——体验糟糕。
接上 cc-router 后:Agent → cc-router → 厂商 A + B + C,自动负载均衡、自动故障转移,三家订阅当一家用。
收益:
- 省钱 —— 不必买昂贵的大额 Coding Plan,两个小额度拼起来就够用
- 不断流 —— 限流 / 失败自动切换,Agent 无感
- 混搭顶配 —— GLM-5.1、DeepSeek-V4-Pro、MiniMax-2.7、MiMo-V2.5-Pro 同时上桌,也能掺 Claude Opus、GPT-5.5 这类原生 API
- 用量统一 —— 所有订阅 token 消费一屏看完,可一键导出小票
model-opus / model-sonnet / model-haiku 三个虚拟模型是干啥的?
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-Flash
CC 请求来了就按映射转发,不用再频繁改 ~/.claude/settings.json。
有多个 Coding Plan 怎么搭配?
举例:订阅 A = GLM-5 / MiniMax-2.7 / DeepSeek-Flash,订阅 B = DeepSeek-V4-Pro / MiniMax-2.7 / GLM-5。
- 稳妥派:把两边的同档模型一起绑进对应槽位,效果一致、容灾好
- 激进派:把两边各自的顶配模型都塞进
model-opus 轮询,交叉使用大概率 1 + 1 ≥ 2
调度模式:顺序、轮询还是会话亲和?
- 顺序 —— 用完 A 再切 B。命中缓存好、能榨干小额度订阅,推荐给两个小额 GLM Coding Plan 这类场景
- 轮询 —— 两家均衡分担。但跨账号的缓存是独立的,会多吃额度,换来的是真正的负载均衡
- 会话亲和 —— 同一个 Claude Code 会话固定用同一家订阅、不同会话轮流分配。既像轮询一样均衡,又不丢 prompt cache;并发子代理也能共用缓存。订阅限流/失败时自动换家。多家订阅都健康、又在意缓存命中时推荐。
开发
- Tauri 2
- Tailwind 4
- React 19
依赖:Node.js ≥ 22.22(推荐 pnpm),Rust ≥ 1.94(建议直接用 rustup 最新 stable),Xcode CLT(macOS)。
pnpm install
pnpm tauri dev # 启动开发模式(同时运行前端 + Rust 后端 + 代理)
首次启动 app 会进入 onboarding:
- 添加一个订阅(选厂商 → 选接入点 → 填 API Key → 自动抓取模型列表)
- 一键把订阅绑定到四个虚拟模型
- 复制 Claude Code 环境变量配置,粘到你的
~/.claude/settings.json
打包
pnpm tauri build
产出:src-tauri/target/release/bundle/ 下对应平台的安装包。
Windows 开发环境注意事项
在 Windows 上开发或打包遇到问题时展开(能省几小时)
1. 必须用 MSVC toolchain,不能用 GNU
Tauri 在 Windows 上打包依赖 MSVC,CI 用的也是 x86_64-pc-windows-msvc。确认:
rustup show # active toolchain 应带 -msvc 后缀
rustc --version # 应 ≥ 1.94
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
如果你使用Claude Code,我提供了一个SKILL,可以执行new-provider并附加provider的官方文档或接口地址等信息,能够自动创建provider的配置。
证书
本项目以 MIT 许可证发布。
字体:小票主题使用的 9 款字体均为 SIL Open Font License 1.1,归属声明与许可证全文见 THIRD-PARTY-NOTICES.md。
图标:Provider 品牌 logo 来自 @lobehub/icons(MIT)。各品牌商标归原所有者所有。
评论