Lzh on GitHub

自定义指令

了解如何使用自定义指令根据您的偏好、编码风格和项目要求调整 Roo Code 的行为。

自定义指令允许您个性化 Roo 的行为,提供特定的指导,从而塑造响应、编码风格和决策过程。

指令文件位置
您可以使用全局规则(应用于所有项目)、工作区规则(特定于项目)或通过 “提示” 选项卡界面提供自定义指令。全局规则目录:自动应用于所有项目。
  • 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              # 工作区范围的规则(单个文件)
└── ... (其他项目文件)
特定于模式的指令:仅应用于特定模式(例如,代码)。
  • 首选方法:目录 (.roo/rules-{modeSlug}/)
.
├── .roo/
│   └── rules-code/        # “代码”模式的规则
│       ├── 01-js-style.md
│       └── 02-ts-style.md
└── ... (其他项目文件)
  • 备用方法:单个文件 (.roorules-{modeSlug})
.
├── .roorules-code         # “代码”模式的规则(单个文件)
└── ... (其他项目文件)
规则按顺序加载:先是全局规则,然后是工作区规则(可以覆盖全局规则)。有关详细信息,请参阅全局规则目录

什么是自定义指令?

自定义指令定义了超出 Roo 基本角色定义的特定行为、偏好和约束。示例包括编码风格、文档标准、测试要求和工作流指南。

设置自定义指令

全局自定义指令

这些指令适用于所有工作区,无论您在哪个项目上工作,都能保持您的偏好。

如何设置:

  1. 打开“提示”选项卡:点击 Roo Code 顶部菜单栏中的 Roo Code 图标
  2. 找到部分:找到“所有模式的自定义指令”部分
  3. 输入指令:在文本区域中输入您的指令
  4. 保存更改:点击“完成”以保存您的更改

全局规则目录

全局规则目录功能提供了可重用规则和自定义指令,这些指令会自动应用于您的所有项目。此系统同时支持全局配置和项目特定的覆盖。

主要优势

没有全局规则时:您必须在每个项目中维护单独的规则文件:

  • 将相同的规则复制到每个新项目
  • 在多个项目中手动更新规则
  • 项目之间没有一致性

有了全局规则后:创建一次规则,随处使用:

  • 全局设置您的首选编码标准
  • 需要时按项目覆盖特定规则
  • 保持所有工作的一致性
  • 轻松一次性更新所有项目的规则

目录结构

全局规则目录位置是固定的,无法自定义:

Linux/macOS

~/.roo/                           # Your global Roo configuration
├── rules/                        # General rules applied to all projects
│   ├── coding-standards.md
│   ├── formatting-rules.md
│   └── security-guidelines.md
├── rules-code/                   # Rules specific to Code mode
│   ├── typescript-rules.md
│   └── testing-requirements.md
├── rules-docs-extractor/         # Rules for documentation extraction
│   └── documentation-style.md
└── rules-{mode}/                 # Rules for other specific modes
    └── mode-specific-rules.md

Windows

%USERPROFILE%\.roo\               # Your global Roo configuration
├── rules\                        # General rules applied to all projects
│   ├── coding-standards.md
│   ├── formatting-rules.md
│   └── security-guidelines.md
├── rules-code\                   # Rules specific to Code mode
│   ├── typescript-rules.md
│   └── testing-requirements.md
└── rules-{mode}\                 # Rules for other specific modes
    └── mode-specific-rules.md

设置全局规则

  1. 创建全局规则目录
# Linux/macOS
mkdir -p ~/.roo/rules

# Windows
mkdir %USERPROFILE%\.roo\rules
  1. 添加通用规则 (~/.roo/rules/coding-standards.md):
# Global Coding Standards

1. Always use TypeScript for new projects
2. Write unit tests for all new functions
3. Use descriptive variable names
4. Add JSDoc comments for public APIs
  1. 添加特定于模式的规则 (~/.roo/rules-code/typescript-rules.md):
# TypeScript Code Mode Rules

1. Use strict mode in tsconfig.json
2. Prefer interfaces over type aliases for object shapes
3. Always specify return types for functions

可用的规则目录

目录目的
rules/适用于所有模式的通用规则
rules-code/特定于代码模式的规则
rules-docs-extractor/用于文档提取的规则
rules-architect/用于系统架构任务的规则
rules-debug/用于调试工作流的规则
rules-{mode}/任何自定义模式的规则

规则加载顺序

规则按此顺序加载:

  1. 全局规则(来自 ~/.roo/
  2. 项目规则(来自 project/.roo/)- 可以覆盖全局规则
  3. 传统文件(.roorules.clinerules - 用于向后兼容)

在每个级别中,特定于模式的规则在通用规则之前加载。

工作区级别指令

这些指令仅在您当前的工作区内适用,允许您为特定项目定制 Roo Code 的行为。

通过文件/目录设置工作区范围的指令

工作区范围的指令适用于当前项目中的所有模式,并且可以使用文件进行定义:

  • 首选方法:基于目录 (.roo/rules/)
    • 在您的工作区根目录中创建一个名为 .roo/rules/ 的目录。
    • 将指令文件(例如 .md.txt)放在其中。Roo Code 会递归读取文件(包括子目录),并按照文件名按字母顺序将其内容附加到系统提示中。
    • 当此目录存在并包含文件时,其内容将与任何全局规则目录一起加载。
    • 注意:如果 .roo/rules/ 目录存在但为空,Roo Code 将回退到使用 .roorules 文件。
  • 备用方法:基于文件 (.roorules)
    • 如果 .roo/rules/ 不存在或为空,Roo Code 会在工作区根目录中寻找一个名为 .roorules 的文件。
    • 如果找到,其内容将被加载。

特定于模式的指令

特定于模式的指令可以通过两种独立的方式设置,并且可以同时使用:

  1. 使用“提示”选项卡
  • 打开选项卡:点击 Roo Code 顶部菜单栏中的 Roo Code 图标。
  • 选择模式:在“模式”标题下,点击您想要自定义的模式的按钮。
  • 输入指令:在“特定于模式的自定义指令(可选)”下的文本区域中输入您的指令。
  • 保存更改:点击“完成”以保存您的更改。
全局模式规则
如果模式本身是全局的(不是工作区特定的),您为其设置的任何自定义指令也将全局应用于该模式在所有工作区中。
  1. 使用规则文件/目录:通过文件提供特定于模式的指令:
  • 首选方法:基于目录 (.roo/rules-{modeSlug}/)
    • 在您的工作区根目录中创建一个名为 .roo/rules-{modeSlug}/ 的目录(例如,.roo/rules-docs-writer/)。
    • 将指令文件放在其中(递归加载,包括子目录)。文件将被读取并按照文件名按字母顺序附加到系统提示中。
    • 如果目录存在并包含文件,此方法将优先于特定模式的备用文件方法。
  • 备用方法:基于文件 (.roorules-{modeSlug})
    • 如果 .roo/rules-{modeSlug}/ 不存在或为空,Roo Code 会在工作区根目录中寻找一个名为 .roorules-{modeSlug} 的文件(例如,.roorules-code)。
    • 如果找到,其内容将被加载到该模式中。

来自“提示”选项卡、全局规则、工作区规则和特定于模式的规则的指令都会合并。有关确切顺序,请参阅下面的部分。

指令如何合并

指令以这种确切格式放置在系统提示中:

====
USER'S CUSTOM INSTRUCTIONS

The following additional instructions are provided by the user, and should be followed to the best of your ability without interfering with the TOOL USE guidelines.

Language Preference:
[Language preference if set]

Global Instructions:
[Global Instructions from Prompts Tab]

Mode-specific Instructions:
[Mode-specific Instructions from Prompts Tab for the current mode]

Rules:

# Rules from rules-{modeSlug} directories:
[Contents of ALL files from ~/.roo/rules-{modeSlug}/ AND .roo/rules-{modeSlug}/ if they exist]

# Rules from .roorules-{modeSlug}:
[Contents of .roorules-{modeSlug} file if no mode-specific directories have files]

# Rules from .rooignore:
[.rooignore-related instructions if applicable]

# Agent Rules Standard (AGENTS.md):
[Contents of AGENTS.md or AGENT.md from workspace root if present and enabled]

# Rules from rules directories:
[Contents of ALL files from ~/.roo/rules/ AND .roo/rules/ if they exist]

# Rules from .roorules:
[Contents of .roorules file if no general rules directories have files]

====
系统从 所有 适用的目录(全局 ~/.roo/ 和工作区 .roo/)加载规则,而不仅仅是第一个有文件的目录。特定于模式的规则出现在通用规则之前。基于目录的规则仅在确定使用哪种方法时优先于基于文件的备用方法,但所有适用的目录都会被读取。

关于 .rules 文件的规则

  • 文件位置:首选方法使用 .roo/ 中的目录(.roo/rules/.roo/rules-{modeSlug}/)。备用方法使用直接位于工作区根目录中的单个文件(.roorules.roorules-{modeSlug})。
  • 递归读取:规则目录被递归读取,包括子目录中的所有文件
  • 文件过滤:系统自动排除缓存和临时文件(.DS_Store*.bak*.cache*.log*.tmpThumbs.db 等)
  • 空文件:空或缺失的规则文件会被静默跳过
  • 源头:基于目录的规则在不带标题的情况下包含,而基于文件的规则则包含 # Rules from {filename}: 标题
  • 规则交互:特定于模式的规则是补充全局规则,而不是替换它们
  • 符号链接:文件和目录都完全支持,最大解析深度为 5,以防止无限循环

AGENTS.md 支持

Roo Code 还支持从工作区根目录中的 AGENTS.md(或备用的 AGENT.md)文件加载规则:

  • 目的:为 AI 行为提供特定于代理的规则和指南
  • 位置:必须位于工作区根目录中
  • 加载:默认自动加载。要禁用 AGENTS.md 加载,请在您的 VSCode 设置中将 "roo-cline.useAgentRules" 设置为 false
  • 优先级:在特定于模式的规则之后但在通用工作区规则之前加载
  • 标题:在系统提示中添加标题 # Agent Rules Standard (AGENTS.md):
  • 符号链接:支持到其他位置的 AGENTS.md 文件的符号链接

此功能允许团队维护标准化的 AI 代理行为规则,这些规则可以与项目代码一起进行版本控制。

自定义指令示例

  • “始终使用空格进行缩进,宽度为 4 个空格”
  • “变量名使用 camelCase”
  • “为所有新函数编写单元测试”
  • “在提供代码之前先解释您的推理”
  • “专注于代码的可读性和可维护性”
  • “优先使用社区中最常见的库”
  • “为网站添加新功能时,确保它们具有响应性和可访问性”
专业提示:团队标准化
对于团队环境,可以考虑以下方法:
  • 项目标准:使用版本控制下的工作区 .roo/rules/ 目录来标准化 Roo 在特定项目中的行为。这可确保团队成员之间的代码风格和开发工作流一致。
  • 组织标准:使用全局规则 (~/.roo/rules/) 来建立适用于所有项目的组织范围的编码标准。团队成员可以设置相同的全局规则,以确保所有工作的一致性。
  • 混合方法:将全局规则用于组织标准,并将项目特定的工作区规则用于项目特定的要求。需要时,工作区规则可以覆盖全局规则。

基于目录的方法比单个 .roorules 文件具有更好的组织性,并且支持全局和项目级别的自定义。

与自定义模式结合使用

对于高级自定义,可以与自定义模式结合使用,以创建具有特定工具访问权限、文件限制和量身定制指令的专用环境。