* feat(web): 搭建新旧前端独立架构与界面切换 * feat(web): 设计珊瑚主题新版工作区框架 * refactor(web): 精调新版框架并移除预览占位内容 * fix(web): 隔离新版页面路由并恢复经典版启动 * fix(web): 修复页头菜单定位并精简导航提示 * feat(web): 优化导航布局并接入侧栏版本检查 * refactor(web): 精调侧栏底部外链与版本展示 * refactor(web): 整理侧栏外链并增加赞助入口 * refactor(web): 调整路由检查菜单与版本栏对齐 * Codex worktree snapshot: archive-cleanup Co-authored-by: Codex * fix(web): 恢复新版浮层组件样式 * feat(web): 完成新版登录认证与会话管理 * feat(web): 增加登录记忆选项并精简登录页 * fix(web): 独立展示访问密钥身份标识 * fix(modern): 调整快速导航触发器高度 * refactor(modern): 统一页面标题与设计令牌规范 * feat(modern): 完善分组工作区与公共框架 * feat(modern): 完善分组列表与公共组件 * feat(modern): 完成 API 密钥分组创建与模型批量选择 * feat(modern): 完善订阅分组创建与并行账号接入 * feat(modern): 完善分组详情与凭据管理 * feat(modern): 完善凭据卡片与高级配置交互 * feat(modern): 完善分组筛选并校正凭据统计 * feat(modern): 完善分组操作并统一消息与路由状态 * fix(modern): 统一凭据卡片底栏文字对齐 * feat(modern): 完善访问密钥管理与公共表单组件 * fix(modern): 区分页面与局部操作的加载反馈 * feat(modern): 完善请求日志页面与筛选展示 * refactor(modern): 精简日志表格字段与排版并降低渲染开销 表格只有单一字号、两档色阶,且每个配对单元格重复渲染表头已有的标签。 建立五档字号与三档色阶,数字列改等宽右对齐,删除格内标签。 字段配对从 7 组扩到 17 组并覆盖全部字段,避免非默认列各占一列; 细分缓存写入与两个完整性状态移出表格,仅保留在详情面板; 思考模式、强度、预算合并为一列,按强度、预算、开关的优先级取一, 等级保留上游原值不作翻译。列宽按内容与表头重排,全展开总宽减少约 480px。 表头与内容原先分属两个滚动容器、靠 JS 同步 scrollLeft,横向滚动有延迟, 改为同一容器内 sticky;行右内边距归零,固定列不再随滚动露出缝隙。 渲染上,AppOverflowText 仅在文字溢出时才创建 AppTooltip, 溢出检测共用一个 ResizeObserver,AppTooltip 的作用域属性改为缓存计算。 * refactor(modern): 重排日志高级筛选并精简筛选标签 * feat(modern): 统一协议标签并优化日志详情 * feat(modern): 完善请求日志展示与脱敏复制 * perf(modern): 减少页面切换等待与重复渲染开销 * fix(modern): 精简分页提示并缩小日期弹层 * feat(modern): 完善用量统计页面 * feat(modern): 支持日志字段快捷筛选 * feat(modern): 完善健康状态页面 * fix(health): 返回全部异常账号 * refactor(modern): 精简健康页并统一监控交互 * fix(brand): 统一品牌图形并修复刷新位置跳动 * feat(modern): 实现模型管理页面 * feat(modern): 完善全局设置页面 * fix(modern): 统一原生协议展示与弹窗确认焦点 * fix(modern): 优化全局滚动条体验 * refactor(modern): 模型卡片改为来源价格表格式并支持分组跳转 - 来源行改为与表头共用同一套列定义(来源/分组/4 项价格/计价方式/操作), 多来源时价格上下对齐可比 - 协议折成一行中性摘要,悬浮查看完整列表,不再占用卡片最强的颜色 - 分组徽章对管理员改为可点击跳转到分组详情,非管理员保持纯展示 - 计价方式按常见程度分级:自动匹配为默认灰字,待计价才用警示徽章 - 卡片列表最小宽度从 320px 提到 620px 以容纳价格表;表格内容超宽时整体横向滚动 * fix(modern): 修正模型卡片价格溢出、行高不齐与列错位 - 价格列宽改为按本卡最长价格计算的共享变量:原先写死 52px,9 位小数的 单价会溢出压到隔壁列;用 max-content 则表头与来源行各算各的导致列错位 - 来源单元格由 flex-wrap 改为网格:长渠道名原先会把图标、名称、档位各自 甩到新行,单元格高度从 24px 涨到 87px - 分组只展开第一个并禁止换行,超出交给 +N 提示,行高不再被撑乱 - 行内容压进 40px 下限,有无上游模型的行等高 - 溢出时行宽跟随内容,底色与分隔线不再在容器右边缘断掉 - 分组标签常态加描边,亮色下 subtle 几乎等于卡片白底、看不出可点 * feat(modern): 模型卡改多列排布并重做卡头视觉 - 网格改为 CSS 多列:来源数不同导致卡高不一,网格按行内最高的卡留空洞, 实测同一批数据容器高从 616px 降到 576px 且无空洞 - 卡头加冷色渐变,自右上向左下淡出,左侧留白给模型名 - 新增 --modern-model-card-tint,沿用账号卡那套 info 蓝调,避开主色的橙 - 模型名靠左独占一端,协议/来源/分组三项统计右对齐 * refactor(modern): 精简模型详情侧边栏 - 去掉「全部来源」中间页:多来源靠顶部下拉切换即可,进面板直接落到 第一个来源,随之移除返回箭头与只服务于该页的 ModelSourcePreview - 面板宽度 sheet(660px) 改回 default(540px),与日志详情、访问密钥面板一致 - 价格由每档重复四个标签的块改为表格:表头只写一次,标准档与各阶梯档、 各模式上下对齐可比,极端价格不再撑破容器 - 模型资料标签列定宽右对齐,原先 auto 会让每行按各自内容算宽而行间错位 - 关联分组去掉 AppButton>RouterLink>AppBadge 三层嵌套,改用与模型卡共用的 可点标签样式(新增 model-group-chip.css) - 清理随视图作废的样式与导入 * fix(modern): 换掉卡头底色并重排侧边栏价格表 - 卡头 tint 换成冷灰蓝 #e4ebf5/#2c3340,渐变两端都保留色:原先淡出到 纯白,左下角与内容底色无差,所以区分不出卡头 - 修正上一轮未生效的改动:tint 仍混着 8% accent-soft(橙),当时单行 replace 没匹配上已被格式化成多行的定义,且漏了断言 - 价格表单位说明移入表头首列,消掉标签列 225px 空白(占表宽 44%) - 去掉价格表外框与表头底色,540px 侧栏里原先过重 - 价格四列收紧靠右(各 64px),数字挨在一起才便于比较 - 计价方式徽章移到「计价规则」分段标题行 * fix(modern): 卡头改用右上角径向晕染 照搬用量统计顶部卡片的手法:radial-gradient(ellipse at top right) 配低比例 混色,基色取成功绿。原先用线性渐变方向一直不对——to bottom left 会按盒子 比例换算,卡头宽高比约 15:1 时算出来接近 86°,等于水平色带;即便改成固定 225deg,扁盒子里的线性渐变也只是一条生硬的斜带,做不出角落发散的效果。 * feat(modern): 模型卡卡头晕染定为蓝调 基色改用 --modern-chart-input,与用量统计里 Token 卡同一支蓝,两页同源。 * fix(modern): 阶梯价入口仅保留标准档,Fast/Ultrafast 不再翻译 - Fast、Ultrafast 是计价档位专名(对应 OpenAI service_tier),三语一律不译 - 阶梯价的新增入口收窄到标准档:后端 NormalizeModePriceSchedules 直接驳回 Fast 带阶梯,此前编辑器对所有档位都给了按钮,加完保存必然失败; Ultrafast 后端虽未拦截,按约定前端统一不做 - 非标准档改为提示「仅标准档支持阶梯价」,已存在的阶梯仍可见可删, 避免静默隐藏却在保存时原样回传 * fix(modern): Fast 与 Ultrafast 档位行为对齐 后端对两档一视同仁:validPricingModeKey 只排除 standard,没有模型级限制; 计费同走 quote.go 查 ModeSchedules,仅触发参数不同(service_tier 取 fast/priority 与 ultrafast)。此前前端只给 Ultrafast 添加入口、删除按钮也 只对 Ultrafast 开放,目录同步来的 Fast 档因此无法删除。 - 添加入口改为按 optionalModes 渲染,两档对称 - 删除按钮放开到所有非标准档 - 阶梯价仍只在标准档提供(Fast 后端驳回,Ultrafast 按约定统一不做) * fix(modern): 修正价格表头下方的边框重叠 选择器 .row + .row:not(--head) 把紧跟表头的第一个数据行也匹配进去了, 它的上边框与表头的下边框落在同一像素,叠出一条明显更粗的线。改为要求 前一项也是数据行。 * fix(frontend): 限制经典版入口为管理员 * refactor(modern): 精调全局设置页排版 - 状态徽章只在有状态时出现:17 个里 14 个是「默认」,等于反复声明 「这里没什么特别的」,现仅剩已配置/已修改/环境锁定 3 个 - 设置项控件列由 auto 改为定宽,右边缘从 4 种位置收敛到 1 种 - 表单限宽 760px:内容区近 1000px,撑满会把标签与控件拉得过开 - 分区之间加细线隔断,功能边界不再只靠留白区分 - 子分组标题原先比它统领的设置项标签还小还淡,层级倒置;改用组标签 质感(caption + 字距 + 延伸线) - 移除「显示模式 / 界面语言」:右上角已有同样入口,此处重复 - 新版界面预览改用概念图:原先是 24KB 真实截图,与经典版的抽象示意 图风格割裂;仓库里原有的 modern.svg 实为带虚线框的加号占位图, 已按 classic.svg 的色板与抽象度重画为「左侧栏 + 卡片」 - 系统信息标签列定宽右对齐:原先 dt 用 flex:none 按各自文字宽度收缩, 「数据库」与「管理员密钥来源」差近一倍,取值起点全部错开; 三种更新状态也合并为一行 * refactor(modern): 梳理设置页布局与交互细节 * feat(modern): 完善吉祥物彩蛋与版本更新提示 * feat(modern): 补全总览与路由检查页面 * refactor(modern): 精简首页并整合路由检查 * feat(modern): 重做首页为接入优先布局 首页原本只展示分组、模型、凭据、密钥四个库存计数,这些数字一周不变, 且每个都对应侧边栏的一个导航项。真正回答「现在跑得怎么样」的 /api/home/statistics 接口后端早已实现,经典版在用,新版一直没接。 - 顶部换成一行状态条:服务状态 + 库存事实 + 版本与运行时长 - 接入客户端重做成左目录 + 按客户端类型分化的配置输出: CLI 客户端给可一次粘贴执行的终端命令(Codex 的 toml 改写成 heredoc), 图形客户端给设置界面示意图与编号字段对照,可深链的把一键导入置顶 - 修掉 Cline 的缺口:它需要模型名但输出形态返回空块, 界面上选了模型却没有任何地方显示,现在模型名是字段表的一行 - 协议不匹配改为选择前就在目录里禁用,提示里点名具体协议 - 路由检查折叠成工具条,不再以完整工作台占据首页 - 右栏依次为订阅账号、需要处理、24 小时请求趋势、访问密钥; 需要处理由已有的分组数据推出,不额外请求健康接口, 额度预警不重复(订阅账号已按账号画了额度条) * refactor(modern): 精调首页接入面板与侧栏排版 上一版实现丢了设计稿里的若干排版细节,逐条补回: - 客户端目录恢复协议标签。协议枚举全称有 16 个字符放不下, 给 AppProtocolTag 加 short 模式取短名(Responses / Completions), 颜色仍由同一处定义,不另写一套 - 界面示意图补上窗口标题栏文字,此前只画了三个点 - 没登记字段原文的客户端补两行无标签占位,示意图要读起来像一个设置表单, 而不是「这个界面只有三个框」;不替没核实过的客户端编字段名 - 补上「把右边的值按编号填到左图对应的位置」的引导语 - 一键导入横幅不再复用确认对话框的文案(那句带问号),改用常驻横幅的说法 - 整段配置块的标题从裸的 JSON 改成「也可以直接复制完整配置」 - 状态条加入待办入口,与右栏面板共用 collectAttention 的同一份计数 - 订阅账号卡去掉「更新于」(页头已有整页刷新时间)、重置券并进页脚, 并限制为前 3 个:账号多时这块会把下面三块全顶到折叠线以下 * fix(modern): 修正首页待办取材与侧栏面板的溢出 - 需要处理改读 /api/health。此前只按分组凭据计数判定,推不出额度将尽、 充值卡临期、访问密钥被费用额度挡住这几类,健康实例上永远是空的, 看起来就像坏了。现在覆盖无可用凭据、凭据被拉黑、额度将尽、 充值卡临期、密钥受限五类,状态条计数与面板读同一份结果 - 订阅账号按设计改成一个账号一条进度条,取剩余最少的那个窗口; 额度宽裕时不写重置时刻,可用是常态不出徽章 - 访问密钥不再溢出:grid 与 flex 子项的 min-width:auto 会让长密钥名 把徽章顶出卡片,链路上每层都要显式解开;徽章与结论数字不参与压缩 - 补回 HomeAccounts 漏掉的 AppPanel 导入。Vue 对未注册组件不报错, 整块面板被渲染成 <apppanel> 字面标签,标题与边框全部丢失 - 「还有 N 项」不再套用条目行的三列栅格,此前文字被挤进 14px 的 图标列,一个字一行 - 待办条目以分组名优先收缩,说明文字先被截断;说明文字同时收短 - 接入面板去掉无用的副标题 * refactor(modern): 精调首页布局与接入交互 * fix(modern): 收紧首页布局并移除客户端协议限制 * fix(modern): 优化首页接入对齐与侧栏密度 * fix(modern): 记住客户端接入选择并修正订阅额度展示 * fix(modern): 统一客户端接入输入尺寸并精简说明 * fix(modern): 优化分组排序与订阅账号周期及并行同步 * fix(modern): 优化订阅额度周期与同步反馈 * fix(modern): 完善首页健康提醒与独立路由检查 * feat(modern): 增加额度窗口满额预估 * refactor(modern): decouple shared frontend utilities * docs(readme): refresh localized screenshots * fix(web): harden startup fallback and Group ID parsing
24 KiB
赞助商
赞助商详情(可折叠)
| OfoxAI:一个平台,连接文本、图像与视频 AI OfoxAI 是统一的 AI API 平台,汇集多家文本、图像和视频模型,支持 OpenAI 兼容接口及 Anthropic、Gemini 原生接口。开发者可通过一个平台为 AI 应用、智能体和内容创作接入模型,按任务选择合适的能力。 探索 OfoxAI 模型与 API → |
|
![]() |
PackyCode PackyCode 是一家稳定、高效的 API 中转服务商。一句话接入主流大模型。统一域名、统一密钥、智能容灾切换,97% 可用性。人民币1:1充值,无汇率无手续费坑,新用户首充立享折扣 + $1免费体验额度,多分组折扣低至 2 折起,提供专属Codex/Claude Code高速通道。点此链接注册,立即开始使用! |
![]() |
一个入口,接入并管理全球主流AI模型 Fluxion AI面向个人开发者、技术团队与企业,通过统一API接入并管理全球主流AI模型;通过多线路动态调度提升可用性,模型表现、响应时间与费用透明可查。根据不同模型与线路,API调用成本较官方或基准价格可降低40%—98%。立即访问并注册,即可获得 $7 API 额度。(专属链接) |
![]() |
保护并加速网站与 API,兼顾中国大陆及全球的访问体验,并通过客户端 SDK,将加速与安全能力延伸至原生/移动 App — 自建私有部署 CDN|订阅式高防 CDN|自主可控、灵活组合的 CDN 网络。 |
![]() |
感谢 APIMart 赞助了本项目!APIMart 是专注 AI 图片/视频生成的低价 API 平台,GPT-Image-2 低至 $0.006/张,1 美元可出图 160+ 张。图片、视频一套异步 API 通吃,提交任务拿 ID、回调取结果,跑批万张不超时、换模型不改代码。按量付费、无月费,通过此注册链接注册即可开用。 |
为什么选择 GPT-Load
应用只需要配置一个地址和一个 AccessKey。后面的服务商、账号、凭据、模型与路由策略,全部在管理界面里完成。
- 统一入口,保留原生协议 — 官方 API、云平台、模型服务和兼容中转统一管理;客户端继续使用 OpenAI、Anthropic 或 Gemini 原生接口,无需改造代码。
- 统一管理 API Key 与订阅账号 — Codex、Claude、Antigravity、Grok 等订阅渠道与 API Key 渠道共享凭据管理、调度和健康体系。
- 内置调度与故障隔离 — 多凭据调度、可配置权重、重试、冷却、黑名单与会话亲和,降低单个凭据过载或失效的影响。
- 可观测、易部署、数据自持 — 提供健康、路由、日志、用量与成本估算;单个 Go 二进制内嵌管理界面,支持 SQLite、MySQL、PostgreSQL 和本地凭据加密。
快速开始
Warning
如果你正在使用 1.x,请先阅读从 1.x 切换。2.0 不能打开、导入或原地迁移 1.x 数据。
1. 启动服务
需要 Docker 与 Docker Compose。
git clone --depth 1 https://github.com/tbphp/gpt-load.git
cd gpt-load
cp .env.example .env
docker compose up -d
确认服务已启动:
curl --fail http://127.0.0.1:3001/health
首次启动会自动生成管理密钥,读取并妥善保存:
docker compose exec gpt-load sh -c 'cat /app/data/auth.key'
打开 http://127.0.0.1:3001,用该密钥登录控制台。
也可以在启动前通过
.env里的AUTH_KEY显式指定管理密钥。默认只监听本机地址,不会直接暴露到公网。
2. 完成首次配置
首次配置只需三步:
- 添加渠道 — 选择上游服务,填入一个或多个 API Key;订阅渠道按界面提示完成 OAuth 授权或导入凭据。
- 创建 Group — 选择渠道,配置可用模型与运行策略。
- 创建 AccessKey — 设置允许访问的 Group 与客户端协议,把生成的 AccessKey 交给应用使用。
订阅渠道的 OAuth 回调端口
Codex、Claude、Antigravity 的 OAuth 客户端使用固定回调端口。Compose 会把它们发布到 HOST 配置的地址,默认是 127.0.0.1;设置 HOST=0.0.0.0 时,这些回调端口也会发布到宿主机的全部网络接口。因为端口由上游客户端固定,同一台机器同一时刻只能运行一个默认 Compose 实例。
如果通过 SSH 或远程浏览器操作,浏览器的 localhost 可能到不了 GPT-Load —— 此时把完整回调 URL 复制到授权弹窗里即可完成流程。
界面预览
分组总览 — 统一查看渠道、模型、凭据数量、流量与健康状态
用量统计 — 查看请求趋势、缓存命中率、Token 分类与成本估算
支持范围
客户端协议
| 协议 | 主要入口 |
|---|---|
| OpenAI Chat Completions | POST /v1/chat/completions |
| OpenAI Responses | /v1/responses 及其资源路径 |
| OpenAI Images | POST /v1/images/... |
| OpenAI Embeddings | POST /v1/embeddings |
| Rerank | POST /v1/rerank |
| Anthropic Messages | POST /v1/messages |
| Gemini | /v1beta/models/... |
每个渠道会明确声明自己可执行的协议与能力。GPT-Load 在受支持的能力之间做转换,但不是任意协议、任意 JSON 的通用转换器。
Embeddings 首期只在 OpenAI、OpenRouter 和 OpenAI Compatible API Key 渠道提供原生 OpenAI-compatible Wire,不支持订阅渠道或协议互转。未设置协议过滤器的 AccessKey 会按既有语义允许全部已启用协议,升级后也会获得 Embeddings 访问能力;最小权限部署请显式配置协议过滤器。
Rerank 使用独立的 rerank 协议,在 OpenAI Compatible、New API、GPT-Load API Key 渠道支持 POST /v1/rerank。请求使用 model、query 和纯文本 documents 数组,可传 top_n、return_documents 等上游参数;不支持流式、订阅渠道或协议互转。OpenAI Compatible 的 Base URL 是完整 API 前缀(如 https://host/v1),New API / GPT-Load 使用网关根地址;上游必须提供兼容 Rerank 接口。未设置协议过滤器的 AccessKey 也会获得 Rerank 访问能力。仅有 search_units 等非 Token 计量时保持未计价,不将其视为 Token 或免费请求。
内置渠道
- 官方与云平台:OpenAI、Anthropic、Gemini、xAI、Azure OpenAI、AWS Bedrock、Google Vertex AI
- 常用模型服务:DeepSeek、Moonshot AI、SiliconFlow、Zhipu AI、Alibaba、Volcengine、OpenRouter、Groq
- 订阅渠道:Codex、Claude、Antigravity、Grok
- 自定义:OpenAI Compatible(任意兼容中转)
部署与数据
Docker Compose 默认使用应用管理的 SQLite,数据存放在 gpt-load-data 具名卷中,包含数据库、auth.key 和 encryption.key。
Important
encryption.key用于解密渠道凭据。备份或迁移时,数据库和密钥必须一起保存;密钥丢失或被替换后,已有加密凭据无法恢复,且当前版本不支持主密钥轮换。
使用外部数据库
通过统一的 DATABASE_DSN 连接 SQLite、MySQL 或 PostgreSQL:
mysql://user:password@db.example:3306/gpt_load?charset=utf8mb4&collation=utf8mb4_bin
postgres://user:password@db.example:5432/gpt_load?sslmode=require
常用运维命令:
docker compose logs -f # 查看日志
docker compose pull && docker compose up -d # 更新到最新 2.x 镜像
docker compose stop # 停止服务
官方 Compose 使用 ghcr.io/tbphp/gpt-load:2。GA 前,2 跟随已验证的 2.0 Beta 和 RC;GA 后只跟随稳定的 2.x。镜像精确标签会去掉 Git tag 的 v 前缀(例如 2.0.0-beta.25),2.0-beta 则保留为 2.0 Beta 通道;latest 继续留在 1.x。
使用原生二进制
从 GitHub Releases 下载对应平台的文件,建议先用随附的 SHA256SUMS 校验:
chmod +x ./gpt-load-linux-amd64
HOST=127.0.0.1 DATA_DIR=./data ./gpt-load-linux-amd64
启动后访问 http://127.0.0.1:3001。提供 Linux、macOS(amd64 / arm64)与 Windows 共五个平台的便携构建;gpt-load-windows-amd64.exe 继续以前台模式运行。
Windows 普通用户可改为下载 gpt-load-windows-setup.exe。双击并确认管理员权限后,安装器会注册并启动低权限 Windows 服务、设置开机启动,并创建桌面和开始菜单中的 GPT-Load 管理页面快捷方式。安装过程中会显示首次生成的管理密钥,请在关闭页面前保存;密钥仍保存在 %ProgramData%\GPT-Load\data\auth.key。服务配置目录为 %ProgramData%\GPT-Load 并从其中读取 .env,数据目录为 %ProgramData%\GPT-Load\data。
覆盖安装会先优雅停止服务再更新,Windows 卸载会移除程序和服务但保留数据。高级用户仍可使用 gpt-load-windows-amd64.exe service start|stop|restart|status 管理已安装服务。
环境配置
应用启动时读取当前目录的 .env,已有的进程环境变量优先。除特别说明外,修改后需要重启进程或容器;常用配置模板见 .env.example。
查看全部环境变量
| 变量 | 默认值 | 说明 |
|---|---|---|
HOST |
127.0.0.1 |
Native 模式的监听地址,也是 Compose 主端口和 OAuth 回调端口的默认宿主机发布地址;Compose 容器内部固定监听 0.0.0.0。 |
PORT |
3001 |
HTTP 服务端口,必须为 1–65535;Compose 同时用于容器端口、宿主机发布端口和健康检查。 |
BIND_ADDRESS |
空,继承 HOST |
仅用于 Compose,单独覆盖主服务端口的宿主机发布地址,不改变 OAuth 回调端口。 |
OAUTH_CALLBACK_BIND_ADDRESS |
空,继承 HOST |
仅用于 Compose,单独覆盖 OAuth 固定回调端口 1455、54545、51121 的宿主机发布地址。 |
GRACEFUL_SHUTDOWN_TIMEOUT |
10 |
收到停止信号后等待请求结束的最长时间,正整数,单位秒。 |
CONTAINER_STOP_GRACE_PERIOD |
15s |
Compose 强制停止容器前的等待时间,使用 Docker duration,建议大于 GRACEFUL_SHUTDOWN_TIMEOUT。 |
READ_TIMEOUT |
60 |
HTTP 请求读取超时,正整数,单位秒。 |
IDLE_TIMEOUT |
120 |
HTTP keep-alive 空闲连接超时,正整数,单位秒。 |
DATA_DIR |
./data |
托管数据库、auth.key、encryption.key 和运行状态文件的目录;官方 Compose 固定为 /app/data,Windows Setup 服务固定为 %ProgramData%\GPT-Load\data。 |
DATABASE_DSN |
空,使用 ${DATA_DIR}/gpt-load.db |
空值使用应用托管的 SQLite;非空值支持 SQLite 路径或 URL、MySQL URL、PostgreSQL URL,并视为运维方管理的外部数据库。容器内文件路径必须位于已挂载目录。 |
DATABASE_MAX_OPEN_CONNECTIONS |
10 |
MySQL 和 PostgreSQL 的最大打开连接数,必须为正整数;SQLite 始终使用单连接。 |
DATABASE_MAX_IDLE_CONNECTIONS |
5 |
MySQL 和 PostgreSQL 的最大空闲连接数,必须为正整数且不大于 DATABASE_MAX_OPEN_CONNECTIONS;SQLite 始终使用单连接。 |
AUTH_KEY |
空,读取或生成 ${DATA_DIR}/auth.key |
管理界面和 /api 管理接口的 Bearer 密钥,不是数据面 AccessKey。 |
ENCRYPTION_KEY |
空,读取或生成 ${DATA_DIR}/encryption.key |
用于加密渠道凭据;更换或丢失后无法解密已有凭据,必须与数据库一起备份。 |
HTTP_PROXY |
空 | HTTP 上游请求的环境代理。 |
HTTPS_PROXY |
空 | HTTPS 上游请求的环境代理。 |
NO_PROXY |
空 | 逗号分隔的不经过环境代理的主机、域名或 IP。 |
LOG_LEVEL |
info |
支持 panic、fatal、error、warn、warning、info、debug、trace;无效值会告警并回退到 info。 |
LOG_FORMAT |
text |
支持 text、json;其他值会导致启动失败。 |
MODELS_DEV_AUTO_SYNC_ENABLED |
未设置,初始默认 true |
未设置时使用管理界面的持久化设置;设置后强制开启或关闭 Models.dev 自动同步,并使管理界面中的同名选项变为只读。 |
环境代理仅在凭据、Group 和全局设置都未指定代理时生效。
生产使用注意事项
- 默认只监听
127.0.0.1。需要远程访问时,应通过受控网络或带 TLS 的反向代理暴露,并配置 ACL 与防火墙。 - 妥善管理
AUTH_KEY与ENCRYPTION_KEY,不要把真实密钥提交到仓库、日志、截图或公开 Issue。 - 2.0 按单应用实例设计,多个实例之间不共享状态,不支持直接横向扩容。
- 用量与成本是基于上游返回数据的估算,用于运行分析和资源评估,不等同于服务商账单或财务对账结果。
- 订阅渠道依赖上游 OAuth 与兼容协议,可能随上游变化调整。请只接入自己有权使用的账号,并遵守对应服务商条款。
- HTTP Responses 的
previous_response_id续接按协议及现有存储能力自动接入:原生 Responses 且声明由上游管理状态的渠道目前包括openai、gpt_load、xai、newapi、cliproxyapi、sub2api。按 AccessKey 隔离归属,在当前路由允许时固定原凭据,不受软亲和开关影响;实际状态可用性由上游决定。无状态及转换响应不登记为持久状态。未知 ID(包括升级前或网关外创建的 ID)直接拒绝;Group 参数覆盖不能改写该字段。 - 原生 Responses WebSocket 使用同端口
GET /v1/responses,按渠道声明的实际能力准入,支持 OpenAI、xAI、Codex 及符合原生合同的 CPA/sub2api、GPT-Load 端点。兼容客户端携带布尔参数stream:true/false,两者均按 WS 事件流返回。每轮独立检查权限、限流、额度与当前路由,并记录用量及成本。同一连接固定上游身份;不回退 HTTP、不缓存或重放聊天历史。 responses_websocket_enabled默认开启,分组显式设置优先于全局,未覆盖时继承全局。关闭会立即断开受影响的 WS 连接并中断生成;HTTP/SSE 不受影响。重新开启不会恢复旧连接的临时状态。- 完整
stream_id多流与分叉用于 OpenAI 和满足端到端条件的 GPT-Load 级联;其余上述渠道串行执行并明确拒绝命名流。预热实际发送generate:false。Codex 只支持原连接内续接,不能使用store:true或凭旧 ID 跨连接恢复;其他渠道的持久续接仍取决于存储能力与有效归属。Codex SDK 的代理、读取和关闭边界继续适用。 - 响应归属保存在内存中,默认保留 30 天,最多 100,000 条,ID 文本合计最多 16 MiB,达到容量时淘汰旧记录。正常停机成功保存 checkpoint 后可在同一数据目录恢复;不保证崩溃恢复或上游历史仍有效。
conversation与其他既有资源 ID 不在上述归属路由范围内,仍依赖单凭据或上游跨凭据共享资源。
从 1.x 切换
Warning
GPT-Load 2.0 是完整重写的新版本,不能打开、导入或原地迁移 1.x 数据。
部署 2.0 时请使用独立的数据库、DATA_DIR、端口和 Docker 卷,验证完成后再切换业务流量,并在回滚窗口关闭前保留原 1.x 部署。1.4.x 维护线文档见官方文档。
开源依赖
GPT-Load 的部分能力构建在这些开源项目之上,在此致谢:
| 项目 | 作用 | 许可证 |
|---|---|---|
| Bifrost Core | 各服务商的认证、请求响应转换、流式与用量归一化 | Apache-2.0 |
| CLIProxyAPI | 订阅渠道的 OAuth 与执行适配 | MIT |
| Lobe Icons | 管理界面中的渠道品牌图标 | MIT |
GPT-Load 自身负责凭据存储、账号选择、调度、重试、健康、亲和、日志与用量策略。第三方声明见 THIRD_PARTY_NOTICES.md,许可证全文位于 LICENSES/,每个 Release 另附覆盖 Go 依赖的 CycloneDX SBOM。
各渠道图标用于标识对应的上游服务商,其商标权归各自所有者;本项目与这些服务商没有从属或背书关系。
项目支持
|
平台支持 |
社区支持 |
基础设施支持 |
MIT License · 第三方声明 · 安全政策




