编辑引擎
wescode 的编辑增强系统:三级匹配、diff 预览与 buffer 同步。
三级匹配
AI 编辑按精确度分为三级:
| 级别 | 机制 | 精确度 |
|---|---|---|
| L1 精确匹配 | 逐字符比对原文 | 最高 |
| L2 模糊匹配 | 容忍空白差异 | 中等 |
| L3 回退匹配 | EditMatchFallback hook | 兜底 |
当 L1/L2 都匹配失败时,CellSpec.EditMatchFallback 提供应用层自定义回退。
Buffer Overlay(INV-EDIT-01)
核心原则:AI 的 read 工具优先读编辑器内存中的最新内容,而非磁盘旧版本。
工作机制
WescodeBufferSync监听onDidChangeContent,debounce 400ms- 推送 dirty buffer 到后端
BufferStore OverlayFileProvider在ReadFile时先查BufferStore- 未命中才落到磁盘
LocalFileProvider
关键约束
- 按 Cell 分区(不同 workspace 的 dirty buffer 不混)
- 大文件(>1MB)不同步
filepath.EvalSymlinks解析真实路径(macOS symlink 问题)- 保存时
editor/didSave自动清除 overlay
Diff 预览
AI 编辑产出的变更通过 InlineDiffController 展示:
- Accept:纯 UI 清理(清 decoration + 清 checkpoint)
- Reject:磁盘回滚 +
textFileService.revert(uri)重同步
AI 编辑后 buffer === disk(无 dirty 状态)
edit.applied 处理完成后:
- 编辑器 buffer 与磁盘内容一致
- dirty flag 为 false
- 关闭文件永远不会弹"是否保存"对话框
格式化
格式化是写操作的一部分,由 Go 后端 pre-write 处理。
已删除 WescodeAutoFormatter(在编辑器内存格式化但不 save,是 dirty 的主要来源)。
相关文档
- Device Agent →
device-agent.md - CKG 代码知识图谱 →
ckg.md - 工作区即 Cell →
workspace-cell.md