From 4ce2fdf55eafe97d418840398664650595d48420 Mon Sep 17 00:00:00 2001 From: chengqian Date: Thu, 24 Sep 2026 10:21:31 +0800 Subject: [PATCH] =?UTF-8?q?doc:=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 133 ++++------- README.md | 18 +- THIRD_PARTY_NOTICES.md | 2 - docs/reference/多项目渠道调度对比.md | 183 -------------- docs/relaykit迁移工作状态.md | 305 ------------------------ docs/screenshot/tenant_usage_detail.png | Bin 167521 -> 0 bytes 6 files changed, 62 insertions(+), 579 deletions(-) delete mode 100644 docs/reference/多项目渠道调度对比.md delete mode 100644 docs/relaykit迁移工作状态.md delete mode 100644 docs/screenshot/tenant_usage_detail.png diff --git a/CLAUDE.md b/CLAUDE.md index 141cb34..99bf153 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -28,77 +28,50 @@ team-api/ │ ├── docs/v1/ # OpenAPI 文档 API │ ├── open/v1/ # 开放平台 API │ ├── payment/v1/ # 支付回调 API +│ └── settings/v1/ # 公开设置 API(IsPublic 设置项、公开公告,无需认证) ├── hack/ │ └── config.yaml # gf CLI 脚手架配置(gen dao 等工具的数据库连接和生成规则) ├── internal/ │ ├── cmd/ # 入口命令、服务启动、路由注册 -│ │ ├── cmd.go # main 包注册,路由分组定义 -│ │ └── cmd_reset_pwd.go # 密码重置命令 │ ├── consts/ # 常量定义(业务状态码、枚举等) │ ├── controller/ # 控制器(由 gf gen ctrl 从 api/ 自动生成,禁止手动修改) -│ │ ├── admin/ # 管理后台控制器 -│ │ ├── tenant/ # 租户控制台控制器 -│ │ ├── captcha/ # 验证码控制器 -│ │ ├── docs/ # 文档控制器 -│ │ ├── open/ # 开放平台控制器 -│ ├── handler/ # 特殊端点处理器(不走 Controller 链路,见下方说明) -│ │ ├── relay/ # AI 代理端点处理器 -│ │ ├── public/ # 支付回调端点处理器 -│ │ └── setup/ # 系统初始化向导处理器 -│ ├── logic/ # 业务逻辑实现(核心代码所在) -│ │ ├── admin/ # 管理后台业务逻辑 -│ │ ├── tenant/ # 租户控制台业务逻辑 -│ │ ├── billing/ # 计费引擎 -│ │ ├── common/ # 公共逻辑(缓存、配置、安全、邮件、验证码、JWT 等) -│ │ ├── docs/ # OpenAPI 文档生成 -│ │ ├── monitor/ # 监控告警引擎 -│ │ ├── notification/ # 通知服务 -│ │ ├── open/ # 开放平台业务逻辑 -│ │ ├── payment/ # 支付逻辑(回调处理、订单履约) -│ │ ├── relay/ # Relay 业务逻辑(亲和性、健康检查、缓存) -│ │ └── task/ # 异步任务框架 -│ ├── model/ # 数据模型(由 gf gen dao 自动生成,禁止手动修改) -│ │ ├── do/ # Domain Objects(查询条件、输入结构体) -│ │ └── entity/ # Entity(与数据库表 1:1 映射的数据实体) -│ ├── packed/ # 打包资源(内嵌静态文件、编译时生成) │ ├── dao/ # 数据访问对象(由 gf gen dao 自动生成,禁止手动修改) +│ ├── dispatchadapter/ # 渠道调度适配层(桥接 relaykit/dispatch 与宿主:渠道目录、调度配置、Redis/本地健康状态) +│ ├── handler/ # 特殊端点处理器(不走 Controller 链路,见下方说明) +│ ├── logic/ # 业务逻辑实现(核心代码所在) +│ ├── middleware/ # 中间件 +│ ├── model/ # 数据模型(由 gf gen dao 自动生成,禁止手动修改) +│ ├── packed/ # 打包资源(内嵌静态文件、编译时生成) +│ ├── plugin/ # 插件框架(接口定义、注册表、生命周期、钩子、引导) │ ├── response/ # 统一响应工具包(Success/Error 封装) │ ├── service/ # 业务接口定义(由 gf gen service 从 logic/ 自动生成,禁止手动修改) -│ ├── middleware/ # 中间件 +│ ├── testutil/ # 测试工具(GoFrame 测试服务器封装) │ └── utility/ # 工具函数 -│ ├── crypto/ # 加密工具 -│ ├── export/ # 数据导出 -│ ├── totp/ # TOTP 两步验证 -│ └── turnstile/ # Cloudflare Turnstile 验证 ├── relay/ # AI 模型代理层(顶级模块,独立于 GoFrame 脚手架生成目录) -│ ├── channel/ # 供应商适配器(registry.go + 24 个子目录,每个供应商一个) -│ │ └── openai/ claude/ gemini/ ... +│ ├── channel/ # 供应商适配器(registry.go + 23 个子目录,每个供应商一个) +│ │ └── openai/ claude/ gemini/ vertex/ codex/ ali/ ... │ ├── common/ # Relay 层共享类型和工具 │ ├── constant/ # Relay 层常量(供应商类型、模式、错误码) -│ ├── dto/ # 数据传输对象(OpenAI/Claude/Gemini/Realtime/Task 等格式定义) -│ ├── handler/ # Relay 请求处理器(chat/claude/gemini/audio/rerank/task/realtime 等) -│ ├── helper/ # Relay 辅助函数(流式处理、状态码映射、系统提示词、thinking 处理) +│ ├── dto/ # 兼容层 DTO(主体已迁 relaykit/dto,余 Responses DTO 与 relaykit 类型桥接) +│ ├── handler/ # Relay 请求处理器(chat/claude/gemini/audio/rerank/task/realtime/videos/responses/passthrough 等) +│ ├── helper/ # Relay 辅助函数(错误信息、状态码映射、模型名处理、供应商原生格式判定、脱敏) │ ├── override/ # 请求/响应覆盖(Header 改写、参数覆盖) -│ ├── scheduler/ # 渠道调度器(调度、亲和性、重试) -│ └── taskchannel/ # 异步任务渠道适配器 -│ ├── registry.go # 任务渠道注册表 -│ ├── kling/ # 可灵视频生成 -│ ├── midjourney/ # Midjourney 图像生成 -│ ├── sora/ # Sora 视频生成 -│ └── suno/ # Suno 音乐生成 -├── manifest/ -│ ├── config/ # 应用运行时配置(GoFrame 标准路径) -│ ├── deploy/ # 部署配置(K8s/Compose 等) -│ ├── docker/ # Docker 构建配置 -│ ├── i18n/ # 国际化资源文件 -│ └── protobuf/ # Protobuf 定义文件 +│ ├── relaykit_bridge/ # relaykit 协议转换桥(格式路由分发、响应/流式回接) +│ └── taskchannel/ # 异步任务渠道适配器(registry.go + helpers.go + 8 个子目录) +│ └── kling/ midjourney/ sora/ suno/ ali/ gemini/ minimax/ volcengine/ +├── relaykit/ # 协议转换 + 渠道调度(独立 Go module,不依赖 GoFrame) +├── plugins/ # 插件实现目录(registry.go 汇总注册,当前含 example 示例插件) +├── scripts/ # 辅助脚本(wrk 压测、Turnstile 测试、渠道测试缓存清理) +├── tests/ +│ └── integration/ # 集成测试(admin/ tenant/,起真实服务做端到端断言) +├── manifest/ # GoFrame相关配置 ├── migrations/ # goose 数据库迁移脚本(六位序号编号:000001_xxx.sql) ├── web/ # 前端 │ ├── admin/ # 管理后台 -│ └── tenant/ # 租户控制台 +│ ├── tenant/ # 租户控制台 +│ ├── embed.go # 前端打包产物内嵌(embedweb 构建标签) +│ └── embed_stub.go # 非 embedweb 构建的空实现 ├── docs/ # 项目文档 -│ ├── 开发计划-v2/ # 分周期开发计划(周期一~六) -│ └── 协议文档/ # 协议相关文档 ├── main.go # 应用入口 ├── go.mod └── Makefile @@ -107,11 +80,17 @@ team-api/ ### Relay 层设计说明 Relay 层作为顶级 `relay/` 模块独立于 GoFrame 脚手架生成目录(`internal/` 下的 `controller/service/dao/model`),原因: -- **文件量大**:24 个供应商适配器 + 4 个异步任务适配器 + 共享模块,放在 `internal/logic/` 下层级过深 +- **文件量大**:23 个供应商适配器 + 8 个异步任务适配器 + 共享模块,放在 `internal/logic/` 下层级过深 - **职责独立**:Relay 是纯粹的代理转发层,不依赖 GoFrame ORM/DAO,与 `internal/` 下的业务逻辑解耦 -- **参考对齐**:目录结构与 new-api 的 `relay/` 保持一致,降低移植和理解成本 -`internal/logic/` 中的业务逻辑(如计费、渠道调度)通过 Go import 调用 `relay/` 包,而非将 relay 嵌入 logic 内部。 +`internal/logic/` 中的业务逻辑(如计费)通过 Go import 调用 `relay/` 包,而非将 relay 嵌入 logic 内部。 + +### relaykit 独立模块(协议转换 + 渠道调度) + +`relaykit/` 是自带 go.mod 的独立 Go module(`github.com/qianfree/team-api/relaykit`,不依赖 GoFrame),承载两块核心能力,`relay/` 下已不再有 scheduler: + +- **协议转换**(`relayconvert/`):12 方向协议互转的注册表 + 引擎,`relay/handler` 经 `relay/relaykit_bridge` 调用;原 `relay/dto` 主体已迁入 `relaykit/dto` +- **渠道调度**(`dispatch/`):渠道选择(HRW 一致性哈希)、错误分类、熔断、健康分、会话亲和;`internal/dispatchadapter` 负责桥接宿主的渠道目录/调度配置/Redis 健康状态 ### GoFrame 代码生成与手动编写分界 @@ -133,6 +112,10 @@ Relay 层作为顶级 `relay/` 模块独立于 GoFrame 脚手架生成目录(` | `internal/utility/` | 手动编写 | 是(工具函数:加密、导出、TOTP、Turnstile) | | `manifest/config/` | 手动编写 | 是(运行时配置) | | `relay/` | 手动编写 | 是(AI 模型代理层,独立于 GoFrame 脚手架) | +| `relaykit/` | 手动编写 | 是(独立 Go module:协议转换 + 渠道调度) | +| `internal/dispatchadapter/` | 手动编写 | 是(渠道调度适配层,桥接 relaykit/dispatch) | +| `internal/plugin/` `plugins/` | 手动编写 | 是(插件框架与插件实现) | +| `internal/testutil/` `scripts/` `tests/` | 手动编写 | 是(测试与辅助脚本) | ### internal/handler/ 目录说明 @@ -143,6 +126,8 @@ Relay 层作为顶级 `relay/` 模块独立于 GoFrame 脚手架生成目录(` | `handler/relay/` | `/v1/*` AI 代理端点(OpenAI/Claude/Gemini 兼容格式)- 需要直接操作 `http.ResponseWriter` 进行流式转发 | | `handler/public/` | `/api/payment/*` 支付回调端点 - 需要返回非 JSON 格式的响应(如支付宝的表单重定向) | | `handler/setup/` | `/api/setup/*` 系统初始化向导端点 - 首次部署时的系统配置页面和初始化接口 | +| `handler/admin/` | `/api/admin/files/*` 管理后台文件服务 - 应用层代理下载(local 存储无预签名 URL 时),直写二进制流 | +| `handler/landing/` | `/` 后端根路径落地页 - 非 embedweb 构建时返回项目介绍页,引导进入两套控制台 | **为什么不用 Controller**: - **流式响应**:AI 代理端点需要实时转发上游的 SSE 流,Controller 的响应包装会破坏流式传输 @@ -194,28 +179,18 @@ cmd(路由注册) ← controller 格式化响应(Res 结构体) ``` -## 参考项目(只读,禁止修改) +## 参考项目(本地可选,当前未放置) -项目根目录下有 `new-api/` 和 `sub2api/` 两个参考项目,它们是大模型网关领域的成熟实现。 -大多数情况下不需要查看这2个目录下的代码,除非我主动提及或者涉及到大模型相关的实现逻辑。 +`new-api/` 和 `sub2api/` 是大模型网关领域的成熟实现,曾作为只读参考放在项目根目录(gitignore 未跟踪,不随仓库分发),**当前本地已移除**;需要参考时自行克隆回来即可。三项目渠道调度的横向对比结论沉淀在 `docs/reference/多项目渠道调度对比.md`(注意:其 team-api 侧描述为调度重写前的旧实现,现行调度以 `relaykit/dispatch` 为准)。 -### new-api 重点参考 +### 参考要点 -- **Relay 代理层架构**:`controller/relay/`,适配器模式、请求转发、响应解析 -- **供应商适配器**:`relay/channel/` 下 40+ 供应商的适配器实现,优先复用 -- **协议转换**:OpenAI ↔ Claude ↔ Gemini 消息格式互转 -- **渠道调度**:优先级/权重选择、自动重试、Key 轮询 -- **计费模型**:预扣/结算/退款、梯度定价、Token 计量 - -### sub2api 重点参考 - -- **渠道亲和性**:用户+模型→渠道映射缓存策略 -- **运维监控**:仪表盘设计、健康监控页面 -- **用户体系**:前端布局和组件设计 +- **new-api**:Relay 代理层架构(适配器模式、请求转发、响应解析)、40+ 供应商适配器、协议转换、渠道调度(优先级/权重选择、自动重试、Key 轮询)、计费模型(预扣/结算/退款、梯度定价、Token 计量) +- **sub2api**:渠道亲和性(用户+模型→渠道映射缓存策略)、运维监控(仪表盘设计、健康监控页面)、用户体系(前端布局和组件设计) ### 参考原则 -参考不等于照搬。new-api 使用 Gin + GORM,我们需要适配到 GoFrame 框架。接口设计和核心算法可以参考,但代码需要重新组织以符合 GoFrame 标准结构(`api → controller → service → logic → dao` 分层)和项目的多租户架构。注意 GoFrame 的 `model/do/`、`model/entity/`、`dao/`、`service/`、`controller/` 均由脚手架自动生成,业务代码只写在 `api/`、`logic/`、`cmd/`、`handler/`、`middleware/`、`response/`、`utility/`、`consts/` 和顶级 `relay/` 中。 +参考不等于照搬。new-api 使用 Gin + GORM,需适配到 GoFrame 框架,代码重新组织以符合 GoFrame 标准结构(`api → controller → service → logic → dao` 分层)和项目的多租户架构。注意 GoFrame 的 `model/do/`、`model/entity/`、`dao/`、`service/`、`controller/` 均由脚手架自动生成,业务代码只写在 `api/`、`logic/`、`cmd/`、`handler/`、`middleware/`、`response/`、`utility/`、`consts/`、顶级 `relay/` 和独立模块 `relaykit/` 中;协议转换与渠道调度已沉淀为自有实现,优先复用 `relaykit/`。 ## 核心架构决策 @@ -267,7 +242,7 @@ cmd(路由注册) ### 钱包状态:Redis 权威 + DB 物化(强约束) -钱包资金状态采用 **Redis 唯一实时权威 + DB 滞后物化视图** 架构(详见 [`docs/钱包Redis权威化设计.md`](docs/钱包Redis权威化设计.md)): +钱包资金状态采用 **Redis 唯一实时权威 + DB 滞后物化视图** 架构: - **Redis 权威**:`wallet:v2:{tenant_id}` hash(balance / frozen_balance / total_consumed / ver,整数 micro-USD)是余额的唯一实时真相。所有资金变动(预扣冻结、结算扣款、解冻、充值/退款/调账)一律通过 `internal/logic/billing/wallet.go` 的 Lua 脚本原子完成,**任何 Go 代码不得直接读改写 Redis 钱包 hash 或从 DB 反向重建它**。 - **累计消费(total_consumed)只随结算事件变动**:`settleClaimLua` 与扣款同一原子 `HINCRBY` 递增;结算记流水失败的补偿逆转走专用 `ReverseConsumeRedis`(余额与计数同一原子回退)。充值/兑换/调账/退款/预扣/解冻一律**不得**触碰该计数(`CreditWalletRedis`/`DebitWalletRedis` 不感知计数)。字段基线由三层补种保证(boot 种子 `SeedWalletTotalConsumed` / 灾备重建 `rebuildWalletFromDB` / 物化器自愈 `materializeOneWallet`),存量历史从 `bil_transactions(type=consume)` 回填(幂等可重放)。 @@ -374,7 +349,7 @@ cmd(路由注册) ### Go 后端 - **缩进统一使用 tab**:所有 Go 代码的缩进必须使用 tab,与 `go fmt` 自动格式化保持一致,禁止混用空格和 tab 缩进 -- **金额用 `decimal.Decimal`,不用 `float64`(强约束)**:所有资金列(`NUMERIC(20,10)`)在 Go 层映射为 `github.com/shopspring/decimal` 的 `decimal.Decimal`(gf 全局 `typeMapping: numeric → decimal.Decimal`)。**多步金额运算(加/减/乘/除、循环累加、倍率×折扣链)一律用 decimal**,禁止用 float64 做中间计算——IEEE double 会在链式运算中累积漂移。工具函数在 `internal/logic/billing/money.go`(`AddMoney`/`SubtractMoney`/`MultiplyMoney`/`DivideMoney`/`RoundMoney`/`Max`/`Min`/`IsPositive` 等),比较用 `.GreaterThan(billing.Zero)`/`.IsZero()`/`.Equal()`,不要用 `== 0`。判断非金额小数(评分/利用率/延迟/告警阈值)保持 `float64`——判据见 [`docs/float64-decimal-field-classification.md`](docs/float64-decimal-field-classification.md)(「这个数最终会不会变成钱」)。 +- **金额用 `decimal.Decimal`,不用 `float64`(强约束)**:所有资金列(`NUMERIC(20,10)`)在 Go 层映射为 `github.com/shopspring/decimal` 的 `decimal.Decimal`(gf 全局 `typeMapping: numeric → decimal.Decimal`)。**多步金额运算(加/减/乘/除、循环累加、倍率×折扣链)一律用 decimal**,禁止用 float64 做中间计算——IEEE double 会在链式运算中累积漂移。工具函数在 `internal/logic/billing/money.go`(`AddMoney`/`SubtractMoney`/`MultiplyMoney`/`DivideMoney`/`RoundMoney`/`Max`/`Min`/`IsPositive` 等),比较用 `.GreaterThan(billing.Zero)`/`.IsZero()`/`.Equal()`,不要用 `== 0`。判断非金额小数(评分/利用率/延迟/告警阈值)保持 `float64`——判据是「这个数最终会不会变成钱」。 - **边界转换(只在出入口调用,禁止用于计算链路)**: - **出口 → float64**:API `Res` 响应、内存缓存结构体、遗留 float64 接口,用 `billing.InexactFloat64(d)`(前端 JSON number 契约不变)。 - **入口 ← float64**:API `Req` 里的 float64 金额,用 `billing.NewFromFloat(f)` 转进 decimal 再运算。 @@ -466,12 +441,10 @@ cmd(路由注册) | 文档 | 路径 | 用途 | |------|------|------| -| 产品需求文档 | `docs/team-api产品需求文档.md` | 功能需求的最终依据 | -| 原始开发计划 | `docs/team-api开发计划.md` | S01-S26 迭代拆分 | -| new-api 调研 | `docs/new-api调研报告.md` | 参考项目能力盘点 | -| sub2api 调研 | `docs/sub2api调研报告.md` | 参考项目能力盘点 | -| 对比分析 | `docs/new-api-vs-sub2api对比分析报告.md` | 两者差异 | -| 大模型实施方案 | `docs/大模型完整实施方案-v2.1.md` | 大模型代理层设计 | +| relaykit 迁移状态 | `docs/relaykit迁移工作状态.md` | relay/ → relaykit 协议转换迁移进度、覆盖矩阵与守卫说明 | +| 渠道调度对比 | `docs/reference/多项目渠道调度对比.md` | new-api/sub2api/team-api 调度方案对比(team-api 侧描述已过时,以 relaykit/dispatch 为准) | +| Docker 部署 | `docs/deployment-docker.md` | Docker 部署指引 | +| 协议文档 | `docs/协议文档/` | 各供应商官方协议参考(OpenAI/Claude/Gemini/智谱/豆包/阿里等系列) | | API 格式参考 | `docs/reference/api-format-reference.md` | JSON 示例、SSE 格式、错误映射、中间件差异 | | 协议转换语料采集 | `docs/协议转换语料采集手册.md` | `corpus-extract` 命令用法:从渠道调试日志提取真实流量语料喂给协议转换测试 | | GoFrame 使用规范 | `docs/reference/goframe-conventions.md` | 框架使用规范 + 已修复的框架 bug 记录 | diff --git a/README.md b/README.md index 25e0894..9f9f947 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ **多租户 大模型 API 网关 SaaS 平台** -统一接入 OpenAI、Claude、Gemini 等 25+ 大模型供应商,提供计费、限流、监控和多租户管理能力。 +统一接入 OpenAI、Claude、Gemini 等大模型供应商,提供计费、限流、监控和多租户管理能力。 [![Go](https://img.shields.io/badge/Go-1.25-00ADD8?style=flat-square&logo=go)](https://go.dev/) [![GoFrame](https://img.shields.io/badge/GoFrame-v2.10-blue?style=flat-square)](https://goframe.org/) @@ -20,18 +20,18 @@ ## 功能特性 - **多租户架构** — 行级租户隔离,管理后台与租户控制台双独立用户体系 -- **25+ 大模型供应商** — OpenAI、Claude、Gemini、DeepSeek、通义千问、智谱、Ollama 等 +- **适配多家大模型供应商** — OpenAI、Claude、Gemini、DeepSeek、通义千问、智谱、Ollama 等 - **OpenAI 兼容 API** — 无缝替换 OpenAI API,支持对话补全、向量嵌入、图像生成、语音、实时通信等 - **智能渠道调度** — 优先级/权重路由、自动故障转移、健康监控、渠道亲和性 -- **五层额度模型** — 租户钱包 → 套餐额度 → 成员额度 → 项目预算 → Key 额度 +- **三层额度模型** — 租户钱包 → 项目预算/成员额度 → Key 额度 - **实时计费引擎** — 预扣 → 转发 → 结算 → 退款,Redis 原子操作保证并发安全 -- **双控制台** — 管理后台(Naive UI)用于平台运营 + 租户控制台(TailwindCSS)面向终端用户 +- **双控制台** — 管理后台用于平台运营 + 租户控制台面向终端用户 - **全链路可观测** — 请求日志、操作审计、监控告警,Request ID 贯穿全链路 > 在线演示地址: > -> 管理端:https://team-api.net/admin/, 为做好数据安全措施,暂不公开登录方式 +> 管理端:https://team-api.net/admin/, 未做好数据安全措施,暂不公开登录方式 > > 用户端:https://team-api.net, 用户名:liu@163.com, 密码:Demo123456 @@ -383,8 +383,8 @@ make migrate-status # 查看迁移状态 1. ~~在线升级(已完成)~~ 2. ~~支付模块(Easy Pay 已支持)~~ 3. ~~图片生成同步转异步~~ -4. 完善大模型支持,特别是图像和视频的支持 -5. 角色管理,方便运营团队内部协作,预设角色(管理员,销售,技术支持) +4. ~~完善大模型支持,特别是图像和视频的支持~~ +5. ~~角色管理,方便运营团队内部协作,预设角色(管理员,销售,技术支持)~~ 6. 插件功能(定制功能通过插件实现,确保不与主线代码冲突) 7. 开放平台(对接OA的能力,方便企业对接管理) @@ -399,7 +399,7 @@ make migrate-status # 查看迁移状态 请遵循项目现有代码风格和 [Conventional Commits](https://www.conventionalcommits.org/zh-hans/) 提交规范。 -项目当前由 qianfree 单独维护。未来如接受外部贡献,将在合并贡献前提供贡献者许可协议(CLA),以确保 AGPL 与商业授权的权利链清晰完整。 +项目当前由 qianfree 进行维护。未来如接受外部贡献,将在合并贡献前提供贡献者许可协议(CLA),以确保 AGPL 与商业授权的权利链清晰完整。 ## 在线交流 欢迎加QQ群聊天吹水:1095286563 @@ -409,7 +409,7 @@ make migrate-status # 查看迁移状态 ## 许可证 -Copyright (C) 2026 qianfree。本项目社区版采用 [AGPL v3.0 或更高版本](LICENSE) 许可证。 +Copyright (C) 2026 qianfree。 本项目社区版采用 [AGPL v3.0 或更高版本](LICENSE) 许可证。 ### 核心要求 diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index de38c3d..9eef60d 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -176,5 +176,3 @@ go list -m -f "{{if not .Main}}{{.Path}}|{{.Version}}|{{.Dir}}{{end}}" all # 前端依赖(在各 web/* 目录下): # bunx license-checker --summary / npx license-checker --json ``` - -> ⚠️ 本文件列出版本为生成时快照。每次发布商业版本前应重新扫描,重点核对**新增依赖**是否引入 copyleft 类许可证。 diff --git a/docs/reference/多项目渠道调度对比.md b/docs/reference/多项目渠道调度对比.md deleted file mode 100644 index f26d9c9..0000000 --- a/docs/reference/多项目渠道调度对比.md +++ /dev/null @@ -1,183 +0,0 @@ -# 渠道调度策略:三项目对比(new-api / sub2api / team-api) - -> **用途**:在 [`new-api-channel-scheduling-analysis.md`](./new-api-channel-scheduling-analysis.md) 与 [`sub2api-channel-scheduling-analysis.md`](./sub2api-channel-scheduling-analysis.md) 两份单独分析的基础上,补充 team-api 自身的实现剖析,并给出三者横向对比与 team-api 的改进建议。 -> -> **路径约定**: -> - team-api 引用相对于**本项目根目录**(`D:\github\team-api`) -> - new-api 引用相对于 `new-api/` 参考项目根 -> - sub2api 引用相对于 `sub2api/backend/` -> -> **分析时间**:2026-07-30。 - -> ⚠️ **team-api 部分已过时(2026-08-27 标注)**:本文描述的是渠道调度重写**之前**的实现, -> 文中引用的 `relay/scheduler/scheduler.go`、`internal/logic/relay/health.go` 均已删除。 -> 特别注意第 5 节的「4 因子加权健康度」公式(成功率×0.40 + 延迟分×0.25 + 稳定性×0.20 + -> 连续失败分×0.15)**已废止**,现行健康体系为:Redis 渠道×模型 EWMA 为唯一真相, -> 健康分 = `avg(succ_ewma)^α × 100`,调度权重见 `relaykit/dispatch/score.go` 的 -> `EffectiveWeight`,落盘见 `internal/dispatchadapter/maintenance.go`。 -> new-api / sub2api 两侧的分析不受影响,横向对比结论仍有参考价值。 - ---- - -## 目录 - -1. [team-api 当前调度实现](#一team-api-当前调度实现) -2. [三项目对比总表](#二三项目对比总表) -3. [关键差异深度对比](#三关键差异深度对比) -4. [team-api 现状评估与改进建议](#四team-api-现状评估与改进建议) - ---- - -## 一、team-api 当前调度实现 - -team-api 的调度核心在两处:算法层 `relay/scheduler/scheduler.go`,编排层 `internal/logic/relay/provider.go` + `relay/handler/relay_handler.go`。 - -### 1. 调度入口与候选构建 - -`DataProviderImpl.GetChannelForModel`(`internal/logic/relay/provider.go:98`)→ `selectChannelFromDB`(`provider.go:120`): - -- 从 `chn_abilities`(模型→渠道映射)JOIN `chn_channels` + `chn_health_scores` 拉候选,过滤 `enabled=true`、`status='active'`、租户渠道范围、排除已失败渠道(`excludeChannelIDs`)。 -- 有 feature flag **`channel_scheduler_v2_enabled`** 控制两套路径: - - **关闭(legacy)**:按 `priority DESC, weight DESC` 排序,取第一个能取到上游 key 的渠道(`provider.go:162-195`)。纯优先级首选,无随机、无健康度。 - - **开启(v2)**:构建 `[]scheduler.ChannelCandidate`,交给调度引擎(`provider.go:197-279`)。 - -### 2. 优先级 + 权重 + 健康度选择算法(`relay/scheduler/scheduler.go`) - -`Select`(`scheduler.go:49`)算法注释明确: - -1. 排除 `Weight <= 0` 的渠道; -2. 排除 `HealthScore < 20` 的渠道(若全不健康则保留全部,避免饿死); -3. 按优先级分组,**取最高优先级组**(`groupByPriority` 升序排,`groups[len-1]` 即数值**大**优先——与 new-api 一致,与 sub2api 相反); -4. 组内**加权随机**(`weightedRandomSelect`)。 - -**健康度降权**(`effectiveWeight`,`scheduler.go:185`):健康度 50-79 权重减半,20-49 降至 1/4,最低保 1。即不健康渠道不直接剔除,而是降低被选概率。 - -**`SelectStable`**(`scheduler.go:65`):在最高优先级组内,**优先用亲和渠道**(`preferredChannelID` 命中即直接返回),否则用 **Rendezvous 一致性哈希**(`weightedRendezvousSelect`,`scheduler.go:164`)做加权选择——相同 seed + 候选集在**不同进程/实例得到相同结果**,适合多实例部署的冷请求。seed = `tenant:user:apikey:model` + 时间桶(桶长 = 亲和 TTL)。 - -### 3. 渠道亲和性(`internal/logic/relay/affinity.go`) - -- **key**:`sha256(tenantID:userID:apiKeyID:modelName)` → Redis 存 `channelID`,TTL 默认 **1800s**(`channel_affinity_ttl_seconds` 可配)。 -- **反向索引**:`relay:affinity:v2:channel:` 维护该渠道绑定的所有 key 集合,渠道失效时 `InvalidateChannelAffinities`(`affinity.go:80`)用 Lua 脚本批量清除——避免脏亲和。 -- **feature flag** `channel_affinity_enabled` 控制。 -- **流程**:`selectChannelFromDB` 先 `getAffinity` 拿 preferredChannelID → `SelectStable` 在最高优先级组内优先命中;成功后 `SetChannelAffinity` 写回;硬失败 `DeleteChannelAffinity`(`provider.go:222-275`)。 -- **关键限制**:亲和**只在最高优先级组内生效**。若亲和渠道不在当前最高优先级组,会被降级处理(`preferredChannelID=0` 或删除亲和,`provider.go:239-246`)。 - -### 4. 失败重试(`relay/handler/relay_handler.go:417`) - -``` -maxRetries = 3 // 即最多 4 次尝试(attempt 0..3) -for attempt := 0; attempt <= maxRetries; attempt++ { - selection = GetChannelForModel(..., excludeChannelIDs) // 排除已失败渠道 - ...转发... - 失败 → excludeChannelIDs = append(..., selection.ChannelID) → continue -} -``` - -- **跨渠道重试**:失败渠道累积进 `excludeChannelIDs`,下次选号排除(`relay_handler.go:472/499/561`)。 -- **容量溢出不消耗重试次数**:`acquireChannelLease` 失败时 `attempt--` 再 continue(`relay_handler.go:473`)。 -- **重试触发判定**: - - DoRequest 失败用 `IsRetryableForRequest`(`relay/constant/errors.go`):状态码 **429/500/502/503/504** 或网络瞬时错误;**昂贵非幂等生成(图片/视频)对「模糊送达」错误不重试**,避免上游重复生成 + 重复计费。 - - DoResponse 失败:流式 / 不可重试 / `attempt>=maxRetries` / **`IsResponseWritten`(响应已写给客户端)** 任一满足即终止(`relay_handler.go:569`)——防止成功体追加到已写错误体后造成响应污染。 -- **每次失败副作用**:`UpdateChannelHealth(false)` + `IncrementConsecutiveFailure` + `DeleteChannelAffinity`。 - -### 5. 健康度模型(`internal/logic/relay/health.go`) - -- **综合健康度公式**(`calcHealthScore`,`health.go:96`): - `健康度 = 成功率×0.40 + 延迟分×0.25 + 稳定性×0.20 + 连续失败分×0.15`(0-100) -- **EWMA 平滑**:成功率 α=0.1(`new=old×0.9+sample×0.1`),延迟 α=0.3(`new=old×0.7+sample×0.3`)。 -- **连续失败**:失败 +1,成功归零;连续失败分 = `100 - consecutiveFailures×20`。 -- **自动禁用**:`checkAutoDisable`(`health.go:91`)连续失败达阈值自动禁用渠道。 -- 这是个**混合模型**:EWMA 平滑的成功率/延迟 + 离散的连续失败计数,比 new-api 精细,但比 sub2api 的纯 EWMA(错误率 + TTFT)多了离散阈值。 - -### 6. 容量控制(`relay/handler/channel_lease.go`) - -- `AcquireChannelSlot`:Redis 原子占并发槽,`MaxConcurrency` 超限则失败(Redis 异常降级放行)。 -- `channelLease`:长请求 30s ticker 刷新租约(`refreshLoop`),结束 `Release`。 - ---- - -## 二、三项目对比总表 - -| 维度 | new-api | sub2api | **team-api** | -|------|---------|---------|--------------| -| 调度单位 | channel | account(订阅账户) | channel | -| 框架 | Gin + GORM | Gin + ent | GoFrame v2 + gdb | -| 优先级语义 | 数值**大**优先,严格分层 | 数值**小**优先;通用严格分层 / OpenAI 软因子 | 数值**大**优先,严格分层(v2) | -| 层内分配 | 加权随机(weight) | 通用 LRU;OpenAI Top-K 加权随机 | 加权随机 / Rendezvous 一致性哈希 | -| 重试计数 vs 优先级 | retry 当优先级层下标(耦合) | 完全解耦 | 完全解耦(excludeChannelIDs 独立) | -| 健康感知 | 仅 auto-ban(401 禁用) | **EWMA 错误率 + TTFT**,纳入评分 + 粘性逃逸 | **4 因子加权健康度**(成功率/延迟/稳定性/连续失败)+ 降权 + 自动禁用 | -| 亲和性定位 | 规则引擎(model/path/UA + KeySource),**为 prompt cache** | session hash + previous_response_id,**为对话 KV**,带健康度逃逸 | `tenant:user:apikey:model → channel`,Redis + 反向索引,**为路由稳定** | -| 亲和作用域 | 全局规则匹配 | 会话级(可跨优先级,带逃逸) | **仅最高优先级组内** | -| 重试上限 | `RetryTimes`(默认 **0**!) | 换号 **10**(Gemini 3)+ 同号 3 + HTTP 5 次/10s | **`maxRetries=3`**(4 次尝试) | -| 重试触发码 | 可配状态码范围(默认 4xx 除 400/408、5xx 除 504/524) | 401/403/429/529/≥500 换号 | 429/500/502/503/504 + 网络瞬时 | -| 流式安全 | 无特殊处理 | 流式已写禁止 failover | `ResponseWritten` 禁止重试 | -| 容量/并发控制 | 无显式 | 并发槽 + 等待队列 + wait plan | Redis 并发槽 + 租约刷新 | -| 跨实例稳定性 | 内存缓存(每实例独立) | 确定性种子 RNG | **Rendezvous 一致性哈希**(多实例对齐) | -| 非幂等保护 | 无 | 无显式 | **昂贵生成模糊送达不重试**(防重复计费) | -| 失败渠道处理 | auto-ban 移出缓存 | 临时封禁 + 换号 | 健康度降权 + 连续失败自动禁用 | - ---- - -## 三、关键差异深度对比 - -### 1. 优先级模型:严格分层 vs 软因子 - -- **new-api / team-api**:严格分层——最高优先级组独占流量,层内才看权重/健康。设计简单、主备语义清晰。 -- **sub2api(OpenAI 路径)**:优先级只是多维评分里的一个归一化因子,和负载/错误率/延迟平等竞争。更灵活(高优先级但高负载的渠道会被降级),但行为更难预测。 -- **team-api 特点**:严格分层 + Rendezvous 哈希,是三者中**唯一原生支持多实例确定性选择**的(new-api 靠每实例内存缓存、sub2api 靠确定性种子,team-api 用一致性哈希更优雅)。 - -### 2. 健康感知:三者代际差异明显 - -- **new-api**:最粗糙——只有 401 auto-ban,无实时健康度。 -- **team-api**:中间代——4 因子加权健康度 + EWMA 平滑 + 降权(不剔除)+ 连续失败自动禁用。粒度合理。 -- **sub2api**:最精细——纯 EWMA(错误率 + TTFT)实时反馈,且**健康度参与粘性逃逸决策**(健康恶化主动跳船),这是 team-api 当前缺的能力。 - -### 3. 亲和性定位完全不同 - -- **new-api**:为 **prompt cache 命中**(绑定上游 KV 缓存),规则引擎匹配,全局生效。 -- **sub2api**:为 **对话状态/KV**(订阅账户状态私有),会话级 + previous_response_id,**带健康度逃逸**。 -- **team-api**:为 **路由稳定**(让同一租户/用户/key/模型尽量落同一渠道),简单直接,但**只限最高优先级组内**——若渠道分布在多优先级层,亲和效果会被优先级分层削弱。 - -### 4. 重试与 failover 的层次 - -- **new-api**:单层 `retry`,且默认 `RetryTimes=0`(不重试),耦合优先级层下标。 -- **sub2api**:三层独立有界(同号 HTTP 5/10s → 同号业务 3 → 跨号 10),最细致,有流式安全阀。 -- **team-api**:单层 `maxRetries=3`,但有三个优秀细节——容量溢出不消耗重试次数、`ResponseWritten` 禁止重试、昂贵非幂等生成的模糊送达不重试。整体介于 new-api 和 sub2api 之间。 - ---- - -## 四、team-api 现状评估与改进建议 - -### 现状评分 - -team-api 的调度实现**整体处于三者中游偏上**: -- ✅ **优于 new-api**:有真实健康度模型、响应已写安全阀、非幂等保护、跨实例一致性哈希、Redis 并发控制。 -- ✅ **优于 sub2api**:多实例确定性(Rendezvous)、非幂等生成的重复计费保护。 -- ⚠️ **弱于 sub2api**:缺粘性逃逸、重试层次单一、亲和受限于最高优先级组。 -- ⚠️ **共性短板**:legacy/v2 双路径并存(`channel_scheduler_v2_enabled` 关闭时退化成纯优先级无健康度),需确保生产开 v2。 - -### 可落地的改进建议(按优先级) - -| # | 建议 | 借鉴自 | 预期收益 | -|---|------|--------|---------| -| 1 | **亲和性加健康度逃逸**:亲和渠道 `HealthScore < 阈值` 时主动放弃亲和、降级选号,避免坏渠道粘死会话 | sub2api `shouldEscapeStickyAccount` | 防止一个故障渠道拖垮一批固定用户 | -| 2 | **亲和性作用域放宽**:允许亲和渠道跨优先级层命中(带降级权重),而非仅限最高优先级组 | sub2api 会话粘性跨优先级 | 提升亲和命中率,prompt cache/路由稳定收益更大 | -| 3 | **重试分层**:把「同渠道瞬时重试」与「跨渠道 failover」拆成两层独立计数,同渠道先短退避重试 1-2 次(429/503 常是瞬时的) | sub2api 三层 failover | 减少不必要的换渠道,降低抖动 | -| 4 | **健康度引入 TTFT**:在 4 因子里加首 token 延迟(流式场景比平均延迟更影响体感),或提高延迟权重 | sub2api EWMA TTFT | 流式体验优化 | -| 5 | **退避策略**:当前重试无退避(立即换渠道),高频 429 风暴下可能放大上游压力;加指数退避 | sub2api `retryBackoffDelay` / new-api | 保护上游、降低连环失败 | -| 6 | **下线 legacy 路径**:`channel_scheduler_v2_enabled` 关闭时退化为无健康度调度,建议确认生产已开并择机移除双路径 | — | 降低维护成本、避免误配置 | - -### 关键源码索引(team-api) - -| 关注点 | 文件:函数 | -|--------|----------| -| 调度算法入口 | `relay/scheduler/scheduler.go:49` — `Select`;`:65` — `SelectStable` | -| 候选过滤 + 最高优先级组 | `relay/scheduler/scheduler.go:83` — `highestPriorityCandidates` | -| 健康度降权 | `relay/scheduler/scheduler.go:185` — `effectiveWeight` | -| Rendezvous 一致性哈希 | `relay/scheduler/scheduler.go:164` — `weightedRendezvousSelect` | -| 选号编排(候选构建 + 亲和) | `internal/logic/relay/provider.go:120` — `selectChannelFromDB` | -| 亲和性读写 | `internal/logic/relay/affinity.go` — `getAffinity`/`setAffinity`/`InvalidateChannelAffinities` | -| 重试主循环 | `relay/handler/relay_handler.go:417` — `for attempt` | -| 重试判定 | `relay/constant/errors.go` — `IsRetryable`/`IsRetryableForRequest`/`IsResponseWritten` | -| 健康度计算 | `internal/logic/relay/health.go:22` — `UpdateHealthScore`;`:96` — `calcHealthScore` | -| 容量租约 | `relay/handler/channel_lease.go` — `acquireChannelLease`/`channelLease` | diff --git a/docs/relaykit迁移工作状态.md b/docs/relaykit迁移工作状态.md deleted file mode 100644 index eeec54d..0000000 --- a/docs/relaykit迁移工作状态.md +++ /dev/null @@ -1,305 +0,0 @@ -# relay → relaykit 协议转换迁移 · 工作状态 - -> 记录时间:2026-09-10(上一版 2026-09-09) -> 分支:`feat/relaykit`(基于 main,领先 2 个已提交 commit + 大量未提交工作区改动) -> 状态:**未提交**。全仓 `go build ./...` + `go vet` 通过;relaykit 模块测试全绿; -> relay 侧仅剩既有失败(见 §四)。§5.1 已修,另发现并修复 **2 个本次迁移引入的回归**(见 §3.6)。 - ---- - -## 一、本次任务目标 - -把 relay 层残留的「纯协议转换」代码全部迁进独立模块 `relaykit/`,让 relaykit 成为唯一转换路径, -宿主 `relay/` 只保留 HTTP/SSE/计费/调度等宿主职责。 - -## 二、开工前定下的 4 个决策(用户已拍板) - -| 决策点 | 选定方案 | -|--------|----------| -| 注册表改造 | **允许单侧注册**(请求侧或响应侧可单独为空),反向方向才注册得进去 | -| 跨原生方向表达 | **中枢链式 + 直连覆盖**:请求走 `A→OpenAI→B` 步骤链,响应用直连转换器(保真度高)。
后修订:Claude→Gemini 请求侧改为直连(见 §六.11) | -| legacy 兜底策略 | **立即 hard-fail**:不再"解析失败回退旧实现",legacy 随迁随删 | -| 迁移范围 | 全选:4 个跨原生响应桥 + openai/converter.go 反向方向 + o2c/o2g 双实现清理 + 小方向补全 | - -## 三、已完成的工作 - -### 3.1 relaykit 注册表基建(新增/改造) - -| 文件 | 说明 | -|------|------| -| `relaykit/relayconvert/text_converter_registry.go` | 放宽双侧非空约束 → 单侧注册(两侧都空才 panic),只把已配置的一侧写进对应注册表 | -| `relaykit/relayconvert/engine.go`(新增) | `ConvertRequestByID` / `ExecuteRequestConversion`:统一执行直连转换器与 StepConverters 步骤链,调用方无需区分 | -| `relaykit/relayconvert/stream_event.go`(新增) | `StreamEvent{Event, Data, Usage *dto.UsageWithDetails}`:非 OpenAI 客户端方向的通用流式帧封装(Event 非空=事件帧,空=纯 data 帧) | -| `relaykit/relayconvert/errors.go`(新增) | `ErrStatefulResponsesUnsupported` 哨兵(顶层包,宿主可 `errors.Is`) | -| `relaykit/relayconvert/convmeta/responses_stash.go`(新增) | `ResponsesStash` 能力接口:Responses 请求快照 stash/读取 | -| `request_registry.go` / `response_registry.go` | 补齐全部方向的 converter ID 常量(含跨原生、反向、Responses 双向、流式) | - -**注意**:`StreamEvent.Usage` 中途从 `*dto.Usage` 升级为 `*dto.UsageWithDetails`(瘦类型会丢缓存明细 → 影响计费), -所有转换器已按新契约适配。 - -### 3.2 转换器迁移(4 个并行子任务,全部完成且测试通过) - -| 子任务 | 产出包 | 内容 | -|--------|--------|------| -| A | `relaykit/relayconvert/internal/oai_chat/` | Claude 入站方向:`ClaudeToOpenAIRequestConverter`、`OpenAIToClaudeResponseConverter`、`OpenAIToClaudeStreamConverter` | -| B | `relaykit/relayconvert/internal/oai_gemini/` | Gemini 入站方向:`GeminiToOpenAIRequestConverter`、`OpenAIToGeminiResponseConverter`、`OpenAIToGeminiStreamConverter` | -| C | `relaykit/relayconvert/internal/oai_responses/`(新包)+ `relaykit/dto/openai_responses.go`(新) | Responses 双向 6 个转换器;Responses DTO 下沉到 relaykit,`relay/dto/openai_responses.go` 改为纯别名文件 | -| D | `internal/claude_gemini/` + `internal/native_responses/`(新包) | 8 个跨原生响应转换器(Claude↔Gemini、Claude/Gemini→Responses,各含流式) | - -### 3.3 注册接线 - -`relaykit/relayconvert/register/register.go` 现注册 **12 个方向**: - -- OpenAI 入站 → Claude / Gemini / Ollama(chat)(原有) -- 反向:Claude / Gemini / Responses 入站 → OpenAI 上游(新) -- OpenAI chat → Responses 上游(ChatViaResponses 桥接,新) -- 跨原生:Claude→Gemini、Gemini→Claude、Responses→Claude、Responses→Gemini - (新;响应侧全部直连,请求侧 Claude→Gemini 已改直连,其余仍为步骤链) - -### 3.4 宿主桥接层改造 - -| 文件 | 说明 | -|------|------| -| `relay/relaykit_bridge/route.go`(**新增**) | **唯一权威方向矩阵**:`KitFormat`(宿主↔relaykit 格式名映射,Responses 命名不同需显式转)、`EffectiveUpstreamFormat`(含 UseResponsesAPI / UpstreamSpeaksResponses 覆盖)、`RequestConverterIDForRoute`、`ResponseConverterIDForRoute`。另在此包 blank-import `register` 触发注册(放桥接包而非某调用方,保证所有 channel 包及其单测都能拿到注册结果) | -| `relay/relaykit_bridge/response.go` | 签名改 4 值 `(converted, usage, handled, err)`,hard-fail 语义;按格式解析上游响应(新增 OpenAI/Responses 两种) | -| `relay/relaykit_bridge/stream.go` | chunkWriter 支持 `StreamEvent`(事件帧/data 帧分派 + usage 明细捕获);**收尾策略按客户端格式**:OpenAI/Gemini 客户端写 `[DONE]`(OpenAI 另补终止 chunk),Claude/Responses 客户端不写(终止语义由 message_stop / response.completed 承载) | -| `relay/handler/relaykit_bridge.go` | 重写:走统一矩阵、按入站格式解析请求、hard-fail、OpenAI 上游后处理(stream_options / reasoning_effort 注入,均"客户端未显式设置时"语义)、哨兵错误映射 | -| `relay/handler/relay_handler.go` | `convertRequestBody` 改三态处理(handled+err / handled / 未接管走 adaptor) | -| `relay/common/relay_info.go` | `*RelayInfo` 实现 `convmeta.ResponsesStash` | - -### 3.5 宿主 legacy 删除(hard-fail 接线) - -已改为纯桥接外壳并删除旧转换实现: - -- `relay/channel/claude/response.go`(handleNonStreamToOpenAI / handleStreamToOpenAI,删约 270 行流式循环) -- `relay/channel/gemini/response.go`(同上,删约 300 行) -- `relay/channel/ollama/adaptor.go`(chat 非流式+流式,删约 150 行) -- `relay/channel/openai/claude_response.go`(重写为桥接外壳) -- `relay/channel/openai/gemini_response.go`(重写为桥接外壳,保留 `writeOpenAIErrorAsGemini` 等错误映射) -- 4 个跨原生桥 `claude/gemini_bridge.go`、`claude/responses_bridge.go`、`gemini/claude_bridge.go`、`gemini/responses_bridge.go`(由子任务改造,**见待办**) - ---- - -## 四、当前验证状态 - -``` -GOTOOLCHAIN=go1.25.8 go build ./... ✅ 通过 -GOTOOLCHAIN=go1.25.8 go vet ./relay/... ✅ 通过 -cd relaykit && GOWORK=off go test -count=1 ./... ✅ 全绿(14 个包) -GOTOOLCHAIN=go1.25.8 go test ./relay/... ✅ 仅 relay/helper 既有失败(见 §六.7) -GOTOOLCHAIN=go1.25.8 go test ./internal/... ⚠️ 3 个既有失败,与本次迁移无关: - · internal/logic/admin TestBuiltinRoleDefaultsMatchMigration - —— 找不到 000020_admin_role_management.sql(迁移已重编号为 000020_v0_2_17_version.sql) - · internal/dispatchadapter TestProbeFailure_DoesNotDecayHealthEwma —— 健康分 EWMA - · internal/logic/billing TestGenerateBillingSummary_TimeRule —— 账单文案时段行 - (三处工作区均无改动,勿误当回归) -gofmt -l relay/ relaykit/ ⚠️ 剩 10 个**存量**未格式化文件 - (ali/volcengine converter_test、relaykit dto/audio、goldentest、benchmark_test 等, - 本次迁移触及的 5 个文件已 gofmt -w) -``` - ---- - -## 五、重启后的待办 - -### 5.1 ~~修复 3 个流式错误传播测试~~ ✅ 已完成(2026-09-10) - -**上一版留下的坑**:这 3 个测试当时是被「反转断言」改绿的——把「应返回错误」改成 -「不返回错误、只查 StreamStatus」。但 `StreamEndReasonError` **不在** `IsPartialStreamEnd()` -集合内(`relay/common/stream_status.go:79`),于是 `DoResponse` 返回 `(usage, nil)`, -落到 `relay_handler.go` 的**成功路径**:`sess.Finish(true)` 让调度 FSM 收到「成功」、 -熔断/健康分拿不到上游故障信号,并按正常成功结算(usage 近零)。旧实现是返回 error 的。 - -**已按原文档倾向的方案 1 修正**: -- `TryConvertStreamViaRelaykit` 签名改三态 `(*common.Usage, bool, error)`; - `ok=true,err!=nil` = 已写出 SSE 但流以错误/中断结束,调用方原样 `return usage, err`。 -- 新增 `streamConvertError`(`relay/relaykit_bridge/stream.go`)做错误分类, - 一律置 `ResponseWritten`(SSE 头与 200 已提交,不得改状态码/换渠道重试)。 -- 客户端断开分支直接透出 `common.ErrStreamInterrupted`,9 个调用点不再各自 - 读 `IsPartialStreamEnd()` 判定,统一收敛到桥接层。 -- 3 个测试断言改回「应返回错误」,并加断分类与收尾事件。 - -**顺带修正的分类错误**:安全拦截(Gemini `promptFeedback.blockReason`)原先会被映射成 -502 上游错误 → 正常渠道因用户发违规提示词被扣健康分乃至熔断。现新增 -`relaykit/relayconvert.ErrContentBlocked` 哨兵(6 个 Gemini 出站转换器 wrap 返回), -宿主 `errors.Is` 识别后映射为请求类 4xx。非流式侧同理,新增 -`relaykit_bridge.ResponseConvertError` 供 3 个 Gemini 上游非流式站点统一分类。 -6 个方向(→Claude / →Responses / →OpenAI × 流式/非流式)均已有测试覆盖。 - -### 5.2 ~~核对子任务 D 的跨原生桥接线成果~~ ✅ 已核对(结论与担心相反) - -`geminiToClaudeResponse` / `buildResponsesBodyFromGemini` **仍在且不能删**: -它们是 Code Assist 强制流式聚合路径(`gemini/adaptor.go:514,520` -`handleCodeAssistAggregatedStream`)复用的非流式装配函数,各文件头注释已写明。 -计费 usage 已确认仍从**原始上游响应体**提取。 - -### 5.3 ~~收尾清理~~ ✅ 已完成(2026-09-10,legacy 删除落地) - -删除过程中发现并补齐了 2 处迁移遗漏(见 §七的「删除时补的接线」)。 - -### 5.4 提交前检查 - -- `gofmt -l` 本次触及文件已清空(存量 10 个未动,避免污染本次 diff) -- `go vet ./relay/... ./internal/...` ✅ -- 提交信息不得包含 AI 工具身份标识(项目规范) -- 建议拆 commit:注册表基建 / 转换器迁移 / 宿主接线 / legacy 删除 / - **本次新增:流式错误传播 + 安全拦截分类 / Anthropic 端点与 provider 后处理回归修复** - ---- - -## 3.6 本次新发现并修复的 2 个回归(重点,评审必看) - -两者同一个根因:**relaykit 的转换矩阵按「协议格式」裁决、与供应商无关**, -命中后 `adaptor.ConvertRequest` 整个不再被调用。而 §3.3 新增的「非 OpenAI 入站 → -OpenAI 上游」三个反向方向,把原本归 adaptor 的路径整片接管走了。 - -### 回归 A:Anthropic 兼容端点渠道的 Claude 入站双向断链(严重) - -ali / zhipu / deepseek / moonshot / volcengine / minimax 这 6 家主协议是 OpenAI, -但对 `RelayModeClaudeMessages` **另挂独立的 Anthropic 兼容端点** -(`/anthropic/v1/messages`、`/apps/anthropic/v1/messages`、`/api/coding/v1/messages`), -Claude 入站时上游**实际说 Claude**:请求体原样发、响应体也是 Claude -(其 `DoResponse` 正是委托给 `claude.Adaptor`)。 - -但 `helper.ProviderNativeFormat` 只按渠道类型返回单一格式(这几家 → openai), -且 `inboundMatchesChannelNative` 因此判 false 使 `canPassThrough` 也不兜底,于是: -- 请求侧:Claude 体被 relaykit 转成 OpenAI chat,POST 到 Anthropic 端点 → 上游 400; -- 响应侧:返回的 Claude 响应体被当 OpenAI 解析 → 转换失败。 - -**修复**:新增 `constant.HasNativeClaudeEndpoint(providerType)`,在 -`relaykit_bridge.EffectiveUpstreamFormat` 与 `handler.inboundMatchesChannelNative` -两处叠加判定 —— Claude 入站 + 该供应商 ⇒ 有效上游格式 = Claude ⇒ 同格式、矩阵返回空串 -⇒ 不转换,回到 adaptor / 直连原路径。 - -> 登记判据:`GetRequestURL` 对 `ClaudeMessages` 返回了与 chat 端点**不同**的地址。 -> 共用同一端点的(aws / baidu_v2 / mistral / openai / xai / xunfei)上游只说 OpenAI, -> 不属于本集合,Claude 入站仍须转换。新增此类供应商时必须同步登记。 - -### 回归 B:5 个供应商的私有请求后处理被绕过 - -xai / baidu_v2 / zhipu / ali / deepseek 在格式转换之外还有私有请求适配, -relaykit 只补了通用的 `model` / `stream_options` / `reasoning_effort`: - -| provider | 丢失的后处理 | 后果 | -|---|---|---| -| xai | `-search`/`-high`/`-low` 后缀剥离 + `search_parameters`/`reasoning_effort` | 未配映射时 `grok-4-search` 原样发上游 → 400 | -| baidu_v2 | `-search` 后缀剥离 + `web_search` 注入 | 同上 | -| zhipu | `applyGLMCompatibility`(top_p 裁剪、图片前缀剥离)+ 思考参数方言 | GLM 参数越界、思考失效 | -| ali | DashScope 按上游模型剥离 `thinking_budget` | 上游拒绝不支持该参数的模型 | -| deepseek | `thinking` 对象(V3 `type` + R1 `reasoning_effort:"none"`) | `-thinking`/`-nothinking` 静默失效 | - -模型名那条最实际:未配映射时 `UpstreamModel = row.ModelName` -(`internal/dispatchadapter/catalog.go:443`)**带着后缀**,relaykit 无条件写 -`GetUpstreamModelName()`,而 adaptor 本来会剥掉后缀再写回。 - -**修复**:新增可选能力接口 `common.RequestPostProcessor` -(`PostProcessConvertedRequest(ctx, info, body) ([]byte, error)`), -`handler.convertRequestBody` **仅在 relaykit 接管时**调用(走 adaptor 那条路径的 -`ConvertRequest` 内部已含同一段,重复执行会双写)。5 家各把自己 `ConvertRequest` -的尾段抽成 `postProcessRequest`,与钩子共用同一实现,杜绝两份漂移。 - -已核对**不受影响**:minimax / moonshot 的 Claude 入站分支只做模型名映射(relaykit 已覆盖); -其余约 15 个 OpenAI 兼容 provider 的 `ConvertRequest` 无格式外后处理。 - ---- - -## 七、legacy 删除完成记录(2026-09-10 已全部落地) - -净删约 **6400 行**(git diff --stat:+530 / -6907)。逐项: - -| 项 | 结果 | -|----|------| -| `openai/converter.go` o2r 段(`ConvertOpenAIToResponses` + c2r 助手) | ✅ 删除(chat→Responses 请求转换由 relaykit `ConverterOpenAIChatToOpenAIResponses` 接管,handler 桥注入 reasoning_effort) | -| `openai/converter.go` c2o/g2o/r2o(`ConvertClaudeToOpenAI` 等) | ⚠️ **保留**:Ollama 渠道的 Claude/Gemini/Responses 入站走 `ConvertToOpenAI`→OpenAI→Ollama 链(矩阵未注册 Claude→Ollama 方向,属「未迁方向保留」设计) | -| `openai/responses.go` `handleResponsesInboundStream`/`NonStream`(约 600 行) | ✅ 改为 relaykit 桥接壳(**这是迁移漏掉的接线**——转换器早注册了但 openai adaptor 一直在调 legacy 实现);孤儿助手 `chatCompletionToResponsesResponse`/`extractStreamEmbeddedError` 删除,`extractResponsesRequestEcho` 保留(`BuildResponsesObjectMap` 导出依赖) | -| `claude/converter.go`(446 行)+ `converter_test.go` | ✅ 整文件删除(o2c 请求侧全套) | -| `gemini/converter.go`(686 行)+ `converter_test.go` | ✅ 整文件删除(o2g 请求侧全套) | -| 18 个 adaptor 的 `ConvertToOpenAI` 守卫 | ✅ 删 17 个(死代码:非 OpenAI 入站→OpenAI 上游已全由矩阵接管);**ollama 保留**(见上) | -| claude/gemini/openai adaptor 的入站格式 switch | ✅ 删除,改为同格式路径 + **hard-fail 守卫**(矩阵意外未接管时显式报错,不静默错格式透传) | -| `deepseek` `convertResponsesToChatForDeepSeek` | ✅ 删除,分支改 hard-fail(relaykit Responses→OpenAI + PostProcess 钩子接管) | -| stale 注释(passthrough/bridge 头注释中的旧函数名) | ✅ 更新为 relaykit 表述 | - -**删除时补的接线**(不做这两步直接删会断链): -1. **openai adaptor responses 入站桥接**:迁移只注册了转换器、没改 adaptor 调用点。已把两个 inbound 处理器改为调 `TryConvertStream/ResponseViaRelaykit`(非 200 透传语义保留,计费仍取上游原始 chat 体口径)。 -2. **Responses 客户端流错误收尾**:桥接层在转换器以错误退出且未产出任何终止态事件时补发 `response.failed`(否则 200 SSE 静默结束、codex 等客户端挂起);转换器已自行收尾的(如 Gemini SAFETY 发 completed 拒答)不追加第二终止事件。相关测试已按新契约改写。 - -**验证**:`go build ./...` ✅、`go vet ./relay/... ./internal/...` ✅、relaykit 模块全绿 ✅、 -relay 测试仅剩 §六.7 既有失败 ✅、触及文件 gofmt 干净 ✅。 - -## 六、重要设计约束备忘(重启后容易忘) - -1. **格式名两侧不同**:宿主 `constant.RelayFormatResponses = "responses"`,relaykit `types.RelayFormatOpenAIResponses = "openai_responses"`。 - 跨模块必须走 `relaykit_bridge.KitFormat()`,**不能直接强转**(其余格式字符串值相同可强转)。 -2. **计费 usage 一律取上游原始口径**,不从转换后的响应体取。OpenAI 上游方向需置 - `CacheIncludedInPrompt = true`(prompt 含 cached,计费按明细扣减,避免双重计费)。 -3. **转换器只能依赖 `convmeta.Meta` 接口**,禁止 import 宿主 `relay/...` 或 GoFrame。 - 需要宿主状态时走能力接口(如 `ResponsesStash`)+ 类型断言,断言失败静默降级。 -4. **`relay/dto` 是 `relaykit/dto` 的类型别名**(`relaykit_types.go` + `openai_responses.go`),两侧同型,边界零转换。 -5. **转换器 ID 元数据方法(ID/From/To/Quality)与注册用的配对 spec ID 不是一回事**: - 注册以 `RegisterTextConverter` 传入的 spec.ID 为准,元数据方法只是自描述。 -6. relaykit 是独立 module:测试要 `cd relaykit && GOWORK=off go test ./...`; - 宿主构建要 `GOTOOLCHAIN=go1.25.8`(否则 stdlib 重编译失败)。 -7. `relay/helper` 的 `TestSafeUpstreamErrorMessage_*` 失败是**既有问题**(中英文案期望不一致), - 与本次迁移无关,不要误当回归去修。 -8. **矩阵按格式裁决、与供应商无关**——这是本次两个回归的共同根因。新增/修改方向时必须自问: - ① 该供应商对这个 relay mode 是否另有原生端点(→ `constant.HasNativeClaudeEndpoint` 类判定)? - ② 该供应商的 `ConvertRequest` 里除格式转换外是否还有私有适配 - (→ 实现 `common.RequestPostProcessor`)?漏掉任一条都是**静默**降级或断链。 -9. **`ProviderNativeFormat` 是「按渠道类型的单一格式」,不是全部真相**:多协议供应商的 - 有效上游格式取决于 (供应商, relay mode),权威计算在 `relaykit_bridge.EffectiveUpstreamFormat`, - `handler.inboundMatchesChannelNative`(直连判定)必须与它保持同步,否则直连与转换两条路会对同一 - 请求给出不同格式结论。 -10. **provider 后处理钩子只在 relaykit 路径调用**:adaptor 路径的 `ConvertRequest` 内部已含同一段, - 两处都调会双写参数。5 家的实现均把尾段抽成 `postProcessRequest` 与钩子共用,改动时不要只改一处。 -11. **跨原生请求侧优先直连,不要新增中枢步骤链**:Claude→Gemini 已由 - `internal/claude_gemini/ClaudeToGeminiRequestConverter` 直连。链式(`StepConverters`)会让 - 中间格式承载不了的字段静默消失——实测丢 thinking 签名、精确 thinking budget(5000 被放大成 8192)、 - `top_k`、`tool_use.id` 四项,见 `claude_to_gemini_request_test.go` 的 - `TestClaudeToGeminiRequest_PreservesWhatChainLoses`。新增跨原生方向时先写直连转换器, - 链式只作过渡手段。Gemini 的 JSON Schema 关键字白名单在 `internal/shared.CleanGeminiToolParams`, - OpenAI→Gemini 与 Claude→Gemini 两条路径共用一处,改白名单是两边同时生效。 - ---- - -## 八、模型名后缀(虚拟模型)机制移除(2026-09-10) - -经用量核实无任何带后缀模型(`-thinking`/`-nothinking`/`-none`/`-minimal`/`-low`/`-medium`/ -`-high`/`-xhigh`/`-max`/`-search`)在用,整套「模型名后缀 → 虚拟模型」机制作为技术债务移除。 -思考/搜索能力此后一律由**客户端请求参数**表达(`thinking` 对象、`reasoning_effort`、 -`reasoning.effort` 等),网关只做协议转换不做能力注入。 - -### 删除清单 - -**宿主侧:** -- `relay/helper/thinking.go`(`ParseThinkingSuffix` + `ThinkingInfo`)整文件删 -- `resolveRelayModel` 简化为纯目录校验(不再「字面优先 + 剥后缀回退」两段查找) -- `RelayInfo` 删 `ThinkingEnabled`/`ThinkingDisabled`/`ReasoningEffort` 三字段 - 及 `Get/SetReasoningEffort`(convmeta.Meta 相应方法一并删,本就零调用方) -- 各注入器删除:claude `injectClaudeThinking/Effort`、gemini `injectGeminiThinking`、 - openai `injectReasoningEffort/injectResponsesReasoning`、deepseek 三个 inject* + - `isDeepSeekV4Model`、zhipu `injectThinkingParams` -- `canPassThrough` 删 thinking 后缀排除条件;handler 桥删两处 effort 注入(stream_options 保留) -- xai/baidu_v2 的 `-search`/`-high`/`-low` 剥离删除,两家 + deepseek 的 - `RequestPostProcessor` 钩子实现删除(剩余职责 relaykit 已覆盖);**钩子接口保留**, - 现存实现方仅 zhipu(GLM 参数兼容)与 ali(DashScope 参数裁剪) - -**relaykit 侧:** -- `internal/shared/thinking_adapter.go`、`reasoning/` 包整体删除 -- `convmeta.Options` 删 `PreserveThinkingSuffix`;Claude/Gemini Options 删 - `ThinkingAdapter*` 字段(宿主侧写死 TODO 的配置一并清) -- oai_chat 请求转换器不再解析上游模型名后缀 - -### 保留(勿误删) - -- **客户端参数转换线**:`c2oConvertThinkingToReasoningEffort` / `g2oConvertThinkingConfig` - (Claude thinking 对象 / Gemini thinkingConfig → chat `reasoning_effort` 字段)—— - 这是协议转换不是后缀注入,宿主 converter.go 与 relaykit oai_chat 各一份 -- `bil_usage_logs.reasoning_effort` 列与 `UsageRecord.ReasoningEffort` 字段保留 - (dao 生成 + 历史数据),此后恒为空串 -- `RelayInfo.BaseModelName` 字段保留(responses 路由记录在用),现恒等于 OriginModelName - -### 行为变化 - -- 请求带旧后缀名(如 `gpt-4o-thinking`)→ 目录查不到 → **404 model not found** - (原为剥后缀回退命中 + 注入思考参数) -- 名字本身含 `-max` 等字样的真实目录模型(qwen-max)不受影响(本就字面优先) diff --git a/docs/screenshot/tenant_usage_detail.png b/docs/screenshot/tenant_usage_detail.png deleted file mode 100644 index e4865075b2103bf6128ceaa1940ba3f8dcab25bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167521 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 L