自定义指令
自定义指令允许您个性化 Roo 的行为,提供特定的指导来塑造响应、编码风格和决策过程。
您可以使用全局规则(应用于所有项目)、工作区规则(项目特定)或通过 Prompts 标签界面提供自定义指令。
全局规则目录: 自动应用于所有项目。
- Linux/macOS:
~/.roo/rules/
和~/.roo/rules-{modeSlug}/
- Windows:
%USERPROFILE%\.roo\rules\
和%USERPROFILE%\.roo\rules-{modeSlug}\
工作区规则: 仅应用于当前项目,可以覆盖全局规则。
- 首选方法:目录 (
.roo/rules/
).
├── .roo/
│ └── rules/ # 工作区范围规则
│ ├── 01-general.md
│ └── 02-coding-style.txt
└── ... (其他项目文件) - 备用方法:单文件 (
.roorules
).
├── .roorules # 工作区范围规则(单文件)
└── ... (其他项目文件)
模式特定指令: 仅应用于特定模式(例如,code
)。
- 首选方法:目录 (
.roo/rules-{modeSlug}/
).
├── .roo/
│ └── rules-code/ # "code" 模式的规则
│ ├── 01-js-style.md
│ └── 02-ts-style.md
└── ... (其他项目文件) - 备用方法:单文件 (
.roorules-{modeSlug}
).
├── .roorules-code # "code" 模式的规则(单文件)
└── ... (其他项目文件)
规则按顺序加载:全局规则优先,然后是工作区规则(可以覆盖全局规则)。详情请参见全局规则目录。
什么是自定义指令?
自定义指令定义了超出 Roo 基本角色定义的特定行为、偏好和约束。示例包括编码风格、文档标准、测试要求和工作流程指南。
设置自定义指令
全局自定义指令
这些指令适用于所有工作区,无论您在哪个项目上工作,都会保持您的偏好。
如何设置:

- 打开 Prompts 标签: 点击 itBuilder 顶部菜单栏中的 图标
- 找到部分: 找到"所有模式的自定义指令"部分
- 输入指令: 在文本区域输入您的指令
- 保存更改: 点击"完成"保存您的更改
全局规则目录
全局规则目录功能提供可重用的规则和自定义指令,这些规则和指令会自动应用于您的所有项目。此系统支持全局配置和项目特定覆盖。
主要优势
没有全局规则: 您必须在每个项目中维护单独的规则文件:
- 将相同的规则复制到每个新项目
- 手动更新多个项目的规则
- 项目之间没有一致性
使用全局规则: 创建一次规则并在各处使用:
- 全局设置您首选的编码标准
- 在需要时按项目覆盖特定规则
- 在所有工作中保持一致性
- 轻松为所有项目一次性更新规则
目录结构
全局规则目录位置是固定的,无法自定义:
Linux/macOS:
~/.roo/ # 您的全局 Roo 配置
├── rules/ # 应用于所有项目的通用规则
│ ├── coding-standards.md
│ ├── formatting-rules.md
│ └── security-guidelines.md
├── rules-code/ # Code 模式特定规则
│ ├── typescript-rules.md
│ └── testing-requirements.md
├── rules-docs-extractor/ # 文档提取规则
│ └── documentation-style.md
└── rules-{mode}/ # 其他特定模式的规则
└── mode-specific-rules.md
Windows:
%USERPROFILE%\.roo\ # 您的全局 Roo 配置
├── rules\ # 应用于所有项目的通用规则
│ ├── coding-standards.md
│ ├── formatting-rules.md
│ └── security-guidelines.md
├── rules-code\ # Code 模式特定规则
│ ├── typescript-rules.md
│ └── testing-requirements.md
└── rules-{mode}\ # 其他特定模式的规则
└── mode-specific-rules.md
设置全局规则
-
创建全局规则目录:
# Linux/macOS
mkdir -p ~/.roo/rules
# Windows
mkdir %USERPROFILE%\.roo\rules -
添加通用规则 (
~/.roo/rules/coding-standards.md
):# 全局编码标准
1. 新项目始终使用 TypeScript
2. 为所有新函数编写单元测试
3. 使用描述性变量名
4. 为公共 API 添加 JSDoc 注释 -
添加模式特定规则 (
~/.roo/rules-code/typescript-rules.md
):# TypeScript Code 模式规则
1. 在 tsconfig.json 中使用严格模式
2. 对于对象形状,优先使用接口而不是类型别名
3. 始终为函数指定返回类型
可用规则目录
目录 | 用途 |
---|---|
rules/ | 应用于所有模式的通用规则 |
rules-code/ | Code 模式特定规则 |
rules-docs-extractor/ | 文档提取规则 |
rules-architect/ | 系统架构任务规则 |
rules-debug/ | 调试工作流程规则 |
rules-{mode}/ | 任何自定义模式的规则 |
规则加载顺序
规则按以下顺序加载:
- 全局规则(来自
~/.roo/
) - 项目规则(来自
project/.roo/
)- 可以覆盖全局规则 - 遗留文件(
.roorules
,.clinerules
- 用于向后兼容)
在每个级别内,模式特定规则在通用规则之前加载。
工作区级别指令
这些指令仅适用于您当前的工作区,允许您为特定项目自定义 itBuilder 的行为。
通过文件/目录的工作区范围指令
工作区范围指令适用于当前项目内的所有模式,可以使用文件定义:
- 首选方法:基于目录 (
.roo/rules/
)- 在您的工作区根目录中创建一个名为
.roo/rules/
的目录。 - 将指令文件(例如,
.md
,.txt
)放在里面。itBuilder 递归读取文件,根据文件名按字母顺序将其内容附加到系统提示中。 - 如果目录存在且包含文件,此方法优先。
- 在您的工作区根目录中创建一个名为
- 备用方法:基于文件 (
.roorules
)- 如果
.roo/rules/
不存在或为空,itBuilder 会在工作区根目录中查找单个.roorules
文件。 - 如果找到,则加载其内容。
- 如果
模式特定指令
模式特定指令可以通过两种独立的方式设置,可以同时使用:
-
使用 Prompts 标签:
-
打开标签: 点击 itBuilder 顶部菜单栏中的 图标
-
选择模式: 在模式标题下,点击您要自定义的模式按钮
-
输入指令: 在"模式特定自定义指令(可选)"下的文本区域输入您的指令
-
保存更改: 点击"完成"保存您的更改
全局模式规则如果模式本身是全局的(不是工作区特定的),您为其设置的任何自定义指令也将全局适用于该模式的所有工作区。
-
-
使用规则文件/目录: 通过文件提供模式特定指令:
- 首选方法:基于目录 (
.roo/rules-{modeSlug}/
)- 在您的工作区根目录中创建一个名为
.roo/rules-{modeSlug}/
的目录(例如,.roo/rules-docs-writer/
)。 - 将指令文件放在里面(递归加载)。文件按文件名字母顺序读取并附加到系统提示中。
- 如果目录存在且包含文件,此方法对于特定模式优先于备用文件方法。
- 在您的工作区根目录中创建一个名为
- 备用方法:基于文件 (
.roorules-{modeSlug}
)- 如果
.roo/rules-{modeSlug}/
不存在或为空,itBuilder 会在工作区根目录中查找单个.roorules-{modeSlug}
文件(例如,.roorules-code
)。 - 如果找到,则加载其内容用于该模式。
- 如果
- 首选方法:基于目录 (
来自 Prompts 标签、全局规则、工作区规则和模式特定规则的指令都会合并。请参见下面的部分了解确切顺序。
指令如何组合
指令按以下确切格式放置在系统提示中:
====
用户的自定义指令
以下附加指令由用户提供,应尽最大努力遵循,而不干扰工具使用指南。
[语言偏好(如果设置)]
[全局指令(来自 Prompts 标签)]
[模式特定指令(来自 Prompts 标签的当前模式)]
全局规则(来自 ~/.roo/):
[~/.roo/rules-{modeSlug}/ 中文件的内容(如果目录存在且不为空)]
[~/.roo/rules/ 中文件的内容(如果目录存在且不为空)]
模式特定指令(来自文件/目录):
[.roo/rules-{modeSlug}/ 中文件的内容(如果目录存在且不为空)]
[.roorules-{modeSlug} 文件的内容(如果 .roo/rules-{modeSlug}/ 不存在或为空,且文件存在)]
工作区范围指令(来自文件/目录):
[.roo/rules/ 中文件的内容(如果目录存在且不为空)]
[.roorules 文件的内容(如果 .roo/rules/ 不存在或为空,且文件存在)]
====
注意:全局规则首先加载,然后是工作区规则(可以覆盖全局规则)。模式特定规则在每个级别内出现在通用规则之前,基于目录的规则优先于基于文件的备用方案。
关于 .rules 文件的规则
- 文件位置: 首选方法使用
.roo/
内的目录(.roo/rules/
和.roo/rules-{modeSlug}/
)。备用方法使用位于工作区根目录的直接单文件(.roorules
和.roorules-{modeSlug}
)。 - 空文件: 空或缺失的规则文件会被静默跳过
- 源标题: 每个规则文件的内容都包含指示其源的标题
- 规则交互: 模式特定规则补充全局规则而不是替换它们
自定义指令示例
- "始终使用空格进行缩进,宽度为 4 个空格"
- "使用 camelCase 命名变量"
- "为所有新函数编写单元测试"
- "在提供代码之前解释您的推理"
- "专注于代码可读性和可维护性"
- "优先使用社区中最常见的库"
- "在向网站添加新功能时,确保它们是响应式和可访问的"
对于团队环境,请考虑以下方法:
项目标准: 在版本控制下使用工作区 .roo/rules/
目录来标准化特定项目的 Roo 行为。这确保了团队成员之间一致的代码风格和开发工作流程。
组织标准: 使用全局规则(~/.roo/rules/
)建立适用于所有项目的组织范围编码标准。团队成员可以设置相同的全局规则以在所有工作中保持一致性。
混合方法: 将组织标准的全局规则与项目特定要求的工作区规则相结合。工作区规则在需要时可以覆盖全局规则。
基于目录的方法比单个 .roorules
文件提供更好的组织,并支持全局和项目级别的自定义。
与自定义模式结合
对于高级自定义,与自定义模式结合使用,创建具有特定工具访问、文件限制和定制指令的专门环境。