Conversation
|
审查了。产品逻辑有价值,但当前版本不能合 —— 它给 CI 引入了一个确定性的测试失败。 阻断:并发跑该测试 5 次,5 次失败我在 rebase 到 失败的用例是 作为对照, 成因本 PR 把该测试的服务端 let accepted = if index == 0 {
Some(listener.accept().await.unwrap())
} else {
tokio::time::timeout(Duration::from_millis(200), listener.accept()) // ← 200ms
.await.ok().and_then(Result::ok)
};
let Some((mut stream, _)) = accepted else { break; }; // 超时即退出,listener 被 drop并发跑时进程被其它测试拖慢,第二次连接赶不上 200ms 窗口,listener 提前 drop,代理的第二次请求就 Connection refused。第一次连接仍是无限等待,所以单线程下必然通过。 这不是产品逻辑问题(否则单线程也该失败),是测试时序假设过紧。建议把第二次 产品逻辑部分:认可,但要注意与 #2301 的关系你的实现提供了
这两个测试名我在 但请注意:#2301 已经合入 main( 两套设计目标相关但实现不同,直接合会有大量重叠。建议先 rebase 到当前 如果你认为 #2301 的路线有它没覆盖的缺陷,欢迎在 rebase 后指出具体场景,我们再决定是否要替换。 |
5759a68 to
7d9f01a
Compare
7d9f01a to
211108f
Compare
|
感谢 review,已按你的建议处理。 这版已经 rebase 到当前
你指出的测试时序问题也已修复:fake server 现在会读完整请求,并显式等待预期的第二次连接,不再使用 200ms 短窗口。 验证结果:
另外,当前 |
背景
这条改动只处理 OpenAI 会话身份走本地代理的 remote compaction v2。纯官登直接访问官方,默认纯 API 使用本地压缩,都不经过这里。
本 PR 已 rebase 到当前
main,并按 #2301 的实现收缩为增量改动:不再替换 #2301 的原生 Responses 透传路线,只补上它目前缺少的安全降级和原生历史保护。保留的 #2301 行为
encrypted_content和未知字段不重写。response.created→response.output_item.added→response.output_item.done→response.completed。cmp_compaction item ID。X-Codex-Beta-Features。本 PR 新增的行为
compaction_trigger不要求位于 input 末尾,任意位置都能识别。compaction_trigger进行原生探测。encrypted_content的 compaction item 时原样透传;客户端要求流式而上游返回 JSON 时,会渲染为完整 SSE 事件序列。response.completed的截断流,不降级、不摘要重试。400 compaction_incompatible,而不是笼统 502,也不会把 opaque state 降级成明文摘要。测试时序修复
测试服务器现在会按
Content-Length读完整请求,并显式等待预期的第二次连接,不再使用 200ms 的短超时窗口,因此不会在并发负载下提前 drop listener。Base 分支 CI 修复
当前
main上App.tsx里metadataImportPreview/setMetadataImportPreview重复声明,导致所有 PR 的 TypeScript/Vite 构建失败。本 PR 用独立提交删除遗留的 deaduseState,用于解除 base 分支 CI 阻塞。验证
cargo test -p codex-plus-core --test protocol_proxy:139 passedcargo test -p codex-plus-core:通过