Skip to content

项目介绍 ​

web2api 是一个自托管的 AI 号池网关。它把账号池、请求调度、API Key 和用量统计组合成一个服务,对外提供熟悉的 OpenAI 兼容接口。

解决的问题 ​

直接对接网页端或 AI Studio 协议时,客户端需要自己处理登录态、多个账号切换、配额冷却和不同响应格式。web2api 将这些工作放到服务端:客户端只面向稳定的 /v1 协议,账号变化不会影响业务代码。

运行结构 ​

text
客户端 / OpenAI SDK
          │  Bearer sk-xxx
          ▼
      web2api 网关
      ├─ Key 校验与限流
      ├─ 模型路由与账号调度
      ├─ 用量记录
      ├─ 引擎 A:Gemini 网页号
      ├─ 引擎 B:AI Studio 号
      ├─ 订阅引擎:codex / antigravity / kiro / workbuddy
      └─ 第三方 Key:custom(base_url + api_key)
          │
      管理台 / SQLite / Redis

引擎与账号来源 ​

引擎账号来源适合场景
A:Gemini 网页Gemini 网页 Cookie 会话文本对话和兼容的轻量请求
B:AI StudioAI Studio storage-state.json多模态、Veo、更多模型能力
订阅引擎codex / antigravity / kiro / workbuddy 的授权凭据复用订阅制额度
custom任意 OpenAI 兼容上游的 Base URL + API Key接入第三方供应商

路由按「谁声明谁接」:显式配置(routing.engine_a/b_models、routing.engine_models) 优先,其次按订阅/custom 目录与引擎实时目录精确命中。命中即专属——引擎不可用时返回该引擎 的真实错误,不会换到别的引擎;多模态关键词(image / veo / lyria…)只交给引擎 B; 没有任何引擎声明该模型时返回 404 model_not_found。音乐和视频模型不能走 /v1/chat/completions(引擎 B native 除外),请使用 /v1/music/generations 与 /v1/videos。

数据和安全边界 ​

  • SQLite 保存账号、API Key 和用量明细。
  • Redis 只保存管理员登录会话和登录尝试计数。
  • 客户端 Key 使用 Authorization: Bearer <key>,管理台使用独立的管理员 JWT。
  • auth/ 和 data/ 包含敏感信息,应使用独立备份策略,不要提交到 Git。

代码入口 ​

目录作用
internal/gateway对外 /v1 网关、认证、限流和 OpenAPI 文档
internal/provider多引擎装配、调度与模型路由
internal/storeSQLite 数据访问
internal/admin管理 REST API 和管理员认证
internal/webui/admin 管理台

适合的部署方式 ​

个人或小团队可以直接运行发布包;长期运行推荐 Docker Compose,并将 data/ 和 auth/ 挂载到持久化卷。详细步骤见部署方式。

由 web2api 社区维护