CCA-F 练习题库· Tool Design & MCP Integration
某开发者效率 agent 需要更新某个文件里的一个配置值。该值出现在一段包含若干几乎完全相同行的代码块中。当该 agent 使用 Edit 时,工具返回错误:“Match not unique: found 3 occurrences of the target text.”。正确的回退做法是什么?
- A用 Bash 跑
sed -i全局替换,一次把目标文本的每一处出现都改掉——sed 并不介意 Edit 拒绝消歧的那个重复串——之后再 Read 一遍文件确认。 - B用 Write 以修正后的版本覆盖整个文件,内容由 Read 已加载到的文件内容拼装而成,这样歧义匹配连同那次 Edit 调用一起消失。
- C用 Read 加载完整文件内容,找出使这次编辑变得唯一所需的确切周边上下文,再用能唯一标识正确位置的更长 old_string 重试 Edit。
- D用 Grep 加 -n 定位三处出现各自的行号,再把选定的行号作为行号参数传给 Edit,使它只改写你想改的那一行。
正确答案:C
解析
- C正确。当 Edit 报告匹配不唯一时,应有的修复方式是先 Read 这个文件,取到足够有区分度的周边上下文,再用更长的、能唯一标识那个单一目标行的 old_string 重试 Edit——这与 Edit 工具的约定一致:old_string 必须精确匹配且唯一。
- A是错的,因为它退回到 Bash/sed 并同时替换了全部三处出现,改动了本应保持不变的行(目标是某一个特定的配置值)。
- B(Read + 整文件 Write)是更重、风险更高的兜底手段,只有在无法构造出唯一锚点时才有必要。
- D在事实层面就不对:Edit 是按文本匹配的,而不是按行号参数,该工具并不支持行号参数。
延伸阅读
本题为本站自有原创练习题,非任何官方考试内容;解析对照 Anthropic 公开文档撰写, 如与最新文档不符请以官方为准。想在限时环境下检验水平,可参加 模拟考(题目与本页题库不重叠)。