单文件 Go 二进制,把 OpenCode 的免费模型变成你本地的 OpenAI 兼容网关。模型选 auto,反代自动挑当前有额度的免费模型——额度耗尽自动切换,客户端无感。
请求填 auto,反代在所有免费模型中自动选择当前可用者;某个模型日额度耗尽(FreeUsageLimitError),立即切换同池下一个——额度等效放大 11 倍。
# 启动(默认监听 :8787) ./zen-proxy-linux-amd64 # 列出免费模型(n+1:auto + 全部免费模型) curl http://localhost:8787/v1/models # 对话(模型填 auto,api_key 随意) curl http://localhost:8787/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{"model":"auto","messages":[{"role":"user","content":"你好"}],"stream":true}'
from openai import OpenAI client = OpenAI( base_url="http://localhost:8787/v1", api_key="任意值", ) r = client.chat.completions.create( model="auto", # 自动切换,额度耗尽无感续用 messages=[{"role":"user","content":"你好"}], ) print(r.choices[0].message.content)
# 任意 OpenAI 兼容客户端(ChatBox / OpenWebUI / Cline / AstrBot) API Base URL : http://localhost:8787/v1 API Key : 随意填写 模型名 : auto # 或从 /v1/models 选任意免费模型 # 注意:客户端与反代需在同一台机器; # 跨机请用其局域网 IP,不要填 0.0.0.0
网关架在 Cloudflare 之后,数据中心 IP + CLI 特征会被错误码 1010 拦掉。反代默认把请求伪装成真实 Chrome 指纹(UA + sec-ch-ua + Origin/Referer)。
免费额度按模型独立:deepseek 耗尽后 laguna / mimo / big-pickle 完全不受影响。遇到 FreeUsageLimitError 自动切同池下一模型。
配 UPSTREAM_PROXIES 轮换出口 IP,进一步分散 IP 级速率限制。没代理就不配,默认配置已够用。
以下全部默认开启,无需配置:
ZEN_BROWSER_MODE · ZEN_RETRY_4XX · ZEN_JITTER · ZEN_FAILOVER
原样透传 messages / tools 到上游 OpenAI 兼容协议,不解析、不改造。
free_only 模式只放行实测免费模型,误填真 key 也不会踩付费。
免费模型日额度耗尽自动切换同池模型,额度等效放大 N 倍,客户端无感。
完整 Agent 闭环:请求工具 → 回传结果 → 基于结果作答。
SSE 透传,tool_calls 分片流式返回,与官方一致。
GET /stats 查看请求量、失败率、在线模型数。