跳转至

Claude history-window 读取配额

重启协调的 Claude 历史读取器声明了 16 MiB 源配额,但原始的 stat 后接无限制的 readFile 会允许后续增长。复用 readNodeFileWithinLimit,在从单个描述符读取时强制同一配额。溢出时保留现有的不一致历史结果;它无法证明已提交的消息不存在。

复现

ORCA_BACKGROUND_LAUNCH=1 node docs/audits/claude-history-window-budget/reproduce.mjs

七用例测试夹具针对真实临时文件调用实际的历史读取器、分支证明和有界读取器。它在相关大小快照后立即注入一次追加。基线仅在临时 Vite 转换中反转 fix.patch,保持检出不变。每个子进程具有 45 秒超时和 512 MiB 旧空间上限。不会启动任何应用窗口或 provider 进程。

用例 之前 之后
305 字节的有效源在大小快照后增长到 17 MiB 读取 17,825,792 字节并接受该历史 在 16,777,217 字节后停止,拒绝历史并关闭其描述符
稳定的有效源 接受 接受
恰好 16 MiB 接受 接受
初始为 16 MiB 加一个字节 在读取内容前被拒绝 相同
配额内的增长 读取额外字节并接受 相同
读取错误 不一致的历史 相同;描述符已关闭
缺少锚点 未读取源 相同

之前:一个失败的固定行为断言和六个通过的对照。之后:七个通过的用例。results.json 记录观察到的读取字节数、大小快照、描述符计数、源哈希、退出码和超时状态。这些是读取预算测量,不是 RSS 或保留堆测量;字节配额并不描述所有解析器分配。

该读取器在 v1.4.198 中不存在,因此该发现无法解释 #19768 或 #19831。它修复了一个当前源配额竞争。另一个无限制的 proveClaudeTranscriptBranch 文件读取器没有声明字节配额,且不在本次更改范围内。相关的旧版导入配额竞争已由 #20976 处理。

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