这是一个功能完备的Warp AI API代理服务,它不仅提供了与OpenAI Chat Completions API的兼容性,还集成了一套全自动的账号注册、维护和分配系统。项目的设计目标是提供一个稳定、高效且易于管理的Warp AI接口。
该项目的设计思路和部分实现得益于以下优秀项目:
- Protobuf协议逆向基础: libaxuan/Warp2Api
- 账号池与注册机思路: dundunduan/warp2api
- OpenAI API 兼容: 完全兼容 OpenAI Chat Completions API 格式,可无缝对接现有生态。
- 全自动账号池:
- 自动注册: 通过Outlook API自动购买邮箱并注册Warp账号。
- 自动维护: 定期检查账号状态,自动刷新即将过期的Token。
- 智能分配: 通过独立的API服务,安全、高效地分配和回收账号。
- 统一启动与管理: 使用
main.py一键启动所有服务,也支持为调试目的单独启动某个服务。 - 中心化配置: 所有配置项(端口、API密钥、数据库路径等)均在
config.py中统一管理,清晰明了。 - 高性能架构:
- Protobuf 通信: 底层与Warp服务通过高效的Protobuf协议进行通信。
- 多进程模型: 每个核心服务(API、账号池、维护等)都运行在独立的进程中,互不干扰。
- 流式响应 (Streaming): 完全支持OpenAI的SSE流式响应格式。
- WebSocket 监控: 内置WebSocket端点,用于实时监控Protobuf通信数据包。
项目采用扁平化结构,核心服务均在主目录下,方便理解和修改。
/
├── main.py # 🚀 统一服务启动器
├── config.py # ⚙️ 全局配置文件
│
├── server.py # 🔌 Protobuf 核心服务 (端口: 8000)
├── openai_compat.py # 🤖 OpenAI 兼容API服务 (端口: 8010)
│
├── pool_service.py # 💧 账号池API服务 (端口: 8019)
├── pool_maintenance.py # 🛠️ 账号池维护与Token刷新服务
├── warp_register.py # 📧 Warp 账号自动注册服务
│
├── warp_accounts.db # 🗃️ 存储Warp账号的SQLite数据库
├── requirements.txt # 🐍 Python 依赖
└── README.md # 📄 项目文档
git clone https://github.com/xzzvsxd/Warp2Api_Plus
cd Warp2Api_Plus-master推荐使用 uv 或 pip 安装 requirements.txt 中的依赖。
# 使用 uv (推荐)
uv pip install -r requirements.txt
# 或者使用 pip
pip install -r requirements.txt这是最关键的一步。打开 config.py 文件并填写必要的配置信息。
必须配置的选项:
OUTLOOK_BASE_URL: 你的Outlook邮箱API购买地址的基础URL。OUTLOOK_API_CONFIG:app_id: 你的Outlook API App ID。app_key: 你的Outlook API App Key。
可选配置(通常保持默认即可):
- 各个服务的端口号(
SERVER_PORT,OPENAI_COMPAT_PORT,POOL_SERVICE_PORT)。 - 代理地址
PROXY_URL。 - 账号池大小
MIN_POOL_SIZE,MAX_POOL_SIZE。 - 目标注册账号数
TARGET_ACCOUNTS。
我们提供了统一的启动脚本 main.py,极大简化了服务的管理和调试。
在终端中运行以下命令,即可启动全部五个核心服务:
python main.py all脚本会为每个服务创建一个独立的进程,并打印出每个服务的启动信息和进程ID。你可以通过 Ctrl+C 来优雅地关闭所有服务。
如果你想单独调试某个服务,可以使用 main.py 启动它。这对于问题排查非常有用。
# 仅启动 Protobuf 主服务
python main.py server
# 仅启动 OpenAI 兼容API
python main.py openai
# 仅启动账号池API服务
python main.py pool_service
# 仅启动账号池维护脚本
python main.py pool_maintenance
# 仅启动账号注册服务
python main.py register服务启动后,你可以通过两个主要的API端点与系统交互。
你可以使用任何支持OpenAI API的客户端来访问此接口。
- Base URL:
http://127.0.0.1:8010/v1 - API Key: 无需提供。你可以填写任意字符串(例如 "dummy"),服务器不会进行验证。
import openai
client = openai.OpenAI(
base_url="http://127.0.0.1:8010/v1",
api_key="not-needed"
)
response = client.chat.completions.create(
model="gemini-2.5-pro", # 或者其他Warp支持的模型
messages=[
{"role": "user", "content": "你好,请介绍一下你自己"}
],
stream=True
)
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")curl -X POST http://127.0.0.1:8010/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "claude-4-sonnet",
"messages": [
{"role": "user", "content": "解释量子计算的基本原理"}
],
"stream": true
}'你可以直接与账号池服务交互来监控其状态。
curl http://localhost:8019/api/status | jq这将返回一个JSON对象,包含总账号数、可用账号数、锁定账号数等信息。
curl http://localhost:8019/api/health系统由五个协同工作的独立服务进程组成:
-
账号注册服务 (
warp_register.py): 作为一个生产者,它不断地通过Outlook API获取新邮箱,并自动完成Warp账号的注册流程,然后将成功的账号存入warp_accounts.db数据库。 -
账号池维护服务 (
pool_maintenance.py): 这是一个后台守护进程,定期扫描数据库中的所有账号,检查其Token的有效性。当Token即将过期时,它会自动执行刷新操作,确保账号池中的账号始终保持可用状态。 -
账号池API服务 (
pool_service.py): 这是一个面向内部的API服务,负责管理对数据库中账号的访问。当其他服务需要一个Warp账号时,会向它请求。它会从池中分配一个当前未被使用的账号,并将其标记为“锁定”状态,以防止并发冲突。使用完毕后,账号会被释放回池中。 -
Protobuf主服务 (
server.py): 这是与Warp官方服务器直接通信的核心桥梁。它接收内部请求,使用Protobuf协议对数据进行编码,然后发送给Warp。同样,它也负责解码从Warp返回的Protobuf数据。 -
OpenAI兼容API服务 (
openai_compat.py): 这是暴露给最终用户的服务。它接收一个标准格式的OpenAI API请求,然后向账号池API服务申请一个可用的Warp账号。获取到账号凭证后,它将请求转发给Protobuf主服务进行处理,最终将Warp的响应转换成OpenAI格式返回给用户。
这个多进程、微服务化的架构确保了各个模块职责单一、高内聚、低耦合,提高了系统的健壮性和可维护性。
- 服务无法启动:
- 检查
config.py中的端口是否被其他程序占用。 - 查看终端日志,了解详细的错误信息。
- 检查
- 账号注册失败:
- 确保
config.py中的Outlook API信息 (app_id,app_key,base_url) 正确无误且账户有余额。 - 检查
PROXY_URL是否可用,注册过程依赖代理。
- 确保
- 账号池为空:
- 首次启动时,请耐心等待
warp_register.py服务完成第一批账号的注册。 - 查看
warp_register.py进程的日志,确认注册流程是否正常。
- 首次启动时,请耐心等待
- API请求失败:
- 确保
all服务都已正常启动。 - 检查
openai_compat.py和server.py的日志,定位请求失败的具体环节。
- 确保