Files
Genarrative/apps
lhk229 95d6068860 取证覆盖校验先折叠重复分页,并让 Fast GDD 尽量一页读完
run 21 的 GDD 是 133 行,而 file.read 的默认 maxLines 是 120,于是被迫分成
1-120 / 121-133 两页。模型把第二页读了两遍,把三个 actionId 全提交上去,
validate_fast_gdd_file_read_coverage 排序后严格走 `start_line == next_line`:

  1-120   → next_line = 121  ✓
  121-133 → next_line = 134  ✓
  121-133 → 121 != 134       ✗「必须从第 1 行无缺口、无重叠地覆盖到文件末尾」

连吃三次 agent.acceptance_update 拒绝,第四次才猜对该交哪两个 id。

同一页读两遍不削弱证据,不该判成重叠。覆盖检查前先按完全相同的
(startLine, endLine, contentSha256) 折叠——内容 SHA 在上一步已经要求全体一致,
折叠掉的确实是同一页的重复回执。真缺口与部分重叠照旧拒绝,有用例钉住。

顺带把取证指令和 playbook 第 5 步改成「每次都传 maxLines=240(上限),尽量一页
读完;确实需要第二页时从上一页的下一行开始,不要重复读同一段」,让典型 GDD 根本
不进分页逻辑。

另记一笔本次排查暴露的可观测性缺口(未修):agent.acceptance_update 的拒绝理由只
回灌给模型,durable receipt 是 detailUnavailable=true / safeDetail=null,事后在
日志和 agent.db 里都查不到,这类拒绝无法复盘。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 09:10:16 +00:00
..
2026-07-17 16:56:46 +08:00