在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 文件具有更好的組織性,同時支持全局和項目層級的自定義配置。