Skip to content

开发与定制入口

二次开发时,先确定功能落在哪条链路,再沿现有分层扩展,避免在 Handler 中直接拼接数据库、Redis、上游请求和计费逻辑。

常见改动对应模块

需求主要位置还要同步检查
新增后台字段/功能Vue View/Component、admin API、Handler、ServiceDTO、校验、权限、审计、缓存失效
新增公开 APIserver routes、Handler、ServiceAPI Key middleware、限流、错误格式、usage
新增上游平台domain constants、Account、Scheduler、GatewayOAuth/API Key、模型、SSE、测试、Ops
新增账号类型Account domain/service/repository创建编辑 UI、刷新、调度资格、导入导出
新增模型能力protocol transform/gateway白名单、mapping、价格、usage、流事件
修改计费billing/usage/pricingrequested/upstream/billing model、幂等、报表
修改支付payment/provider、PaymentService、payment routes验签、状态机、幂等履约、退款、历史订单
新增前端控制页router、view、API module、store/composable后端权限、feature flag、i18n、错误态
新增后台任务service worker/startup wiring多实例 leader lock、heartbeat、停止和超时

一次完整功能变更

text
定义领域行为和不变量
  → 数据库 migration/Ent schema
  → Repository
  → Service
  → Handler/DTO/Route
  → 前端 API/类型/页面
  → 缓存与多实例同步
  → Ops/Usage/Error 可观测性
  → 单元、集成和协议测试
  → 文档与部署配置

不是每个功能都需要每一层,但跳过某层要有明确理由。

新增平台时的最低清单

  • 账号凭证结构、脱敏和轮换方式。
  • Base URL 与 SSRF/allowlist 校验。
  • 模型列表、模型映射和默认模型。
  • 非流式请求与响应。
  • SSE/WebSocket 生命周期、客户端断开。
  • usage 和缓存 Token 解析。
  • 429/5xx/认证错误分类、临时摘除和 failover。
  • Account Test、后台创建编辑和导入导出。
  • requested/upstream/billing model 与价格。
  • Ops 错误上下文和 Request ID。

“能转发一条文本请求”不等于完成平台接入。

修改调度器时

调度器同时受 Group、平台、账号状态、模型能力、优先级、负载、并发、粘性、限流和运行时熔断影响。修改排序或过滤时需要覆盖:

  • 同优先级多个账号。
  • 全部忙碌时等待与直接失败。
  • 粘性账号失效后的切换。
  • 模型不支持的 404 与临时不可用的 503。
  • 多实例缓存和 scheduler outbox。
  • API Key/OAuth 类型偏好及 fallback。

修改计费时

计费代码必须保持:同一请求可追踪、重试不重复扣费、流式中断有明确策略、价格缺失可见、模型映射可解释。测试至少断言 Token、倍率、用户费用、账号成本和记录唯一性。

本地验证

源码启动和构建命令见源码开发与构建。如何按改动选择 unit、integration、协议、支付和多实例测试,见测试与变更验证。提交前至少执行受影响包测试、前端类型/测试、生产构建,并用真实 HTTP 请求覆盖非流式和流式链路。

文档同步

改动架构、配置、后台操作或故障行为时分别更新:项目指南、部署指南、运维指南。不要只更新 README 的功能列表。

本文档用于帮助你理解、部署和运维 Sub2API。使用前请确认上游服务条款与当地法律要求。