K2.5.2 Task 2.5

Edit 失败时:Read + Write 做兜底

Edit 工具要求目标文本在文件中是唯一的。同一字符串出现多次时,Edit 失败。标准兜底:Read 完整文件、做修改、Write 整个文件回去。

为什么 Edit 会失败

Edit 做精确字符串匹配。如果 processPayment 出现在第 15、42 和 89 行,你只想重命名第 42 行那个,Edit 无法区分它们。它会报”non-unique match”错误。

Read + Write 兜底

  1. Read 完整文件内容
  2. 在完整内容中对正确位置应用修改
  3. Write 整个修改后的文件回去

这完全绕过了唯一性要求。Agent 拿到了完整文件内容,可以通过周围上下文识别正确位置,然后写入完整的更新后文件。

不管用的办法

—force 标志:不存在。唯一性要求是基本约束,不是可选检查。

行号:Edit 不接受行号参数。它匹配目标文本字符串,不是位置。

正则:Edit 做精确字符串匹配,不是正则。越来越具体的模式不会改变匹配行为。

什么时候用 Edit vs Read+Write

Edit — 当目标文本在文件中唯一时。大多数单行修改、添加新代码、修改唯一的函数签名。比 Read+Write 更简单、更省 token。

Read+Write — 当 Edit 失败时(非唯一匹配)、在文件中做多处修改时、或修改复杂到全文件控制更方便时。


一句话总结: Edit 要求唯一文本匹配——失败时(非唯一),用 Read 加载完整文件、修改内容、Write 写回去。没有 —force 标志,没有行号,没有正则。