18 KiB
中转站的中转站 — 将分散的 AI 中转站聚合为一个统一网关
把你在各处注册的 New API / One API / OneHub / DoneHub / Veloera / AnyRouter / Sub2API 等站点,
汇聚成 一个 API Key、一个入口,自动发现模型、智能路由、成本最优。
📖 介绍
现在 AI 生态里有越来越多基于 New API / One API 系列的聚合中转站,要管理多个站点的余额、模型列表和 API 密钥,往往既分散又费时。
Metapi 作为这些中转站之上的元聚合层(Meta-Aggregation Layer),把多个站点统一到 一个入口(可按项目配置多个下游 API Key)——下游所有工具(Cursor、Claude Code、Codex、Open WebUI 等)即可无感接入全部模型。当前已支持以下上游平台:
| 痛点 | Metapi 怎么解决 |
|---|---|
| 🔑 每个站点一个 Key,下游工具配置一堆 | 统一代理入口 + 可选多下游 Key 策略,模型自动聚合到 /v1/* |
| 💸 不知道哪个站点用某个模型最便宜 | 智能路由 自动按成本、余额、使用率选最优通道 |
| 🔄 某个站点挂了,手动切换好麻烦 | 自动故障转移,一个通道失败自动冷却并切到下一个 |
| 📊 余额分散在各处,不知道还剩多少 | 集中看板 一目了然,余额不足自动告警 |
| ✅ 每天得去各站签到领额度 | 自动签到 定时执行,奖励自动追踪 |
| 🤷 不知道哪个站有什么模型 | 自动模型发现,上游新增模型零配置出现在你的模型列表里 |
🖼️ 界面预览
🏛️ 架构概览
下游客户端(Cursor · Claude Code · Codex · Open WebUI · Cherry Studio 等)
↓ Authorization: Bearer <PROXY_TOKEN>
Metapi 网关
• 统一代理 /v1/* — 兼容 OpenAI / Claude 全接口
• 智能路由引擎 — 按成本、余额、可用率加权选路,失败自动冷却与重试
• 模型发现 — 自动聚合上游全部模型,零配置
• 格式转换 — OpenAI ⇄ Claude 双向透明转换
• 自动签到 · 余额管理 · 告警通知 · 数据看板
↓
上游平台(New API · One API · OneHub · DoneHub · Veloera · AnyRouter · Sub2API …)
graph LR
%% 全局样式设置
classDef node rx:10,ry:10,font-size:14px,font-family:sans-serif;
classDef client fill:#F4F6F8,stroke:#476582,stroke-width:2px,color:#2C3E50;
classDef gateway fill:#FFF7E6,stroke:#FA8C16,stroke-width:2px,color:#873800,text-align:left;
classDef upstream fill:#F6FFED,stroke:#52C41A,stroke-width:2px,color:#135200;
%% 节点定义
C["<b>💻 下游客户端</b><br/><br/>Cursor · Claude Code<br/>Codex · Open WebUI<br/>Cherry Studio"]:::client
G["<b>🚀 Metapi 网关</b><br/>────────────────────────<br/>✨ <b>统一代理</b>:兼容 OpenAI / Claude 全接口<br/>🧠 <b>智能路由</b>:按成本、余额、可用率加权,失败重试<br/>🔍 <b>模型发现</b>:自动聚合上游全部模型,零配置接入<br/>🔄 <b>格式转换</b>:OpenAI ⇄ Claude 双向透明转换<br/>📊 <b>运维管理</b>:自动签到 · 余额管理 · 告警 · 看板"]:::gateway
U["<b>☁️ 上游平台</b><br/><br/>New API · One API<br/>OneHub · DoneHub<br/>Veloera · AnyRouter<br/>Sub2API 等"]:::upstream
%% 连线
C -- "Authorization: Bearer <PROXY_TOKEN>" --> G
G ==>|请求分发| U
✨ 核心功能
🌐 统一代理网关
- 兼容 OpenAI 与 Claude 下游格式,对接所有主流客户端
- 支持 Responses / Chat Completions / Messages / Completions(Legacy)/ Embeddings / Images / Models 全接口
- 完整的 SSE 流式传输支持,自动格式转换(OpenAI ⇄ Claude)
🧠 智能路由引擎
- 自动发现所有上游站点的可用模型,零配置生成路由表
- 四级成本信号:实测成本 → 账号配置成本 → 目录参考价 → 默认兜底
- 多通道概率分摊,基于成本(40%)、余额(30%)、使用率(30%)加权分配
- 失败通道自动冷却与避让(默认 10 分钟冷却期)
- 请求失败自动重试,自动切换其他可用通道
- 路由决策可视化解释,每次选择透明可审计
📡 多平台聚合管理
| 平台 | 适配器 | 说明 |
|---|---|---|
| New API | new-api |
新一代大模型网关 |
| One API | one-api |
经典 OpenAI 接口聚合 |
| OneHub | onehub |
One API 增强分支 |
| DoneHub | donehub |
OneHub 增强分支 |
| Veloera | veloera |
API 网关平台 |
| AnyRouter | anyrouter |
通用路由平台 |
| Sub2API | sub2api |
订阅制中转平台 |
每种平台适配器均支持:账号登录、余额查询、模型枚举、Token 同步、每日签到、用户信息获取等完整生命周期管理。
👥 账号与 Token 管理
- 多站点多账号:每个站点可添加多个账号,每个账号可持有多个 API Token
- 健康状态追踪:
healthy/unhealthy/degraded/disabled四级状态机 - 凭证加密存储:所有敏感凭证均加密保存在本地数据库中
- 自动续签:Token 过期时自动重新登录获取新凭证
- 站点联动:禁用站点自动级联禁用所有关联账号
🏪 模型广场
- 跨站点模型覆盖总览:哪些模型可用、多少账号覆盖、各站定价对比
- 延迟、成功率等实测指标展示
- 上游模型目录缓存与品牌分类(OpenAI、Anthropic、Google、DeepSeek 等)
- 交互式模型测试器,在线验证模型可用性
✅ 自动签到 · 💰 余额管理 · 🔔 告警通知 · 📊 数据看板
- 自动签到:Cron 定时执行,智能解析奖励金额,签到失败自动通知
- 余额管理:定时刷新,收入追踪,余额兜底估算,凭证过期自动重登录
- 告警通知:支持 Webhook / Bark / Server酱 / SMTP 邮件,覆盖余额不足、站点异常、签到失败等场景
- 数据看板:余额分布饼图、消费趋势图表、全局搜索、代理请求日志
📦 轻量部署
- 单 Docker 容器,内置 SQLite,无外部依赖
- Alpine 基础镜像,体积精简
- 数据完整导入导出,迁移无忧
🚀 快速开始
docker run -d --name metapi -p 4000:4000 \
-e AUTH_TOKEN=your-admin-token \
-e PROXY_TOKEN=your-proxy-sk-token \
-v ./data:/app/data --restart unless-stopped \
1467078763/metapi:latest
启动后访问 http://localhost:4000,用 AUTH_TOKEN 登录即可。
Important
请务必修改
AUTH_TOKEN和PROXY_TOKEN,不要使用默认值。
📖 完整部署文档 — Zeabur 一键部署 / Docker Compose / Release 包 / 反向代理 / 升级回滚
📖 环境变量与配置 — 全部环境变量、路由参数、通知渠道
📖 客户端接入指南 — Cursor / Claude Code / Codex / Open WebUI 等配置方法
🏗️ 技术栈
| 层 | 技术 |
|---|---|
| 后端框架 | Fastify — 高性能 Node.js 后端框架 |
| 前端框架 | React 18 + Vite |
| 语言 | TypeScript — 端到端类型安全 |
| 样式 | Tailwind CSS v4 — 原子化样式框架 |
| 数据库 | SQLite (better-sqlite3) + Drizzle ORM |
| 数据可视化 | VChart (@visactor/react-vchart) |
| 定时任务 | node-cron |
| 容器化 | Docker (Alpine) + Docker Compose |
| 测试 | Vitest |
🛠️ 本地开发
# 安装依赖
npm install
# 数据库迁移
npm run db:migrate
# 启动开发环境(前后端热更新)
npm run dev
npm run build # 构建前端 + 后端
npm run build:web # 仅构建前端(Vite)
npm run build:server # 仅构建后端(TypeScript)
npm test # 运行全部测试
npm run test:watch # 监听模式
npm run db:generate # 生成 Drizzle 迁移文件
🔗 相关项目
上游兼容平台
| 项目 | 说明 |
|---|---|
| New API | 新一代大模型网关,Metapi 的主要上游之一 |
| One API | 经典 OpenAI 接口聚合管理 |
| OneHub | One API 增强分支 |
| DoneHub | OneHub 增强分支 |
| Veloera | API 网关平台 |
参考和使用的项目
| 项目 | 说明 |
|---|---|
| All API Hub | 浏览器扩展版 — 一站式管理中转站账号,Metapi 最初灵感来源 |
| LLM Metadata | LLM 模型元数据库,用于模型描述参考 |
| New API | 平台适配器参考实现 |
🔒 数据与隐私
Metapi 完全自托管,所有数据(账号、令牌、路由、日志)均存储在本地 SQLite 数据库中,不会向任何第三方发送数据。代理请求仅在你的服务器与上游站点之间直连传输。
🤝 贡献
欢迎各种形式的贡献!
- 🐛 报告 Bug — 提交 Issue
- 💡 功能建议 — 发起讨论
- 🔧 代码贡献 — 提交 Pull Request
- 📝 贡献指南 — CONTRIBUTING.md
- 📜 行为准则 — CODE_OF_CONDUCT.md
🛡️ 安全
如发现安全问题,请参考 SECURITY.md 使用非公开方式报告。
📜 License
⭐ Star History
⭐ 如果 Metapi 对你有帮助,给个 Star 就是最大的支持!
Built with ❤️ by the AI community











