Qi HU
f4e3eb1c5a
fix(openai): detect cyber policy in ws v2 passthrough
2026-08-27 21:50:53 +08:00
Whisper-stark
fd872550d5
fix(grok): handle typed invalid tool unions
2026-08-27 21:03:23 +08:00
Whisper-stark
f4820c00dc
fix(grok): simplify invalid tool union roots
2026-08-27 19:24:50 +08:00
Whisper-stark
de6ef7134d
fix(grok): sanitize Codex Responses requests
2026-08-27 19:24:50 +08:00
Ryan Chou and Claude Opus 5
e6ea7b9af0
fix(openai): 图像能力丢失时冷却 image 调度,不再反复选中坏号
...
OAuth 账号被上游收走 image_generation 能力后,/v1/images/* 稳定返回同一句 400
(Tool choice 'image_generation' not found in 'tools' parameter),但网关不做
任何处置,坏号持续被排程选中(报告者实测连续 17 次同 body 400、窗口内 0 成功、
持续 3.5 小时,直到人工停调度)。
RateLimitService 的 400 分支是白名单式,只认 organization has been disabled /
credit balance / identity verification is required 三句,其余 400 明确不处理;
唯一能兜任意 400 的 tryTempUnschedulable 又要求账号开启 temp-unschedulable
开关,OAuth 账号默认没开。两条路都不命中,shouldDisable 恒为 false,也没有任何
model 作用域冷却。
修复收窄到 sub2api 自建 body 的 images 管线:buildOpenAIImagesResponsesRequest
产出的 body 必定同时带 tool_choice 与匹配的 image_generation tool,这条路上出现
该 400 只可能是上游收了账号能力。forwardOpenAIImagesOAuth 在 upstreamCtx 上打
自建标记(覆盖其下游全部三个错误分支),共用错误入口读到标记才把该 400 判为能力
丢失,对 openai:image_generation 作用域冷却 30 分钟(对齐 upstreamModelNotFound
Cooldown),不禁用整颗账号——账号对文本请求依然健康。
未采用 issue 建议①的全局签名匹配:handleOpenAIAccountUpstreamError 同时服务
passthrough 路径,客户端可自带「tool_choice 指 image_generation 但 tools 不带」
的请求触发一字不差的同一句 400,全局匹配等于任何 API 用户一句话即可禁用健康
账号。附 5 个测试,其中防毒杀用例在撤掉该闸门后会实测失败。建议②(连续 N 次
400 熔断)涉及跨请求状态与配置项,另议。
Fixes #4466
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-27 16:36:01 +08:00
WUJI-Labs
9e7aff59df
fix(update): strip hyphenated suffix from version string during comparison
...
When running a custom build or pre-release version (e.g. v0.1.183-custom),
parseVersion failed to parse the patch segment because of the non-numeric suffix,
causing compareVersions to incorrectly report an available update.
This commit strips any hyphenated suffix before splitting SemVer components.
Signed-off-by: WUJI-Labs <zoujincool@gmail.com >
2026-08-27 15:54:22 +08:00
kk
00efee4303
🐛 fix(grok): 为 Grok 4.6 广告 xhigh 推理档位
...
Grok Build 的 /v1/models 原先给所有可配 reasoning 的 Grok 模型写死三档,
导致 grok-4.6 无法在 /model 里选出官方支持的 xhigh。转发与 Codex catalog
已按模型判断,现与同一条件对齐。
2026-08-27 15:50:20 +08:00
zhaotao1
00b7c855cc
fix(openai): preserve declared API-key namespace calls
2026-08-27 15:22:43 +08:00
li
4a02e54171
Merge remote-tracking branch 'origin/main' into fix/anthropic-chat-bridge-reasoning-passback
2026-08-27 13:40:29 +08:00
li
9192426d2e
merge: 合入 origin/main,与新增的 service_tier 字段并存
...
主线在 ResponsesResponse 与两处流式事件上新增了 service_tier;本分支新增的
created_at 与之并列,无语义冲突。同时跟进 ChatCompletionsResponseToResponses
新增的 functionTools 形参。
2026-08-27 13:40:07 +08:00
li
d077002eba
fix(openai): 图片工具冷却不再由「模型回文字」这一请求级判据触发
...
v0.1.181 起,/v1/images/generations 只要上游回了文字而没回图,就给账号写 30 分钟
openai:image_generation 模型级冷却。该判据由 openAIImagesTextFallbackErrorForText
从模型的自然语言输出**推断**而来,只说明这个 prompt 这一轮模型选择了说话——
仓库自己的既有用例 fixture 就是一句「Here's a polished image prompt for your request.」。
更糟的是同一个错误被判为可重试(502 → IsOpenAIImagesRetryableUpstreamError)并驱动
newOpenAIAccountFailoverError:一次闲聊回复会被逐个账号重试,沿途把每个账号都冷却掉,
表现为「开启后没多久账号就全部被限制」。
改为只在上游 error 帧点名该状态时才写冷却;网关自行推断的判据打上
SynthesizedFromModelText 标记并跳过。换号行为一字未动。
依据是仓库既有政策(alpha/search 路径原话):工具端点的单次失败
「仍允许本次请求换号,但不修改任何账号状态」。
Fixes #6171
2026-08-27 13:36:50 +08:00
zenor0
5f09442fce
fix(openai): refresh usage after quota reset
2026-08-27 10:09:42 +08:00
feeeei
44003d7f6b
fix(gateway): Anthropic/Bedrock 传输层错误转 failover + 持久故障临时摘除账号
...
上游 Do/DoWithTLS 返回非 HTTP 错误(代理/DNS/TCP/TLS)时,Anthropic 五条转发路径
(forward/apikey 透传/Bedrock/ForwardAsResponses/ForwardAsChatCompletions)原先
直接向客户端写 502 且不换号,单账号网络故障期间该账号仍持续被调度,请求全量失败。
对齐 OpenAI 侧 handleOpenAIUpstreamTransportError 的既有语义:
- 传输层错误统一返回 *UpstreamFailoverError(502),由 handler failover 循环换号,
耗尽后才向客户端渲染错误;service 不再写响应
- 持久性故障(connection refused/no route/DNS not found/代理认证失败)额外临时
摘除账号 10 分钟(仅写库,Anthropic 调度以持久化状态为准,无内存快路径)
- context.Canceled 保持原样返回:不换号也不摘账号
- 分类器改为平台无关命名(classifyUpstreamTransportError)供两侧共用
- Ops 错误事件保留各路径原有字段(UpstreamURL/DurationMs/Passthrough)
2026-08-27 09:56:41 +08:00
feeeei
d881bfc0de
fix(openai): 避免 pool 两跳重复计算 system 提示词
2026-08-26 19:55:49 +08:00
wucm667
6ff771d3d3
feat(openai): configure image tool cooldown
2026-08-26 19:07:39 +08:00
Wesley Liddick
efb46db0a9
Merge pull request #5926 from baryon/contrib/routed-codex-model-catalog
...
feat(gateway): generate complete routed Codex model catalogs
2026-08-26 15:49:38 +08:00
shaw
8ba81615e0
merge: resolve conflict with main (upstream endpoint observability)
...
Merge origin/main into contrib/routed-codex-model-catalog.
Single conflict in openai_gateway_forward.go: main added
ClearActualOpenAIUpstreamEndpoint + SetActualOpenAIUpstreamEndpoint
(commit 4795650d2 ) at the same insertion point where the PR added
filterOpenAIResponsesNoneReasoningEffortForAccount. Both changes
are independent — endpoint observability first, then body filtering.
2026-08-26 15:29:01 +08:00
wucm667
50ba146298
fix(openai): preserve multimodal client tool outputs
2026-08-26 15:04:17 +08:00
Wesley Liddick
b9083fc7ad
Merge pull request #6211 from Monika-shipship/codex/ws-v2-tool-id-regression
...
test(openai): 补充 OAuth Responses WS v2 历史 ID 清洗回归测试
2026-08-26 15:03:24 +08:00
Wesley Liddick
1bf76d26d7
Merge pull request #6229 from Wei-Shaw/fix/openai-upstream-endpoint-observability
...
fix(openai): 记录真实上游端点避免错误误报
2026-08-26 15:03:11 +08:00
Long Li
2abce65031
fix(codex): harden routed catalog capability sync
2026-08-26 12:46:31 +09:00
shaw
6ca1e15b0a
chore: update sponsors
2026-08-26 09:58:16 +08:00
Long Li and Cursor
195b219707
fix(codex): isolate API-key catalog cache and DeepSeek Codex defaults
...
Copy cached API-key manifests before group-specific mutation, use DeepSeek
model IDs for Codex fallbacks, omit unsupported config.toml effort, and
drop wildcard mapping keys from generated catalogs.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-26 10:56:17 +09:00
shaw
66d664ff08
chore: update sponsors
2026-08-26 09:53:47 +08:00
shaw
4795650d21
fix(openai): record actual upstream endpoint on errors
2026-08-26 09:42:28 +08:00
Rick
d522aed65e
fix: preserve promo codes for OAuth signup
2026-08-26 08:58:22 +08:00
github-actions[bot]
7634e3c23b
chore: sync VERSION to 0.1.183 [skip ci]
2026-08-25 13:53:14 +00:00
Monika
d8694f03bc
test(openai): cover WSv2 cleanup of stale native tool IDs
2026-08-25 21:45:24 +08:00
Wesley Liddick
e8cb019fab
Merge pull request #6078 from YogaSakti/fix/responses-custom-tool-call-id
...
fix(openai): keep restored tool-call item IDs typed
v0.1.183
2026-08-25 21:32:34 +08:00
Wesley Liddick
7a7bd3729c
Merge pull request #6166 from jyking/fix/email-bind-alias-dedup
...
fix(auth): 邮箱换绑增加别名与并发守卫
2026-08-25 21:31:39 +08:00
Wesley Liddick
49ad7021d7
Merge pull request #6164 from jimbirthday/fix/openai-sticky-capacity-spillover
...
fix(openai): preserve sticky binding on capacity spillover
2026-08-25 21:28:38 +08:00
Wesley Liddick
4952b919a4
Merge pull request #6204 from wucm667/fix/issue-6203-kimi-concurrency-403
...
fix(kimi): keep concurrency-limit 403 recoverable
2026-08-25 21:28:08 +08:00
Wesley Liddick
fa0685a4a3
Merge pull request #6175 from wucm667/feat/issue-6172-antigravity-token-clamp
...
fix(antigravity): clamp compatible token limits
2026-08-25 21:27:57 +08:00
Wesley Liddick
8040428716
Merge pull request #6201 from xuhaihan/fix/codex-session-id-affinity
...
fix(openai): honor Codex session-id header
2026-08-25 21:27:24 +08:00
Wesley Liddick
4ff136cfd9
Merge pull request #6193 from antTing/codex/fix-channel-monitor-v2-nullif
...
fix(channel-monitor-v2): fix composite platform aggregation SQL
2026-08-25 21:26:32 +08:00
Wesley Liddick
832cf4df65
Merge pull request #6208 from Wei-Shaw/fix/openai-oauth-429-quota-scheduling
...
fix(openai): pause OAuth accounts on exhausted quota 429
2026-08-25 20:41:41 +08:00
Long Li and Cursor
77b6c5bb0c
merge: sync contrib/routed-codex-model-catalog with upstream v0.1.182
...
Keep catalog membership on schedulable accounts and intersect advertised
capabilities across all active group members that map an alias. Preserve
upstream plugin, service-tier, and models-list body-limit changes.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-25 21:28:57 +09:00
shaw
f1aadd48d5
fix(openai): pause OAuth accounts on exhausted quota 429
2026-08-25 20:25:22 +08:00
Long Li and Cursor
5934981e22
test(codex): cover unschedulable catalog capability intersection
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-25 21:02:47 +09:00
Long Li and Cursor
db01fb98f8
fix(codex): keep catalog capabilities stable when accounts are unschedulable
...
Intersect advertised alias capabilities across all active group members
that map the model, not only currently schedulable accounts, so rate-limits
cannot widen image input or context windows.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-08-25 21:01:58 +09:00
wucm667
3802268e2d
fix(kimi): keep concurrency 403 recoverable
2026-08-25 19:40:39 +08:00
hank
8e60d57475
fix(openai): honor Codex session-id header
2026-08-25 17:08:27 +08:00
hank
32064d39e7
fix(openai): normalize cross-provider reasoning replay
2026-08-25 17:04:38 +08:00
hank
92a550973a
fix(accounts): reauthorize OpenAI with refresh token
2026-08-25 16:52:29 +08:00
暴走的小笼包
b20f29d115
fix(channel-monitor-v2): fix composite platform aggregation SQL
2026-08-25 16:36:04 +08:00
刘佳林
a8cfe746b3
test(usage): cover user and admin reasoning effort page display
...
Mount the real usage tables and assert users only see the requested
effort, while admins can reveal mapped effort via column settings.
2026-08-25 15:49:04 +08:00
刘佳林
5705f4a4aa
fix(usage): hide mapped reasoning effort from users
...
Users only see the reasoning effort they requested. Admins still see
the requested value plus the forwarded mapped value, matching the
model column's requested vs upstream split.
2026-08-25 15:36:22 +08:00
刘佳林
11ada80d58
feat(usage): 使用记录展示映射前的推理强度
...
用量行新增 requested_reasoning_effort,记录分组策略与模型族改写前的客户端请求值;推理强度列与模型列一致,主行显示请求值,有映射时用 ↳ 展示实际转发值。
2026-08-25 15:10:52 +08:00
wucm667
1a9898a6a4
fix(antigravity): clamp compatible token limits
2026-08-25 13:13:08 +08:00
github-actions[bot]
aa2c4e8d13
chore: sync VERSION to 0.1.182 [skip ci]
2026-08-25 04:47:52 +00:00