feeeei
73aabc861c
build: 取消 gosec G703/G704 全局排除,生产代码逐点 nolint、测试文件按路径豁免;DEV_GUIDE 同步 golangci-lint v2.13
2026-08-24 12:21:06 +08:00
feeeei
3b81776429
fix(test): grok QueryQuota 用例排除后台 /v1/models 同步请求,消除请求计数竞态
...
QueryQuota 返回前经 scheduleGrokObservedModelsSync 异步拉取 GET /v1/models,
该请求是否早于 upstream.snapshot() 落到 mock 取决于调度时序,三个精确断言
请求数的用例约 0.5% 偶发多出一条。新增 quotaSnapshot 只返回配额探测链路的
请求,三处断言改用它。
2026-08-24 12:02:53 +08:00
feeeei
cbe258fd12
build: 升级 Go 1.27.0,同步 CI/Dockerfile 并适配 jsonv2 与 golangci-lint v2.13
...
- go.mod 1.26.6 → 1.27.0;backend-ci/release/security-scan 的 go version 断言、
三个 Dockerfile 的 golang 镜像、README 徽章与 DEV_GUIDE 同步
- golangci-lint-action v2.9 → v2.13(v2.9 由 go1.26 构建,拒绝 go.mod 1.27 目标);
新规则按最小方式处理:排除 G703/G704 污点分析(网关按配置转发/写文件,
与既有 G304 排除策略一致)、reflect.Ptr → reflect.Pointer、
ResetQuota 恒返回错误的 SA4023 与 OIDC EC JWK 的 SA1019 加 nolint
- ent 生成代码按 Go 1.27 默认 jsonv2 引擎重新生成:json.RawMessage 字段
生成为同类型别名 jsontext.Value(group.model_pricing / usage_cleanup_task.filters)
- x/net v0.56 在 go1.27 下包装标准库 HTTP/2:ConfigureTransports 经
RegisterProtocol("http/2") 打开 Protocols.HTTP2 而不再写 TLSNextProto,
ReadIdleTimeout/PingTimeout 建连时映射为 HTTP2Config.SendPingTimeout/PingTimeout;
keepalive 测试改断言 Protocols.HTTP2(),并补真实 HTTP/2 协商用例
2026-08-24 12:02:53 +08:00
Wesley Liddick
c416467882
Merge pull request #6084 from wucm667/fix/issue-6057-responses-lite-parallel-tools
...
fix(openai): enforce serial tool calls for Responses Lite
2026-08-24 11:24:17 +08:00
Wesley Liddick
625f1693cb
Merge pull request #6118 from akihitohyh/fix/terminal-output-item-preservation
...
fix(openai): rebuild streaming terminal output from the reported items
2026-08-24 11:23:51 +08:00
Wesley Liddick
f25f399be0
Merge pull request #5905 from wucm667/fix/issue-5883-restore-custom-tool-alias
...
fix(openai): restore namespaced custom tool aliases
2026-08-24 11:23:37 +08:00
Wesley Liddick
748b84a15a
Merge pull request #6081 from wucm667/fix/issue-5942-deferred-tools
...
fix(responses): remove orphan deferred tool flags
2026-08-24 11:23:25 +08:00
Wesley Liddick
fa42c3d706
Merge pull request #6080 from alfadb/fix/cc-stream-empty-tool-call-identity
...
fix(openai): 剔除流式 tool_call 后续 delta 中的空 id/name
2026-08-24 11:23:12 +08:00
Wesley Liddick
fb01f5df2c
Merge pull request #6060 from anguobao123/codex/document-openai-force-http-fallback
...
fix(deploy): forward documented Gateway settings
2026-08-24 11:22:38 +08:00
Wesley Liddick
8238956799
Merge pull request #6095 from xiaxiaxaia/fix/openai-oauth-upstream-model-sync
...
fix(openai): sync models for OAuth accounts
2026-08-24 11:21:58 +08:00
Wesley Liddick
e00a8abdd5
Merge pull request #6124 from anguobao123/codex/diagnose-openai-load-batch-exclusions
...
fix(scheduler): diagnose load-batch OpenAI exclusions
2026-08-24 11:21:30 +08:00
Wesley Liddick
a52665d079
Merge pull request #6061 from shunwang-crypto/fix/ops-mixing-cgroup-host-memory
...
fix(ops): avoid mixing cgroup and host memory metrics
2026-08-24 11:20:51 +08:00
alfadb
cc894ef578
fix(openai): strip empty streamed tool-call id/name
...
DashScope/DeepSeek later tool_call deltas send empty id and
function.name. Clients that merge with !== undefined overwrite
the first delta's identity and dispatch unknown tool "". Drop
those empty fields on the raw Chat Completions SSE path.
2026-08-24 10:59:52 +08:00
Wesley Liddick
3b8a148bcf
Merge pull request #6111 from feeeei/fix/request_billing
...
fix(billing): bill fast mode by the tier upstream actually served
2026-08-24 10:43:17 +08:00
Wesley Liddick
3e45d4e030
Merge pull request #6089 from lyen1688/feat/channel-time-pricing-weekdays
...
新增渠道时间段定价工作日生效规则
2026-08-24 10:21:47 +08:00
shaw
40aaf7b3ae
fix: handle plugin route health update errors
2026-08-24 10:02:06 +08:00
shaw
684d9efb1f
fix: harden plugin runtime and UI bridge
2026-08-24 09:50:46 +08:00
shaw
26ac0498f2
test: update plugin management settings contract
2026-08-24 09:16:16 +08:00
shaw
40ea3aebad
feat: add OAuth outbound transport plugin system
2026-08-24 09:03:37 +08:00
anguobao123
3fd66a33be
fix(scheduler): diagnose load-batch OpenAI exclusions
2026-08-24 01:25:54 +08:00
akihitohyh and Claude Opus 5
243921dc0a
fix(openai): rebuild streaming terminal output from the reported items
...
A terminal event that arrives with an empty output was rebuilt from delta
accumulation. BufferedResponseAccumulator models only one reasoning item, one
message, and N function calls, and records no item id, status, or phase, so a
turn carrying several items collapsed into a single fabricated message: the
reasoning item disappeared, the real message id was replaced, and phase was
lost.
reconstructResponseOutputFromSSE already prefers the raw output_item.done
items over accumulation for buffered responses. The streaming path had no
equivalent because it never sees the whole body at once. Collect the raw item
of each output_item.done keyed by output_index and rebuild from those, falling
back to accumulation only when the stream reported no done item at all.
Items are stored as raw JSON, so vendor extensions and item types this gateway
does not model survive the rebuild verbatim.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-23 20:49:36 +08:00
feeeei
75faedda95
计费:fast/priority 按上游响应实际档位只降不升计费
...
此前 OpenAI service_tier 与 Anthropic speed 的计费档位只看请求侧,上游
因容量把 priority/fast 静默降为 default/standard 时仍按 2x 收费。现在:
- upstreamResponseModelObserver 同时观察响应侧档位:OpenAI 只信终止事件
与无类型 body 里的 service_tier(response.created 为请求回显,忽略),
Anthropic 读 usage.speed;查找仅在带 model 的帧上触发
- ResolveBillingServiceTier 只降不升:响应档位比请求便宜才采纳,更贵、
未知或缺失一律沿用请求侧,与图片尺寸归并、response_model 计费的
"不得更贵"不变式一致
- usage_logs.service_tier 记录实际计费档位,降级写
billing.service_tier_downgraded 审计日志;HTTP、WS 及 ws_v2 relay 全覆盖
2026-08-23 16:53:28 +08:00
wucm667
4eadee1074
[verified] test(openai): update responses bridge signature
2026-08-23 08:45:04 +08:00
wucm667
31d5b67baa
fix(openai): restore namespaced custom tool aliases
2026-08-23 08:11:20 +08:00
xiaxiaxaia
913ec5d74b
fix(openai): sync models for OAuth accounts
2026-08-23 02:07:59 +08:00
lyen1688
77e0409f7c
新增渠道时间段定价工作日规则
2026-08-23 00:30:27 +08:00
wucm667
7498d8fdc8
fix(openai): enforce serial tool calls for Responses Lite
2026-08-22 19:40:19 +08:00
shunwang-crypto and Claude Opus 4.8
cd05772e91
fix(ops): avoid mixing cgroup and host memory metrics
...
In Docker + cgroup v2 with no memory limit set, /sys/fs/cgroup/memory.current
returns a small container number while /sys/fs/cgroup/memory.max is "max".
readCgroupMemoryBytes then returned (used=<container>, total=0, ok=true).
collectSystemStats used that container "used" but, being unable to derive a
cgroup total, filled the total from the host via gopsutil. The dashboard then
computed container_used / host_total, e.g. ~60MB / 23GB ≈ 0.3% — wildly
understating real usage.
Fix: introduce resolveMemoryStats, which picks a single self-consistent
(used, total, percent) trio from ONE source. cgroup metrics are used only when
the cgroup exposes both a current usage AND a concrete limit (memory.max != max,
so total > 0); otherwise used/total/percent all fall back to the host reading.
The two sources are never mixed.
- memory.current valid + memory.max = "max" -> all host metrics
- memory.current = 512MiB + memory.max = 2GiB -> ~25% from cgroup
- no cgroup (bare metal) -> all host metrics
CPU metric behavior is unchanged (cgroup attempt then host fallback).
Adds ops_metrics_collector_memory_test.go covering all branches.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-08-22 19:35:31 +08:00
wucm667
7a09a2eaf7
fix(responses): remove orphan deferred tool flags
2026-08-22 16:42:56 +08:00
Wesley Liddick
d45135d87d
Merge pull request #6068 from okbexx/fix/codex-guardian-parent-affinity
...
fix(openai): keep auto-review on parent account
2026-08-22 13:41:42 +08:00
Wesley Liddick
d29d7f8cbc
Merge pull request #6065 from chinnsenn/fix/image-generation-flows
...
fix(openai): stabilize oauth image generation
2026-08-22 13:35:26 +08:00
Wesley Liddick
fd6cd474d6
Merge pull request #5846 from lbyxiaolizi/fix/responses-chat-malformed-tool-arguments
...
fix(apicompat): reject malformed tool-call arguments
2026-08-22 13:35:02 +08:00
Wesley Liddick
73f6a590bf
Merge pull request #5912 from xuhaihan/fix/deepseek-responses-client-tools
...
fix(deepseek): adapt Codex client tools for Responses
2026-08-22 13:34:49 +08:00
Wesley Liddick
ffc01f9c66
Merge pull request #5864 from wucm667/fix/issue-5850-http-bridge-replay
...
fix(openai): avoid duplicate HTTP bridge replay
2026-08-22 13:34:32 +08:00
Wesley Liddick
6244090c1c
Merge pull request #5487 from an-epiphany/fix/file-part-min
...
fix(apicompat): chat/completions 的 file part 转换为 Responses input_file,不再静默丢弃
2026-08-22 13:34:18 +08:00
Wesley Liddick
844b118785
Merge pull request #5938 from Hakunm/fix/google-one-model-catalog
...
fix(gemini): 限制 Google One OAuth 模型目录 / constrain Google One model catalog
2026-08-22 13:34:05 +08:00
alfadb
86470628df
feat(ollama): 对 Ollama Cloud 账号 clamp max_tokens 上限
2026-08-22 12:38:05 +08:00
Jarl
fa4587041c
fix(openai): keep auto-review on parent account
2026-08-22 12:14:19 +08:00
chinnsenn
cb8dabc12f
fix(openai): stabilize oauth image generation
2026-08-22 11:21:39 +09:00
alfadb
b30651a0ad
fix(ollama): 对齐 Cloud Chat Completions 思维字段为 reasoning_content
...
Ollama Cloud 的 raw /v1/chat/completions 把思维放在 reasoning/thinking,
DeepSeek 客户端只认 reasoning_content。仅对 openai+apikey+force_chat_completions
且具备 Ollama Cloud 信号的账号,在 raw CC 直转路径做 wire JSON 双向补齐。
2026-08-22 09:26:23 +08:00
xuhaihan
cef18b4ad3
fix(deepseek): route client tools through native responses
2026-08-22 01:04:11 +08:00
xuhaihan
30ae15268f
Merge remote-tracking branch 'origin2/main' into fix/deepseek-responses-client-tools
2026-08-22 00:52:33 +08:00
anguobao123
9f2f2738fd
docs(openai): document force HTTP fallback
2026-08-21 23:43:09 +08:00
Wesley Liddick
67380eafd5
Merge pull request #5549 from zcxads666/fix/openai-capabilities-empty-set
...
fix(openai): 允许空 openai_capabilities 的 OAuth 账号加入文本调度
2026-08-21 21:53:27 +08:00
Wesley Liddick
2ddda67354
Merge pull request #6049 from MokoYee/fix/openai-sticky-prefix-system
...
修复 OpenAI Chat 动态系统消息导致账号亲和漂移
2026-08-21 21:34:57 +08:00
zcxads666
40c26f343a
fix(openai): 空 openai_capabilities 不再排除 OAuth 账号的文本调度(#5530)
2026-08-21 21:30:40 +08:00
Wesley Liddick
219368ec6d
Merge pull request #5654 from zninggo/fix/composite-video-generation
...
fix(gateway): Composite 分组放行视频生成端点
2026-08-21 21:27:17 +08:00
Wesley Liddick
fb56bcbd07
Merge pull request #5913 from xuhaihan/fix/deepseek-responses-account-test
...
fix(deepseek): route Responses account tests through OpenAI probe
2026-08-21 21:27:01 +08:00
Wesley Liddick
ccfced36ae
Merge pull request #6011 from HypoxanthineOvO/fix/cn-anthropic-protocol-account-test
...
fix(accounts): route CN provider anthropic-protocol tests to the native endpoint
2026-08-21 21:24:38 +08:00
Wesley Liddick
77d8516e87
Merge pull request #5911 from xuhaihan/fix/deepseek-relay-balance-validation
...
fix(deepseek): reject invalid relay balance payloads
2026-08-21 21:24:21 +08:00