本文配套开源项目:github.com/chen-xiao-y…
相关设计文档:AI TOKEN 中转站 — 技术方案与功能设计报告
前言
前几天那篇《AI TOKEN 中转站技术方案》发出来,后台一直有人问:"有没有现成的代码?"
现在有了。不过我要先说清楚它是什么,以及它不是什么。
项目定位
Token Relay 是一个技术验证项目。
它的目标不是替代任何成熟的开源方案,而是把设计文章里描述的核心架构——多渠道聚合、统一接口、用户管理、计费系统——用最简单的方式跑通一遍。
数据库用的是 SQLite。这意味着它很轻,也意味着它不适合生产环境的高并发场景。
如果你想搭一个正经的商用中转服务,建议去看 One-API、New-API 这些已经经过大规模验证的项目,它们是更合适的选择。
Token Relay 适合的是另一类人:想亲手把这套架构跑通、看明白它长什么样的开发者。
Token Relay 是什么
一句话:把你用的所有 AI 的 API,统一变成 OpenAI 格式的接口,再套上用户管理和计费系统。
你现在的代码可能长这样:
# 调 OpenAI
client = OpenAI(api_key="sk-xxx", base_url="https://api.openai.com")
# 改成调你自己的中转站
client = OpenAI(api_key="sk-tr-你的key", base_url="https://your-relay.com")
就这两行改动,不用动其他任何代码——你就可以:
- 在后台自由切换底层用 OpenAI 还是 DeepSeek 还是 Claude
- 给团队成员每人发一个独立的 Key,分别限制用量
- 看到所有人的调用日志、Token 消耗趋势
- 随时把某个 Key 封了,或者充值续期
为什么选 SQLite:让验证门槛降到最低
做技术验证,首要目标是跑通,而不是跑稳。
SQLite 内嵌在进程里,不需要额外安装任何数据库服务。这个选择牺牲了并发能力,换来的是极低的启动门槛:
git clone https://github.com/chen-xiao-yu/token-relay.git
cd token-relay
npm install
npm run dev
打开 http://localhost:5173,账号 admin,密码 admin123,进去了。
从零到能跑,5 分钟。
这个项目的意义在于:让你能在本地、用最短的时间,亲眼看到"AI 中转站"这套架构实际长什么样,而不只是停留在设计文档里。
核心功能一览
🔀 多渠道聚合,支持国内外主流大模型
目前已接入:
| 厂商 | 模型 |
|---|---|
| OpenAI | GPT-4o、GPT-4 Turbo、GPT-3.5 等 |
| Anthropic | Claude 3.5 Sonnet、Claude 3 Opus 等 |
| Gemini 1.5 Pro、Gemini Flash 等 | |
| DeepSeek | DeepSeek-V3、DeepSeek-R1 |
| 阿里云 | 通义千问全系列 |
| 百度 | 文心一言全系列 |
后端用的是哪家、用哪个模型,前端调用者完全无感知。
⚡ 完整支持 SSE 流式输出
这一点很重要。很多中转方案在流式输出上有各种问题——延迟高、断流、乱码。
Token Relay 从一开始就把 SSE 流式传输作为核心场景设计,打字机效果稳定流畅,响应延迟和直连几乎没有差别。
👥 三级权限体系
不是所有人都需要看到所有东西:
- 管理员:全部权限,含渠道配置、用户管理、系统设置
- 运维员:管渠道、Token 和日志,不能动用户账号
- 普通用户:只能调 API 和管理自己的 Key
给团队用,给朋友用,开放注册都没问题,权限管得清清楚楚。
💰 计费系统
这套计费逻辑在设计文章里详细写过,Token Relay 把它完整实现了:
- 按 Token 用量计费,支持配置不同模型的单价倍率
- 支持充值码批量发放
- 支持手动充值(管理员操作)
- 每个 Token Key 可以单独设置额度上限
这套实现更重要的价值是把设计文章里的计费逻辑变成了可以跑的代码,方便你看懂每一步是怎么算的。
📊 数据看板
不只是原始日志,而是可视化的:
- 请求量趋势图
- 各模型调用分布
- Token 消耗统计
- 用户用量排行
快速上手
本地开发
# 克隆项目
git clone https://github.com/chen-xiao-yu/token-relay.git
cd token-relay
# 安装依赖(需要 Node.js >= 18)
npm install
# 启动
npm run dev
访问 http://localhost:5173
默认账号:admin / 密码:admin123
生产部署(小规模自用)
⚠️ 提醒:SQLite 不适合大并发场景,以下部署方式仅建议用于个人或小团队低频使用。
# 构建
npm run build
# 设置环境变量(重要!)
export JWT_SECRET="你的随机密钥"
export PORT=3001
export DB_PATH="./data/token-relay.db"
# 启动
node dist/server/index.js
然后在前面套一层 Nginx 反向代理,加上 HTTPS,就完事了。
整个过程,半小时以内。
适用场景
场景一:读完设计文章,想看看代码长什么样
不用自己从零写,clone 下来跑一遍,核心模块的实现一目了然——渠道路由怎么做的、Token 计费怎么算的、权限体系怎么组织的。
场景二:学习这套架构,打算自己改造或迁移
TypeScript 代码结构清晰,注释完整,适合作为参考实现来读。想换成 Go、换成 PostgreSQL,这份代码是个很好的起点。
场景三:个人或小团队临时用,不在乎并发
几个人用、低频调用,SQLite 完全够。不想折腾 MySQL 的话,Token Relay 能直接顶上。
注意事项
但如果你想在生产环境跑、面向真实用户、需要高并发——请用更成熟的方案。 这不是谦虚,是实话。
已知限制:
- SQLite 撑不住大并发
- 付费渠道还没对接
- Docker 镜像也还没出
但它做到了最重要的一件事:让设计文章里那套架构变得看得见、跑得动、改得了。
总结
设计文章是地图,Token Relay 是第一步走出去的脚印。
如果你在用,欢迎给个 ⭐ Star,也欢迎提 Issue 和 PR。有任何问题,可以在 GitHub 开 Issue,我都会看的。
相关阅读:AI TOKEN 中转站 — 技术方案与功能设计报告
如果这篇文章对你有帮助,欢迎点赞 ❤️ 和收藏 ⭐,你的支持是我持续更新的动力!
📱 关注公众号
「下辈子不写程序」 — 分享技术干货与开发日常