File size: 8,609 Bytes
3941d66
 
 
 
 
 
 
 
 
 
8551878
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
---
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`的日志,定位请求失败的具体环节。