内联编辑与 Diff

概述

当 AI 编辑文件时,wescode 不会直接覆盖磁盘内容,而是在编辑器内展示 inline diff decoration,让你清楚地看到每一处修改。你可以逐一审查并决定接受或拒绝。

工作流程

1. AI 发起编辑

AI 通过 edit 或 write 工具提交文件修改。修改内容先写入磁盘,然后立即触发编辑器同步。

2. 展示 Diff

编辑器在文件中显示 inline diff:

3. 用户决策

你可以对每处修改进行操作:

4. 状态同步

操作完成后,编辑器 buffer 与磁盘内容保持一致,不会留下 dirty 状态。

核心保证:buffer === disk

wescode 遵循一条关键不变量:AI 编辑完成后,编辑器 buffer 与磁盘内容完全一致,dirty flag 为 false。

这意味着:

Edit Engine 三级匹配

wescode 的编辑引擎采用三级匹配机制来准确定位修改位置:

  1. 精确匹配:AI 提供的上下文与文件内容完全一致
  2. 模糊匹配:处理空白差异、缩进变化等小幅偏差
  3. 启发式匹配:当文件在 AI 读取后发生了变化,尝试智能定位

如果三级匹配都无法定位,编辑操作会安全失败并通知 AI 重试。

格式化处理

代码格式化是写操作的一部分,由 Go 后端在写入前完成(pre-write),而不是写入后在编辑器中异步格式化。这样做的好处:

常见场景

AI 修改多个文件

AI 可能在一次对话中修改多个文件。每个文件的 diff 独立显示,你可以分别审查和操作。

与版本控制的关系

AI 的编辑直接写入工作目录,与 Git 的工作方式一致:

大文件编辑

对于大文件,AI 通常使用 edit(局部修改)而非 write(全量写入),以减少 diff 范围和提高准确性。

注意事项