自动批准操作
⚠️ 安全警告:自动批准设置会绕过确认提示,使 Roo 直接访问您的系统。这可能导致数据丢失、文件损坏或更糟。命令行访问尤其危险,因为它可能执行有害操作,从而损坏您的系统或危及安全。仅在您完全信任的操作上启用自动批准。
自动批准设置通过消除重复的确认提示来加快您的工作流程,但它们会显著增加安全风险。
快速入门指南
- 点击聊天输入上方的 自动批准工具栏
- 选择 Roo 可以无需许可执行哪些操作
- 使用主开关(最左边的复选框)快速启用/禁用所有权限
自动批准工具栏
显示已启用权限的提示框和自动批准工具栏
点击工具栏可展开它并配置单个权限:
提示文本框和包含所有选项的展开工具栏
API 请求限制
工具栏包含一个输入字段,用于设置 Roo 可以自动发出的最大 API 请求数:
- 目的:防止失控的 API 使用和意外成本
- 默认:无限制(空字段)
- 建议:根据您的任务复杂性设置一个合理的限制(例如,对于大多数任务为 50-100)
- 工作方式:一旦超过限制,Roo 将暂停并显示一个对话框,允许您重置计数器并继续
此安全功能在以下情况下特别有用:
- 使用昂贵的 API 模型时
- 测试新工作流时
- 让 Roo 自主工作较长时间时
可用权限
| 权限 | 作用 | 风险级别 |
|---|---|---|
| 读取文件和目录 | 允许 Roo 在不询问的情况下访问文件 | 中 |
| 编辑文件 | 允许 Roo 在不询问的情况下修改文件 | 高 |
| 执行批准的命令 | 自动运行白名单中的终端命令 | 高 |
| 使用浏览器 | 允许无头浏览器交互 | 中 |
| 使用 MCP 服务器 | 允许 Roo 使用已配置的 MCP 服务 | 中-高 |
| 切换模式 | 自动在 Roo 模式之间切换 | 低 |
| 创建和完成子任务 | 无需确认即可管理子任务 | 低 |
| 重试失败的请求 | 自动重试失败的 API 请求 | 低 |
| 回答后续问题 | 为后续问题选择默认答案 | 低 |
| 更新待办事项列表 | 自动更新任务进度 | 低 |
用于快速控制的主开关
主开关(复选框)一次性控制所有自动批准权限
工作方式:
- 选中:激活所有已配置的自动批准权限
- 未选中:暂时禁用所有自动批准,而不更改单个设置
- 重要提示:切换时会保留单个权限设置
- 注意:当自动批准菜单展开时,主开关暂时禁用
这意味着您可以:
- 一次性配置您首选的权限
- 使用主开关快速启用或禁用所有权限
- 您的配置将保持完整以备下次使用
在以下情况下使用主开关:
- 在敏感代码中工作时(关闭)
- 进行快速开发时(打开)
- 在探索和编辑任务之间切换时
- 暂时暂停自动化而不丢失设置时
高级设置面板
设置面板提供了详细的控制和重要的安全上下文:
允许 Roo 自动执行操作,无需请求批准。仅在您完全信任 AI 并了解相关安全风险时才启用这些设置。
要访问这些设置:
- 点击右上角的齿轮图标
- 导航到自动批准设置
完整的设置面板视图
读取操作
读取操作(风险:中)
- 设置:“始终批准只读操作”
- 描述:“启用后,Roo 将自动查看目录内容和读取文件,而无需您点击‘批准’按钮。”
- 附加选项:“包含工作区外的文件”:允许 Roo 读取当前工作区目录之外的文件
- 风险级别:中
虽然此设置仅允许读取文件(不修改),但它可能会暴露敏感数据。对于大多数用户来说,它仍然是推荐的起点,但请注意 Roo 可以访问哪些文件。
工作区边界保护
默认情况下,Roo 只能读取当前工作区目录中的文件。“包含工作区外的文件”选项将读取访问权限扩展到工作区边界之外。请考虑其安全影响:
- 默认(未选中):Roo 只能读取项目目录中的文件
- 启用:Roo 可以读取您有权访问的系统上的任何文件
- 建议:除非您特别需要 Roo 访问外部文件,否则请保持禁用
写入操作
写入操作(风险:高)
- 设置:“始终批准写入操作”
- 描述:“无需批准即可自动创建和编辑文件”
- 延迟滑块:“写入后延迟,以允许诊断检测潜在问题”(默认值:1000 毫秒/1 秒)
- 附加选项:
- “包含工作区外的文件”:允许 Roo 修改当前工作区目录之外的文件
- “包含受保护的文件”:允许 Roo 修改通常受
.rooignore和.roo/目录保护的文件
- 风险级别:高
此设置允许 Roo 在没有确认的情况下修改您的文件。延迟计时器至关重要:
- 较高的值(2000 毫秒以上):建议用于诊断时间较长的复杂项目
- 默认值(1000 毫秒):适用于大多数具有活动诊断的项目
- 0 毫秒:无延迟 - 在速度至关重要时使用
- 较低的值:仅在受控环境中使用
安全边界
写入操作设置包括两个重要的安全控制:
- 工作区边界保护:默认情况下,Roo 只能修改当前工作区中的文件。启用“包含工作区外的文件”时请务必格外小心。
- 受保护的文件:Roo 具有针对敏感配置文件的内置保护,以防止意外修改。这包括:
.roo/目录中的文件.rooignore中列出的文件- Roo 自己的配置文件(当它们包含 Roo 特定设置时,例如
package.json、tsconfig.json等)
“包含受保护的文件”选项会绕过此保护——仅在您特别需要修改这些受保护的文件时使用。
写入延迟和问题面板集成
Roo 在写入延迟期间检查的 VS Code 问题面板
当您为写入文件启用自动批准时,延迟计时器会与 VS Code 的问题面板协同工作:
- Roo 对您的文件进行更改
- VS Code 的诊断工具分析更改
- 问题面板更新任何错误或警告
- Roo 在继续之前注意到这些问题
这就像一个人类开发人员在更改代码后暂停以检查错误。您可以根据以下因素调整延迟时间:
- 项目复杂性
- 语言服务器速度
- 错误检测对您的工作流有多重要
浏览器操作
浏览器操作(风险:中)
- 设置:“始终批准浏览器操作”
- 描述:“无需批准即可自动执行浏览器操作”
- 注意:“仅在模型支持计算机使用时适用”
- 风险级别:中
允许 Roo 在没有确认的情况下控制无头浏览器。这可能包括:
- 打开网站
- 导航页面
- 与网页元素交互
请考虑允许自动浏览器访问所带来的安全影响。
API 请求
API 请求(风险:低)
- 设置:“始终重试失败的 API 请求”
- 描述:“当服务器返回错误响应时,自动重试失败的 API 请求”
- 延迟滑块:“重试请求前的延迟”(默认值:10 秒)
- 风险级别:低
此设置会在 API 调用失败时自动重试。重试机制使用指数退避:
- 初始延迟:由滑块设置(默认值:10 秒)
- 退避公式:
min(baseDelay * 2^retryAttempt, 600) - 最大延迟:600 秒(10 分钟)
示例:基本延迟为 10 秒的重试序列:
- 第 1 次重试:10 秒
- 第 2 次重试:20 秒
- 第 3 次重试:40 秒
- 第 4 次重试:80 秒
- 第 5 次重试:160 秒
- 第 6 次重试:320 秒
- 第 7 次重试及以后:600 秒(封顶)
这种指数退避有助于防止 API 过载,同时仍能从瞬态错误中恢复。
MCP 工具
MCP 工具(风险:中-高)
- 设置:“始终批准 MCP 工具”
- 描述:“在 MCP 服务器视图中启用单个 MCP 工具的自动批准(需要此设置和工具的单独‘始终允许’复选框)”
- 风险级别:中-高(取决于已配置的 MCP 工具)
此设置需要两步权限过程以确保安全:
- 启用此全局设置 - 作为所有 MCP 工具自动批准的主开关
- 启用单个工具权限 - 在 MCP 服务器视图中,选中特定工具的“始终允许”复选框
重要提示:两个权限都必须处于活动状态,工具才能自动批准。这种双重权限系统可确保您对哪些 MCP 工具可以无需确认即可执行保持精细控制。
权限存储:您的 MCP 工具权限会保存,并在您下次使用 Roo Code 时被记住。
示例工作流:
- 在设置中启用“始终批准 MCP 工具”
- 导航到 MCP 服务器视图
- 找到特定工具(例如,文件系统操作)
- 选中其“始终允许”复选框
- 只有这样,该特定工具才会自动批准
模式切换
模式切换(风险:低)
- 设置:“始终批准模式切换”
- 描述:“无需批准即可自动在不同模式之间切换”
- 风险级别:低
允许 Roo 在不同模式(代码、架构师等)之间切换,无需请求许可。这主要影响 AI 的行为,而不是系统访问。
子任务
子任务(风险:低)
- 设置:“始终批准子任务的创建和完成”
- 描述:“允许自动创建和完成子任务,无需批准”
- 风险级别:低
使 Roo 能够自动创建和完成子任务。这与工作流组织有关,而不是系统访问。
命令执行
命令执行(风险:高)
- 设置:“始终批准允许的执行操作”
- 描述:“无需批准即可自动执行允许的终端命令”
- 命令管理:“启用‘始终批准执行操作’时可以自动执行的命令前缀。添加
*以允许所有命令(谨慎使用)。” - 风险级别:高
此设置允许终端命令执行,并带有控制功能。虽然有风险,但白名单功能限制了可以运行的命令。重要的安全功能:
- 白名单特定命令前缀(推荐)
- 切勿在生产环境或处理敏感数据时使用
*通配符 - 考虑每个允许命令的安全影响
- 始终验证与外部系统交互的命令
界面元素:
- 输入命令前缀的文本字段
- “添加”按钮以添加新前缀
- 带有 X 的可点击命令按钮以删除它们
常见的白名单示例:
git- 版本控制操作npm run- 运行package.json脚本python -m pytest- 运行 Python 测试cargo test- 运行 Rust 测试go test- 运行 Go 测试docker ps- 列出 Docker 容器ls- 列出目录内容cat- 显示文件内容
安全提示:使用特定的前缀。与其允许所有 python 命令,不如限制为 python -m pytest 以仅用于测试执行。
后续问题
后续问题(风险:低)
- 设置:“始终为后续问题选择默认答案”
- 描述:在可配置的超时后,自动为后续问题选择第一个 AI 建议的答案。这使 Roo 无需手动干预即可继续,从而加快您的工作流程。
- 可视倒计时:启用后,第一个建议按钮上会显示一个倒计时计时器,显示自动选择前的剩余时间。计时器以圆形进度指示器显示,随着时间的推移而耗尽。
- 超时滑块:使用滑块设置等待时间,范围为 1 到 300 秒(默认值:60 秒)
工作方式:
- 倒计时从您配置的时间开始(默认值:60 秒)
- 当计时器达到零时,第一个建议会被自动选择
- 您可以通过点击计时器来暂停倒计时
覆盖选项:您可以随时通过以下方式取消自动选择:
- 点击不同的建议
- 编辑任何建议
- 输入您自己的响应
- 点击计时器以暂停它
风险级别:低
用例:
- 您希望 Roo 继续工作的隔夜运行
- 默认建议通常正确的重复性任务
- 交互不重要的测试工作流
更新待办事项列表
更新待办事项列表(风险:低)
- 设置:“始终批准待办事项列表更新”
- 描述:“无需批准即可自动更新待办事项列表”
- 风险级别:低
此设置允许 Roo 在工作会话期间自动更新任务进度和待办事项列表。这包括:
- 将任务标记为已完成
- 添加新发现的任务
- 更新任务状态(待处理、进行中、已完成)
- 重新组织任务优先级
优点:
- 保持实时任务进度可见性
- 减少多步工作流中的中断
- 使项目状态准确反映
- 帮助跟踪复杂的任务依赖关系
用例:
- 长时间运行的开发会话
- 多步重构项目
- 复杂的调试工作流
- 具有许多子任务的功能实现
当与“子任务”权限结合使用时,这尤其有用,因为它允许 Roo 在没有持续批准请求的情况下维护项目的完整视图。