.rooignore
了解如何使用 .rooignore 文件来控制 Roo Code 的文件访问,保护敏感信息,并管理 AI 可以读取或修改哪些文件。
使用 .rooignore 控制文件访问
.rooignore 文件是管理 Roo Code 与项目文件交互的一项关键功能。它允许你指定 Roo 不应访问或修改的文件和目录,类似于 .gitignore 对 Git 的作用。
什么是 .rooignore?
- 目的: 保护敏感信息,防止意外更改构建工件或大型资产,并通常在你的工作区内定义 Roo 的操作范围。
- 如何使用: 在你的 VS Code 工作区的根目录中创建一个名为
.rooignore的文件。在此文件中列出模式,以告诉 Roo 忽略哪些文件和目录。 - 范围:
.rooignore影响 Roo 的工具和上下文提及(如@directory附件)。
Roo 会主动监控 .rooignore 文件。你所做的任何更改都会自动重新加载,确保 Roo 始终使用最新的规则。.rooignore 文件本身总是被隐式忽略的,因此 Roo 无法更改自己的访问规则。
模式语法
.rooignore 的语法与 .gitignore 完全相同。以下是常见示例:
node_modules/:忽略整个node_modules目录。*.log:忽略所有以.log结尾的文件。config/secrets.json:忽略特定文件。!important.log:一个例外;即使存在像*.log这样的更广泛模式,Roo 也不会忽略这个特定文件。build/:忽略build目录。docs/**/*.md:忽略docs目录及其子目录中的所有 Markdown 文件。
有关语法的全面指南,请参阅关于 .gitignore 的官方 Git 文档。
Roo 工具如何与 .rooignore 交互
.rooignore 规则在各种 Roo 工具中得到执行:
严格执行(读和写)
这些工具在进行任何文件操作之前都会直接检查 .rooignore。如果文件被忽略,则操作被阻止:
read_file:不会读取被忽略的文件。write_to_file:不会写入或创建新的被忽略文件。apply_diff:不会将被忽略的文件应用差异。insert_content:不会写入被忽略的文件。search_and_replace:不会在被忽略的文件中搜索和替换。list_code_definition_names:不会解析被忽略的文件以获取代码符号。
文件发现和列表
list_files工具和@directory附件:当 Roo 列出文件或你使用@directory附件时,被忽略的文件会被省略或标记为 🔒 符号(参见下面的“用户体验”)。两者都使用相同的过滤逻辑。- 环境详情: 提供给 Roo 的关于你的工作区的信息(如打开的选项卡和项目结构)经过过滤,以排除或标记被忽略的项目。
上下文提示
@directory附件:目录内容尊重.rooignore模式。被忽略的文件根据showRooIgnoredFiles设置被过滤掉或标记为[🔒]前缀。- 单个文件提及: 被忽略的文件返回“(文件被
.rooignore忽略)”而不是内容。
命令执行
execute_command工具:此工具检查命令(来自预定义的列表,如cat或grep)是否针对被忽略的文件。如果是,则执行被阻止。
主要限制和范围
- 以工作区为中心:
.rooignore规则仅适用于当前 VS Code 工作区根目录中的文件和目录。此范围之外的文件不受影响。 execute_command的特异性: 对execute_command的保护仅限于预定义的文件读取命令列表。自定义脚本或不常见的实用程序可能不会被捕获。- 不是一个完整的沙箱:
.rooignore是一个强大的工具,用于通过 Roo 的工具控制其文件访问,但它不会创建系统级沙箱。
用户体验和通知
- 视觉提示(🔒): 在文件列表和
@directory附件中,被.rooignore忽略的文件可能会被标记为锁定符号(🔒),具体取决于showRooIgnoredFiles设置(默认为 true)。 - 忽略消息: 单个文件提及返回“(文件被
.rooignore忽略)”而不是内容。 - 错误消息: 如果工具操作被阻止,Roo 会收到一条错误:“
Access to [file_path] is blocked by the .rooignore file settings. You must try to continue in the task without using this file, or ask the user to update the .rooignore file.”(由于.rooignore文件设置,对[file_path]的访问被阻止。你必须尝试在不使用此文件的情况下继续任务,或要求用户更新.rooignore文件。) - 聊天通知: 当由于
.rooignore导致某个操作被阻止时,你通常会在 Roo 聊天界面中看到通知。
本指南可帮助你了解 .rooignore 功能、其功能及其当前限制,以便你可以有效地管理 Roo 与你的代码库的交互。