MIT License

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

开源观察 | LoongPort:给 API 中转站用户的一剂"免配置"良药

如果你重度使用 Claude Code,一定经历过这样的折磨:官方 API 贵、门槛高,于是你转投各种"中转站"(API relay)。但每个中转站的 base_url 格式不同、密钥体系各异、模型映射方式五花八门——每次切换供应商,都得在配置文件里小心翼翼地修改 endpoint、API key、模型名称,稍不留神就出现 401 或 model_not_found,调试半小时,只是因为你少写了一个斜杠。

这就是 GitHub 仓库 SailingLoong/LoongPort 存在的意义。它是著名的 cc-switch 的"增强版",专为 API 中转站用户设计,目标是彻底免去"配置密钥和 endpoint"的烦恼。

项目背景与痛点:别再让我手抖改配置了

cc-switch 本身就是一款优秀的 Claude Code 供应商切换工具,但它的定位更偏向于通用性——面向直连官方和标准 Anthropic API 兼容层。而现实是,国内开发者使用的第三方中转站,接口格式千奇百怪:有的兼容 /v1/messages,有的只兼容 /v1/chat/completions,有的需要额外传 provider 字段,有的将模型名映射为 claude-3-5-sonnet-v2 这类与官方迥异的命名。

如果你同时使用多个中转站做负载均衡或容灾,每次切换都要手动编辑 ~/.claude/settings.json 和 ~/.claude.json,不仅繁琐,而且极易出错。LoongPort 的核心思路很直接:把"切换供应商"这个高频操作,从手改配置文件变成"点一下按钮"。

核心技术揭秘:配置模板化与供应商抽象层

LoongPort 的技术架构并不复杂,但巧思在于抽象层的设计。它本质上是一个基于 Tauri(Rust 后端 + Web 前端)的桌面 GUI 工具,但其核心引擎——供应商配置管理模块——值得细看:

1. 供应商描述模型(Provider Schema) LoongPort 将每个中转站抽象为一个"供应商对象",包含四个关键属性:

  • base_url:接入点地址(如 https://api.example-relay.com)
  • api_key:你的中转站密钥
  • model_mapping:中转站模型名 → Claude Code 期望的模型名映射表
  • auth_headers:额外的认证头或参数(有些中转站要求 Authorization: Bearer,有些要求自定义字段)

2. 配置渲染引擎 引擎读取当前选中的供应商对象,将上述属性渲染成 Claude Code 实际的配置文件(settings.json 中的 env 块和 apiBaseUrl 字段)。这类似于现代前端框架的"模板编译"——你只需关注数据(供应商信息),渲染逻辑由引擎搞定。

3. 快速切换的数据流

graph TD A[选中供应商] --> B[读取预设配置模板] B --> C{"校验密钥为空?"} C -->|"为空"| D[弹出密钥填写框] C -->|"非空"| E[渲染供应商配置] D --> E E --> F[备份旧配置文件] F --> G[写入 settings.json] G --> H[重启 Claude Code 会话] H --> I[测试连通性] I -->|"失败"| J[回滚配置] I -->|"成功"| K[完成切换]

这个数据流揭示了 LoongPort 最值钱的设计:可回滚的事务性配置切换。它先备份当前配置,再写入新配置,连通性测试失败则自动化回滚——这避免了"切完发现不能用,还得手动找回旧配置"的窘境。

功能亮点与差异:杀手锏是"预设库"与"一键适配"

相比原版 cc-switch,LoongPort 的杀手锏有两个:

第一,内置大量中转站预设配置。你不需要手动填写 base_url 和模型映射规则——安装后直接识别出你用的是哪家中转站(或者从预设库中下拉选择),一切自动填充。这对于刚接触中转站的开发者而言,几乎零学习成本。

第二,智能模型映射。Claude Code 中你写 model: claude-sonnet-4-20250514,但中转站内部可能叫 sonnet-4 或 claude-sonnet-4-2025-05-14-${provider}。LoongPort 的映射机制会帮你自动完成这个转换,你只需在界面上写"我想要的模型",无需关心中转站内部命名。

此外,LoongPort 对 API key 的管理方式也更贴心。它不会强制你每次都输入密钥,而是支持"仅切换 endpoint,保留原 key"或"同时切换 key"两种模式——这极高地提升了多供应商场景下的操作效率。

应用场景与落地建议

LoongPort 最适合以下场景:

  • 多中转站容灾:你有 A、B 两家供应商,一家挂了立即切另一家。
  • 团队协作:统一的配置管理,新成员不用再问"key 是什么,endpoint 填哪里"。
  • 私有化部署 / 内网代理:你的 Claude Code 后端是内网代理,LoongPort 可以把它当作一个"中转站"预设,一键切换。

落地建议:

  • 不要将 API key 明文放在团队共享配置中,建议通过 LoongPort 的 GUI 单独配置,利用系统 keychain 存储。
  • 切换后一定要做连通性测试(软件本身支持),但建议再手动发一条消息验证模型映射是否正确——部分中转站的模型名是动态生成的,预设映射可能失效。
  • 关注版本兼容性。LoongPort 依赖 Claude Code 的配置格式,Claude Code 大版本升级后,需确认配置模板是否仍然有效。

综合评价

优点:

  • 极大的降低了多中转站用户的配置心智负担,"预设 + 模板渲染"的架构设计务实且高效。
  • 事务性切换(备份/回滚)体现了工程上的严谨。
  • 支持多种切换模式(仅 endpoint、同时 key),灵活性高。

缺点:

  • 对非中转站模式(如直连官方)的支持是短板,官方 API 用户几乎用不上。
  • 依赖社区维护的预设库,若热门中转站更新接口或模型命名,预设可能滞后。
  • 毕竟是 GUI 工具,脚本化 / 自动化切换能力有限,对 CI/CD 流水线不太友好。

总评:LoongPort 不是一款"惊艳"的工具,但它是那种"用了就回不去"的存在。它精准地切中了 API 中转站生态中"长尾配置"的痛点,用工程化的手段将高频手动作业自动化。如果说 cc-switch 是瑞士军刀,那 LoongPort 是那把专克中转站这一特定螺丝的螺丝刀——不是更花哨,而是更顺手。

关于

GitHub 原始描述(英文)

cc-switch 中转站的专用增强版(cc-switch for API relay providers),免去配置各种 密钥 endpoint 的烦恼。

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
144
价值分
83
活跃状态
活跃

语言占比

CSS
HTML
JavaScript
NSIS
Python
Rust
Shell
Standard ML
TypeScript

README

LoongPort

填域名、登录一次,Codex 与 Claude Code 即刻可用

下载最新版

Platform Built with Tauri License

🌐 官方网站:loongport.dev

📖 图文教程:从安装到第一次对话、自动故障切换、扩展资源与备份

简体中文 · 繁體中文 · English · 日本語

💬 QQ 群:773696474

LoongPort QQ 群二维码

中文 | English

它替你做什么

在中转站跑 Codex CLI 与 Claude Code,常规做法是一套繁琐流程:在中转站注册账号、定位控制台、手动创建 API Key、正确复制 base_url、找到并准确修改配置文件;更换 CLI 或档位后,整套流程还需重来一遍。

LoongPort 将其压缩为两步 —— 填入一个域名,登录一次。 应用会为账号可用的每个档位备好密钥,按各 CLI 的配置形状完成写入;此后更换档位只需一次点击,配置文件从头到尾不用你碰。

除中转站档位外,LoongPort 还内置官网直连档位(DeepSeek、智谱 BigModel、opencode),可在应用页管理,并在支持路由的配置中设置自动故障切换。站点提供生图档位时,还可以在 CLI 的对话里直接生图,且无需让出对话档位。

LoongPort 6.26.2 应用工作台,真实组件与纯演示数据

三分钟上手

给中转站负责人:本节可直接转发给你的用户。他们无需安装 cc-switch,也无需在 LoongPort 注册任何账号 —— 从下载到可用只有以下四步,且全程只与你的站点交互。若希望用户默认接入你的站点,见给中转站负责人。

  1. 下载并打开 —— 见安装。首次接入从「连接你的第一个服务」开始;目标 CLI 需先安装并运行一次。
  2. 粘贴中转站域名 —— 直接从浏览器地址栏整条复制亦可(如 https://example.com/usage,多余路径会自动去除)。
  3. 注册或登录 —— LoongPort 会打开该站点自己的注册页。已有账号时,页面顶部的横幅可一键转至登录页。整个过程在该站点的真实页面中完成,LoongPort 仅获取登录后的凭据,不接触你的密码。
  4. 确认应用配置 —— 为目标应用选择可用配置,按自己的意愿选择可选数据分享,再点「完成设置」。重启目标应用并发送一句测试消息,确认能够正常回复。此后:
    • 更换档位:点击「设为当前」即可
    • 充值:点击余额旁的按钮,打开该站点自己的充值页
    • 生图(站点提供生图档位时):见在 CLI 里生图

无需修改配置文件,无需手动创建 API Key,无需记忆 base_url。

给中转站负责人

把 LoongPort 当作你自己站点的客户端发给新用户 —— 注册、充值、拿密钥都发生在你的站点上,新用户从下载到能用只剩「填域名、登录」两步。它是通用的 sub2api / new-api 客户端,不绑定任何一家站点:

  • 接入文档可以省去。 用户无需按教程手动创建密钥、复制 base_url、查找配置文件。上述四步即为全部,其中三步发生在你的站点上。
  • 不介入你与用户的关系。 LoongPort 没有账号体系、没有服务端。用户注册的是你的站点,充值走你的收款页,凭据加密存储在其本机(~/.loongport/ 的 SQLite)。
  • 希望用户默认接入你的站点:LoongPort 会拉取一份带签名的远端配置,其中可包含「推荐站点」列表 —— 该列表显示在「选择服务站点」界面顶部,用户点击即可接入。提交 issue 告知即可。
  • 支持 aff / 优惠码机制:同一份配置可携带你的邀请码与注册优惠码,在用户注册时自动附带(该机制目前面向 sub2api 站点)。

它替你完成的三件事,每一条均可在源码中核验:normalize_site_origin(relay/sub2api.rs,地址栏整条粘贴的域名亦可识别)、落至你自己注册页的自助注册(relay/login.rs,新站 /register、老用户 /login,邀请码随 URL 附带)、注入登录态的自助充值(relay/purchase.rs,打开 {你的域名}/purchase)。

收益、顾虑、技术前提与接入步骤见 loongport.dev/zh/for-relays。

不占用官方账号

两侧的官方登录均保留原状,可随时切回,无需手动修改任何内容 —— 但两者依赖的机制不同:

  • Codex:ChatGPT 桌面版与命令行 codex 共用同一份凭据文件(~/.codex/auth.json),因此需要显式保留 —— LoongPort 默认开启保留,切换档位时不写入该文件。
  • Claude:官方登录位于 ~/.claude/.credentials.json,而档位切换写入的是同目录的 settings.json,两个文件本就分离 —— 不存在被覆盖的问题。

安装

平台 要求
Windows Windows 10 或更高(需 WebView2 运行时,Windows 10 及以上基本自带)
macOS macOS 12(Monterey)或更高
Linux Ubuntu 22.04 或更高(需要 webkit2gtk 4.1 与较新的 glibc;Ubuntu 20.04 及更老请用 loongport-cli)

前往 Releases 页面下载。每个版本均由 GitHub Actions 自动构建:

平台 文件 说明
Windows …-Windows-Setup.exe 推荐 —— 安装版,会创建开始菜单项并支持应用内自动升级
…-Windows-Portable.zip 免安装版,解压即用;发现新版本后需手动下载
macOS …-macOS.dmg 两种芯片通用
Linux …-Linux-x86_64.AppImage 推荐 —— 免安装、双击即用(需 FUSE),支持应用内自动更新
…-Linux-x86_64.deb / .rpm 发行版包管理器安装(不参与应用内自动更新)

ARM64 架构的 Windows 设备(如骁龙笔记本)请使用带 -arm64 后缀的两个文件。

没有界面?Ubuntu 20.04 及更老?用 loongport-cli

服务器(无桌面环境)和 Ubuntu 20.04 及更早等老系统装不了桌面版——为此提供了 loongport-cli:无 UI 版本,一条命令把中转站写进 codex / claude 等 7 个 CLI 的配置文件。静态单文件零依赖,任何 x86_64 Linux 可直接运行:

loongport-cli --add-site https://example.com --key sk-xxx --app codex

完整安装与使用说明见 docs/loongport-cli.md。

macOS 首次打开会被系统拦截。 由于未做 Apple 签名与公证,Gatekeeper 会报「已损坏」—— 并非真的损坏,而是缺少签名。请先拖入「应用程序」、暂不打开,然后在终端执行一次:

xattr -dr com.apple.quarantine /Applications/LoongPort.app

之后即可正常打开,此操作仅需一次。该命令的作用与安全性说明见 loongport.dev/zh/download。

怎么用

  1. 填入域名 —— 你的中转站域名。直接从浏览器地址栏整条粘贴亦可;不确定时留空使用默认站点。
  2. 登录 —— 弹窗内加载该站点真实的登录页,注册或登录均在此完成。LoongPort 仅获取登录后的凭据,不接触你的密码。
  3. 自动备好密钥 —— 每个可用档位一把。优先复用账号中名称匹配的现有密钥,仅在找不到时新建,因此反复刷新不会在账号中留下冗余密钥。
  4. 点击要使用的档位 —— Codex 使用 OpenAI 系档位、Claude 使用 Anthropic 系档位,点击该档位的「设为当前」即可写入对应配置(~/.codex/config.toml 或 Claude 的 settings),随后 Codex 或 Claude Code 即可直接运行。

切换 Codex 档位时会自动退出并重新打开 ChatGPT 桌面版 —— 它仅在启动时读取配置,不重启则新档位不生效。macOS 上为「请求退出」:存在进行中的对话时它会弹出自己的确认框,可选择取消(该次切换随之中止);Windows 上为强制结束进程,不弹框,因此切换前应用会先行告知一次。切换 Claude 档位不涉及该流程。

系统托盘支持快捷切换适用应用的档位。完整入口、模型选择和恢复步骤见使用指南。

凭据与站点信息在本机 ~/.loongport/ 中加密保存(明细与边界见数据与隐私),调用时作为 Bearer token 发送给你选定的中转站。LoongPort 没有账号体系、没有服务端,无法获取你的凭据。

自动故障切换:按已应用的优先级尝试备用档位

在「应用」页开启「自动故障切换」,当前档位请求失败时,会按已应用列表的优先级尝试其它兼容档位。支持 Claude Code、Codex、Gemini 与 Grok Build;具体档位是否参加,以界面的资格和跳过原因说明为准。

  • 先添加至少两个可用的兼容档位,再打开自动故障切换
  • 筛选、排序或选择模型后,检查「更改尚未生效」,点击「应用更改」才提交;也可取消
  • 开启会准备本地路由与该应用的接管。关闭自动故障切换只停止自动换档,不等于恢复直连
  • 退出某一应用的接管,或停止并恢复全部配置,请到「设置 → 连接设置 → 本地路由」操作

版本说明:v6.26.2 不提供旧“省心模式”的价格最低/响应最快自动择优策略。 当前行为、截图与逐步恢复操作以使用指南第 3 章为准。

官网直连(官方 API)

除中转站外,LoongPort 内置三家厂商的官网直连档位:DeepSeek 开放平台、智谱 BigModel(GLM 系列)与 opencode 官网账号(同一账号展开 Zen 按量计费与 Go 订阅两个档位)。在「官方 API」页登录一次,应用即自动完成密钥获取与各平台配置。

官网直连与中转站配置都可在应用页查看和选择;支持本地路由的配置可按应用的已应用列表参与自动故障切换。是否支持以该行说明为准。

模型验证

档位实际提供的模型是否与标称一致,直接影响计费与输出质量。LoongPort 提供两层核验:

  • 主动验证 —— 在档位上发起「模型验证」,对所选模型逐项探测并留存记录,可随时复查。
  • 被动观察 —— 本地路由运行期间,托管档位的响应会被被动比对模型指纹,不发起任何额外请求;发现「疑似换芯」即在档位看板标记异常。被动观察只报告异常、不为正常档位作背书,正常档位零打扰。

使用统计与扣费对账

开启请求用量记录后,经本地路由的流量会记录在本机:请求数、成功率、成本、输入/输出与缓存 token、按日趋势,以及按供应商与模型的分组统计。

中转站账号行提供「扣费对账」:将本地估算成本与站点余额快照的实际扣减按时间窗对照并给出比值,实际扣减显著高于估算的窗口会被标出,便于发现计费异常。该功能需要相应应用的本地请求记录与站点余额快照;没有对账数据时不能据此判断扣费。

数据与隐私

  • 凭据在本机加密保存。 API 密钥、OAuth 令牌、登录态、档位配置与 MCP 配置里携带的凭据,落在 ~/.loongport/ 的数据库与凭据文件中的都是密文;自动备份与云同步快照同样按这套保护处理。默认由系统凭据库解锁(macOS 钥匙串 / Windows 凭据管理器 / Linux Secret Service),不需要记口令;也可以自设保护口令,用于恢复数据和跨设备同步。
  • 有一处仍然是明文:写进下游 CLI 的配置。 Codex 要读 ~/.codex/config.toml、Claude 要读它自己的配置,工具要能直接使用,那些文件就只能可读——这部分靠收紧文件权限降低暴露面,而不是靠加密。同样地,调用上游时凭据必须发给你选定的站点,所以不存在「密钥永不离开本机」。
  • 完整使用记录与扣费对账在本机。 若开启下述数据共建,会外发已披露的聚合指标;不要把“本机记录”理解成没有任何统计上报。
  • 两处上报,都可以随时关闭。 一是安装统计:已配置服务的注册域名、账号数量、应用版本、操作系统类型,以及一个随机生成、不含硬件指纹的安装标识(它的用途是去重,因此是持久的);二是站点实测数据共建:按「站点 × 小时」聚合的首字耗时、错误率、token 与花费,来源标识每日轮换。两者都不含提示词、请求体、账号身份与密钥。新建安装在引导里确认一次——分享选项默认已勾选,取消勾选即可不参与;老版本升级上来的保留原有选择。开关在设置 → 通用 → 窗口行为。
  • 准确的词是假名化,不是「匿名」:它不含直接身份字段,但安装标识是持久的,冷门站点的组合本身可能构成准标识符。另外,本地路由只监听 127.0.0.1,不对局域网或公网开放。

在 CLI 里生图

仅提供生图模型的档位收录在**「Codex 生图」标签页**(紧邻 Codex)。在其中一个档位上点击「启用」后,即可在 Codex、Claude Code 或 Gemini CLI 的对话中直接生成图片 —— 生图由 LoongPort 内置的工具(MCP server)完成。

四点说明:

  • 该标签页不能单独使用,需配合对话档位。 它仅决定「图片从哪个档位产出」。
  • 无需让出对话档位。 对话走 /v1/responses、使用 Codex 页选定的档位;生图走 /v1/images/generations、使用生图页选定的档位 —— 两个「当前项」相互独立,切换任一均不影响另一个。因此可以一边用 DeepSeek 对话、一边用站点的 4K 档位出图。
  • 更换生图档位无需重启 CLI。 该选择存储在 LoongPort 自己的数据库中、每次生图时读取,CLI 的配置文件不作改动。仅首次添加生图档位时需要新开一个终端(此时才会向 CLI 配置写入该工具,而 CLI 仅在启动时读取配置)。
  • 未提供生图分组的站点中该页为空,CLI 配置不作任何改动。1K 与 4K 档位之间的选择属于消费决策,LoongPort 不代为选择。

怎么升级

Windows Setup 安装版、macOS 版与 Linux AppImage 会自动检查更新:启动数秒后在后台查询一次,有新版本时在「设置 → 关于」中提示,点击即可下载、安装并重启。检查失败不会造成打扰(离线、无法连接 GitHub 的情况均属常见),也可随时手动点选「检查更新」。

Windows 免安装版不支持原地更新 —— 它无法替换正在运行的自身。该版本同样会提示新版本,但需回到 Releases 下载新的压缩包。这是免安装版的取舍:换得的是没有安装步骤、不会被安全软件拦截。

DeepSeek Harness(dsh)

LoongPort 提供 loongport npm Cordis bundle,可在 DeepSeek Harness(dsh)中使用已验证服务商。

dsh plugin --profile <profile> add loongport

安装后,在 Settings → LoongPort 选择服务商;需要账号时打开其自己的注册或登录页面,手动生成并粘贴 API Key,再选择 deepseek-v4-flash 或 deepseek-v4-pro 保存。默认服务商为 DeepSeek 官方 API,BestAPI 为已验证的中转站选项。完整安全边界、签名目录与 VeriDrop 的职责说明见 loongport.dev/zh/dsh。

浏览器授权不做自动化;高级自定义 endpoint 的 CLI 用法见官网。

支持范围

已支持 在做
中转服务 sub2api · new-api —
AI CLI codex · claude gemini · grok
平台 macOS · Windows · Linux —

站点域名可自行填写,默认预置一个可用站点。三个平台提供同一套桌面版能力;切换 Codex 档位时关闭 ChatGPT 的方式,macOS 与 Windows 不同(macOS 发出退出请求、可以取消,Windows 直接结束进程)。

「AI CLI」一行指对话档位。 生图工具可安装至 codex、claude 与 gemini 三个 CLI ——「gemini 在做」指它尚不能作为对话档位的目标(配置写入形状尚未完成),并非完全未接入。

「在做」不是愿望清单。 gemini 与 grok 的档位映射表已经建全,缺的是各自的配置写入适配。如果你在运营其它类型的中转后端,欢迎提交 issue 评估接入。

充值与返利

LoongPort 本身免费,不经手付款、不从你的余额抽成。你充值的对象是中转服务商。

注册链接会附带我们的邀请码,我们可能因此从中转站获得返利。这不影响你的价格,域名可任意填写。两张表位于 src-tauri/src/relay/ 的 aff.rs 与 promo.rs。

上游项目

cc-switch(作者 @farion1231,MIT)—— 本项目的基座,自 v3.19.1 fork,已合并上游至 v3.20.0;图标衍生自它,版权声明保留于 LICENSE。

cc-switch 是通用的多供应商管理器,管理所有 CLI 的所有供应商,还提供本地代理、MCP、Skills、Prompts 与会话管理。LoongPort 只做「用中转服务省心运行 AI CLI」这一条链路。两者数据目录分离(~/.cc-switch/ 与 ~/.loongport/),可以同时安装、同时运行。

sub2api(LGPL-3.0)—— 多数中转站运行的后端。LoongPort 是它的纯 HTTP 客户端:不链接、不包含、也未复用其代码,仅依据其公开接口调用。LoongPort 为非官方客户端,与其作者无关联 —— 使用中遇到的问题请提交至本仓库。

从源码构建

需要 Node.js 22(见 .node-version)与 Rust 工具链(版本由 rust-toolchain.toml 锁定,rustup 会自动安装)。

git clone https://github.com/SailingLoong/LoongPort.git
cd LoongPort
pnpm install
pnpm dev           # 开发模式,前端热更新

打包命令分平台 —— --bundles app 出的是 macOS 的 .app,在 Windows 上没有作用:

# macOS
pnpm tauri build --bundles app

# Windows x64 NSIS Setup(应用内更新也使用同一种安装器)
pnpm tauri build --target x86_64-pc-windows-msvc --bundles nsis

macOS 上本机构建的应用不带隔离标记,Gatekeeper 不会介入。

技术栈与测试

前端:React 18 · TypeScript 5 · Vite 7 · TailwindCSS 3.4 · TanStack Query v5 · shadcn/ui

后端:Tauri 2.8 · Rust(edition 2021,版本见 rust-toolchain.toml)· serde · tokio · SQLite

cargo test --manifest-path src-tauri/Cargo.toml   # 后端
pnpm vitest run                                   # 前端
pnpm tsc --noEmit                                 # 类型检查

参与贡献

见 CONTRIBUTING.md。修改中转站链路前请先阅读 LOONGPORT.md,其中记录了若干看似有误、实则必须如此的约束 (model_provider 为何必须是 custom、为何不能声明 requires_openai_auth、 退出 ChatGPT 为何按 bundle id)。每条约束均有测试钉住。

Star History

Star History

许可证

MIT。

评论

暂无评论