warp2api / README.md
baohuixiao's picture
Upload README.md
3941d66 verified
---
title: Warp2Api Space
emoji: 🚀
colorFrom: gray
colorTo: purple
sdk: docker
pinned: false
---
# Warp AI 代理服务与账号池系统
这是一个功能完备的Warp AI API代理服务,它不仅提供了与OpenAI Chat Completions API的兼容性,还集成了一套全自动的账号注册、维护和分配系统。项目的设计目标是提供一个稳定、高效且易于管理的Warp AI接口。
该项目的设计思路和部分实现得益于以下优秀项目:
- **Protobuf协议逆向基础**: [libaxuan/Warp2Api](https://github.com/libaxuan/Warp2Api)
- **账号池与注册机思路**: [dundunduan/warp2api](https://github.com/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 # 📄 项目文档
```
## 🛠️ 安装与配置
### 1. 克隆仓库
```bash
git clone <your-repository-url>
cd <repository-name>
```
### 2. 安装依赖
推荐使用 `uv``pip` 安装 `requirements.txt` 中的依赖。
```bash
# 使用 uv (推荐)
uv pip install -r requirements.txt
# 或者使用 pip
pip install -r requirements.txt
```
### 3. 配置 `config.py`
这是最关键的一步。打开 [`config.py`](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`](main.py),极大简化了服务的管理和调试。
### 一键启动所有服务(推荐)
在终端中运行以下命令,即可启动全部五个核心服务:
```bash
python main.py all
```
脚本会为每个服务创建一个独立的进程,并打印出每个服务的启动信息和进程ID。你可以通过 `Ctrl+C` 来优雅地关闭所有服务。
### 单独启动服务(用于调试)
如果你想单独调试某个服务,可以使用 `main.py` 启动它。这对于问题排查非常有用。
```bash
# 仅启动 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 使用
服务启动后,你可以通过两个主要的API端点与系统交互。
### 1. OpenAI 兼容 API (`http://127.0.0.1:8010`)
你可以使用任何支持OpenAI API的客户端来访问此接口。
- **Base URL**: `http://127.0.0.1:8010/v1`
- **API Key**: **无需提供**。你可以填写任意字符串(例如 "dummy"),服务器不会进行验证。
#### Python 示例
```python
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 示例
```bash
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
}'
```
### 2. 账号池服务 API (`http://0.0.0.0:8019`)
你可以直接与账号池服务交互来监控其状态。
#### 查看账号池状态
```bash
curl http://localhost:8019/api/status | jq
```
这将返回一个JSON对象,包含总账号数、可用账号数、锁定账号数等信息。
#### 健康检查
```bash
curl http://localhost:8019/api/health
```
## 🏗️ 架构说明
系统由五个协同工作的独立服务进程组成:
1. **账号注册服务 (`warp_register.py`)**: 作为一个生产者,它不断地通过Outlook API获取新邮箱,并自动完成Warp账号的注册流程,然后将成功的账号存入`warp_accounts.db`数据库。
2. **账号池维护服务 (`pool_maintenance.py`)**: 这是一个后台守护进程,定期扫描数据库中的所有账号,检查其Token的有效性。当Token即将过期时,它会自动执行刷新操作,确保账号池中的账号始终保持可用状态。
3. **账号池API服务 (`pool_service.py`)**: 这是一个面向内部的API服务,负责管理对数据库中账号的访问。当其他服务需要一个Warp账号时,会向它请求。它会从池中分配一个当前未被使用的账号,并将其标记为“锁定”状态,以防止并发冲突。使用完毕后,账号会被释放回池中。
4. **Protobuf主服务 (`server.py`)**: 这是与Warp官方服务器直接通信的核心桥梁。它接收内部请求,使用Protobuf协议对数据进行编码,然后发送给Warp。同样,它也负责解码从Warp返回的Protobuf数据。
5. **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`的日志,定位请求失败的具体环节。