配置
忽略文件
通过在项目中创建 `.bobignore` 文件来控制 Bob 可以访问哪些文件。
什么是 .bobignore?
- 目的:保护敏感信息,防止意外更改构建工件或大型资产,并通常定义 Bob 在工作区内的操作范围。
- 如何使用:在工作区目录中创建一个名为
.bobignore的文件。在此文件中列出模式以告诉 Bob 要忽略哪些文件和目录。
Bob 主动监控 .bobignore 文件。您所做的任何更改都会自动重新加载,确保 Bob 始终使用最新的规则。.bobignore 文件本身始终被隐式忽略,因此 Bob 无法更改其自己的访问规则。
模式语法
.bobignore 的语法与 .gitignore 相同。以下是常见示例:
| 示例 | 描述 |
|---|---|
node_modules/ | 忽略整个 node_modules 目录 |
*.log | 忽略所有以 .log 结尾的文件 |
config/secrets.json | 忽略特定文件 |
!important.log | 例外;Bob 将不会忽略此特定文件,即使存在像 *.log 这样的更广泛模式 |
build/ | 忽略 build 目录 |
docs/**/*.md | 忽略 docs 目录及其子目录中的所有 Markdown 文件 |
要了解语法,请参阅 .gitignore 的官方 Git 文档。
Bob 工具如何与 .bobignore 交互
.bobignore 规则在各种 Bob 工具中强制执行:
严格执行(读取和写入)
这些工具在任何文件操作之前直接检查 .bobignore。如果文件被忽略,操作将被阻止:
read_file:不会读取被忽略的文件。write_file:不会写入或创建新的被忽略文件。apply_diff:不会将差异应用于被忽略的文件。GetSymbolsOverview:不会解析被忽略的文件以查找代码符号。
文件编辑工具(潜在的写入绕过)
insert_content 和 search_and_replace 工具使用内部组件来管理更改。
重要:目前,这些工具执行的最终写入操作可能会绕过 .bobignore 规则。虽然初始读取尝试可能会被阻止,但保存操作本身没有显式检查。
文件发现和列表
list_files工具:当 Bob 列出文件时,被忽略的文件通常会被省略或标记为 🔒 符号(请参阅下面的"用户体验")。- 环境详细信息:提供给 Bob 的有关工作区的信息(如打开的选项卡和项目结构)经过过滤以排除或标记被忽略的项目。
命令执行
execute_command工具:此工具检查命令(来自预定义列表,如cat或grep)是否针对被忽略的文件。如果是,则阻止运行该命令。
主要限制和范围
- 以工作区为中心:
.bobignore规则仅适用于当前 Bob 工作区根目录内的文件和目录。此范围之外的文件不受影响。 execute_command特异性:对execute_command的保护仅限于预定义的文件读取命令列表。自定义脚本或不常见的实用程序可能不会被捕获。- 通过
insert_content和search_and_replace进行写入操作:如前所述,由于这些工具的保存机制存在当前限制,它们可能能够写入被忽略的文件。 - 不是完整的沙箱:
.bobignore是一个强大的工具,可以通过其工具控制 Bob 的文件访问,但它不会创建系统级沙箱。
用户体验和通知
- 视觉提示(🔒):在文件列表中,被
.bobignore忽略的文件可能会标记为锁定符号(🔒),具体取决于showbobignoredFiles设置(默认为true)。 - 错误消息:如果工具操作被阻止,Bob 会收到错误:
"对 [file_path] 的访问被 .bobignore 文件设置阻止。您必须尝试在不使用此文件的情况下继续任务,或要求用户更新 .bobignore 文件。" - 聊天通知:当由于
.bobignore而阻止操作时,您通常会在 Bob 聊天界面中看到通知。
本指南帮助您了解 .bobignore 功能、其功能及其当前限制,以便您可以有效地管理 Bob 与代码库的交互。
这个主题怎么样?