文档
实施管理

源码基线与复用

固定 new-api 版本、代码归属、接口保留与差异核验

固定输入

主要代码来源为 QuantumNous/new-api,固定提交 385d2dfd10d821b25c8a6766bd16eea248cb1652,本地参考工作区 references/new-api。固定版本标识为 v1.0.0-rc.37,采用 Go 1.25.1;依赖版本以该提交 go.mod/go.sum 为准,按所需模块迁入。

Core、Edge 与 Contracts 独立建设。当前代码/API 优先复用该源,保留已有方法、路径、字段、分页和错误;按 Owner 提取,处理进程内数据库/设置/缓存上下文耦合。保留来源与许可,不复制两套客户钱包或供应渠道后台。

复用记录与核验

每次提取记录源提交、路径/哈希、复制或改写范围、依赖、保留与修改原因,以及兼容用例。源码来源成熟只证明参考基础,不证明拆成服务后的身份、账务、恢复或容量。

当前工作树与状态见实施管理Core/Edge 执行记录。旧 TypeScript 工作树、Contracts 历史包和旧 CI 保留追溯,不作为新版本运行证据。数据库、会话与 Key 的最新验证分别查看进度页,不在此维护另一份状态表。

代码与 API 归属

能力参考路径/模块归属与改造
身份与 Keyuser、token、auth_session、middlewareCore 持有生命周期;Edge 通过明确授权协议使用,不复制用户数据库
客户计费billing_session、funding_source、quota_reserve、task_billingCore;补价格版本、积分单位、持久幂等与恢复
模型 APIrouter、controller/relay、流式 helpersEdge;供应选择交网关,钱包操作交 Core
模型权限与分发middleware/distributor保留权限验证,供应渠道部分留网关;不能整段删除
供应适配relay/channel、task plugin独立近上游网关;OceanWay 通过受控接口接入
客户与后台页面web 对应功能页Console/Admin 参考交互,使用 OceanWay shadcn 风格

默认提取和复用已存在的实现;仅当职责冲突或明确缺口无法直接承接时才独立实现,并写明原因。保留来源与许可信息;代码来源成熟不等于新的跨服务调用可靠。每个参考点记录版本、复制/改写范围、上下文与数据库依赖、验证场景。

首个验证为两种客户价格下的同一文本模型调用,覆盖 Key、预留、输出、用量、结算与异常。媒体长任务随后验证。不要从复制整个 new-api 到 Core 和 Edge 两边开始。

已核验上游 API 与缺口只是输入参考,不是已经实现的 OceanWay 契约。

已核验、优先沿用的接口

以下为固定源码的首批接口映射,不是完整清单。路径按原实现保留;字段和权限参照对应 controller 与 middleware 校验。已存在指上游源码,尚不代表 OceanWay 服务已运行。

目标现有接口源文件与实现处理方式
CorePOST /api/user/loginPOST /api/user/registerrouter/api-router.go;controller.Login/Register复用路由与实现,接入 Core 用户/会话
CorePOST /api/user/auth/refreshPOST /api/user/auth/logoutcontroller.RefreshAuth/AuthLogout保留原有 Cookie/Origin 等校验语义
CoreGET /api/user/selfPUT /api/user/selfcontroller.GetSelf/UpdateSelf保留客户资料契约
CoreGET /api/token/POST /api/token/PUT /api/token/controller.GetAllTokens/AddToken/UpdateToken原 Key 列表与管理实现优先迁入
CorePOST /api/token/:id/keyDELETE /api/token/:idcontroller.GetTokenKey/DeleteToken直接承接取回完整 Key 与删除语义
CoreGET /api/user/topup/infoGET /api/user/topup/selfcontroller.GetTopUpInfo/GetUserTopUps承接充值信息与记录,补人民币/积分差异
CoreGET /api/log/selfGET /api/log/self/statcontroller.GetUserLogs/GetLogsSelfStat复用查询,保留过滤差异并补用量细节
CoreGET /api/pricingGET /api/user/modelscontroller.GetPricing/GetUserModels承接目录/价格,隔离销售价与供应路由
EdgeGET /v1/modelsrouter/relay-router.go;controller.ListModels保留兼容模型 API,模型授权来自 Core
EdgePOST /v1/chat/completionsPOST /v1/completionscontroller.Relay,OpenAI format复用解析与流式行为,替换内部数据依赖
EdgePOST /v1/messagescontroller.Relay,Claude format保留对应协议,供应执行交网关
EdgePOST /v1/embeddingsPOST /v1/rerankcontroller.Relay 对应 format依次接入并验证计量
Edge/任务阶段POST /v1/tasks/:keyGET /v1/tasks/:keyrouter/task-router.go;RelayTask/GetTask保留公共形态;客户任务事实和归属由 Core 承接

/api/user/token 是账户访问令牌相关接口,与 /api/token/ 的模型调用 Key 不是同一资源;不能为了迁移统一命名而混淆二者。/v1/tasks/:key 的 POST 参数为插件 key,GET 参数为任务 ID,沿用时保留现有语义说明。

四类处理与差异台账

  • 保留:已有能力和契约符合需求,按原实现迁入对应仓库,移植相关测试。
  • 适配:保持对外接口,内部数据库/全局上下文调用改为该服务依赖或 Core Client。
  • 扩展:人民币积分、客户协议价、价格依据、跨服务持久结算和任务恢复,只补必要差异。
  • 留在网关:真实渠道、供应凭据、供应商 SDK 与路由,不迁入客户管理或 Edge 做第二套供应后台。

docs/openapi/api.jsondocs/openapi/relay.json 是 Contracts 的导入起点,实际 router/controller/middleware 是核对依据。复制规范后标记已接入/未接入,不能把上游所有路径自动列为 OceanWay 已支持。旧文档未覆盖或与源码不一致的字段补差,不另造同功能协议。

On this page