把各家 AI 订阅配额接进任意编程工具(OpenRelay)

OpenRelay 是一个 TypeScript 写的本地 AI 配额聚合代理,读取本机已登录应用与直连 API 的可用模型,统一成一个本地端点供 Claude Code、Cursor、Aider 等工具调用。这篇文章梳理它的主要功能、安装方式、关键参数与真实用户踩过的坑,帮你判断它是否适合自己手上的多客户端场景。

手上同时开着 Claude Code、Cursor、Windsurf、Aider 的人大概都碰过这种局面:Claude Pro 的额度只能在 Claude Desktop 里花,Kiro 的配额锁在 Kiro 里,Groq 免费但每个工具都得手动填一遍地址,Cursor 的 500 次请求用完之后只剩等待。订阅费按月交,能调的模型却被封在各自的应用里,工具换得越勤,麻烦越多。

OpenRelay 是 TypeScript 编写的本地 AI 配额聚合代理,把本机已登录应用与直连 API 的可用模型统一成一个本地端点,供 Claude Code、Cursor、Aider 等工具调用。

它的工作方式是在本机跑一个进程,默认监听 18765 端口,读到的凭据留在本地 ~/.openrelay/ 目录下,AI 请求从你的机器直接发往所选供应商,官方服务器不在请求链路上。面板用浏览器打开,支持中英双语。

它的工作方式是在本机跑一个进程,默认监听 18765 端口,读到的凭据留在本地 ~/.ope

接入的一端是你「已经登录过的应用」:Claude Desktop、Claude Code、Kiro、Windsurf、Antigravity、OpenCode、VS Code Copilot、OpenAI Codex、Gemini CLI、Rovo Dev、QClaw 等。另一端是 45 个直连 API 或本地端点,包括 Groq、Gemini API、DeepSeek、Mistral、OpenRouter、LongCat、千帆、七牛、Anthropic API、Ollama。README 里把这个盘子描述成「58 个非虚拟提供商。一个面板。一个端点。」

适合它的场景很具体:你已经持有若干来源的配额,客户端不止一个,切换和配环境变量的时间比写代码还多。仓库地址是 https://github.com/romgX/openrelay,主要语言 TypeScript(占比 100%),当前 Star 2316、Fork 324、开放 Issue 1 个;框架部分采用 MIT 许可证,Pro 功能走商业授权。

主要功能

  • 自动发现本机 AI 配额。启动后接入已经存在的 AI 来源,已发现的本地配额在面板里统一管理。注意:部分来源需要你先登录原应用或配置 API Key,OpenRelay 不会替你完成上游登录。
  • 任意配额用在任意工具。把环境变量指过来即可,Anthropic 兼容的工具都能吃到这份配额:
# Windows (PowerShell)
$env:ANTHROPIC_BASE_URL="http://localhost:18765"
$env:ANTHROPIC_API_KEY="unused"

# macOS / Linux
export ANTHROPIC_BASE_URL=http://localhost:18765
export ANTHROPIC_API_KEY=unused
  • 按路径切换供应商。想让 Aider 用 Kiro 的免费 Claude Sonnet,把地址改成 ANTHROPIC_BASE_URL=http://localhost:18765/kiro 即可。路径前缀对应不同来源。
  • 一键配置 CLI 工具。在 Web 面板选 Provider、点开关,Claude Code、OpenClaw、Aider、Goose、OpenCode 的模型配置会被写下去,重开终端生效,不用手动编辑 .zshrc。
  • IDE 代理接入。Cursor 走 RPC 代理(ConnectRPC,HTTP/2),Windsurf 走 RPC 代理(ConnectRPC),VS Code Copilot 走 Ollama BYOK 桥接,Antigravity 走 Gemini REST 代理。前提是在面板里先把代理启动起来。
  • 自定义模型组与故障转移。可以把多个 Provider 合并成一个虚拟模型,例如 "fast-group" = Groq (Llama 90B) + Cerebras (Llama 70B) + SambaNova (Llama 405B);一个来源的额度不可用时自动切下一个,跨 Provider 轮询会继续使用你配置的可用额度。README 把模型组合列为 Pro 功能。
  • 直连 API 与本地端点。除本机应用外,还可以把 API Key 或端点填进面板复用,Ollama 这类本地服务也在支持列表内。
  • 版本侧的新接入。v0.10.68 新增 Muse 供给侧接入,复用已有的浏览器登录态,从认证后的 VM 发现和调用真实模型;该接入目前是原生 Agent 文本聊天,暂不支持调用方自定义工具、图片和外部导入历史,macOS 与 Linux 已完成真实请求验证。

安装与依赖

README 明确写了「直接下载可执行文件运行,无需 npm install / node 环境」。所以不存在把包名当依赖装进项目这一步,官方也没有发布到 npm 仓库(Issue 区有人试过 npm install -g openrelay 报 404)。

Windows 下载 openrelay-windows-x64.exe 后双击运行。macOS 下载 openrelay-macos,然后在终端执行:

chmod +x openrelay-macos
xattr -d com.apple.quarantine openrelay-macos
./openrelay-macos

其中 xattr 用于解除 macOS 对未签名程序的限制,不加会提示「无法打开」。Linux 分 x64 与 ARM64 两个文件:

chmod +x openrelay-linux-x64
./openrelay-linux-x64

chmod +x openrelay-linux-arm64
./openrelay-linux-arm64

平台差异需要提前知道:Linux 支持的本地/CLI Provider 为 Claude Code、Kiro、Windsurf、OpenCode、VS Code Copilot、OpenAI Codex、Gemini CLI、Rovo Dev;Claude Desktop 和 Antigravity 目前没有 Linux 版本;QClaw 取决于桌面应用和本地 gateway,可降级运行。Linux 上凭证存取走 secret-tool(gnome-keyring)或文件缓存。

最短能跑通的用法

启动可执行文件后,浏览器打开 http://localhost:18765,所有管理动作都在这个 Web 面板里完成。第一步看 Provider 面板确认已经发现了哪些来源和配额状态;第二步进 Work 页面给目标 CLI 工具挑 Provider 并打开开关;第三步重开终端,让工具读到新的环境变量。

不通过面板、手动配也可以,导出两个变量就够:

export ANTHROPIC_BASE_URL=http://localhost:18765
export ANTHROPIC_API_KEY=unused

想让某个工具走特定来源,把前缀挂在地址后面,例如 http://localhost:18765/kiro。IDE 类客户端需要先在面板里启动对应的代理,再去客户端侧生效。

关键参数

  • 18765:默认监听端口,面板地址与 API 地址共用。
  • ANTHROPIC_BASE_URL / ANTHROPIC_API_KEY:让 Anthropic 兼容工具指向本地代理。README 的示例里 Key 位置填的是 unused,因为真实凭据由 OpenRelay 在本机侧提供。
  • 路径前缀(如 /kiro):用于把请求指定到某个来源。
  • ~/.openrelay/:通过 OpenRelay 添加的 API Key 的存放位置。
  • 凭证读取:Linux 通过 secret-tool(gnome-keyring)或文件缓存;凭据处理代码在仓库的 cookie.ts 中,README 称可自行审计。
  • 调试开关:消息内容默认不写入日志、缓存或持久化,只有显式开启本地 request-shape 调试时才会输出排障信息。该开关的具体字段名仓库里没有在 README 正文中给出,需要去面板或 faq 文档里找。

结果在哪里看

看三个地方。一是浏览器里的 http://localhost:18765 面板,Provider 面板显示自动发现的来源与配额状态,Work 页面显示 CLI 工具的模型与 CLI 绑定情况,自定义模型组在对应页面维护。二是你启动代理的那个终端窗口,进程日志与启动信息在这里。三是客户端侧的反馈:Claude Code 这类工具切换成功与否,直接体现在它实际调用到哪个模型上。

仓库里没有说明独立的日志文件路径。默认情况下提示词内容不落盘,排查问题时只能靠显式打开调试开关,或者去官方论坛与 FAQ 文档(faq.md)看对应条目。

实际使用中的坑

  • 安装阶段的报错最集中。有用户看到 No such xattr: com.apple.quarantine 加一串 Code cache data rejected 警告,即使机器上已经装了 openclaw 和 ollama 仍然出现。该 Issue 状态为已解决。
  • 有用户的 Windsurf 明明已经打开,仍然收到 Windsurf IDE is not running. Please start Windsurf first,耗时 45ms 就失败。同类反馈还有「Windsurf 有额度但一直显示配额耗尽」,两条均为已解决。
  • 把包名当 npm 依赖安装会失败:npm install -g openrelay 返回 E404,因为官方走的是可执行文件分发,没有发布到 npmjs。对应 Issue 已解决,但这条路确实走不通。
  • IDE 与 CLI 的启动联动不稳定。有用户反馈在 Web 里点击启动 Cursor 显示配置成功却没有 Cursor 页面;先手动打开 Cursor 再点重新启动,Cursor 反而被关闭。另有人反映在 Work 里设置了模型和 CLI,启动 Claude Code 后模型没有切过去,重开终端也无效(Debian Linux 13,v0.10.16)。两条均为已解决。
  • 代理链路本身也会干扰配置。有用户用 Clash Verge 与 v2rayN 时,gemini CLI 能检查到模型但测试失败。此外 Issue 区出现过「并未开源,风险自担」的质疑,涉及管理多平台账户这一点,该条同样标记为已解决。

和同类放在一起看

| 项目 | 适合谁 | 部署方式 | 主要限制 | 什么情况下选它更合适 | 项目地址 |
OpenRelay同时使用 Claude Code、Cursor、Windsurf 等多个客户端,想把各家免费或订阅配额汇总到一个端点的个人开发者下载单文件可执行程序,覆盖 Windows / macOS / Linux,无需 Node 环境模型组合与更高请求量上限属于 Pro 功能,走商业授权而非 MIT 框架;本身不提供模型额度,依赖本机已登录应用或自备 API Key手里来源多、切换频繁,需要一个面板统一管理与故障转移OpenRelay
ccproxy想在 Claude Code 内部拦截并改写请求、做 mod 的开发者仓库没有说明定位集中在 Claude Code 的请求 hook 与响应改写,不做跨供应商的配额聚合与自动故障转移(这是定位差异,未逐一核实其全部能力)只需要改请求或响应内容,不需要统一管理多家来源ccproxy
| cligate | 需要私有化部署统一模型代理的团队 | 仓库没有说明 | 定位是私有 AI 助手与统一模型代理,是否包含本机应用登录态发现,给定资料里没有说明 | 更看重私有部署与代理统一,而不是榨取多个免费额度 | cligate |

如果你只需要在 Claude Code 内部拦截和改写请求,ccproxy 这类聚焦 hook 的项目更贴合,OpenRelay 的 Provider 发现与面板在那种场景下是多余的一层。反过来,如果你只有一个来源、也愿意直接调 API,本地再架一层代理并不划算。OpenRelay 的价值出现在来源多、客户端杂、切换频繁的时候;来源少的时候,它带来的配置成本可能高于收益。

授权与合规前提

OpenRelay 会读取本机已登录应用的凭据,并把订阅配额转发给其他工具使用,这一链路必须限定在你自己的账户和自有设备上。把别人的账号凭据接进来、代管多平台账户、或绕过供应商的额度与限速设计,可能违反对应平台的服务条款,轻则封号,重则涉及法律责任。它的设计取向是本机直连、不自建中转,但「技术可行」与「服务条款允许」是两件事,动手之前先确认每个来源的授权范围。仓库根目录提供了 DISCLAIMER.md、PRIVACY.md、COMMERCIAL-LICENSE.txt,README 也提示详见这两份文档,遇到边界不清的地方以它们为准。

适合谁

手上同时持有两个以上 AI 来源、又要在多个客户端之间来回切换的人,最值得试。尤其适合那些已经登录了 Claude Desktop、Kiro、Windsurf 之类的应用,却希望把这些额度喂给 Claude Code、Aider、Goose 使用的开发者。想要一个面板管住所有模型来源、还希望来源挂掉时自动切换的人,也能直接用上模型组功能。

只有单一供应商账户、平时也不折腾客户端配置的人,不需要它。在意代码完全自主可控、不愿引入任何商业授权组件的团队,需要先看清 MIT 框架与 Pro 功能的分界。对上游账号合规性有疑虑的人,建议先读完 DISCLAIMER 再决定要不要装。

焚评:这个项目的量化评分

本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 9.0 分(满分 10)。下表是各维度的得分:

评分维度得分
热度动量(权重 25%)10.0 / 10
开发活跃(权重 25%)7.0 / 10
社区响应(权重 15%)10.0 / 10
文档质量(权重 15%)8.2 / 10
发布节奏(权重 10%)10.0 / 10
风险控制(权重 10%)10.0 / 10

评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。

内容核验说明

把多客户端共用各家 AI 配额这件事拆成了可核对的清单:默认端口、环境变量、路径前缀、平台差异、Pro 与 MIT 的分界都写清了。适合同时握着两个以上来源、又要频繁切客户端的人;只有单一供应商、或不愿引入商业授权组件的团队不必看。踩坑部分来自仓库 Issue 的他人反馈,不保证复现;凭据转发牵涉平台条款,动手前需自行确认授权范围。

项目指标(Star 2316、Fork 324、开放 Issue 1 个)与焚评分数由原文引用,诀.com 未独立验证;文中的数据来自原作者公开披露,诀.com 未独立验证;所列踩坑案例来自仓库 Issue 反馈,本站未复现,结果不保证重现。

项目来源与说明

开源项目:romgX(romgX)

本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。

查看项目仓库