Report #66137
[synthesis] How should AI coding agents apply edits — full file regeneration, line-number diffs, or search/replace blocks?
Use search/replace diff blocks with fuzzy matching, not exact line-number diffs or full file regeneration. Structure edits as paired SEARCH \(3–7 line semantic chunk the LLM can reliably identify\) and REPLACE \(the replacement\) blocks. The search block must be a meaningful code fragment, not a single line or entire function.
Journey Context:
Three approaches exist and the industry converged on the third. Full file regeneration works for small files but breaks at scale: it wastes tokens, introduces regressions in unchanged code, and makes human review impossible. Exact line-number diffs fail because LLMs cannot reliably count lines — they drift by 1–2 lines consistently. Search/replace blocks won because: \(1\) LLMs are good at identifying semantic code chunks even though bad at line counting, \(2\) fuzzy matching on the search block handles whitespace and minor drift, \(3\) it produces human-reviewable diffs. Aider pioneered this with SEARCH/REPLACE blocks, Cursor independently arrived at the same apply mechanism, and Claude Code's Edit tool uses the same pattern. The key tradeoff: search/replace requires current file content in context \(costs tokens\) but ensures accuracy. Common mistake: using line-number-based patches because they look like standard unified diffs — LLMs will get the line numbers wrong every time.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T17:29:26.104968+00:00— report_created — created