| 1 | # 读取证据的修复与验证 |
| 2 | |
| 3 | 本文完成既有"单 PR 读取改造"的执行链路接线。默认管线中,续页与最终答复 |
| 4 | 决策由 coordinator 负责;legacy 的不完整读取状态机只用于回滚。 |
| 5 | |
| 6 | 真正的读取器从同一份捕获字节或 overlay 缓冲区同时产出输出与来源身份。 |
| 7 | 磁盘的 inspect/range 调用只对 256 KiB 以内的内容捕获身份;更大的本地读取 |
| 8 | 仍是有界流式读取。显式 full 读取及其宿主续页最多捕获 64 MiB。没有版本 |
| 9 | 信息的窗口不能被拼接成整文件声明;无法完成的整文件需求会变成 |
| 10 | `needs_scope`。这些都是内部资源上限,不是新的用户设置。full 读取与自动 |
| 11 | 续页的读取 token 会按实时上下文余量裁剪,并经过有序批次收尾检查;普通预览 |
| 12 | 仍走常规上下文压缩。 |
| 13 | |
| 14 | 续页必须与最近一次签发的完整游标一致。读取器自己负责路径解析,因此保留 |
| 15 | 相对路径与别名。被执行来源必须仍与游标快照匹配。页数与实测活跃时间上限会 |
| 16 | 停止派发;无进展建议会改变请求策略,反复停滞则暂停。 |
| 17 | |
| 18 | 写工具通过各自真实的预览/校验路径声明原始范围。`multi_edit` 针对原始来源 |
| 19 | 计算全部改动用于预检。覆盖写需要当前原始版本的完整证据,未保存的新缓冲区 |
| 20 | 同样适用。写工具在执行时再次校验预检来源。同批次的读取永远不能作为写入 |
| 21 | 证据。历史证据失败会针对冻结的 provider 轮次边界重新评估,并可能被清除。 |
| 22 | 重建豁免要求同一条肯定式重写子句中出现完全一致的路径。移动保留内容并拒绝 |
| 23 | 已存在的目标,因此不需要全文证据;锚点删除沿用既有归属。 |
| 24 | |
| 25 | 桌面与 CLI 显示互不重叠的、从 1 开始的覆盖区间与恢复指引。generation 与 |
| 26 | sequence 用于拦截过期帧;互相独立的读取各自保留条目,回合完成时清除实时 |
| 27 | 状态。 |
| 28 | |
| 29 | 回归覆盖位于 `internal/agent/read_pipeline_regression_test.go`、 |
| 30 | `internal/tool/builtin/read_evidence_regression_test.go`、 |
| 31 | `internal/cli/read_status_test.go` 以及前端的读取状态测试。legacy 协议与 |
| 32 | 依赖编辑测试显式选择回滚模式。golden provider 请求已按本 PR 新增的 |
| 33 | intent/cursor schema 更新。这一有意的 schema 变更可能在使用者首次请求时 |
| 34 | 重建 prompt 缓存;宿主 envelope 与写入来源校验始终不在 provider 可见字节 |
| 35 | 内。不涉及会话存储迁移。新 run 开始后,旧游标必须重新读取。 |
| 36 | |
| 37 | 本地确定性测试与原生 WebView2/WKWebView 检查、真实 provider 的成功与 token |
| 38 | 测量、精确 head 的远端 CI、以及发布可用性是不同层次,必须分开汇报。 |
| 39 | |
| 40 | ## 已完成读取的复用与终态回执 |
| 41 | |
| 42 | 后续改动把"历史需求已完成"与"冻结模型请求中仍有原文"分开。有序的工具 |
| 43 | 收尾器按工作区、规范路径、来源类型、原始身份与快照关联捕获。已满足的需求 |
| 44 | 在校验一致的重复读取后仍保持满足;扩展只保留覆盖与记账,并只索取缺失区间。 |
| 45 | 新的 run 拥有新的注册表与游标绑定。 |
| 46 | |
| 47 | 结构化读取器绕过通用的字符串去重。只有当实际被采样的请求中确实存在完全 |
| 48 | 相同的原文、且仅针对已覆盖区间时,才允许引用。引用不投递新的源代码行, |
| 49 | 也不能引用其他引用。投影移除或扩展改写会触发有界文本投递,但不会撤销先前 |
| 50 | 已完成的需求。会移除可解析源代码文本的扩展改动同样使身份失效。 |
| 51 | |
| 52 | `incomplete_read` 是终态暂停结果,不是成功,也不是传输层重试。可选的 |
| 53 | `read_pause` LocalOnly 回执最多保留 32 个受影响文件,每个字段最多 64 个 |
| 54 | 区间,不含内容或可执行游标。桌面实时视图与历史视图使用同一条幂等提示。 |
| 55 | 旧会话没有该字段;旧读取器通过既有的 LocalOnly 工具身份忽略这个哨兵。 |
| 56 | 不需要迁移,也不需要用户设置。既有写入前置条件与本回执相互独立。后续改动 |
| 57 | 不改变任何工具 schema 或系统前缀;重新投递被压缩移除的文本可能增加单次 |
| 58 | 请求的输入用量。 |
| 59 | |
| 60 | 付费矩阵保留原有 64 个用例,并新增 32 个定向用例与 12 个精确写入用例。 |
| 61 | 其 HTTP 中继把所有上游尝试限制在 600 次以内,每次请求前预留 128,000 |
| 62 | token,用量未知时保留预留,并在 300 万 token 或四小时处停止。中继强制 |
| 63 | 2,048 token 的输出上限(包括原本会省略该上限的适配器),即使下游客户端 |
| 64 | 在最后一个 SSE 哨兵前关闭,也会计入已知用量。它不存储任何凭据或请求体。 |
| 65 | 模型任务失败与宿主不变量失败分别记录。 |
| 66 | |
| 67 | 原生验证发现,信息性暂停回执曾被折叠进已完成的过程材料。现在读取暂停保留 |
| 68 | 在过程折叠之外、位于保留的候选答复之后,且不隐含续页动作。暂停结果在桌面 |
| 69 | 指标与遥测中也与 provider 错误保持区分。同一条渲染回归覆盖实时与历史提示 |
| 70 | 的形态。分页的 TranscriptStore 使用同一套转换,包括空正文的 LocalOnly |
| 71 | 回执;冷后端切片与前端重复翻页加载都与 legacy 全历史转换器分开测试。 |
| 72 | 读取状态事件区间保持 0 基、半开,与 envelope 和暂停回执一致;CLI 与桌面 |
| 73 | 只在显示时做 1 基转换。发射器回归防止原生分页验证中发现的首行可见行号 |
| 74 | 双重偏移。 |
| 75 |