Skip to main content

自定义指令

自定义指令允许您个性化 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 基本角色定义的特定行为、偏好和约束。示例包括编码风格、文档标准、测试要求和工作流程指南。


设置自定义指令

全局自定义指令

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

如何设置:

itBuilder Prompts 标签显示全局自定义指令界面
  1. 打开 Prompts 标签: 点击 itBuilder 顶部菜单栏中的 图标
  2. 找到部分: 找到"所有模式的自定义指令"部分
  3. 输入指令: 在文本区域输入您的指令
  4. 保存更改: 点击"完成"保存您的更改

全局规则目录

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

主要优势

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

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

使用全局规则: 创建一次规则并在各处使用:

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

目录结构

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

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

设置全局规则

  1. 创建全局规则目录:

    # Linux/macOS
    mkdir -p ~/.roo/rules

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

    # 全局编码标准

    1. 新项目始终使用 TypeScript
    2. 为所有新函数编写单元测试
    3. 使用描述性变量名
    4. 为公共 API 添加 JSDoc 注释
  3. 添加模式特定规则 (~/.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}/任何自定义模式的规则

规则加载顺序

规则按以下顺序加载:

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

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

工作区级别指令

这些指令仅适用于您当前的工作区,允许您为特定项目自定义 itBuilder 的行为。

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

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

  • 首选方法:基于目录 (.roo/rules/)
    • 在您的工作区根目录中创建一个名为 .roo/rules/ 的目录。
    • 将指令文件(例如,.md.txt)放在里面。itBuilder 递归读取文件,根据文件名按字母顺序将其内容附加到系统提示中。
    • 如果目录存在且包含文件,此方法优先。
  • 备用方法:基于文件 (.roorules)
    • 如果 .roo/rules/ 不存在或为空,itBuilder 会在工作区根目录中查找单个 .roorules 文件。
    • 如果找到,则加载其内容。

模式特定指令

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

  1. 使用 Prompts 标签:

    itBuilder Prompts 标签显示模式特定自定义指令界面
    • 打开标签: 点击 itBuilder 顶部菜单栏中的 图标

    • 选择模式: 在模式标题下,点击您要自定义的模式按钮

    • 输入指令: 在"模式特定自定义指令(可选)"下的文本区域输入您的指令

    • 保存更改: 点击"完成"保存您的更改

      全局模式规则

      如果模式本身是全局的(不是工作区特定的),您为其设置的任何自定义指令也将全局适用于该模式的所有工作区。

  2. 使用规则文件/目录: 通过文件提供模式特定指令:

    • 首选方法:基于目录 (.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 文件提供更好的组织,并支持全局和项目级别的自定义。


与自定义模式结合

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