AltimateAI / AltimateAI/altimate-code
`edit` tool: "Could not find oldString" failure — model context drift
- 主要語言
- TypeScript
- 星號
- 811
- 分支
- 134
- 平均合併
- 3 天 2 小時
- 30 天內合併 PR
- 50
描述
## Problem
The `edit` tool fails with:
```
Could not find oldString in the file. It must match exactly, including whitespace, indentation, and line endings.
```
236 occurrences in a single day. This is the second most common tool failure after `webfetch`.
## Root cause
The model's in-context representation of a file drifts from the actual file content. This happens when:
1. **External processes** (formatters, linters) modify files after the model reads them — partially addressed by #450
2. **Multiple edits** to the same file where the model uses stale oldString from before previous edits
3. **Context compaction** drops or summarizes file content, leaving the model with an outdated view
4. **Model hallucination** — generating oldString that was never in the file
## Impact
- Each failed edit wastes a tool call
- Model often retries with the same incorrect oldString, creating short failure bursts
- The existing doom loop detector (threshold=3) catches identical inputs but not semantically similar ones
## Suggested investigation
1. Analyze whether failures correlate with files that were recently edited (context drift) vs. files never read (hallucination)
2. Consider including a snippet of the actual file content in the error response so the model can self-correct (similar approach to #450 for stale files)
3. Evaluate whether the fuzzy matchers (LineTrimmedReplacer, WhitespaceNormalizedReplacer, etc.) are catching enough cases or if thresholds need tuning
貢獻指南
評估
這個 Issue 還沒有評估資料。