将 console.x.ai 封装为 OpenAI 兼容接口的轻量网关
功能特性 · 快速开始 · 配置说明 · 接口调用 · Docker 部署 · 常见问题 · English
---ConsoleX2API 是一个面向 console.x.ai 的 OpenAI 兼容网关。它将上游 console.x.ai/v1/responses 能力转换为常见的 OpenAI 风格接口,让现有客户端、脚本和代理工具可以通过 /v1/chat/completions、/v1/responses 等接口接入。
当前版本采用 Rust + Python bridge 架构:Rust 负责网关、账号池、管理后台和协议转换;Python 仅保留一个 curl_cffi bridge,用于更接近浏览器的 TLS/HTTP 指纹请求上游。
OpenAI Client / Third-party App
|
| OpenAI-compatible /v1/*
v
Rust Axum Gateway
|
| account rotation, payload mapping, SSE adaptation
v
Python curl_cffi Bridge
|
| browser-like upstream request
v
console.x.ai /v1/responses
核心目录:
| 路径 | 说明 |
|---|---|
src/ |
Rust 网关主程序 |
scripts/curl_cffi_bridge.py |
Python 上游请求 bridge |
static/admin/ |
管理后台静态页面 |
config.defaults.toml |
默认配置 |
.env.example |
环境变量示例 |
Cargo.toml / Cargo.lock |
Rust 依赖配置 |
旧 Python FastAPI 服务已移除,项目不再通过 python -m app 或 uvicorn app.main:app 启动。
| 功能 | 状态 | 说明 |
|---|---|---|
| OpenAI Models | 支持 | GET /v1/models |
| Chat Completions | 支持 | POST /v1/chat/completions,支持流式和非流式 |
| Responses | 支持 | POST /v1/responses |
| 多账号池 | 支持 | SQLite 存储 SSO 账号,按请求轮询可用账号 |
| 账号刷新 | 支持 | 管理后台批量刷新,SSE 实时进度 |
| Tools 控制 | 支持 | 可开关 web_search / x_search |
| Reasoning 参数 | 支持 | 可配置默认 reasoning effort |
| 图片输入 | 支持 | Chat image_url 自动映射到 Responses 输入 |
| 管理后台 | 支持 | 账号导入、编辑、启停、删除、配置保存 |
| Realtime client secret | 支持 | /v1/realtime/client_secrets |
| Realtime WebSocket | 占位 | Rust 版本暂未完整代理 WebSocket |
当前上游请求模式为
console.x.ai/v1/responses。项目曾尝试grok.com新会话接口,但该路径更容易触发 Cloudflare challenge,因此默认保留原 console 请求模式。
需要安装:
- Rust 工具链
- Python 3.10+
curl_cffi
安装 Python bridge 依赖:
python -m pip install curl_cffi构建 Rust 服务:
cargo build --releaseCopy-Item .env.example .env编辑 .env,至少配置:
OPENAI_API_KEY=replace-with-your-gateway-key
ADMIN_KEY=replace-with-your-admin-key
ACCOUNTS_DB=accounts.sqlite3
GATEWAY_HOST=0.0.0.0
GATEWAY_PORT=8787
UPSTREAM_URL=https://console.x.ai/v1/responses如果上游需要代理:
UPSTREAM_PROXY=http://127.0.0.1:7899如果遇到 Cloudflare 相关问题,可配置:
UPSTREAM_CF_CLEARANCE=your-cf-clearance
UPSTREAM_CF_COOKIES=__cf_bm=xxx; other_cf_cookie=xxx
UPSTREAM_CF_USER_AGENT=Mozilla/5.0 ... Chrome/136.0.0.0 ...
UPSTREAM_IMPERSONATE=chrome136cargo run --release管理后台:
http://127.0.0.1:8787/admin
登录使用 .env 中的 ADMIN_KEY。
推荐通过管理后台导入账号,每行一个账号:
sso-token-1,team-id-1
sso-token-2,team-id-2
sso=token-3,team-id-3
说明:
team_id用于生成该账号自己的 Referer。- 不建议把所有账号绑定到一个全局
UPSTREAM_REFERER。 - 状态为
disabled、cooling、invalid、expired、failed的账号不会参与普通请求轮询。 - 非流式、流式和 Realtime client secret 请求都会使用同一个账号轮询索引。
运行时配置读取优先级:
config.toml > config.defaults.toml > 环境变量 > .env
管理后台保存的配置会写入 config.toml。
常用配置:
| 配置 | 说明 |
|---|---|
OPENAI_API_KEY |
其他项目调用 /v1/* 时使用的 Bearer Key |
ADMIN_KEY |
登录 /admin 的管理 Key |
ACCOUNTS_DB |
SQLite 账号数据库路径 |
GATEWAY_HOST |
服务监听地址 |
GATEWAY_PORT |
服务监听端口 |
UPSTREAM_URL |
上游 Responses 地址,默认 https://console.x.ai/v1/responses |
UPSTREAM_PROXY |
上游代理地址 |
UPSTREAM_IMPERSONATE |
curl_cffi 浏览器指纹,例如 chrome136 |
UPSTREAM_CF_CLEARANCE |
Cloudflare cf_clearance |
UPSTREAM_CF_COOKIES |
其他 Cloudflare cookie |
GATEWAY_WEB_SEARCH_ENABLED |
是否允许 web_search |
GATEWAY_X_SEARCH_ENABLED |
是否允许 x_search |
DEFAULT_REASONING_EFFORT |
默认 reasoning effort |
将其他项目的 OpenAI Base URL 指向:
http://127.0.0.1:8787/v1
curl http://127.0.0.1:8787/v1/chat/completions \
-H "Authorization: Bearer replace-with-your-gateway-key" \
-H "Content-Type: application/json" \
-d '{
"model":"grok-4.3",
"messages":[{"role":"user","content":"hello"}],
"stream":false
}'curl http://127.0.0.1:8787/v1/responses \
-H "Authorization: Bearer replace-with-your-gateway-key" \
-H "Content-Type: application/json" \
-d '{
"model":"grok-4.3",
"input":"hello",
"stream":false
}'curl http://127.0.0.1:8787/v1/models \
-H "Authorization: Bearer replace-with-your-gateway-key"构建镜像:
docker build -t consolex2api:latest .运行:
docker run --rm -p 8787:8787 `
-e OPENAI_API_KEY=replace-with-your-gateway-key `
-e ADMIN_KEY=replace-with-your-admin-key `
-e ACCOUNTS_DB=/app/data/accounts.sqlite3 `
-v ${PWD}\data:/app/data `
consolex2api:latestDocker Compose:
docker compose up -d --buildcargo test
python -m py_compile scripts/curl_cffi_bridge.py如果 cargo build --release 在 Windows 上提示无法删除 target\release\consolex2api.exe,通常是服务正在运行。先在运行服务的终端按 Ctrl + C 停止,再重新构建。
本项目基于 MIT License 开源。