内联编辑

wescode 的内联编辑功能让你在编辑器中直接与 AI 协作修改代码,无需在 Chat 面板和编辑器之间切换。


Inline Command (Ctrl+K)

触发方式

操作说明
Cmd+K(macOS)在光标位置打开内联命令
Ctrl+K(Windows/Linux)在光标位置打开内联命令
选中代码 + Cmd+K对选中的代码执行命令

使用场景

无选中时(生成代码):

Cmd+K → "在这里添加一个错误处理中间件"
→ AI 在光标位置生成代码

有选中时(修改代码):

选中一段函数 → Cmd+K → "优化这段代码的性能"
→ AI 修改选中的代码

Selection Action

选中代码操作

选中代码后,可以直接请求 AI 操作:

场景示例指令
重构"提取为独立函数"
优化"减少内存分配"
修复"修复这个 nil pointer"
解释"解释这段代码"
翻译"把注释翻译成英文"
补全"补充错误处理"

Diff 预览

内联 Diff

AI 的修改以 Diff 形式展示在编辑器中:

- func processData(data []byte) {
-     result := parse(data)
-     fmt.Println(result)
- }
+ func processData(data []byte) error {
+     result, err := parse(data)
+     if err != nil {
+         return fmt.Errorf("processData: %w", err)
+     }
+     fmt.Println(result)
+     return nil
+ }

Accept / Reject

操作效果
Accept(接受)应用修改,编辑器同步磁盘
Reject(拒绝)撤销修改,恢复原状

关键行为(INV-EDIT-01):


Edit Engine

三级匹配

wescode 的编辑引擎使用三级匹配策略应用代码修改:

级别策略说明
精确匹配逐字匹配最快最准确
模糊匹配容忍空白差异处理格式差异
语义匹配AST 级别匹配处理重构后的代码

编辑失败处理

当匹配失败时:

  1. 引擎尝试下一级匹配
  2. 使用 EditMatchFallback hook
  3. 报告失败并请求 AI 重试

多文件编辑

跨文件操作

AI 可以在对话中修改多个文件:

"给 UserService 添加一个 Delete 方法,并更新 Handler 和路由"

AI 修改:
1. service/user.go(添加 Delete 方法)
2. handler/user.go(添加 Delete handler)
3. router.go(注册 DELETE 路由)
4. service/user_test.go(添加测试)

文件操作工具

AI 使用以下工具操作文件:

工具用途
read_file读取文件内容
write_file写入新文件
edit_file编辑现有文件
apply_patch应用 patch 格式修改

Ghost Write

智能补全

光标停留超过 800ms 时,AI 提供智能补全建议:

func (s *UserService) Create(ctx context.Context,
    // 光标在此停留
    // AI 建议补全参数和函数体

Ghost Write 特点


格式化

AI 编辑后的格式化

wescode 不做 UI 层面的格式化——格式化是写操作的一部分:

项目风格匹配

AI 通过以下方式匹配项目风格:

  1. Convention 探测:运行时探测缩进、命名等约定
  2. 记忆偏好:记住用户的格式化偏好
  3. 上下文学习:参考周围代码的风格

批量编辑

多位置修改

AI 支持在一个命令中修改多个位置:

"把所有的 fmt.Errorf 改成 errors.New + fmt.Errorf(%w)"
→ AI 扫描全项目
→ 列出所有需要修改的位置
→ 逐一应用修改
→ 每个修改都可以 Accept/Reject

安全措施


注意事项