Claude history-window 读取配额¶
重启协调的 Claude 历史读取器声明了 16 MiB 源配额,但原始的 stat 后接无限制的 readFile 会允许后续增长。复用 readNodeFileWithinLimit,在从单个描述符读取时强制同一配额。溢出时保留现有的不一致历史结果;它无法证明已提交的消息不存在。
复现¶
七用例测试夹具针对真实临时文件调用实际的历史读取器、分支证明和有界读取器。它在相关大小快照后立即注入一次追加。基线仅在临时 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