跳转至

空流式增量保留数组条目

文本合并器按 UTF-8 字节计量流式文本,但会为每个空增量追加一个数组条目。接收重复空更新的实时流可能保留越来越多的条目,而两个字节计数器保持为零。刷新时发布了一个连接后的字符串,并保留了这些条目。实际的 Codex 通知路径接受 delta: '';此诊断验证其流处理器和合并器。

该修复仅跳过空的 chunks.push 操作。空流创建、快照、脏状态、计划发布、回调接收器、背压和驱逐均保持不变。

复现

ORCA_BACKGROUND_LAUNCH=1 node docs/audits/empty-streamed-delta-retention/reproduce.cjs

运行器在内存中反转经过哈希校验的补丁,并检查每个捆绑的源依赖。它不修改任何产品文件,也不启动任何原生进程或 UI。一个有界的 CRLF 对照项检查源和补丁加载。报告记录于 Node 26.6.0 和 Electron 43.7.0 的 Node 24.21.0。

对照项 修复前 修复后
四批 16,384 个空 Codex 增量,每批刷新一次 16,384 → 65,536 个保留槽位 每批之后 0 个槽位
逻辑流计数 1 1
已计入 / 观察到的文本字节 0 / 0 0 / 0
完整调用方场景中的计划回调 / 已发布行 6 / 5 6 / 5
在空更新后追加 hé 相同的 3 字节文本 相同的 3 字节文本
遗忘与处置 清除保留状态 清除保留状态

运行器比较修复前后整个已记录的发布和调度行为。对照项还覆盖首次空快照、发布失败与重试、在前一流被背压时拒绝新的空键、已接受的驱逐、回调接收器、UTF-8 截断以及截断后的空更新。两个运行时各自执行四个源阶段:当前/main 的修复前和修复后,以及 v1.4.198 合并器的修复前和带有相同窄守卫的修复后。

永久回归测试调用实际的 Codex 流调用方。一个临时的 Array.prototype.join 观察者仅在同步快照创建期间测量匹配的块数组,然后恢复该方法。基线以 65,537 个槽位失败,而预期为单个非空前缀;其余 14 个合并器对照项通过。所有 64 个聚焦兼容性测试在修复后通过。参见 validation.json。

来源与事件范围

当前基线与指定 main 提交 291b4ddd6f1c1af480169885e0fda7f9c78ff053 处的合并器逐字节相同。精确的 v1.4.198 合并器包含相同的无条件空追加;其周围实现不同。历史阶段仅替换该模块,并使用已记录的当前 Codex 调用方/依赖。这是一个源覆盖层,而不是打包的历史应用重放。source-versions.json 记录了这些区别和指定调用方哈希。

Claude 的通用检查点 API 也使用该合并器,但其普通提供程序路径在调用它之前会在 claude-streamed-block-identity.ts 中拒绝空文本。此工件演示 Codex 路径并保持 Claude 兼容性;它不声称存在普通 Claude 触发。

测量仪器读取私有 map 和数组的基数,而不改变其内容。这些是保留条目计数,而不是堆、RSS 或字节测量。测试夹具保持对实时流的所有权,直到遗忘/处置;它不证明所有所有者回收后的保留。非空的一字节增量仍可能在文本字节额度内产生可观的数组开销,并且溢出拼接有其自身的瞬态成本。

没有受影响主机数据能够确定 Codex 在 #19831 或另一事件中发出空更新的频率。该发现是报告版本中存在的一种可复现的代码级增长机制。它不将应用范围的 OOM 总量归因于该机制,也不确定其事件量级。远程协议、进程存活、进程终止或终端所有权行为均无变化。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 orca48/orca