Roo Code之自定义指令(Custom Instructions),规则(Rules)
在Roo Code 中,Custom Instructions 可以通过Instructions 设定和Rules 规则文件实现。
什么是Custom Instructions?
自定义指令(Custom Instructions)定义了超出Roo基本角色定义范围的具体行为、偏好和约束。示例包括编码风格、文档标准、测试要求和工作流程指南。
指令文件位置
可以通过全局规则(应用于所有项目)、工作区规则(针对特定项目)或在 Prompts 标签界面中提供自定义指令。全局规则目录:自动应用于所有项目。
● Linux/macOS:~/.roo/rules/ 和 ~/.roo/rules-{modeSlug}/
● Windows:%USERPROFILE%.roo\rules\ 和 %USERPROFILE%.roo\rules-{modeSlug}\
工作区规则:仅应用于当前项目,可以覆盖全局规则。
首选方法:目录形式 (.roo/rules/)
```json . ├── .roo/ │ └── rules/ # 工作区范围内的规则 │ ├── 01-general.md │ └── 02-coding-style.txt └── ...(其他项目文件) ```
备用方法:单文件形式 (.roorules)
```json . ├── .roorules # 工作区范围内的规则(单文件) └── ...(其他项目文件) ```模式特定指令:仅适用于特定模式(例如代码模式)。
首选方法:目录形式 (.roo/rules-{modeSlug}/)
.
├── .roo/
│ └── rules-code/ # 适用于“代码”模式的规则
│ ├── 01-js-style.md
│ └── 02-ts-style.md
└── ...(其他项目文件)
备用方法:单文件形式 (.roorules-{modeSlug})
```json . ├── .roorules-code # 适用于“代码”模式的规则(单文件) └── ...(其他项目文件) ```规则按顺序加载:
先加载全局规则 , 然后是工作区规则(可以覆盖全局规则)。
如何设置自定义指令
全局自定义指令
全局自定义指令适用于所有工作区,无论处理哪个项目,都能保持偏好设置。
设置步骤:
- 点击右下角模式的菜单
- 在弹出的窗口点击“模式设置”的按钮
- 拉到最下方找到 “Custom Instructions for All Modes”
全局规则目录
全局规则目录功能提供了可复用的规则与自定义指令,这些规则会自动应用于所有的项目。Roo Code 既支持全局配置,也支持针对特定项目的覆盖设置。
使用全局规则的好处
未使用全局规则时:必须在每个项目中单独维护规则文件:
-
将相同的规则复制到每个新项目
-
手动在多个项目中更新规则
-
项目之间无法保持一致性
使用全局规则后:只需创建一次规则即可随处使用:
-
全局设置偏好的编码标准
-
可根据需要为特定项目覆盖特定规则
-
在所有工作中保持一致性
-
轻松一次性更新所有项目的规则
目录结构
全局规则目录的位置是固定的,不可自定义:
Linux/macOS:
~/.roo/ # 全局配置目录
├── rules/ # 应用于所有项目的通用规则
│ ├── coding-standards.md
│ ├── formatting-rules.md
│ └── security-guidelines.md
├── rules-code/ # 代码模式专用规则
│ ├── typescript-rules.md
│ └── testing-requirements.md
├── rules-docs-extractor/ # 文档提取模式规则
│ └── documentation-style.md
└── rules-{mode}/ # 其他特定模式的规则目录└── mode-specific-rules.md
Windows:
%USERPROFILE%\.roo\ # 全局配置目录
├── rules\ # 应用于所有项目的通用规则
│ ├── coding-standards.md
│ ├── formatting-rules.md
│ └── security-guidelines.md
├── rules-code\ # 代码模式专用规则
│ ├── typescript-rules.md
│ └── testing-requirements.md
└── rules-{mode}\ # 其他特定模式的规则目录└── mode-specific-rules.md
可用规则目录
目录名称 | 用途说明 |
---|---|
rules/ | 应用于所有模式的通用规则 |
rules-code/ | 代码模式专用规则 |
rules-docs-extractor/ | 文档提取专用规则 |
rules-architect/ | 系统架构任务专用规则 |
rules-debug/ | 调试工作流专用规则 |
rules-{mode}/ | 自定义模式专用规则({mode}为模式标识占位符) |
规则加载顺序
规则按以下顺序加载:- 全局规则(来自 ~/.roo/ 目录)
- 项目规则(来自 project/.roo/ 目录)——可覆盖全局规则
- 旧版文件(.roorules, .clinerules - 用于向后兼容)
在每个层级中,模式特定规则的加载优先级高于通用规则。
工作区级指令
工作区级指令仅适用于当前工作区,允许针对特定项目自定义 Roo Code 的行为。
工作区全局指令适用于当前项目中的所有模式,可通过以下文件方式定义:
首选方法:基于目录的方式 (.roo/rules/)**
1. 在工作区根目录创建名为 .roo/rules/
的目录
2. 将指令文件(如 .md
, .txt
格式)放入该目录。Roo Code 会递归读取所有文件(包括子目录),并按照文件名的字母顺序将其内容附加到系统提示中
3. 当该目录存在且包含文件时,其内容将与全局规则目录一同加载
注意:如果 .roo/rules/
目录存在但为空,Roo Code 将回退使用 `.roorules 文件
备用方法:基于文件的方式 (.roorules)**
1. 如果 .roo/rules/
目录不存在或为空,Roo Code 会在工作区根目录查找单个 .roorules
文件
2. 若找到该文件,则会加载其内容
(注:这种方式允许项目级定制,同时保持了与旧版本配置方式的兼容性)
模式专属指令
模式专属指令可通过两种独立的方式设置,这两种方式可同时使用:通过模式设置页面设置:
- 点击右下角模式的菜单
- 在弹出的窗口点击“模式设置”的按钮
- 在设置页面找到 “Mode-specific Custom Instructions (optional)”,在下方的文本区域中输入指令
- 保存更改:点击"完成"保存设置
注:如果模式本身是全局模式(非工作区专属),则为其设置的任何自定义指令都将在所有工作区中对该模式全局生效。
通过规则文件/目录设置:
可通过文件方式提供模式专属指令:首选方法:基于目录的方式 (.roo/rules-{modeSlug}/)
- 在工作区根目录创建名为 .roo/rules-{modeSlug}/ 的目录(例如 .roo/rules-docs-writer/)
- 将指令文件放入目录(支持递归加载,包含子目录)。系统按文件名字母顺序读取文件并将其内容附加到系统提示中
- 如果该目录存在且包含文件,此方法的优先级高于备用文件方法
备用方法:基于文件的方式 (.roorules-{modeSlug})
- 如果 .roo/rules-{modeSlug}/ 目录不存在或为空,Roo Code 会在工作区根目录查找单个 .roorules-{modeSlug} 文件(例如 `.roorules-code)
- 若找到该文件,则会为该模式加载其内容
来自提示词标签页的指令、全局规则、工作区规则和模式专属规则将被组合使用。
指令组合方式
系统提示词中的指令严格按照以下格式进行组合:====
用户自定义指令以下为用户提供的额外指令,应尽力遵循这些指示,同时不得干扰"工具使用"准则。语言偏好:
[若已设置语言偏好]全局指令:
[来自模式设置的全局指令]模式专属指令:
[当前模式下来自模式设置的模式专属指令]规则:# 来自 rules-{modeSlug} 目录的规则:
[若存在 ~/.roo/rules-{modeSlug}/ 和 .roo/rules-{modeSlug}/ 目录,则包含其中所有文件的内容]# 来自 .roorules-{modeSlug} 的规则:
[若不存在模式专属目录或目录为空,则使用 .roorules-{modeSlug} 文件内容]# 来自 .rooignore 的规则:
[若适用,包含与.rooignore相关的指令]# 代理规则标准 (AGENTS.md):
[若工作区根目录存在且启用了 AGENTS.md 或 AGENT.md 文件,则包含其内容]# 来自 rules 目录的规则:
[若存在 ~/.roo/rules/ 和 .roo/rules/ 目录,则包含其中所有文件的内容]# 来自 .roorules 的规则:
[若不存在通用规则目录或目录为空,则使用 .roorules 文件内容]====
请注意:系统会从所有适用的目录(包括全局目录 ~/.roo/ 和工作区目录 .roo/)加载规则,而不仅仅是第一个包含文件的目录。模式特定规则的显示顺序优先于通用规则。仅在确定使用哪种方法时,基于目录的规则才优先于基于文件的后备方案,但系统会读取所有适用的目录内容。
(注:这意味着系统会合并所有有效目录中的规则文件内容,模式专属规则会排列在通用规则之前显示,但实际加载时会处理所有符合条件的目录)
关于规则文件的说明
文件位置:首选方法使用 .roo/ 目录内的规则目录(.roo/rules/ 和 .roo/rules-{modeSlug}/)。备用方法使用直接位于工作区根目录的单个文件(.roorules 和 .roorules-{modeSlug})。
递归读取:规则目录采用递归读取方式,包含子目录中的所有文件
文件过滤:系统自动排除缓存文件和临时文件(包括但不限于 .DS_Store、.bak、.cache、.log、.tmp、Thumbs.db 等)
空文件处理:空文件或缺失的规则文件将被静默跳过
来源标头:基于目录的规则不包含标头,而基于文件的规则会包含 # 来自 {文件名} 的规则: 的标头
规则交互:模式专属规则是对全局规则的补充而非替换
符号链接:完全支持文件和目录的符号链接,最大解析深度为5层以防止无限循环
(注:系统会智能处理各类规则文件,确保配置灵活性的同时保持稳定性。符号链接支持方便用户管理分散的规则文件,但通过深度限制避免了可能的循环引用问题)
AGENTS.md 支持说明
Roo Code 同时支持从工作区根目录下的 AGENTS.md(或备用文件 AGENT.md)加载规则:
- 功能说明:提供智能体专属规则和人工智能行为指南
- 文件位置:必须位于工作区根目录
- 加载机制:默认自动加载。如需禁用 AGENTS.md 加载,请在 VSCode 设置中配置 “roo-cline.useAgentRules”: false
- 优先级:在模式专属规则之后加载,但在通用工作区规则之前加载
- 标题格式:在系统提示中添加 # 代理规则标准 (AGENTS.md): 标头
- 符号链接:支持链接到其他位置的 AGENTS.md 文件的符号链接
此功能允许团队维护标准化的 AI 智能体行为规则,这些规则可与项目代码一同进行版本控制。
(注:通过 AGENTS.md 文件可以实现团队协作场景下的标准化 AI 行为管理,符号链接支持则提供了灵活的配置文件管理方式)
自定义指令示例
- “始终使用空格进行缩进,缩进宽度为4个空格”
- “变量命名采用驼峰命名法”
- “为所有新函数编写单元测试”
- “在提供代码前先解释推理过程”
- “专注于代码的可读性和可维护性”
- “优先使用社区中最常见的库”
- “为网站添加新功能时,确保其具备响应式和无障碍特性”
实战建议
虽然这里的介绍使用的都是中文,但实际在实战中, 指令和规则的内容最好都是使用英文。
在团队环境中,建议采用以下方法:- 项目标准化:
使用纳入版本控制的工作区 .roo/rules/ 目录,规范特定项目中 Roo 的行为表现。这可确保团队成员之间保持一致的代码风格和开发工作流程。 - 组织标准化:
通过全局规则(~/.roo/rules/)建立适用于所有项目的组织级编码标准。团队成员可设置相同的全局规则,确保所有工作保持统一标准。 - 混合方案:
将组织标准的全局规则与项目特定要求的工作区规则相结合。需要时,工作区规则可以覆盖全局规则的设置。
基于目录的配置方式相比单一的 .roorules 文件具有更好的组织性,同时支持全局和项目层级的自定义配置。