Roo Code 模式(Modes)系统实战指南:从内置模式到自定义工作流
2026/9/13 11:09:38 网站建设 项目流程

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类型(slugnameroleDefinitionwhenToUsedescriptiongroupscustomInstructions等字段)描述。而 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(默认)💻 Codereadeditcommandmcp全量无工具限制,适合写代码、实现功能、日常开发
Ask❓ Askreadmcp不能改文件、不能执行命令详尽回答问题,可用图表辅助解释,非用户明确要求不切换到实现代码
Architect🏗️ Architectreadmcp+受限edit(仅 Markdown 文件)先收集信息、提问澄清,再输出可执行的 todo 计划
Debug🪲 Debugreadeditcommandmcp全量系统化排查:反思 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 给出了四种切换方式:

  1. 下拉菜单:点击聊天输入框左侧的模式选择器直接切换;

  2. 斜杠命令:在消息开头输入/architect/ask/debug/code/orchestrator,会切换到对应模式并清空输入框;

  3. 键盘快捷键:每次按下在可用模式间循环切换:

    操作系统快捷键
    macOS⌘ + .
    WindowsCtrl + .
    LinuxCtrl + .
  4. 接受建议:点击 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 中customModesSettingsSchemarefine校验实现;

  • 覆盖机制:若自定义模式的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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询