Skip to content

AGENT 处理记录

本文档记录一次实际的 Markdown 文档更新任务中遇到的问题,以及对应的排查和解决方法,方便后续执行类似任务时直接复用。

任务背景

本次任务需要更新两个文档:README.mdindex.md。目标是把原本较短的介绍扩写得更详细一些,同时保持原有内容方向不变。

实际遇到的问题

问题 1:精确替换没有命中

在第一次尝试修改 README.md 时,使用了精确搜索替换的方式,但工具返回 No match found for search text

这说明传入的搜索文本和文件中的实际内容并没有完全一致。虽然从表面上看文本相同,但真实文件里可能存在以下差异:

  • 不同的换行符形式。
  • 行尾空格或不可见字符。
  • 文件内容与预期版本不一致。
  • 编辑器或工具在复制过程中引入了细微差异。

问题 2:部分文件修改成功,部分失败

在并行处理两个文件时,index.md 更新成功,但 README.md 更新失败。

这类情况说明不能默认两个文件的处理方式都适用。即使文件结构看起来相似,也可能因为实际文本内容不同、空行不同、换行不同,导致其中一个匹配失败。

问题 3:最近修改文件必须重新读取

在处理过程中,系统提示 index.md 和后续的 README.md 都属于“最近被修改的最终版本”,要求在继续编辑之前必须重新读取。

这意味着不能基于旧上下文继续改文件,否则可能覆盖用户已经确认过的最新内容。

解决问题的方法

方法 1:搜索替换失败后,先重新读取文件

当精确替换失败时,不要继续盲目重试同一段搜索文本。更稳妥的做法是先重新读取目标文件,确认当前真实内容,再决定后续操作。

本次处理过程中,通过重新读取 README.mdindex.md,确认了:

这样可以避免误判文件状态。

方法 2:部分成功时,缩小修改范围

当一个批次中只有部分文件更新成功时,下一步应该只处理失败的文件,不要重复改已经成功的文件。

本次就是在确认 index.md 已完成后,只继续处理 README.md,从而避免覆盖已经确认的最终内容。

方法 3:精确替换多次失败后,改用补丁更新

如果多次精确替换都无法命中,说明直接依赖文本完全匹配的方式不够稳定。这时更适合改用补丁方式直接更新文件。

本次处理 README.md 时,最终通过补丁更新完成了内容替换。相比反复调整搜索文本,这种方式更直接,也更适合处理短文件的整体更新。

方法 4:只在必要时重新读取,避免覆盖最终版本

一旦系统提示文件是最近修改的最终版本,就必须重新读取该文件。重新读取后,要以最新内容作为基线继续处理,而不是依赖之前的记忆或旧结果。

这个原则在文档编辑场景尤其重要,因为 Markdown 文件看起来简单,但非常容易因为旧上下文覆盖掉已经确认过的段落。

推荐的处理流程

后续如果再遇到类似的 Markdown 文档更新任务,建议按下面的顺序处理:

  1. 先读取当前文件内容,确认真实基线。
  2. 优先使用小范围、精确的替换方式。
  3. 如果替换失败,先重新读取文件,不要连续盲改。
  4. 如果部分文件成功、部分失败,缩小处理范围,只修改失败的文件。
  5. 如果精确替换反复失败,改用补丁方式进行整体更新。
  6. 如果系统提示文件已被修改为最终版本,继续编辑前必须重新读取。

结论

这次任务暴露出的核心问题,不是内容写作本身,而是文件编辑过程中的基线一致性问题。要稳定完成文档更新,关键不在于一次性把内容写出来,而在于:

  • 始终基于最新文件内容操作。
  • 在失败后优先确认原因,而不是重复同一种修改方式。
  • 在精确替换不稳定时及时切换到补丁方案。

这样可以显著降低覆盖最终内容、误判文件状态和反复修改失败的风险。