250 lines
5.7 KiB
Markdown
250 lines
5.7 KiB
Markdown
# Standalone OpenAI Pool CLI
|
||
|
||
一个纯 CLI 版的 OpenAI Pool Orchestrator,可直接从 `/root/standalone_cli` 运行,不依赖原仓库路径。
|
||
|
||
## 目录结构
|
||
|
||
```text
|
||
/root/standalone_cli/
|
||
|- main.py # 主 CLI 入口
|
||
|- run.py # 便捷启动脚本
|
||
|- support.py # 配置/同步/状态辅助逻辑
|
||
|- requirements.txt # 运行依赖
|
||
|- README.md # 使用说明
|
||
|- config/
|
||
| `- sync_config.example.json # 配置模板
|
||
|- data/
|
||
| |- sync_config.json # 实际运行配置
|
||
| |- state.json # 成功/失败统计
|
||
| `- tokens/ # 本地 token 文件
|
||
`- openai_pool_orchestrator/
|
||
|- register.py # 注册核心逻辑
|
||
|- pool_maintainer.py # CPA/Sub2Api 维护逻辑
|
||
`- mail_providers.py # 邮箱提供商适配
|
||
```
|
||
|
||
## 安装依赖
|
||
|
||
```bash
|
||
cd /root/standalone_cli
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
如果你想用可编辑安装:
|
||
|
||
```bash
|
||
cd /root/standalone_cli
|
||
pip install -e .
|
||
openai-pool-standalone --help
|
||
```
|
||
|
||
## 初始化配置
|
||
|
||
```bash
|
||
python3 /root/standalone_cli/main.py config init
|
||
```
|
||
|
||
如果你希望像向导一样逐步填写配置,直接用:
|
||
|
||
```bash
|
||
python3 /root/standalone_cli/run.py config setup
|
||
```
|
||
|
||
`config init` 只是初始化配置文件;`config setup` 才是交互式配置引导。
|
||
|
||
`config setup` 现在也支持交互式填写 PostgreSQL 入库配置。
|
||
|
||
初始化后请编辑:
|
||
|
||
- `/root/standalone_cli/data/sync_config.json`
|
||
|
||
至少按需填写:
|
||
|
||
- `proxy`
|
||
- `cpa_base_url`
|
||
- `cpa_token`
|
||
- `base_url`
|
||
- `bearer_token` 或 `email` + `password`
|
||
- 邮箱提供商配置 `mail_provider_configs`
|
||
|
||
如果你希望注册成功后把邮箱、GPT 密码、邮箱密码、姓名、生日等信息写入 PostgreSQL,还需要填写:
|
||
|
||
- `db_enabled`
|
||
- `db_host`
|
||
- `db_port`
|
||
- `db_name`
|
||
- `db_user`
|
||
- `db_password`
|
||
- `db_table`
|
||
- `db_source`
|
||
|
||
当前你这边实际使用的数据库名是:`mail_accounts_db`
|
||
|
||
当前这台机器实测可用的代理是:
|
||
|
||
- `http://127.0.0.1:17891`
|
||
|
||
说明:这个 `proxy` 用于 OpenAI 注册流程,邮箱服务接口默认直连,不走代理。
|
||
|
||
如果你在 DuckMail 配置里填写了 `domain`,程序会固定使用这个域名创建邮箱,不会随机切换到其他 DuckMail 域名。
|
||
|
||
模板里的 URL 现在使用了更明确的占位值:
|
||
|
||
- `https://your-cpa.example.com`
|
||
- `https://your-sub2api.example.com`
|
||
|
||
留空的字段表示需要你自行填写真实值,例如:
|
||
|
||
- `cpa_token`
|
||
- `bearer_token`
|
||
- `password`
|
||
- `proxy_pool_api_key`
|
||
|
||
## 常用命令
|
||
|
||
### 查看帮助
|
||
|
||
```bash
|
||
python3 /root/standalone_cli/main.py --help
|
||
python3 /root/standalone_cli/run.py --help
|
||
```
|
||
|
||
### 查看当前配置
|
||
|
||
```bash
|
||
python3 /root/standalone_cli/main.py --json config show
|
||
```
|
||
|
||
### 单次注册
|
||
|
||
```bash
|
||
python3 /root/standalone_cli/main.py register --once
|
||
```
|
||
|
||
### 循环注册
|
||
|
||
```bash
|
||
python3 /root/standalone_cli/main.py register --sleep-min 5 --sleep-max 30
|
||
```
|
||
|
||
### 指定代理注册
|
||
|
||
```bash
|
||
python3 /root/standalone_cli/main.py register --proxy http://127.0.0.1:7897 --once
|
||
```
|
||
|
||
如果你直接使用当前机器的代理,建议改成:
|
||
|
||
```bash
|
||
python3 /root/standalone_cli/main.py register --proxy http://127.0.0.1:17891 --once
|
||
```
|
||
|
||
### 查看本地 token
|
||
|
||
```bash
|
||
python3 /root/standalone_cli/main.py tokens --limit 20
|
||
```
|
||
|
||
### CPA 维护
|
||
|
||
```bash
|
||
python3 /root/standalone_cli/main.py cpa status
|
||
python3 /root/standalone_cli/main.py cpa check
|
||
python3 /root/standalone_cli/main.py cpa maintain
|
||
python3 /root/standalone_cli/main.py cpa upload-all
|
||
```
|
||
|
||
### Sub2Api 维护
|
||
|
||
```bash
|
||
python3 /root/standalone_cli/main.py sub2api status
|
||
python3 /root/standalone_cli/main.py sub2api check
|
||
python3 /root/standalone_cli/main.py sub2api sync-all
|
||
python3 /root/standalone_cli/main.py sub2api maintain
|
||
python3 /root/standalone_cli/main.py sub2api dedupe --apply
|
||
```
|
||
|
||
### 统计信息
|
||
|
||
```bash
|
||
python3 /root/standalone_cli/main.py stats
|
||
```
|
||
|
||
## 运行方式
|
||
|
||
两种方式等价:
|
||
|
||
```bash
|
||
python3 /root/standalone_cli/main.py --help
|
||
python3 /root/standalone_cli/run.py --help
|
||
```
|
||
|
||
其中 `python3 /root/standalone_cli/run.py` 在不带参数时会自动显示帮助,更适合首次使用。
|
||
|
||
安装为命令行后也可以这样运行:
|
||
|
||
```bash
|
||
openai-pool-standalone --help
|
||
openai-pool-standalone register --once
|
||
```
|
||
|
||
## Docker
|
||
|
||
构建镜像:
|
||
|
||
```bash
|
||
cd /root/standalone_cli
|
||
docker build -t openai-pool-standalone .
|
||
```
|
||
|
||
运行容器:
|
||
|
||
```bash
|
||
docker run --rm -it \
|
||
-v /root/standalone_cli/data:/app/data \
|
||
openai-pool-standalone config show
|
||
```
|
||
|
||
或使用 compose:
|
||
|
||
```bash
|
||
cd /root/standalone_cli
|
||
docker compose up --build
|
||
```
|
||
|
||
当前 compose 默认执行 `daemon` 常驻模式,会一直运行直到你手动停止。
|
||
|
||
在这个模式下:
|
||
|
||
- 按配置周期检查号池状态
|
||
- 号池不足且 `auto_register = true` 时自动补号
|
||
- 按 `threshold - candidates` 估算补号差值,并受 `auto_register_max_per_loop` 限制
|
||
- 号池满足阈值时不执行注册
|
||
- 按 `maintain_interval_minutes` / `sub2api_maintain_interval_minutes` 自动维护
|
||
|
||
由于当前代理是宿主机 `127.0.0.1:17891`,compose 已使用 `host` 网络模式。
|
||
|
||
常用命令:
|
||
|
||
```bash
|
||
cd /root/standalone_cli
|
||
docker compose up --build -d
|
||
docker compose logs -f
|
||
docker compose down
|
||
```
|
||
|
||
## 验证命令
|
||
|
||
```bash
|
||
python3 -m compileall /root/standalone_cli
|
||
python3 /root/standalone_cli/main.py --json config show
|
||
python3 /root/standalone_cli/main.py --json stats
|
||
python3 /root/standalone_cli/run.py --help
|
||
```
|
||
|
||
## 说明
|
||
|
||
- 这个目录现在已经包含独立的核心代码,不再依赖 `/root/openai_pool_orchestrator-main`
|
||
- 运行配置与 token 只写入 `/root/standalone_cli/data/`
|
||
- 不要把真实密钥、token、邮箱密码提交到版本库
|