Skip to content

集成 CLIProxyAPI,支持 CLI OAuth 上游 #142

@g1331

Description

@g1331

背景

AutoRouter 当前已经具备多上游路由、API Key 权限、请求日志、计费和模型规则能力,但上游仍以普通 HTTP API Key 为主。CLIProxyAPI 已经提供 Codex / Claude Code / Gemini CLI 等 OAuth 账号接入能力,包括 OAuth 登录、token 持久化、自动刷新、多账号调度、配额冷却、模型别名和管理 API。

本事项用于在下个大版本中集成 CLIProxyAPI,让 AutoRouter 可以把 CLI OAuth 能力作为上游使用。该事项优先级高于多用户 / 多账户自助门户能力;多用户能力后移到下下个大版本。

目标

  1. AutoRouter 能将 CLIProxyAPI 作为受管 sidecar 或外部服务接入。
  2. AutoRouter 能创建 Codex OAuth、Claude OAuth、Gemini OAuth 类型的上游。
  3. OAuth 账号集合可以作为一个 AutoRouter 上游,由 CLIProxyAPI 在内部调度账号。
  4. 单个 OAuth 账号也可以作为一个 AutoRouter 上游,通过 CLIProxyAPI 的账号 prefix 和 AutoRouter 模型规则实现固定账号路由。
  5. AutoRouter 管理端提供 CLI OAuth 管理入口,调用 CLIProxyAPI management API 管理账号。

推荐工程方案

采用托管 CLIProxyAPI sidecar,而不是在 AutoRouter 内部重写 OAuth 协议和 CLI 适配层。

职责划分:

  • AutoRouter 负责 API Key、上游授权、路由选择、请求日志、计费、管理端封装和上游建模。
  • CLIProxyAPI 负责 OAuth 登录、token 文件、自动刷新、Codex / Claude / Gemini 协议适配、多账号选择、账号冷却和模型状态。

推荐请求形态:

客户端 -> AutoRouter -> CLIProxyAPI -> Codex / Claude / Gemini OAuth 账号

建议拆分

  1. 增加 CLIProxyAPI 连接配置:base URL、client API key、management URL、management secret、运行模式。
  2. 增加 CLI OAuth Proxy 上游预设:
    • Codex OAuth 池:http://cliproxyapi:8317/v1,能力为 codex_cli_responses / openai_responses
    • Claude OAuth 池:http://cliproxyapi:8317/api/provider/anthropic/v1,能力为 claude_code_messages / anthropic_messages
    • Gemini OAuth 池:http://cliproxyapi:8317/api/provider/google,能力为 gemini_native_generate
  3. 增加 CLI OAuth 管理页,调用 CLIProxyAPI management API:
    • GET /v0/management/auth-files
    • GET /v0/management/auth-files/models?name=...
    • PATCH /v0/management/auth-files/status
    • PATCH /v0/management/auth-files/fields
    • GET /v0/management/codex-auth-url
    • GET /v0/management/anthropic-auth-url
    • GET /v0/management/gemini-cli-auth-url
    • GET /v0/management/get-auth-status?state=...
  4. 增加“一键创建上游”:按服务商创建 Codex / Claude / Gemini OAuth 池上游。
  5. 增加“单账号创建上游”:自动为 CPA auth 设置 prefix,并生成 AutoRouter 模型规则。
  6. 增加 CLI OAuth 登录与网络代理配置:
    • AutoRouter 管理端提供 Codex / Claude / Gemini OAuth 登录入口,调用 CLIProxyAPI management API 发起 OAuth / device code 流程。
    • 登录过程中展示授权 URL、device code、过期时间和轮询状态,并在登录完成后刷新 OAuth 账号列表。
    • 支持配置 CLIProxyAPI 出站代理地址,用于 CPA 访问 Codex / Claude / Gemini 登录与模型 API,支持 http://https://socks5:// 等常见代理格式。
    • UI 需要明确区分“CLIProxyAPI 服务地址”(AutoRouter -> CPA)和“OAuth 出站代理”(CPA -> 上游 OAuth / 模型服务)。
    • 支持通过 management API 将代理配置写入 CPA 配置;托管 sidecar 模式下应同步注入环境变量或持久化配置。
    • 代理配置应支持连通性测试,并在失败时给出可理解的错误提示。
  7. 增加部署支持:Docker Compose sidecar、本机子进程检测、CPA auth-dir 持久化、CPA config 持久化。

验收条件

  1. 可以连接一个已运行的 CLIProxyAPI,并通过 AutoRouter 完成连通性检测。
  2. 可以在 AutoRouter 中创建 Codex / Claude / Gemini OAuth 池上游,并成功转发对应协议请求。
  3. 可以在 AutoRouter 管理端查看 CLIProxyAPI OAuth 账号、状态和模型数量。
  4. 可以从 AutoRouter 管理端发起 Codex / Claude / Gemini OAuth 登录,并轮询登录状态。
  5. 可以在 AutoRouter 管理端配置 CLIProxyAPI 出站代理,并通过该代理完成 OAuth 登录和模型请求连通性测试。
  6. 可以启停某个 OAuth 账号,并设置 prefix、代理、优先级和备注。
  7. 可以把某个 OAuth 账号固定映射成一个 AutoRouter 上游。
  8. CLIProxyAPI management secret 和 client API key 以加密方式保存。
  9. OAuth token 明文不进入 AutoRouter 数据库,仍由 CLIProxyAPI auth-dir 持久化。
  10. 文档说明外部 CPA 与托管 CPA 两种部署方式,并说明不同网络环境下的出站代理配置方式。

版本安排

优先级:High

目标版本:下个大版本

备注:该事项优先于多用户 / 自助密钥管理能力。多用户 / 自助密钥管理事项后移到下下个大版本。

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature新功能请求

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions