一个面向 LLM API 的本地反向代理转发工具。它对客户端透明透传请求、响应和 SSE 流式响应,在上游临时过载或限流时自动重试;也支持多上游路由、号池故障转移、JSONL 日志和可视化分析。
把本项目当作一个本地“自动重试层”:配置 UPSTREAM_URL(默认就是讯飞 Coding Plan 地址),启动代理后,只需将客户端的 API 地址从上游地址改为 http://127.0.0.1:8080,鉴权、请求路径和请求体保持不变。上游临时返回 503、429 等错误时,代理会自动等待重试,成功后再把结果返回;SSE 流式响应也会透传。
把本项目部署在中转站入口,使用 KEY_POOL_FILE=key_pool.csv 配置按优先级排列的多个 API key。请求遇到 429、5xx(或开启 RETRY_BROAD 后的鉴权/网络错误)时,代理会冷却当前 key 并自动切换到下一个可用 key,同时记录每次尝试、供应商、模型和 key 标签,便于在 stats.html / logs.html 中查看。未配置号池时,它仍可作为普通的单上游重试代理使用。
号池(Key Pool) 用于中转站多 key 故障转移:按配置顺序从上到下依次使用,遇到 429/5xx 自动冷却切到下一个可用 key。与重试引擎松耦合,不配置时完全不介入请求流程。
本项目仅推荐使用串行轮询请求,请慎用竞速模式,不当使用会为模型供应商的服务端点带来极大压力,严重可能会导致您被封号或造成其他经济损失!竞速模式未经过人工测试,开发者不对该项功能的完整性做任何保证!
- 通用反向代理:透传所有路径、Header、Body、Query
- 支持 SSE 流式响应;重试只发生在首字节之前
- 503/502/504/529/429 自动重试,支持固定间隔、指数退避和
Retry-After - 默认有最大重试次数保护,可设置为无限重试
- 响应头附带
X-Forward-Attempts,告知客户端本次请求尝试次数 - 可选竞速模式、多上游路由和号池多 key 降级
- Codex Responses WebSocket 桥接 (SSE2WS):双向桥接
/v1/responses。WS → SSE(请求方向,客户端 WebSocketresponse.create→ 上游 HTTP/SSE 请求)+SSE → WS(响应方向,上游 SSE 事件流 → WebSocket JSON 文本帧),多轮response.create自动衔接(见 configuration 的 SSE2WS 段) - 按天 JSONL 明细日志、Token/缓存累计汇总和内置可视化分析面板
- 配置中心管理页:
/settings网页查看/修改全部配置项,重试与 DLP 等运行时参数保存即生效(见 configuration 的配置中心页面段) - 管理页统一外观:浅色/深色/跟随系统主题与舒适/紧凑密度可切换(见 dashboard 的统一外观段)
三端脚本功能一致:自动创建虚拟环境 .venv、安装依赖、首次交互式生成 .env 并启动服务。首次运行会引导配置:
上游地址 [https://maas-coding-api.cn-huabei-1.xf-yun.com/v2]:
供应商标签,如 xfyun [xfyun]:
监听端口 [8080]:
重试间隔秒数 [1.0]:
最大重试次数 (0=无限重试直到成功) [60]:
| 平台 | 脚本 | 运行方式 |
|---|---|---|
| Windows (CMD) | setup.bat |
双击,或命令行执行 |
| Windows (PowerShell) | setup.ps1 |
powershell -ExecutionPolicy Bypass -File setup.ps1 |
| Linux / macOS | setup.sh |
bash setup.sh(或 chmod +x setup.sh && ./setup.sh) |
PowerShell 若被执行策略拦截,加
-ExecutionPolicy Bypass参数运行即可,仅对本次生效,不改动系统策略。回车即采用方括号内默认值,后续再次运行会跳过配置直接启动。
pip install -r requirements.txt
cp .env.example .env
# 编辑 .env 修改 UPSTREAM_URL、LISTEN_PORT 等
python main.py假设上游是 https://maas-coding-api.cn-huabei-1.xf-yun.com/v2,本代理监听 8080:
# 原本调用
curl https://maas-coding-api.cn-huabei-1.xf-yun.com/v2/chat/completions \
-H "Authorization: Bearer YOUR_KEY" -d @req.json
# 改为调用本地代理(只换 host,路径/鉴权不变)
curl http://127.0.0.1:8080/chat/completions \
-H "Authorization: Bearer YOUR_KEY" -d @req.json# 二选一:默认使用 Docker Hub
cp .env.example .env
# 国内无代理环境改用:cp .env.cn.example .env
# 编辑 .env
docker compose up -d --build仅当宿主机为 Linux 旧内核(如 3.10)且使用 Docker 19,出现
can't start new thread 等兼容问题时,叠加旧环境模板:
docker compose -f compose.yaml -f compose.legacy.yaml up -d --build该模板会关闭容器 seccomp 过滤并改用 asyncio 事件循环,不应在现代环境中启用。
最常调整的是:
| 变量 | 默认值 | 说明 |
|---|---|---|
UPSTREAM_URL |
https://maas-coding-api.cn-huabei-1.xf-yun.com/v2 |
上游地址,不要带尾斜杠 |
LISTEN_HOST |
0.0.0.0 |
监听地址 |
LISTEN_PORT |
8080 |
监听端口 |
SETTINGS_PAGE_ENABLED |
false |
是否启用配置中心页面(/settings);关闭时页面与导航入口不展示 |
API_DOCS_ENABLED |
false |
是否公开 /docs、/redoc 和 /openapi.json;生产环境默认关闭 |
IP_BLACKLIST |
空 | 拒绝访问的客户端 IP/CIDR,多个值用逗号分隔 |
TRUSTED_PROXY_IPS |
本机与 Docker 172.x | 允许提供真实客户端 IP 转发头的反向代理 IP/CIDR |
IP_AUTO_BAN_THRESHOLD |
20 |
检测窗口内访问不同路径达到该数量时自动封禁;0 关闭 |
IP_AUTO_BAN_WINDOW |
10 |
动态封禁检测窗口(秒) |
IP_AUTO_BAN_DURATION |
0 |
动态封禁持续时间;0 表示永久封禁 |
IP_AUTO_BAN_EXEMPT |
127.0.0.0/8,::1 |
不参与动态封禁的 IP/CIDR;静态黑名单仍优先 |
IP_BAN_STATE_FILE |
LOG_DIR/.ip_bans.json |
动态封禁状态文件,保证重启后封禁继续有效 |
UVICORN_LOOP |
auto |
Uvicorn 事件循环;旧环境模板设为 asyncio |
MAX_RETRIES |
60 |
单个请求的实际上游尝试总上限;0 表示无限重试 |
RETRY_INTERVAL |
1.0 |
非 429 错误的重试间隔/退避基数 |
RETRY_INTERVAL_429 |
5.0 |
429 专用重试间隔/退避基数 |
RETRY_AFTER_MAX |
0 |
上游 Retry-After 头的最大贡献(秒);0 表示不封顶 |
RETRY_BROAD |
off |
是否把鉴权和网络错误也纳入重试/换 key |
HEDGE_MODE |
off |
off 串行;race / stagger 竞速 |
KEY_POOL_FILE |
空 | CSV 号池文件;优先于 KEY_POOLS |
ADMIN_PASSWORD |
空 | /stats、/logs 和号池管理页的密码 |
LOG_DIR |
logs |
日志目录 |
TOKEN_STATS_INJECT_USAGE |
false |
是否为 OpenAI Chat 流式请求注入 usage 选项 |
SSE2WS_MODE |
off |
设为 bridge 开启 Codex Responses WebSocket → 上游 HTTP/SSE 桥接 |
完整配置表和默认值见配置项。
curl http://127.0.0.1:8080/health/health 返回最小探活状态、已配置路由和号池状态,不需要鉴权。管理页面和数据接口说明见健康检查与可视化面板。
💡 OpenCode — 本项目辅助开发工具,使用邀请链接注册 双方各获 $5 额度
🚀 方舟 Coding Plan — 支持 GLM-5.2、Kimi-K2.7、MiniMax-M3、DeepSeek-V4、Doubao-Seed-2.0 等模型,订阅叠加 9.5 折低至 9.4 元,邀请码:EMXDHE8B
🧩 智谱 Coding Plan — 国内顶流编程大模型,20+ 主流工具全适配,性价比拉满(笑死,根本抢不到)
🌐 Nube.sh — 高性价比且强劲的弹性云服务器,基于 Zen 3 EPYC,1 vCPU + 1 GB DDR4 每月仅 $1.09 起
本项目仅供个人学习与技术研究使用。
- 本项目为本地反向代理转发工具,不对任何上游服务的稳定性、可用性负责
- 使用者应自行确保遵守上游服务(如 LLM API 提供方)的服务条款与使用限制
- 不得用于绕过上游限流、计费或访问控制等用途
- 本项目不向用户收取任何费用
- 使用者应遵守相关平台规则与当地法律法规