跳到主要内容

文件编辑工具

文件编辑工具的核心难点是什么?​

  • 难点: 不在编辑操作本身,而在如何让 LLM 以高效又可靠的方式告诉系统“改哪里、怎么改”;
  • 张力: 人类语言表达的灵活性与机器精确执行之间的根本矛盾;
  • 五种方案: 差异描述 + Apply Model、旧字符串→新字符串、行号定位、类 Vim 编辑命令、字符串首尾匹配;

五种编辑方案各自怎么工作、代价是什么?​

方案机制优势代价
差异描述 + Apply Model主模型产出 diff 或带省略标记的代码骨架,由更小更快的“应用模型”与原文件合并职责分离,主模型专注高层逻辑合并环节脆弱:微小出入需判断是否同一位置,多个相似片段可能合并错位
旧字符串→新字符串提供 old string 与 new string,框架做字符串查找替换可预测、透明;old string 存在且唯一则成功,否则失败,无模棱两可删大段代码需完整输出原文,一个字符偏差就失败;重复片段需更长上下文消歧
行号定位指定“删除第 X 到 Y 行,插入新内容”精确无歧义,大段删除只需首尾两个数字每次编辑后行号变化;一次输出多处编辑时须统一使用初始行号
类 Vim 编辑命令借鉴 Vim 的复制、剪切、粘贴等命令重组代码(函数搬家)高效语法学习负担大,小模型错误率上升;一次输出多命令不友好,模型难预判编辑后的行号
字符串首尾匹配只给删除区域的开头几行与结尾几行,框架按首尾定位替换区兼顾文本替换的可靠性与行号方案的效率;大段删除只展示边界需保证“首尾”组合在文件中唯一
  • 现状: 旧字符串→新字符串是 Claude Code、Codex 与今天 Cursor 采用的方案;
  • 路线变迁: Cursor 曾是差异描述 + Apply Model 的代表,后因基础模型能力提升不再使用该路线;

为什么为人类设计的 Vim 式命令不适合模型?​

  • 人类模式: 需要不断看到当前状态,并规划下一步的简单操作——写一行,或删几行;
  • 模型模式: 经过较长时间思考,再批量进行较复杂的操作——例如一次写几百行代码;
  • 推论: 要求模型提前计算多步编辑后的行号,与它的工作模式根本错位;