Roo Code 模式(Modes)系统实战指南:从内置模式到自定义工作流
【免费下载链接】Roo-CodeRoo Code gives you a whole dev team of AI agents in your code editor.项目地址: https://gitcode.com/GitHub_Trending/ro/Roo-Code
Roo Code 是一款将 AI 开发团队直接带入 VS Code 编辑器的开源扩展,其核心设计理念是“让 AI 适应你的工作方式,而不是反过来”。本文以 locales/ru/README.md 中的俄语官方介绍为主线,深入讲解 Roo Code 的模式(Modes)体系——包括内置模式的能力边界、切换方式、工具组(Tool Groups)权限模型,以及如何通过自定义模式构建团队级工作流,并结合仓库源码验证其底层实现。
Roo Code 能为你做什么
根据官方 README(英文版 与 俄语版 内容一致),Roo Code 在编辑器内提供了以下七类核心能力:
- 用自然语言生成代码:从描述和规格说明直接产出实现代码;
- 模式化适配(Modes):通过 Code、Architect、Ask、Debug 以及自定义模式适配不同任务;
- 重构与调试现有代码:对存量代码进行结构化改进与问题定位;
- 编写与更新文档:自动维护项目文档;
- 回答关于代码库的问题:基于代码库内容进行问答;
- 自动化重复性任务:将高频、机械的操作交给 Agent 执行;
- 使用 MCP 服务器:通过 Model Context Protocol 接入外部工具与数据源。
这七项能力并非平铺直叙的“功能列表”,而是围绕**模式(Modes)**这一核心机制展开的——每一种能力都对应着特定模式下的一套工具权限与行为指令。理解模式系统,就等于理解了 Roo Code 的使用哲学。
模式(Modes):AI 如何适配你的工作方式
模式是 Roo Code 中针对不同任务定制的“专业人设”。每个模式拥有不同的角色定义(roleDefinition)、工具访问权限(groups)和行为指令(customInstructions),从而让同一个底层 Agent 在不同任务中表现出不同的专业倾向。
官方 README 明确列出了五种模式:
| 模式 | 定位 |
|---|---|
| Code(代码) | 日常编码、编辑与文件操作 |
| Architect(架构师) | 规划系统、规格说明与迁移方案 |
| Ask(问答) | 快速回答、解释与文档输出 |
| Debug(调试) | 追踪问题、添加日志、隔离根因 |
| Custom Modes(自定义模式) | 为团队或工作流构建专用模式 |
在源码层面,这些内置模式的完整定义位于 packages/types/src/mode.ts 的DEFAULT_MODES常量中,由ModeConfig类型(slug、name、roleDefinition、whenToUse、description、groups、customInstructions等字段)描述。而 src/shared/modes.ts 则提供了模式的运行时解析逻辑,包括:
getModeBySlug(slug, customModes?):按标识符查找模式,自定义模式优先于内置模式;getAllModes(customModes?):合并内置模式与自定义模式,自定义模式可通过同名slug覆盖内置模式;getToolsForMode(groups):将模式的工具组配置展开为具体的工具集合,并始终追加ALWAYS_AVAILABLE_TOOLS中的必需工具。
内置模式的能力矩阵
在仓库中,五个内置模式的实际定义(packages/types/src/mode.ts)比 README 的概述更加精确,官方使用文档 using-modes.md 也给出了详细表格,这里汇总如下:
| 模式 | 名称 | 工具访问权限 | 核心行为 |
|---|---|---|---|
| Code(默认) | 💻 Code | read、edit、command、mcp全量 | 无工具限制,适合写代码、实现功能、日常开发 |
| Ask | ❓ Ask | 仅read、mcp(不能改文件、不能执行命令) | 详尽回答问题,可用图表辅助解释,非用户明确要求不切换到实现代码 |
| Architect | 🏗️ Architect | read、mcp+受限edit(仅 Markdown 文件) | 先收集信息、提问澄清,再输出可执行的 todo 计划 |
| Debug | 🪲 Debug | read、edit、command、mcp全量 | 系统化排查:反思 5–7 种可能根因→收敛到 1–2 个最可能来源→加日志验证→征得用户确认后才修复 |
| Orchestrator(亦称 Boomerang 模式) | 🪃 Orchestrator | 无直接工具权限,通过new_task工具委派子任务 | 拆解复杂任务,委派给其他专用模式,汇总最终结果 |
其中几个值得注意的源码细节:
- Architect 模式的文件限制体现在其
groups配置中:["read", ["edit", { fileRegex: "\\.md$", description: "Markdown files only" }], "mcp"]——即edit工具组仅允许匹配\\.md$的文件,同时内置指令要求它优先使用update_todo_list工具维护待办计划,而非产出冗长的 Markdown 文档; - Ask 模式内置指令明确要求“不要切换到实现代码,除非用户明确要求”,这从行为层保障了只读问答的边界;
- Debug 模式的内置指令是一条完整的排查 SOP:
"Reflect on 5-7 different possible sources of the problem, distill those down to 1-2 most likely sources, and then add logs to validate your assumptions. Explicitly ask the user to confirm the diagnosis before fixing the problem."; - Orchestrator 模式的
groups为空数组,它纯粹依靠new_task工具把子任务委派给其他模式,其内置指令详细规定了委派时的上下文传递、范围界定与完成信号(attempt_completion)要求。
四种切换模式的方式
官方使用文档 using-modes.md 给出了四种切换方式:
下拉菜单:点击聊天输入框左侧的模式选择器直接切换;
斜杠命令:在消息开头输入
/architect、/ask、/debug、/code或/orchestrator,会切换到对应模式并清空输入框;键盘快捷键:每次按下在可用模式间循环切换:
操作系统 快捷键 macOS ⌘ + . Windows Ctrl + . Linux Ctrl + . 接受建议:点击 Roo 在合适时机主动给出的模式切换建议。
此外,模式具有持久性(Sticky Models & Mode Persistence):每个模式都会记住你上次使用的模型,切换模式时自动带上对应模型,无需手动重选;所选模式也会跨会话保留。
工具组(Tool Groups)权限模型
理解模式的权限,核心是理解四个工具组(using-modes.md):
read:文件读取、列目录与搜索能力;edit:文件修改与创建能力;command:终端命令执行能力;mcp:Model Context Protocol 服务器交互能力。
模式的groups字段就是这四个工具组的组合,工具组到具体工具的展开由 src/shared/modes.ts 的getToolsForMode完成。这种“组合式权限”设计让不同模式天然具备不同的安全边界——例如 Ask 模式无法修改文件、Architect 模式只能写 Markdown。
自定义模式:为团队构建专用工作流
官方 README 强调自定义模式是“为你的团队或工作流构建专用模式”,这使 Roo Code 从“开箱即用的助手”进化为“可编程的开发团队”。完整教程见 custom-modes.mdx,要点如下:
作用域:自定义模式可以是全局的(跨所有项目可用)或项目级的(仅在单个项目内定义);
核心属性(来自 ModeConfig 定义):
属性 作用 slug唯一内部标识符,用于引用模式 name界面上显示的名称 description模式选择器中显示的简短摘要 roleDefinition模式的核心身份与专长,注入系统提示词开头 whenToUse供 Orchestrator 自动化决策使用的使用时机说明 customInstructions追加到系统提示词末尾的行为细则 groups允许使用的工具组与文件访问权限 校验规则:自定义模式的
slug不得重复,这一约束由 mode.ts 中customModesSettingsSchema的refine校验实现;覆盖机制:若自定义模式的
slug与内置模式相同,则在getAllModes合并时覆盖内置配置(src/shared/modes.ts);导入导出:可将模式及其关联规则打包为单个 YAML 文件,便于团队共享、备份与模板化,切换 slug 时导入过程会自动处理路径更新。
典型应用场景包括:创建只读的“代码评审模式”以限制文件访问;为团队标准化“文档撰写”“测试工程师”等专用模式;通过模式导入导出实现团队配置的分发。
MCP 服务器支持:接入外部工具生态
README 将“使用 MCP 服务器”列为核心能力之一。MCP(Model Context Protocol)是让 Agent 与外部工具、数据源交互的开放协议。Roo Code 对 MCP 的支持体现在工具组mcp以及底层的 McpHub.ts、McpServerManager.ts 服务中,并配套了 UseMcpToolTool.ts 供 Agent 调用已配置的 MCP 工具。
通过接入 MCP 服务器,Roo Code 可以读取外部数据库、调用第三方 API、查询内部系统等,从而把“代码编辑器里的 AI 团队”延伸到整个开发工具链。模式系统与 MCP 的组合使用方式(如哪些模式开放mcp权限)可以参照上文的能力矩阵进行配置。
许可与使用注意
Roo Code 采用 Apache 2.0 许可证(© 2025 Roo Code, Inc.)。官方 README 同时附带免责声明:Roo Code, Inc. 对随软件提供的任何代码、模型或其他工具不作任何陈述或保证,使用者须自行承担全部风险,包括但不限于知识产权侵权、网络漏洞或攻击、偏见、不准确、错误、缺陷、病毒、停机、财产损失以及人身伤害等。在使用 AI 生成的代码与自动化执行命令时,建议先熟悉各模式的权限边界(尤其是 Ask / Architect 的受限权限),再逐步放开到全量工具组。
进一步阅读
- 模式使用的完整官方指南:using-modes.md
- 自定义模式配置教程:custom-modes.mdx
- 内置模式源码定义:packages/types/src/mode.ts
- 模式运行时解析逻辑:src/shared/modes.ts
- MCP 服务器管理实现:src/services/mcp/McpHub.ts
- Orchestrator 委派任务机制:boomerang-tasks.mdx
【免费下载链接】Roo-CodeRoo Code gives you a whole dev team of AI agents in your code editor.项目地址: https://gitcode.com/GitHub_Trending/ro/Roo-Code
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考