Wesley Liddick
|
1c214eaca4
|
Merge pull request #4059 from visa2/fix/openai-messages-codex-identity
fix(openai): restore Codex identity headers for OAuth Messages
|
2026-07-13 08:56:21 +08:00 |
|
Wesley Liddick
|
841481e051
|
Merge pull request #3971 from yardbirds0/codex/fix-remote-compaction-v2
fix: 保留 remote_compaction_v2 原生 Responses 请求链路
|
2026-07-13 08:54:53 +08:00 |
|
Wesley Liddick
|
2f4478fd32
|
Merge pull request #4019 from wucm667/fix/compact-keepalive-writer-nil-guard
fix(service): 补齐 compact keepalive writer nil 守卫
|
2026-07-13 08:54:31 +08:00 |
|
Wesley Liddick
|
877bee84a1
|
Merge pull request #4072 from jianjianai/codex/fix-upstream-review
修复 tool_search 参数解析与 compact writer 生命周期
|
2026-07-13 08:54:15 +08:00 |
|
Wesley Liddick
|
d734dbdac4
|
Merge pull request #3997 from lyon-le/feat/openai-fast-policy-user-scope
feat(frontend): Fast/Flex 策略支持搜索选择用户
|
2026-07-13 08:54:01 +08:00 |
|
Wesley Liddick
|
05865d9b65
|
Merge pull request #4003 from wucm667/fix/codex-message-item-id-prefix
fix(codex): 剥离续链 message item 的非法 item_* id
|
2026-07-13 08:53:51 +08:00 |
|
jjaw
|
73ffd13430
|
关联上游 issue #3818 #3887 #3961
相关修复 PR:#3989 #3994
|
2026-07-12 05:12:20 +08:00 |
|
jjaw
|
f57d06d959
|
合并 compact writer 修复
|
2026-07-12 04:53:55 +08:00 |
|
jjaw
|
1a8401f5f3
|
合并 tool_search 参数修复
|
2026-07-12 04:53:54 +08:00 |
|
jjaw
|
06af8115f7
|
修复 compact 心跳 writer 生命周期
|
2026-07-12 04:53:41 +08:00 |
|
jjaw
|
5015b7a1c1
|
修复 tool_search 参数对象反序列化
|
2026-07-12 04:53:34 +08:00 |
|
visa2
|
d5b47c2142
|
fix(openai): restore Codex identity for OAuth Messages
|
2026-07-11 20:47:52 +08:00 |
|
Tian Lee
|
84bb7d0709
|
fix: 保留 remote_compaction_v2 原生 Responses 链路
|
2026-07-11 12:51:53 +08:00 |
|
wucm667
|
6e2bb31281
|
fix(service): guard compact keepalive writer delegates
|
2026-07-11 08:52:46 +08:00 |
|
 wucm667andClaude Opus 4.8
|
4d4ba64bf7
|
fix(codex): 剥离续链 message item 的非法 item_* id
OpenAI OAuth 转发续链请求时,type=message 的 item 的 id 被客户端以
item_* 形式回放,但上游要求以 msg 开头,返回 400
"Expected an ID that begins with 'msg'",sub2api 随后向客户端返回 502。
客户端自动重试会不断重放同一份坏上下文,导致连续失败。
filterCodexInputWithOptions 在 PreserveReferences=true 路径下为
type=message 增加与 #3785 (fd64d07e6) 平行的 id 前缀检查:非 msg 开头
即删除。合法的 msg* id 原样保留,不改写 item_* 为 msg_*,因为改写出的
id 未必对应真实上游对象。
原 TestFilterCodexInput_NonToolCallItemKeepsID 以 message + item_msg_001
断言"保留 id",该行为已被上游拒绝,改用 web_search_call 覆盖同一意图。
Fixes #3981
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-10 23:32:34 +08:00 |
|
Lyonle
|
0464856c4a
|
feat(frontend): Fast/Flex 策略支持搜索选择用户
将手工 User ID 输入替换为带防抖的邮箱模糊搜索和多选标签,同时继续保存 user_ids。
回显已有用户邮箱并保留无法解析的历史 ID,补齐中英文文案路径及组件回归测试。
|
2026-07-10 22:27:15 +08:00 |
|
Wesley Liddick
|
e316ebf528
|
Merge pull request #3989 from xlplbo/fix/codex-mcp-tools-bridge
fix(apicompat): 补齐 Codex 0.14x 工具链经 chat 回退桥的转换(custom/tool_search/namespace)
|
2026-07-10 22:09:25 +08:00 |
|
Wesley Liddick
|
07fac34713
|
Merge pull request #3991 from fengshao1227/fix/anthropic-usage-cache-creation-tokens
fix(apicompat): Responses↔Anthropic 转换补齐 cache_creation_input_tokens
|
2026-07-10 21:49:29 +08:00 |
|
Wesley Liddick
|
151b9265fc
|
Merge pull request #3994 from fengshao1227/fix/compact-keepalive-nil-pointer
fix(handler): opsCaptureWriter 释放后 nil pointer panic
|
2026-07-10 21:49:07 +08:00 |
|
github-actions[bot]
|
6c588bb950
|
chore: sync VERSION to 0.1.151 [skip ci]
|
2026-07-10 13:24:13 +00:00 |
|
 xlplboandClaude Fable 5
|
90e9d03dec
|
fix(apicompat): 强制选择 tool_search 的 tool_choice 降级为指向代理的 function 选择
tool_search 工具未被丢弃而是降级为同名 function 代理,此前 tool_choice 过滤
把它连同其他服务端工具类型一起静默丢弃,强制工具搜索被退化为自动选择,
违反调用方明确指定的工具选择语义。改为映射到指向代理的 function 选择;
未声明 type=tool_search 时无可指向的代理,维持丢弃。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NWQyEgFKKbdve67G6qCoAU
|
2026-07-10 21:14:33 +08:00 |
|
 xlplboandClaude Fable 5
|
e2b68d1f90
|
fix(apicompat): tool_choice 仅转发实际存在于转换结果中的工具
此前只检查转换后是否还剩任意工具,不校验 tool_choice 指向的工具是否幸存:
强制选择被丢弃的服务端工具(如 web_search)或指向不存在名字时,选择项被
原样转发,chat 上游因 tool_choice 指向未声明工具而 400。改为具名选择项仅
在目标存在于转换后工具集时转发,服务端工具类选择项随工具本身丢弃;
"auto" 等字符串形式保持原样转发。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NWQyEgFKKbdve67G6qCoAU
|
2026-07-10 21:06:45 +08:00 |
|
 xlplboandClaude Fable 5
|
a2cdaa6419
|
fix(apicompat): 内置 tool_search 与同名工具撞名时显式拒绝请求
tool_search 服务端工具降级后的代理 function 不能改名(codex 的模型侧按
tool_search 这个名字调用),与客户端声明的同名 function/custom 工具无法
区分:去程产生重复声明,回程会把普通工具的调用劫持还原成 tool_search_call。
与 namespace 摊平撞名的处理一致,在请求转换阶段显式报错(网关 400);
重复声明 type=tool_search 去重后只产出一个代理,不拒绝。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NWQyEgFKKbdve67G6qCoAU
|
2026-07-10 21:06:26 +08:00 |
|
li
|
bc3cb29027
|
fix(handler): 补齐 opsCaptureWriter 全部委托方法的 nil 守卫
|
2026-07-10 21:03:40 +08:00 |
|
li
|
89a551b964
|
fix(handler): opsCaptureWriter 释放后访问 nil panic
Fixes #3961
|
2026-07-10 20:56:31 +08:00 |
|
li
|
83f169e4fa
|
fix(apicompat): 补齐 Responses→Anthropic 流式路径的 cache_creation_input_tokens
|
2026-07-10 20:49:44 +08:00 |
|
xlplbo
|
eb4d005031
|
Merge remote-tracking branch 'upstream/main'
|
2026-07-10 20:46:38 +08:00 |
|
li
|
0d28f7f90d
|
fix(apicompat): Responses↔Anthropic 转换补齐 cache_creation_input_tokens
Fixes #3935
|
2026-07-10 20:40:45 +08:00 |
|
Wesley Liddick
|
deff3123de
|
Merge pull request #3984 from Wei-Shaw/fix/issue-3901-codex-identity-pairing
fix(openai): originator 与最终 User-Agent 首段配套收口,修复 codex 上游 404(#3901)
v0.1.151
|
2026-07-10 19:36:46 +08:00 |
|
shaw
|
8a51119e39
|
fix(openai): pair originator with final User-Agent for codex upstream
上游 /backend-api/codex 的 404 gating 是配套校验:originator 必须与
User-Agent 首段(首个 '/' 前的 client 名)配套且为官方 codex 身份,
错配(如 originator=codex_cli_rs + UA=codex-tui/...)一律 404;version
头若携带须 >= 0.144.0。
修复:
- pkg/openai 新增 PairCodexClientIdentity:由最终出站 UA 推导配套
originator(含 CODEX_INTERNAL_ORIGINATOR_OVERRIDE 尾部括号组身份恢复、
精确集合大小写归一、长度/字符集校验)
- service 新增 enforceCodexIdentityHeaders 终态收口:originator 按最终
UA 重配,推导不出官方身份整体回退默认 Codex CLI 身份;version 低于
0.144.0 提升为内置版本;originator 缺失时 no-op(保护 messages bridge)
- 接入非透传/透传/WS 三条转发路径(透传与 WS 删除会把 codex-tui 等官方
UA 强改为 codex_cli_rs 造成错配的旧兜底)、用量探针(指纹缓存 UA 与硬
编码 originator 错配)、账号 responses/图像测试(opencode 错配)
- messages 兼容桥构建前显式打 bridge 标记,防止映射到非 gpt-5/codex
模型时收口误改其刻意最小化的请求形态
Fixes #3901
|
2026-07-10 19:11:26 +08:00 |
|
 xlplboandClaude Fable 5
|
f1082bb78f
|
fix(apicompat): namespace 摊平名撞名时显式拒绝请求
摊平名与顶层 function/custom 工具撞名、或跨 namespace 摊平出同名时,
chat 上游无法按 namespace 区分调用归属:此前重复声明照发上游、回程
固定命中其中一条映射,调用可能被还原到错误工具。这类请求在原生
Responses 上游合法,歧义由摊平转换制造且不可消除,改为在请求转换
阶段直接报错(网关返回 400 invalid_request_error 并点名冲突双方);
同一 (namespace, 子工具) 的重复声明去重后不拒绝。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NWQyEgFKKbdve67G6qCoAU
|
2026-07-10 17:38:48 +08:00 |
|
 xlplboandClaude Fable 5
|
7942338328
|
fix(apicompat): 回程还原 namespace 子工具调用,修复 Codex MCP 工具 unsupported call
Codex 0.14x 将 MCP 工具声明为 namespace 工具,chat 桥去程摊平为
"<namespace>__<name>" function 工具后,回程仅原样回传平铺名的
function_call 项;codex 按 namespace+name 路由查不到该名字,所有
MCP 工具调用被判为 unsupported call。
- NamespaceToolNames 构建摊平名 →(namespace, 子工具名)反查表
(摊平名超长带截断哈希,无法按字符串切分还原)
- 非流式/流式回程命中映射时还原为裸子工具名 + namespace 字段,
ResponsesOutput 新增 Namespace 字段并同步 wire 层白名单
- 回退桥入口将映射与 CustomTools/ToolSearchDeclared 一并穿入
已在测试机经 codex exec + MCP server 端到端验证。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NWQyEgFKKbdve67G6qCoAU
|
2026-07-10 17:38:17 +08:00 |
|
Wesley Liddick
|
5260a42a0b
|
Merge pull request #3953 from lyon-le/feat/openai-fast-policy-user-scope
feat(openai): 支持用户级 Fast/Flex 策略
|
2026-07-10 17:31:55 +08:00 |
|
Wesley Liddick
|
815516d8d3
|
Merge pull request #3969 from jinfeijie/fix/grok-responses-reasoning-effort
fix(grok): preserve compatible reasoning effort
|
2026-07-10 17:31:41 +08:00 |
|
jinfeijie bot
|
5a0dd510e5
|
fix(grok): remove obsolete helper
|
2026-07-10 17:11:04 +08:00 |
|
jinfeijie bot
|
0fa1eb85ec
|
fix(grok): preserve compatible reasoning effort
|
2026-07-10 16:58:17 +08:00 |
|
Wesley Liddick
|
6dd3274aaf
|
Merge pull request #3948 from superman2003/fix/gpt56-billing-usage-integrity
fix(openai): correct GPT-5.6 billing and usage gaps
|
2026-07-10 15:45:18 +08:00 |
|
Wesley Liddick
|
d0f6f27d5f
|
Merge pull request #3941 from Tassoi/codex/fix-image-gen-namespace-strip
fix(image): strip Codex image_gen namespace declarations
|
2026-07-10 15:45:05 +08:00 |
|
Wesley Liddick
|
6a2063b374
|
Merge pull request #3883 from ShuminFu/fix/setup-token-auto-refresh
fix: 后台自动刷新纳入 setup-token 账号(修复 8h 后 401)
|
2026-07-10 15:44:54 +08:00 |
|
Lyonle
|
f2966530c5
|
feat(openai): 支持用户级 Fast/Flex 策略
|
2026-07-10 15:16:09 +08:00 |
|
superman2003
|
de28eba3c8
|
fix(openai): harden GPT-5.6 billing and usage
|
2026-07-10 15:13:11 +08:00 |
|
Tassoi
|
d3a1835ed7
|
fix(image): strip Codex image_gen namespace declarations
|
2026-07-10 06:37:06 +00:00 |
|
Shumin
|
a495d5e302
|
test: 更新断言以覆盖 setup-token 纳入后台刷新
- ListOAuthRefreshCandidates SQL 断言由 type = 'oauth' 改为
type IN ('oauth', 'setup-token')。
- ClaudeTokenRefresher.CanRefresh 增加 anthropic setup-token → true 用例。
|
2026-07-10 02:27:33 -04:00 |
|
github-actions[bot]
|
9a2f11b4e2
|
chore: sync VERSION to 0.1.150 [skip ci]
|
2026-07-10 06:27:11 +00:00 |
|
shaw
|
0dec1ad292
|
fix(service): 消除 isOpenAIGPT56Model 重复声明,统一到 openai_model_alias.go
PR #3898 与 #3909 各自新增了同名函数(billing 精确匹配版 / gateway
前缀匹配版),合并后 internal/service 编译失败。保留前缀匹配语义作为
唯一实现:对 normalizeKnownOpenAICodexModel 的输出(gpt-5.6-* 精确
基名)canonicalize 幂等且精确分支命中,计费行为不变;同时保住
gpt-5.6-*-max 等后缀变体的识别。
v0.1.150
|
2026-07-10 14:09:07 +08:00 |
|
Wesley Liddick
|
8b96acde97
|
Merge pull request #3898 from Arron196/feat/gpt-5.6-cache-billing-stats
feat(openai): 支持 GPT-5.6 系列缓存写入计费与统计
|
2026-07-10 13:57:29 +08:00 |
|
Wesley Liddick
|
5c9748cef9
|
Merge pull request #3922 from fengshao1227/fix/user-breakdown-request-type-filter
fix(admin): GetUserBreakdown request_type 筛选使用字符串解析
|
2026-07-10 13:56:40 +08:00 |
|
Wesley Liddick
|
312ab1f0bd
|
Merge pull request #3926 from fengshao1227/fix/ws-passthrough-reasoning-effort-candidates
fix(usage): WS passthrough effort 提取补入映射后模型候选
|
2026-07-10 13:46:25 +08:00 |
|
li
|
ea9f40b63f
|
fix(frontend): UserBreakdownParams.request_type 类型从 number 改为 UsageRequestType
|
2026-07-10 12:38:21 +08:00 |
|
li
|
b9b013a088
|
fix(usage): WS passthrough effort 提取补入映射后模型候选
Fixes #3924
|
2026-07-10 11:56:47 +08:00 |
|