什么是自定義模式?
簡單來說,自定義模式就像是給Roo Code穿上不同的"職業裝"。你可以創建針對特定任務或工作流程量身定制的模式,讓Roo在不同場景下表現出專業的行為。
這些模式分為兩種類型:全局模式(在所有項目中可用)和項目特定模式(僅在單個項目中定義)。這意味著你可以為不同的項目設置不同的Roo行為,比如為一個React項目設置前端開發模式,為一個Python項目設置數據分析模式。
探索社區模式庫
不想從頭開始創建模式?沒問題!Roo Code提供了一個市場,讓你可以一鍵瀏覽和安裝社區貢獻的模式。無論你是需要React開發、文檔編寫、測試還是其他專門任務的模式,都能在市場中找到由Roo Code社區創建和分享的解決方案。
這就像是有一個專門為開發者準備的"應用商店",里面充滿了各種能提升工作效率的神奇工具。
使用自定義模式有什么好處?
專業化
創建針對特定任務優化的模式,比如"文檔編寫者"、“測試工程師"或"重構專家”。每個模式都可以被訓練成特定領域的專家。
安全性
限制模式對敏感文件或命令的訪問權限。例如,你可以創建一個"審查模式",將其限制為只讀操作,防止意外修改重要文件。
實驗性
安全地試驗不同的提示和配置,而不會影響其他模式。這讓你可以大膽嘗試新想法,而不必擔心破壞現有工作流程。
團隊協作
與團隊分享自定義模式,標準化工作流程。這特別適合需要保持一致編碼風格和標準的開發團隊。
自定義模式包含什么?
理解自定義模式的關鍵屬性會幫助你更有效地定制Roo的行為:
- Slug:模式的唯一內部標識符,用于引用模式,特別是關聯模式特定的指令文件
- Name:在Roo Code用戶界面中顯示的名稱,應該具有可讀性和描述性
- Description:在模式選擇器UI中顯示的模式目的簡短摘要
- Role Definition:定義模式核心身份和專業知識的文本,放置在系統提示的開頭
- Available Tools(group):定義模式允許使用的工具集和文件訪問權限
- When to Use:(可選)為Roo的自動決策提供指導,特別是模式選擇和任務協調
- Custom Instructions:(可選)模式的具體行為指南或規則
導入/導出模式:輕松分享和備份
Roo Code讓模式的分享和備份變得異常簡單。你可以將任何模式及其相關規則導出到單個便攜的YAML文件中,然后導入到任何項目中。
如何導出模式?
導出的過程非常簡單直觀,只需幾步就能將你的模式及其所有規則保存為一個獨立的 **<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">.yaml</font>**
文件。
- 找到模式管理界面:首先,在Roo Code側邊欄中進入 “Modes” (模式) 視圖。這里會列出你所有的自定義模式和內置模式。
- 選擇目標模式:從列表中找到你想要分享或備份的那個模式,點擊選中它。
- 一鍵導出:點擊界面上的 導出模式(Export Mode) 按鈕(通常是一個下載圖標)。
- 保存文件:在彈出的窗口中,選擇一個你方便找到的位置來保存生成的
**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">.yaml</font>**
文件。
這時,Roo Code會做一件很貼心的事:它不僅僅會打包你在界面上配置的模式基本信息(如名稱、描述、權限等),還會自動搜尋并包含你項目目錄下(**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">.roo/rules-{模式slug}/</font>**
)所有為該模式編寫的特定規則文件。這一切都被整潔地封裝在一個文件里,非常適合版本管理和分享。
如何導入并使用?
拿到了別人分享的YAML文件,或者想恢復自己的備份?導入過程同樣輕松。
- 進入導入界面:同樣在 “Modes” (模式) 視圖下,找到并點擊 導入模式(Import Mode) 按鈕(通常是一個上傳圖標)。
- 選擇文件:在文件選擇器中,找到那份包含模式配置的
**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">.yaml</font>**
文件。 - 決定模式歸屬:這是關鍵一步!系統會彈出一個對話框,讓你選擇導入層級(Import Level):
- 項目(Project):選擇此項,該模式將僅在當前項目/工作區中可用。它的配置會保存在項目根目錄的
**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">.roomodes</font>**
文件里,規則文件也會放在項目的**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">.roo/</font>**
目錄下。這非常適合針對特定工程的環境配置。 - 全局(Global):選擇此項,該模式將對你所有的項目生效。它的配置會保存在你的用戶全局設置中,規則文件也會存放在系統的全局Roo配置目錄(如
**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">~/.roo/</font>**
)。這適合那些你經常使用的通用型模式。
- 項目(Project):選擇此項,該模式將僅在當前項目/工作區中可用。它的配置會保存在項目根目錄的
點擊確認后,模式就成功入駐你的Roo Code了,你可以立刻在模式選擇器中找到并使用它。
主要功能
- 可分享的設置:將模式及其規則打包到一個文件中,輕松與團隊分享
- 輕松備份:保存自定義模式配置,永不丟失
- 項目模板:為不同類型的項目創建標準化模式模板
- 簡單遷移:在全局設置和特定項目之間輕松移動模式
- 靈活的Slug更改:在導出文件中更改模式slug,無需手動編輯路徑
實際應用場景
以前,你需要為每個新項目或團隊成員手動重新創建自定義模式,并復制.roo/rules-{slug}/
文件夾。更改slug需要在YAML文件中手動更新路徑。
現在,只需單擊一下即可將模式及其所有規則導出到YAML文件。再單擊一下即可導入,自動設置所有內容。甚至可以在導出文件中更改slug,導入過程會自動處理所有路徑更新。
導入導出常見問題解答
1. 導入時出現“重名”模式會怎樣?
這是一個非常重要的問題!答案是:新的會覆蓋舊的。
Roo Code使用一個叫**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">slug</font>**
(標識符)的唯一字符串來區分不同的模式。如果你導入了一個模式,而其**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">slug</font>**
與現有模式完全相同,那么現有模式的全部配置都會被導入文件中的新配置所替換。
這意味著什么?
操作前務必想清楚!如果你之前對一個同名模式做過自定義修改,這些修改將在導入后完全丟失。所以,在導入團隊分享的模式時,最好先溝通清楚,或者確認本地模式是否已無用處。
2. 全局導入和項目導入,我該怎么選?
這是決定模式適用范圍的關鍵選擇,兩者的區別非常簡單:
- 全局導入(Global):選擇這個,該模式將在你所有VSCode項目中可用。它的配置保存在你的用戶個人目錄下,與單個項目無關。這非常適合那些“萬能”的通用模式,比如一個你在任何項目里都會用的“代碼注釋生成器”。
- 項目導入(Project):選擇這個,該模式僅在當前打開的這個項目(工作區) 中生效。它的配置會保存在項目根目錄的一個名為
**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">.roomodes</font>**
的文件里。這非常適合那些與特定項目強相關的模式,比如一個只能訪問本項目**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">src</font>**
目錄的“安全審查模式”。
簡單記:全平臺通用選全局,單項目專用選項目。
3. 內置模式也能導出和分享嗎?
當然可以! 但有一個重要的前提:只有當你對這個內置模式進行了自定義修改后,導出才有意義。
Roo Code的原生內置模式(如Code、Architect)是每個人的標準配置。你直接導出一個沒修改過的內置模式并分享給隊友,隊友那邊本身就有一模一樣的內置模式,所以這個操作意義不大。
但如果你修改了內置模式的指令或權限(比如定制了你們團隊的“Architect”模式規范),那么導出功能就能完美地將你這些個性化定制打包分享出去。
4. 全局導入的模式,它的規則文件存到哪里去了?
這是一個很好的技術細節問題。規則文件并不會消失,只是換了個地方存放。
- 項目模式的規則文件存儲在項目本身的
**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">.roo/rules-{slug}/</font>**
目錄下。 - 全局模式的規則文件則會被轉移并存儲到你的用戶全局配置目錄中,路徑通常是
**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">~/.roo/rules-{slug}/</font>**
(例如:**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">~/.roo/rules-my-custom-mode/</font>**
)。
這樣做的好處是保持了全局配置的整潔性,所有全局性的設置都集中在用戶目錄下,與具體項目分離。
5. 導入前能修改模式的名字(slug)嗎?如何操作?
能!而且這個功能非常實用! 它的工作流程如下:
- 你導出一個slug為
**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">original-mode</font>**
的模式,得到一個YAML文件。 - 你用文本編輯器打開這個文件,將里面的
**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">slug</font>**
字段值修改為**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">new-mode</font>**
。 - 你導入這個修改后的YAML文件。
此時,導入功能會自動處理后續所有事情:它會創建一個全新的模式**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">new-mode</font>**
,并且會自動更新所有規則文件的內部路徑引用,讓它們與這個新**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">slug</font>**
匹配。你完全不需要手動去修改規則文件里的路徑,系統幫你搞定了一切。
創建和配置自定義模式的方法
1. 直接問Roo!(推薦)
最快創建基本自定義模式的方法就是直接讓Roo Code幫你完成。例如,你可以說:“創建一個名為’文檔編寫者’的新模式。它應該只能讀取文件和編寫Markdown文件。”
Roo Code會引導你完成整個過程,提示輸入所需信息,并使用首選的YAML格式創建模式。
2. 使用提示選項卡
打開提示選項卡,點擊模式標題右側的"新建"按鈕,填寫各個字段(名稱、slug、描述、保存位置、角色定義、可用工具和自定義指令),然后點擊"創建模式"按鈕。
3. 手動配置(YAML和JSON)
對于想要完全控制所有屬性的用戶,可以直接編輯配置文件來創建或修改自定義模式。Roo Code支持YAML(首選)和JSON格式。
YAML格式因其更好的可讀性、支持注釋、更清晰的多行字符串語法和更少的標點符號而成為首選格式。
customModes:- slug: docs-writername: 📝 Documentation Writerdescription: A specialized mode for writing and editing technical documentation.roleDefinition: You are a technical writer specializing in clear documentation.whenToUse: Use this mode for writing and editing documentation.customInstructions: Focus on clarity and completeness in documentation.groups:- read- - edit # First element of tuple- fileRegex: \.(md|mdx)$ # Second element is the options objectdescription: Markdown files only- browser- slug: another-modename: Another Mode# ... other properties
JSON 格式示例:
{"customModes": [{"slug": "docs-writer","name": "📝 Documentation Writer","description": "A specialized mode for writing and editing technical documentation.","roleDefinition": "You are a technical writer specializing in clear documentation.","whenToUse": "Use this mode for writing and editing documentation.","customInstructions": "Focus on clarity and completeness in documentation.","groups": ["read",["edit", { "fileRegex": "\\.(md|mdx)$", "description": "Markdown files only" }],"browser"]},{"slug": "another-mode","name": "Another Mode"}]
}
模式特定指令:通過文件/目錄提供
除了使用customInstructions屬性外,你還可以通過工作區中的專用文件或目錄為自定義模式提供指令。這對于組織冗長或復雜的指令特別有用。
首選方法是使用目錄(.roo/rules-{mode-slug}/
),你可以在其中放置一個或多個包含指令的文件。如果目錄不存在或為空,Roo Code會查找名為.roorules-{mode-slug}
的單個文件。
覆蓋默認模式
你可以通過創建與默認模式相同slug的自定義模式來覆蓋Roo Code的內置模式(如💻 Code、🪲 Debug、? Ask等)。
這意味著你可以全局或項目特定地自定義默認模式的行為,比如限制文件訪問、為你的技術棧定制專業知識、添加自定義指令或更改可用工具。
理解正則表達式在自定義模式中的應用
正則表達式(fileRegex)提供了對文件編輯權限的細粒度控制。你可以創建模式來匹配文件路徑,從而精確控制哪些文件可以被編輯。
重要的是要注意在JSON字符串中,反斜杠(\)必須雙轉義(如\\.md$
),而在YAML中,單個反斜杠通常就足夠了。
結語
Roo Code的自定義模式功能為開發者提供了前所未有的靈活性和控制力。無論你是想提高個人工作效率,還是希望標準化團隊工作流程,這些工具都能幫助你打造真正適合自己的AI編程助手。
通過合理利用自定義模式,你可以讓Roo Code成為你在不同開發任務中的專業合作伙伴,每個模式都像是一個專門為特定任務訓練的專業團隊成員。