首先感谢 New API 项目及其开源社区,为我提供了非常重要的基础和启发。
之前在这个帖子里提到过开源计划:
各位佬友好,CodeGo 正式来 L 站和大家见面了。
经过一段时间的测试和优化,我们决定正式入驻 L 站。新站肯定还有不足,希望大家体验后多提意见,一起交流。
这次准备了两项开站福利:
套餐首次购买 8 折,符合条件时结算页面自动显示折后价。
评论留下用户名或ID,免费送 1 个盲盒。
站点地址:https://shu26.cfd
已接入 LinuxDo 授权登录。
有问题…
现在 codego-api 已完成架构重构和公开版本整理,正式开源:
- GitHub:GitHub - sh2001sh/CodeGo-Api · GitHub
- 官网:https://shu26.cfd/
- Docker Hub:s2644752646/codego-api - Docker Image
codego-api 在new-api的基础上对整体运行架构和代码边界进行了一轮重新整理。
整体架构
+----------------------+
| control-api |
| 控制面:用户、认证、配置、审计 |
+-----------+----------+
|
+----------------v----------------+
| Shared Infrastructure |
| PostgreSQL / Redis / Temporal |
+------+------+-------------+-----+
| | |
| | |
+---------v--+ | +--------v---------+
| gateway-api| | | workflow-worker |
| 数据面 | | | Temporal 异步任务 |
+------+-----+ | +------------------+
| |
+-------v-------+ |
| Router / | |
| Provider | |
| Adapter | |
+-------+-------+ |
| |
+-------v-------+ |
| Provider APIs | |
| OpenAI... | |
+-------+-------+ |
| |
usage / settlement
|
+--------v---------+
| ledger-worker |
| 额度账本与结算一致性 |
+-------------------+
主要重构方向
1. 控制面与数据面分离
管理请求和实际 API 请求不再完全耦合,控制台与 Gateway 可以独立扩展和部署。
2. Provider 适配与路由策略分离
Gateway 内部将以下职责拆开:
请求接入
↓
路由选择 / 渠道选择
↓
Provider Adapter
↓
协议转换 / 流式响应
↓
Provider API
新增 Provider 时主要扩展对应的 Adapter,不需要修改整个请求链路;路由池、Fallback、限流和渠道健康状态也可以独立演进。
3. 额度处理改为 Ledger + Worker
额度处理不再简单地在请求结束时直接修改余额,而是采用:
请求预扣
↓
Provider 执行
↓
记录用量证据
↓
生成结算事件
↓
ledger-worker 处理账本
通过账本、幂等结算和用量证据,降低并发请求下重复扣费、漏扣和状态不一致的风险。
4. 长任务独立到 Workflow Worker
长耗时任务、轮询任务和后台流程由 Temporal 管理,并交给独立的 workflow-worker 执行。
这样 API 进程不需要长时间等待后台任务,任务重试、超时、恢复和状态收敛更加清晰。
5. 审计和使用日志独立化
使用日志、用量统计、性能指标和审计读模型由独立的 audit 模块负责。
请求执行、账务结算和日志查询之间降低耦合,后续可以分别优化写入、投影和查询性能。
6. 后端按领域重新拆分
identity 用户、Token、认证和会话
adminops 控制面管理操作
gateway API 接入、路由和 Provider 执行
audit 使用日志、统计和审计
billing 额度账本和结算
commerce 订阅、充值和兑换码
workflow Temporal 工作流和任务
platform 数据库、缓存、安全和基础设施
这次重构带来的好处
控制台和 API 请求可以独立扩展
Provider 扩展成本更低
路由策略和协议适配互不干扰
API 请求、账务和异步任务之间故障隔离更清晰
长任务不会阻塞 API 请求进程
额度结算更容易保证一致性
日志和审计查询可以独立优化
更适合 Docker 和多 Worker 部署
代码边界更清晰,后续维护和测试更方便
我们这次重构肯定离不开new-api这些前辈大佬的基础,项目目前还在持续更新中,如果有什么需要和问题也欢迎大家的反馈。