审核 AI 生成的代码编辑

当您在 Visual Studio Code 中与聊天进行交互时,AI 可以在您的项目中跨多个文件生成代码编辑。本文介绍了如何审查、接受或放弃这些 AI 生成的代码编辑。

待处理更改

一旦 AI 对您的文件进行了更改,它们就会直接应用并保存到磁盘。VS Code 会跟踪哪些文件有待处理的编辑,并允许您单独或一次性地审查它们。

聊天视图显示了已编辑且等待您审查的文件列表。在资源管理器视图和编辑器选项卡中,待处理编辑的文件也会带有方形点图标的指示器。

Screenshot that shows the Chat view, highlighting the changed files list and the indicator in the Explorer view and editor tabs.

当您打开已更改的文件时,编辑器会显示所应用更改的内联差异(diff)。

当您关闭 VS Code 时,待处理编辑的状态会被记住,并在您重新打开 VS Code 时恢复。

审查更改

请按照以下步骤审查文件中的 AI 生成代码编辑

  1. 通过从聊天视图中的已更改文件列表或资源管理器视图中选择文件,打开带有待处理编辑的文件。

  2. 使用编辑器叠加层中的 向上 (Up)向下 (Down) 控件,在文件内的各个编辑点之间导航。

  3. 对于每个编辑,请选择以下操作之一

    • 选择 保留 (Keep) 以接受该编辑。
    • 选择 撤消 (Undo) 以拒绝该编辑并回退更改。
    • 将鼠标悬停在内联更改上,可以接受或拒绝该特定更改,而不会影响文件中的其他编辑。
  4. 或者,您可以从聊天视图中一次性接受或拒绝所有文件中的所有更改。

Screenshot showing the Editor with proposed changes, highlighting the review controls in the editor overlay controls.

以下键盘快捷键可帮助您导航和审查编辑

操作 快捷键
导航到下一个编辑 编辑器叠加层中的 向下 (Down)
导航到上一个编辑 编辑器叠加层中的 向上 (Up)

当您保留或撤消文件中的某个编辑时,编辑器会自动导航到下一个带有待处理更改的编辑(可能位于不同的文件中)。要禁用此自动导航并停留在当前文件中,请将 chat.editing.revealNextChangeOnResolve 在 VS Code 中打开 在 VS Code Insiders 中打开 设置为 false

源代码管理集成

如果您在“源代码管理”视图中暂存了更改,任何待处理的编辑都将被自动接受。反之,如果您放弃更改,任何待处理的编辑也将被放弃。

自动接受编辑

您可以配置 VS Code,使其在可配置的延迟后自动接受 AI 生成的代码编辑,使用 chat.editing.autoAccept 在 VS Code 中打开 在 VS Code Insiders 中打开 设置。将鼠标悬停在编辑器叠加层控件上可停止自动接受倒计时。

重要

如果您自动接受所有编辑,强烈建议在源代码管理中提交之前审查这些更改。了解更多关于 在 VS Code 中使用 AI 的安全注意事项

编辑敏感文件

为了防止对敏感文件(例如工作区配置设置或环境设置)进行无意的编辑,VS Code 会提示您在应用编辑之前进行批准。在聊天中,您可以查看提议更改的差异视图,并选择批准或拒绝它们。

使用 chat.tools.edits.autoApprove 在 VS Code 中打开 在 VS Code Insiders 中打开 设置来配置哪些文件需要批准。该设置使用 glob 模式来匹配工作区中的文件路径。

以下示例配置自动允许对除 .vscode 文件夹中的 JSON 文件和名为 .env 的文件之外的所有文件进行编辑,对于这些例外文件,系统会提示您批准

"chat.tools.edits.autoApprove": {
  "**/*": true,
  "**/.vscode/*.json": false,
  "**/.env": false
}

从会话列表中审查文件更改

当会话完成并对您的项目进行代码更改时,会话列表会显示该会话的文件更改统计信息。要审查更改,请从列表中选择该会话以打开会话详情。

Screenshot of the file changes diff editor in an agent session.

根据代理类型的不同,您可以选择将更改应用到本地工作区,或者检出该会话的分支(适用于云代理)。

© . This site is unofficial and not affiliated with Microsoft.