Skip to main content

自动批准操作

⚠️ 安全警告: 自动批准设置会绕过确认提示,让 Roo 直接访问您的系统。这可能导致数据丢失、文件损坏或更严重的问题。命令行访问尤其危险,因为它可能执行有害操作,损坏您的系统或危及安全。仅对您完全信任的操作启用自动批准。

自动批准设置通过消除重复的确认提示来加速您的工作流程,但它们会显著增加安全风险。



快速入门指南

  1. 打开聊天输入框旁边的自动批准下拉菜单
  2. 切换下拉菜单右下角的"启用"以激活或暂停自动批准
  3. 使用全部/无芯片批量选择或清除权限,或选择单个图块;您可以在选择"无"时保持启用状态
  4. (可选)点击齿轮图标打开设置以进行更深入的按权限控制

键盘快捷键

默认快捷键: Cmd+Alt+A (macOS) / Ctrl+Alt+A (Windows/Linux)

无需使用鼠标即可快速切换自动批准的开启/关闭状态。此快捷键会切换全局"启用"状态,同时保留您的权限选择。

自定义快捷键:

  1. 打开 VS Code 命令面板 (Cmd+Shift+P / Ctrl+Shift+P)
  2. 搜索"Preferences: Open Keyboard Shortcuts"
  3. 搜索命令名称(因语言而异):
    • 英语:"Toggle Auto-Approve"
    • 其他语言:查找本地化等效项
  4. 点击命令旁边的铅笔图标
  5. 按下您想要的组合键
  6. 按 Enter 保存

注意: 命令名称会出现在您的 VS Code 界面语言中。如果您使用非英语区域设置,命令将相应地被翻译。


自动批准下拉菜单

自动批准下拉菜单,带有全部/无芯片和全局启用切换(右下角)

下拉菜单显示权限图块的网格。控制项:

  • 启用(右下角):自动批准的主暂停/恢复
  • 全部 / 无(左下角):批量选择或清除权限而不更改启用状态
  • 权限图块:选择哪些操作可以在没有提示的情况下运行;图块仅在禁用时才失效。某些权限仅在您的模型支持该功能时才生效。

可用权限

权限作用风险等级
读取文件和目录让 Roo 在不询问的情况下访问文件中等
编辑文件让 Roo 在不询问的情况下修改文件
执行已批准的命令自动运行白名单终端命令
使用浏览器允许无头浏览器交互中等
使用 MCP 服务器让 Roo 使用配置的 MCP 服务中等-高
切换模式自动在 Roo 模式之间切换
创建和完成子任务无需确认即可管理子任务
回答后续问题为后续问题选择默认答案

全局启用开关

自动批准下拉菜单;右下角的启用和左下角的全部/无芯片

工作原理:

  • 启用 - 自动批准为您选择的权限运行
  • 禁用 - 暂停所有自动批准;您的按权限选择保持不变
  • 全部 / 无 - 在启用状态不变的情况下批量调整选择
  • 注意:仅当启用开启且至少选择了一个权限时,自动批准才会运行。

切换时机:

  • 敏感或生产工作 → 关闭
  • 快速迭代和重构 → 开启
  • 在探索和编辑任务之间切换

高级设置面板

设置面板提供详细的控制和重要的安全上下文:

允许 Roo 在不需要批准的情况下自动执行操作。仅当您完全信任 AI 并了解相关安全风险时才启用这些设置。

要访问这些设置:

  1. 点击下拉菜单右上角的
  2. 导航到自动批准设置

设置面板镜像相同的权限,并提供额外的上下文和保护措施。

重要行为

  • 工作区外的读/写需要相应的工作区外标志以及基础权限。
  • MCP 工具的自动批准需要全局"始终批准 MCP 工具"和每个工具的"始终允许"。资源访问仅遵循全局设置。
  • 模式切换仅在启用模式切换权限时自动批准(涵盖切换到另一个模式和创建新模式)。
  • 自动写入后,Roo 会使用设置 → 上下文管理 → 诊断下的全局写入延迟控制进行等待。

读取操作

读取操作(风险:中等)
只读操作设置

设置: "始终批准只读操作"

描述: "启用后,Roo 将自动查看目录内容和读取文件,而无需您点击批准按钮。"

附加选项:

  • 包含工作区外的文件: 允许 Roo 读取当前工作区目录外的文件

风险等级: 中等

虽然此设置仅允许读取文件(不修改它们),但它可能暴露敏感数据。仍建议作为大多数用户的起点,但请注意 Roo 可以访问哪些文件。

工作区边界保护

默认情况下,Roo 只能读取当前工作区目录中的文件。"包含工作区外的文件"选项将读取访问权限扩展到工作区边界之外。考虑安全影响:

  • 默认(未选中): Roo 只能读取项目目录中的文件
  • 启用: Roo 可以读取您有访问权限的系统上的任何文件
  • 建议: 除非您特别需要 Roo 访问外部文件,否则保持禁用状态

写入操作

写入操作(风险:高)
写入操作设置,带有延迟滑块

设置: "始终批准写入操作"

描述: "无需批准即可自动创建和编辑文件"

写入延迟控制: 在设置 → 上下文管理 → 诊断下配置。请参见 诊断集成

附加选项:

  • 包含工作区外的文件: 允许 Roo 修改当前工作区目录外的文件
  • 包含受保护的文件: 允许 Roo 修改由 .roo/.rooignore 目录保护的文件

风险等级:

此设置允许 Roo 在没有确认的情况下修改您的文件。延迟计时器至关重要:

  • 较高值(2000ms+):推荐用于诊断需要更长时间的复杂项目
  • 默认(1000ms):适用于大多数具有活动诊断的项目
  • 0ms:无延迟 - 在速度是关键时使用
  • 较低值:仅在受控环境中使用

安全边界

写入操作设置包含两个重要的安全控制:

  1. 工作区边界保护: 默认情况下,Roo 只能修改当前工作区内的文件。启用"包含工作区外的文件"时要极度谨慎。

title: "自动批准操作" description: "了解如何配置 Roo 的自动批准设置以提高工作效率,同时管理安全风险。" linkTitle: "自动批准操作" tags: ["auto-approval", "security", "settings", "permissions", "workflow"]

  1. 受保护文件:Roo 阻止修改以下文件:

    • .roo/ 目录中的文件
    • .rooignore 文件

    "包含受保护文件"选项可以绕过此保护 - 仅在您确实需要修改这些文件时使用。

写入延迟和问题窗格集成

VSCode 问题窗格显示诊断信息

VSCode 问题窗格,Roo 在写入延迟期间会检查此窗格

当您启用文件写入的自动批准时,Roo 会使用设置 → 上下文管理 → 诊断下配置的全局写入延迟。延迟计时器与 VSCode 的问题窗格配合工作:

  1. Roo 对您的文件进行更改
  2. VSCode 的诊断工具分析更改
  3. 问题窗格更新显示任何错误或警告
  4. Roo 在继续之前注意到这些问题

这就像人类开发者在更改代码后暂停检查错误一样。您可以根据以下因素调整延迟时间:

  • 项目复杂性
  • 语言服务器速度
  • 错误检测对您工作流程的重要性

浏览器操作

浏览器操作(风险:中等)

设置: "始终批准浏览器操作"

描述: "自动执行浏览器操作而无需要求批准"

注意: "仅在模型支持计算机使用时适用"

风险等级: 中等

允许 Roo 在无需确认的情况下控制无头浏览器。这可能包括:

  • 打开网站
  • 导航页面
  • 与网页元素交互

请考虑允许自动化浏览器访问的安全影响。

MCP 工具

MCP 工具(风险:中高)

设置: "始终批准 MCP 工具"

描述: "在 MCP 服务器视图中启用单个 MCP 工具的自动批准(需要此设置和工具单独的'始终允许'复选框)"

风险等级: 中高(取决于配置的 MCP 工具)

此设置需要两步权限流程以确保安全:

  1. 启用此全局设置 - 作为所有 MCP 工具自动批准的主开关
  2. 启用单个工具权限 - 在 MCP 服务器视图中,为特定工具勾选"始终允许"

重要: 工具要自动批准,必须激活两个权限。此双重权限系统确保您对哪些 MCP 工具可以在无需确认的情况下执行保持细粒度控制。资源检索(access_mcp_resource)仅遵循全局设置。

权限存储: 您的 MCP 工具权限会被保存,下次使用 Roo Code 时会记住。

示例工作流程:

  • 在设置中启用"始终批准 MCP 工具"
  • 导航到 MCP 服务器视图
  • 找到特定工具(例如,文件系统操作)
  • 勾选其"始终允许"复选框
  • 只有这样该特定工具才会自动批准

模式切换

模式切换(风险:低)

设置: "始终批准模式切换"

描述: "在不同模式之间自动切换而无需要求批准"

风险等级:

允许 Roo 在不同模式(代码、架构师等)之间切换而无需请求权限。这主要影响 AI 的行为而不是系统访问。启用此权限时,自动批准还涵盖模式切换和创建新模式。

子任务

子任务(风险:低)

设置: "始终批准子任务的创建和完成"

描述: "允许创建和完成子任务而无需要求批准"

风险等级:

启用 Roo 自动创建和完成子任务。这与工作流程组织相关,而不是系统访问。

命令执行

命令执行(风险:高)
命令执行设置与白名单界面

设置: "始终批准允许的执行操作"

描述: "自动执行允许的终端命令而无需要求批准"

命令管理: "启用'始终批准执行操作'时可以自动执行的命令前缀。添加 * 以允许所有命令(谨慎使用)。"

风险等级:

此设置允许终端命令执行并带有控制。使用白名单和黑名单一起进行深度防御。

  • 优先级:当拒绝规则的匹配前缀等于或比允许匹配更具体时,拒绝规则优先(最长前缀获胜)。
  • 默认拒绝的高风险命令:
    • Unix/macOS: rm, sudo, dd, mkfs, diskutil eraseDisk, shutdown, reboot, chmod -R, chown -R, kill -9, curl | sh, wget | sh
    • Git/Package: git push, npm publish, yarn publish, pnpm publish
    • Windows/PowerShell: Remove-Item, Format-Volume, Stop-Process, shutdown, Set-ExecutionPolicy
  • 生产模板:
    • 用"*"拒绝所有,然后允许特定安全前缀如"git"、"npm run"、"echo"。
  • 危险替换保护:即使允许的前缀,如果命令包含危险的参数或进程替换(例如,${var@P}、插入到 here-strings 中的子shell、zsh 进程替换=(...)、带e:...:的 zsh glob 限定符),也不会自动批准。

配置

  • UI(推荐):设置 → 自动批准 → 执行 → 使用"允许的命令"和"拒绝的命令"编辑器添加/移除前缀。
  • Settings JSON(替代方案):
{
"roo-cline.allowedCommands": ["git", "npm run", "echo"],
"roo-cline.deniedCommands": ["git push", "npm publish", "rm", "sudo", "*"]
}

当定义了两个列表时,应用最长前缀规则;如果拒绝规则等于或更具体,则获胜。

安全前缀示例:

  • git
  • npm run
  • python -m pytest
  • cargo test
  • go test
  • docker ps
  • ls
  • cat

安全提示:使用具体的前缀。而不是允许所有python命令,仅限制为python -m pytest用于测试执行。

后续问题

后续问题(风险:低)
后续问题操作设置与超时滑块

设置: 始终默认回答后续问题

描述: 在可配置的超时后自动选择 AI 为后续问题建议的第一个答案。这通过让 Roo 在无需手动干预的情况下继续进行来加快您的工作流程。

超时滑块: 使用滑块设置 1 到 300 秒的等待时间(默认:60 秒)

工作原理:

  • 在配置的超时后,第一个建议会自动选择
  • 任何用户操作(选择不同的建议、编辑或输入自己的响应)都会取消自动选择

覆盖选项: 您可以随时通过以下方式取消自动选择:

  • 点击不同的建议
  • 编辑任何建议
  • 输入自己的响应

风险等级:

使用场景:

  • 您希望 Roo 继续工作的夜间运行
  • 默认建议通常正确的重复性任务
  • 交互不关键的测试工作流程