Sophclaw 中文文档 下载 App

diff 审阅与写入前确认 — AI 改代码你先看一眼

为什么 diff 审阅这么重要

常规 AI Agent 改文件的流程是:AI 直接写入 → 你事后才看到改了什么。对于小型脚本或临时文件这可能能接受,但对于有版本管理的代码库:

SophCode Desktop 把这个流程反过来:AI 先生成 diff → 你审阅 → 你确认后才写入。

diff 是什么

diff(difference 的缩写)是一种描述文件变更的标准格式,和 git diff 输出的格式完全一样。一段典型的 diff 长这样:

--- a/src/utils/parser.ts
+++ b/src/utils/parser.ts
@@ -42,7 +42,10 @@ parseInput(input: string): Result {
   const result = parse(input);
+  if (!result) {
+    return null;
+  }
   return result;
 }

逐行解释:

审阅界面的三个按钮

每次 AI 生成 diff 后,SophCode Desktop 会弹出审阅界面,三个操作选项:

接受(Accept)

AI 把 diff 应用到目标文件,修改正式生效。接受后 AI 会在 diff 下方记录"2026-10-15 14:32 用户接受了 parser.ts 的修改",方便后续追溯。

拒绝(Reject)

AI 放弃这处 diff,不改这个文件。如果你在对话里说过"这样改不对",AI 会换一种方案重新生成 diff。如果只是不想改这个文件,直接拒绝即可。

修改后接受(Edit & Accept)

这是最灵活的选项——你直接在 diff 里编辑新增/删除的内容,然后让 AI 按你修改后的版本写入。比如 AI 生成的空值检查条件写得不够好,你可以把它改成更完善的版本后再接受。

一个实际例子

假设你让 AI "在 parser.ts 的 parseInput 函数里加一个空值检查":

AI 生成的 diff:

   const result = parse(input);
+  if (!result) {
+    return null;
+  }
   return result;

你审阅后可能的操作:

   const result = parse(input);
+  if (!result || result.value === undefined || result.value === '') {
+    return null;
+  }
   return result;

diff 审阅的价值

diff 审阅机制的核心价值是把"事后补救"变成"事前把关":

什么时候可以跳过审阅

diff 审阅很有价值,但有成本。以下场景下你可以考虑直接让 AI 执行(不需要 diff 确认):

SophCode Desktop 支持在配置里设置哪些操作自动跳过审阅(比如在实验目录里的写入),哪些操作必须走 diff 流程。

与 Git 配合

diff 审阅和 Git 是天然互补的:

整个工作流:让 AI 干活 → diff 确认 → Git commit,既高效又安全。