# RainyToken 反代网关开发路线图(PROXY-ROADMAP) > 分支:dev-proxy > 目标:在雨晴Token App 内嵌一个多提供商 OpenAI 兼容反代网关,支持双区、签到、反代、多账号池,并尽量覆盖 agent2api / fleet-kit 等开源项目已支持的平台。 --- ## 1. 最终目标 App 内启动一个本地 HTTP 服务(默认 `127.0.0.1:8787`),对外暴露: - `GET /v1/models` - `POST /v1/chat/completions`(OpenAI 兼容,流式/非流式) - `POST /v1/responses`(Codex Responses API) - `POST /v1/messages`(Anthropic Messages,Claude Code 直连) 请求按「模型名 → Provider + Region + 账号」路由,复用现有 `CredentialRepository` / `SecureStorage` / 各 Repository。 ## 2. 架构 ``` LocalProxyServer (127.0.0.1:8787) │ ├── /v1/chat/completions ├── /v1/responses ├── /v1/messages └── /v1/models │ ▼ ProviderRouter(模型名 → Provider + Region + Account) │ ┌──────┼──────────┬─────────────┬──────────────┐ ▼ ▼ ▼ ▼ ▼ WBAdpt TraeAdpt QoderAdpt RaccoonAdpt OfficialPassthrough (CN/INTL)(CN/INTL)(CN) (CN) (DeepSeek/Gemini/Kimi…) │ ▼ AccountPool(多账号轮询 + 熔断冷却 + 会话粘性) │ ▼ StreamNormalizer(各家上游 SSE 分片 → 标准 OpenAI/Anthropic 流) ``` ## 3. 已编码骨架(data/proxy) - `ProviderKind.kt`:全部计划支持的 Provider 枚举 - `ProviderRegion.kt`:CN / INTL - `ProxyModels.kt`:统一 Chat 请求 / 响应 / 模型 / 用量 - `ProviderAdapter.kt`:统一 Provider 适配器接口 - `AccountPool.kt`:账号池骨架(round-robin,后续加权) - `RegionRouter.kt`:模型 → Provider/Region 路由骨架 - `LocalProxyServer.kt`:本地服务接口 + 配置 ## 4. 里程碑 ### M0:地基(当前) - 新增 `data/proxy` 骨架,能编译 - 新增本路线图 - 验收:`./gradlew :app:assembleDebug` 绿 ### M1:先打通“已经有凭据体系”的三家 - WorkBuddy 国内版 Chat 适配器(参考 workbuddy2api / workbuddy-gateway) - Trae CN Chat 适配器(参考 Trae2api-cn / trae2api) - Sub2API 透传(本身是 OpenAI 兼容协议) - 本地 HTTP 服务可用,任意 OpenAI 客户端可连 - 验收:真机 + 真凭据,WorkBuddy / Trae / Sub2API 各能回复一条消息 ### M2:双区 + 多账号治理 - WorkBuddy 国际版、Trae INTL/Solo/Work 适配器 - RegionRouter 按模型家族自动选区(glm/deepseek/kimi → CN,gpt/claude/gemini → INTL) - AccountPool 加权轮询 + 429 熔断 + 会话粘性 - 验收:国内/国际账号混挂,同模型自动走对应区,单号故障自动换号 ### M3:覆盖 agent2api 全家桶 - Qoder CN、小浣熊、CatPaw、AutoClaw CN/INTL、Cline、Accio CN/INTL、ZCode CN/INTL、CodeArts、Loomy - 每家一个 Adapter,抄 agent2api `providers/` 目录 - 验收:每家至少能在有凭据的情况下完成一次对话;签到/余额尽量复用现有页 ### M4:长尾 + 官方直连 - 灵犀、团结AI、TokenDance、Kimi Code、MiniMax、Gemini - 官方 OpenAI 兼容平台统一走 `OfficialPassthrough`(配置 base_url + key) - 设置页新增「代理网关」管理:端口、启动/停止、API Key、运行状态 - 验收:所有支持平台可在 UI 中启用/禁用 ## 5. Provider 支持矩阵(规划) | Provider | 区域 | Chat | 签到 | 参考实现 | |---|---|---|---|---| | WorkBuddy | CN / INTL | ✅ | CN 有 | agent2api / fleet-kit / proxy-hub | | Trae / SOLO / Work | CN / INTL | ✅ | CN 有 | agent2api / proxy-hub | | Qoder | CN | ✅ | CN 有 | agent2api / proxy-hub | | 小浣熊 | CN | ✅ | 桌面登录积分 | agent2api / fleet-kit | | CatPaw | CN | ✅ | - | agent2api | | AutoClaw | CN / INTL | ✅ | CN 有 | agent2api | | Cline | INTL | ✅ | - | agent2api | | Accio | CN / INTL | ✅ | - | agent2api | | ZCode | CN / INTL | ✅ | - | agent2api | | CodeArts | CN | ✅ | 每日福利 | agent2api | | Loomy | CN | ✅ | 每日积分 | agent2api / fleet-kit | | 灵犀 / 团结AI / TokenDance | CN | ✅ | 待确认 | fleet-kit | | Kimi Code / MiniMax / Gemini | INTL/CN | ✅ | - | 官方 API 透传 | ## 6. 关键风险与对策 1. **上游协议会变**:所有解析做防御式多候选扫描(项目现有惯例);接口变动时快速适配。 2. **设备指纹/风控**:Trae 签到 9074、WorkBuddy 设备指纹;沿用现有 `checkinDeviceId` / `derive_id` 思路。 3. **Token 单次轮换**:WorkBuddy refresh 单次消费,沿用 `RefreshWriteSession` 落库再用的机制。 4. **SSE 分片差异**:各家流式事件格式不同,用统一 `StreamNormalizer` 归一。 5. **Android 后台**:若只给本机内客户端用,App 前台运行即可;若希望后台常驻,需前台服务 + 通知。 ## 7. 参考仓库 - agent2api:https://github.com/aimod-cc/agent2api - workbuddy2api-hub:https://github.com/ardeyouxipianyi/workbuddy2api-hub - workbuddy-gateway:https://github.com/CangShui/workbuddy-gateway - workbuddy2api-panel:https://github.com/linguo2625469/workbuddy2api-panel - Trae2api-cn:https://github.com/autumnsentiment/Trae2api-cn - trae2api (Go):https://github.com/JeffHu0912/trae2api - proxy-hub:https://github.com/1416277987/proxy-hub - fleet-kit:https://github.com/cpufreestyle/fleet-kit