superman2003
08ea29428d
fix(grok): recognize probed Free cache accounts
2026-07-15 14:07:01 +08:00
superman2003
f041b5cf0a
fix(grok): cache Free Messages function tools
2026-07-15 13:05:13 +08:00
Wesley Liddick
3f605c3543
Merge pull request #4303 from wp-a/fix/web-fingerprinted-asset-caching
...
fix(web): limit immutable caching to fingerprinted assets
2026-07-15 11:12:50 +08:00
Wesley Liddick
23796a1b34
Merge pull request #4291 from bestony/agent/user-server-timing/bes-26
...
feat: extend Server-Timing to authenticated user web APIs
2026-07-15 11:12:37 +08:00
Wesley Liddick
5b5e41450c
Merge pull request #4310 from jianjianai/codex/perf-scheduler-final
...
perf(scheduler): 完善缓存桶生命周期并复用重建批次查询
2026-07-15 11:09:47 +08:00
Wesley Liddick
10798abe4f
Merge pull request #4300 from wp-a/fix/frontend-datatable-row-cache
...
fix(frontend): clear stale DataTable row caches
2026-07-15 11:08:58 +08:00
Wesley Liddick
4344f6afb0
Merge pull request #4298 from wp-a/fix/openai-images-json-completion-boundary
...
fix(images): preserve JSON completion boundaries
2026-07-15 11:08:47 +08:00
Wesley Liddick
ab369c363f
Merge pull request #4290 from wucm667/fix/issue-4287-preserve-antigravity-rt
...
fix(antigravity): 保留手动输入的 refresh token
2026-07-15 11:08:37 +08:00
Wesley Liddick
6460b9895c
Merge pull request #4297 from wp-a/fix/openai-reset-credit-malformed-details
...
fix(openai): preserve reset count on malformed details
2026-07-15 11:08:25 +08:00
shaw
cf6aa1a5c3
fix(openai): 和解 #4304 与 #4306 的透传错误语义冲突
...
两个 PR 分别合并后在 main 上语义相撞(文本无冲突,CI 才暴露):
- #4306 把所有非 failover 透传错误重建为通用净化信封;
- #4304 要求确定性 context-window 错误不切号且文案对客户端可见
(如触发客户端自动压缩),其测试断言原文可达。
和解方案(保留双方意图):
- 净化器拆出 writeOpenAIPassthroughErrorEnvelope;context-window 错误
仍走本地 JSON 信封 + 净化头策略,但 message 使用脱敏后的上游消息,
不再抹成通用文案;其余错误净化行为不变。
- RebuildsUpstreamErrors 的两个 5xx 用例改用非瞬时状态码(530/501):
瞬时 5xx 对 API-key 账号已按 #4304 契约走 failover(由
APIKeyPassthrough_Transient5xxTriggersFailover 覆盖),净化重建
路径的 5xx 覆盖由非瞬时状态码继续承担。
2026-07-15 10:40:14 +08:00
Wesley Liddick
40a59c9e86
Merge pull request #4275 from jianjianai/codex/perf-u17-response-sse-flush
...
优化 Responses 流式事件边界刷新
2026-07-15 10:30:31 +08:00
Wesley Liddick
65d744d0e1
Merge pull request #4294 from caigee-cmd/fix/parallel-tool-use-ghost-delta
...
fix(apicompat): 并行 tool_use 幽灵 content_block_delta(index 错误)
2026-07-15 10:26:02 +08:00
Wesley Liddick
2381b6c104
Merge pull request #4304 from wp-a/fix/openai-passthrough-5xx-failover
...
fix(openai): fail over API-key passthrough 5xx
2026-07-15 10:20:44 +08:00
shaw
a38220ebdc
Merge origin/main into fix/openai-passthrough-5xx-failover ( resolve #4269 conflicts)
...
# Conflicts:
# backend/internal/service/openai_gateway_passthrough.go
2026-07-15 10:18:55 +08:00
Wesley Liddick
2ceaa4783c
Merge pull request #4311 from jianjianai/codex/perf-openai-forwarding-final
...
perf(openai): 优化 Responses 图片意图判定与透传流式刷新
2026-07-15 10:12:05 +08:00
Wesley Liddick
9b86585909
Merge pull request #4296 from wp-a/fix/openai-responses-sse-json-boundaries
...
fix(openai): repair concatenated Responses stream events
2026-07-15 10:11:55 +08:00
Wesley Liddick
42d1bf298d
Merge pull request #4306 from wp-a/fix/openai-passthrough-error-sanitization
...
fix(openai): sanitize passthrough upstream errors
2026-07-15 10:11:41 +08:00
shaw
eb7933af4c
fix(openai): 移除 #4269 合并时复活的旧版 Grok 错误路径处理
...
#4269 分支基于 #4212 之前的 main(merge-base da85cc7e),合并后把
ForwardAsAnthropic 错误路径上已被 #4212 重构移除的 Grok 块带了回来:
- xai.ParseQuotaHeaders 的 import 已被 main 删除,导致 main 编译失败;
- 该块与 failoverOpenAIUpstreamHTTPError 内部的 handleGrokAccountUpstreamError
重复(后者第一步就用新解析器 parseGrokQuotaSnapshot 更新配额快照),
保留会造成 Grok 错误双重处置。
删除整块,恢复 #4212 语义;#4269 的 agent identity 恢复逻辑保留不动。
2026-07-15 10:01:31 +08:00
Wesley Liddick
4355861ef2
Merge pull request #4269 from catoncat/agent/sub2api-agent-identity
...
feat(openai): support Codex Agent Identity authentication
2026-07-15 09:47:00 +08:00
Wesley Liddick
30df3f68e4
Merge pull request #4264 from lyon-le/perf/content-moderation-keyword-hot-path
...
perf(risk): 优化内容审核关键词热路径(优化性能)
2026-07-15 09:39:33 +08:00
Wesley Liddick
1c61225b28
Merge pull request #4271 from jianjianai/codex/perf-u10-ops-projection
...
优化 Ops 队列深度账号查询
2026-07-15 09:39:09 +08:00
Wesley Liddick
7cb8ece8d3
Merge pull request #4274 from jianjianai/codex/perf-u16-content-seed-scan
...
优化内容会话种子字段扫描
2026-07-15 09:38:59 +08:00
Wesley Liddick
de52f7ba89
Merge pull request #4279 from bestony/agent/0268b42f/bes-21-groups-id-column
...
feat(admin): /admin/groups 列表设置新增 ID 列
2026-07-15 09:38:46 +08:00
Wesley Liddick
42ea78fb47
Merge pull request #4266 from StarryKira/agent/fix-codex-api-key-image-generation
...
fix(frontend): update Codex API key snippets for image generation
2026-07-15 09:38:34 +08:00
Wesley Liddick
8d13bbbea5
Merge pull request #4284 from zh239ns/codex/fix-openai-oauth-image-actual-size
...
fix(images): report decoded OAuth output dimensions
2026-07-15 09:37:34 +08:00
Wesley Liddick
125b03aee6
Merge pull request #4281 from bestony/feat/openai-ws-proxy-failed-host
...
fix(openai): include proxy host in websocket_proxy_failed logs
2026-07-15 09:37:04 +08:00
Wesley Liddick
65093591cd
Merge pull request #4282 from bestony/feat/openai-failover-switching-proxy-host
...
fix(openai): include proxy host in upstream_failover_switching logs
2026-07-15 09:36:53 +08:00
Wesley Liddick
1f91b69ca6
Merge pull request #4288 from wucm667/fix/issue-4285-gpt56-account-cost
...
fix: 修复 GPT-5.6 长上下文账号成本统计
2026-07-15 09:36:43 +08:00
Wesley Liddick
9676b19fba
Merge pull request #4313 from Wei-Shaw/fix/4257-cancel-aware-failover
...
fix(gateway): 客户端断开后 failover 静默终止,不再误报 502 账号耗尽
2026-07-15 09:36:13 +08:00
shaw
a0593b0bf8
fix(gateway): 客户端断开后 failover 静默终止,不再误报 502 账号耗尽
...
上游请求经 detachUpstreamContext(WithoutCancel) 有意脱离客户端取消(保
计费),但 failover 循环仍用原始 c.Request.Context() 重新选号:客户端
断开后上游返回 520 等可 failover 错误时,重新选号必然得到 context
canceled,被误判为账号耗尽,记录并返回通用 502。
修复:客户端已断开 ⇒ failover 静默终止。
- 新增 failoverClientGone(c):请求 ctx 已取消时先停 compact 心跳
(建立 happens-before,对齐其它终结路径),响应未提交则标 499
(statusClientClosedRequest,与并发槽取消路径同惯例)
- 7 个 OpenAI 内联 failover 循环(Responses/Messages/chat_completions/
embeddings/images/grok_media/alpha_search)加双 guard:换号前 +
选号失败分支入口;guard 位于 ReportOpenAIAccountScheduleResult(false)
之后、RecordOpenAIAccountSwitch/池模式重试之前,账号健康副作用
(service 层 detached ctx)不受影响
- FailoverState.HandleFailoverError/HandleSelectionExhausted 入口加
ctx.Err() 检查返回 FailoverCanceled,取消不再改动 failover 状态;
全部 10 个 FailoverCanceled 分支统一调用 failoverClientGone 归类 499
- 上游 detach 与计费设计不变;真实上游 520 事件仍完整落 ops
(面板显示码 COALESCE(upstream_status_code,status_code)=520,
错误率/告警口径不变)
测试:新增 openai_responses_failover_cancel_test.go 复现 issue 场景
(520+取消 ⇒ 不切号、499、无 502 终态)+ 在线客户端对照(正常切换、
耗尽 502);failover_loop_test.go 补入口取消用例并修正取消语义断言。
Fixes #4257
2026-07-15 09:29:05 +08:00
Wesley Liddick
accb918eca
Merge pull request #4212 from heathermhuang/codex/fix-grok-oauth-credential-failover
...
fix(grok): fail over OAuth credential errors safely
2026-07-15 08:37:17 +08:00
jjaw
62be9db9df
补充调度缓存并发语义注释
2026-07-15 07:10:22 +08:00
jjaw
4aedbfc4a8
补充 OpenAI 转发复用边界注释
2026-07-15 06:59:00 +08:00
jjaw
143cab7bf5
复用重建批次内的账号查询
2026-07-15 05:31:50 +08:00
王鹏
536865032c
fix(openai): sanitize passthrough upstream errors
2026-07-15 04:47:16 +08:00
jjaw
8edad3a455
清理全量重建中的过期调度桶
2026-07-15 04:23:06 +08:00
王鹏
91dc31ef39
fix(openai): fail over API-key passthrough 5xx
2026-07-15 04:21:38 +08:00
jjaw
78e09a0f1a
复用请求级图片生成意图判断
2026-07-15 04:20:11 +08:00
王鹏
60bae26a2f
fix(web): limit immutable caching to fingerprinted assets
2026-07-15 04:00:46 +08:00
jjaw
43a2c13173
优化图片生成意图字段扫描
2026-07-15 03:54:32 +08:00
王鹏
f863f664ac
fix(frontend): clear stale DataTable row caches
2026-07-15 03:33:35 +08:00
王鹏
2c13ed32e7
fix(images): preserve JSON completion boundaries
2026-07-15 03:15:47 +08:00
王鹏
d4da138cf5
fix(openai): preserve reset count on malformed details
2026-07-15 02:51:56 +08:00
王鹏
b286cca0c4
fix(openai): repair concatenated Responses stream events
2026-07-15 02:41:23 +08:00
jjaw
31a0efc747
退休已停用分组的调度缓存桶
2026-07-15 01:07:26 +08:00
蔡及
22e97898bb
fix: gofmt on parallel tool regression test
2026-07-15 00:59:28 +08:00
蔡及
07732a5a35
test: add regression tests for parallel tool_use ghost delta ( #4193 )
...
Three tests covering the CC→Responses→Anthropic finalize path:
- TestStreamingParallelToolUseNoGhostDelta: full end-to-end with two
parallel tool_calls, asserts every content_block_delta targets a
started block
- TestStreamingParallelToolUseSecondToolPackedArgsDone: focused test
where tool 1 streams deltas and tool 2 has packed .done args
- TestStreamingThreeParallelToolsAllPackedDone: three tools all with
packed .done, the most extreme case
All three fail on unfixed code (ghost deltas on wrong indices) and
pass after the fix.
2026-07-15 00:47:04 +08:00
蔡及
4f3b5110e2
fix: parallel tool_use ghost content_block_delta (index error)
...
resToAnthHandleFuncArgsDone used state.ContentBlockIndex directly
instead of looking up from OutputIndexToBlockIdx like
resToAnthHandleFuncArgsDelta does. When multiple tool_calls arrive
in parallel and arguments come as a packed .done (no prior delta),
the second+ tool would emit content_block_delta on an index that
was never content_block_start'ed, causing Claude Code to report
"Content block not found".
Fix: resolve block index from OutputIndexToBlockIdx, and skip the
delta if the block is already closed or the index doesn't match
the current open block.
Closes #4193
2026-07-15 00:44:09 +08:00
bestony
324a491671
feat: extend Server-Timing to authenticated user web APIs
...
Mirror the Admin UI Server-Timing opt-in for user-facing pages so
authenticated callers can inspect total/app/db/redis/deps metrics on
session, profile, keys, usage, payment, and related user APIs.
- Collect when X-User-UI-Request=1 or path is on the user allowlist
- Emit for non-admin only on allowlisted paths (header is not auth)
- Exclude payment public/webhook surfaces
- Mark matching SPA requests and allow the new CORS request header
2026-07-15 00:23:27 +08:00
jjaw
9da4cfbdcc
增加调度分组生命周期租约
2026-07-15 00:12:40 +08:00