Roo Code 3.0 版本解析Chat ModesAsk / Architect / Code的引入与模式化 AI 协作体系【免费下载链接】Roo-CodeRoo Code gives you a whole dev team of AI agents in your code editor.项目地址: https://gitcode.com/GitHub_Trending/ro/Roo-CodeRoo Code 3.0 发布说明2025-02-27标志着该项目一次关键的产品形态转变Chat Modes聊天模式体系正式引入从此 Roo Code 不再只是写完就改代码的单一 AI而是能够在架构讨论、代码库问答与实际编码实现之间自由切换的复合型 AI 协作助手。本文以 v3.0 发布说明 为核心骨架结合当前仓库中模式体系的完整源码实现与官方文档系统讲解 Ask、Architect、Code 三种内置模式的设计意图、底层配置结构以及如何通过 API 配置档案为不同模式分配不同模型并梳理 3.0.x 系列附带的小型修复与引擎版本变更。版本背景Chat Modes 标志着什么3.0 是 Roo Code 发布周期中一个具有里程碑意义的版本。此前的交互方式更倾向于让 AI 直接产出代码而 v3.0 正式将Chat Modes纳入产品核心用户可以与 AI 进行架构讨论architectural discussions和代码库提问codebase questions而不必立刻进入代码生成环节每种模式承载不同的角色定位与工具权限将思考与编码在流程上解耦每种模式可以绑定独立的 API 配置档案API configuration profile从而让思考用的模型与编码用的模型可以不同。从当前仓库的源码看这套模式体系在此后的版本中不断演进最终形成了今天包含 Architect、Code、Ask、Debug、Orchestrator 五种内置模式的完整结构定义于 packages/types/src/mode.ts。因此理解 3.0 的 Chat Modes就是理解 Roo Code 后续所有模式化能力的地基。核心特性Ask、Architect、Code 三种模式的定位v3.0.0 引入了三种聊天模式其设计目标可以概括为Ask 模式回答关于系统架构或代码库的问题Architect 模式在代码实现之前进行更高层面的讨论与规划Code 模式实际编写、修改和重构代码。在当前仓库中这三种模式的定义依然保留并且是DEFAULT_MODES的组成部分见 packages/types/src/mode.ts。我们可以从源码看到每个模式的完整角色定义roleDefinition、适用场景whenToUse与可用工具组groups模式slug角色定位roleDefinition 摘要可用工具组groups核心特点❓ Askask精通软件开发与技术话题的技术助理负责回答问题、提供信息read、mcp只读分析除非用户明确要求否则不切换去写代码支持用 Mermaid 图澄清回答️ Architectarchitect富有好奇心的资深技术负责人负责收集信息、制定详细计划read、受限的edit仅 Markdown、mcp通过 todo list 拆解任务使用switch_mode请求切换到实现模式计划文件建议放在/plans目录 Codecode精通多种语言、框架与最佳实践的资深软件工程师read、edit、command、mcp全量写改权限用于实现功能、修复缺陷、创建文件从源码看三种模式的工具组差异非常关键定义见 src/shared/tools.ts 中的TOOL_GROUPS与 src/shared/modes.ts 中的getToolsForModeAsk 模式没有edit和command组天然只能读取与分析无法改动工作区Architect 模式的edit组带有限制条件——fileRegex: \\.md$即只能编辑 Markdown 文件详见 packages/types/src/mode.ts这保证规划阶段只能产出文档/计划不会误改业务代码Code 模式拥有readeditcommandmcp的全量权限是真正动手实现的角色。这种工具即权限边界的设计正是 3.0 Chat Modes 的核心价值用模式来约束 AI 的行为半径避免讨论阶段就贸然改代码。Ask 模式只读问答与知识查询Ask 模式面向我需要解释、文档或技术答案的场景其内置指令customInstructions明确要求可以分析代码、解释概念、访问外部资源始终彻底回答用户问题除非用户明确要求否则不要切换到实现代码在回答能更清晰时使用 Mermaid 图。从 packages/types/src/mode.ts 可以看到Ask 模式的groups仅为[read, mcp]这意味着它只能使用读取类工具和 MCP 工具无法执行命令或编辑文件。这一配置从机制上保证了Ask 模式永远不会意外修改你的代码。Architect 模式规划先行、实现后置Architect 模式的customInstructions是三种模式中最长的它定义了一套完整的规划工作流packages/types/src/mode.ts先做信息收集使用提供的工具获取任务上下文向用户提出澄清问题加深对任务的理解将任务拆解为清晰、可执行的步骤并用update_todo_list工具创建 todo list若该工具不可用则写入plan.md或todo.md随着信息更新同步修订 todo list询问用户是否满意该计划在能阐明复杂工作流或系统架构时使用 Mermaid 图并明确提示避免在方括号内使用双引号与括号防止解析错误使用switch_mode工具请求用户切换到其他模式来实施方案。值得注意的是Architect 模式被明确要求不得给出工作量时间估算如需要几天而是专注于把工作拆解为清晰可执行的步骤。它的edit权限被限制为仅 Markdown 文件fileRegex: \\.md$从而保证它只能产出计划文档真正的实现需要切换到 Code 模式。Code 模式专注实现Code 模式是默认的动手模式角色定义简洁packages/types/src/mode.ts你是 Roo一位拥有多种编程语言、框架、设计模式和最佳实践深厚知识的高级软件工程师。它的whenToUse覆盖写改重构代码的一切场景工具组包含完整的read、edit、command、mcp没有任何文件类型限制。每个模式独立绑定 API 配置思考与编码用不同模型v3.0 发布说明中特别强调每个模式可以分配不同的 API 配置档案从而在不同模式中使用不同模型。这在当前仓库中由API Configuration ProfilesAPI 配置档案功能承载详见 API Configuration Profiles 官方文档。一个配置档案可以包含API 提供商OpenAI、Anthropic、OpenRouter 等API Key 与认证信息密钥存储在 VSCode Secret Storage 中不以明文暴露模型选择温度参数控制响应随机性详见 model-temperature 文档Thinking 预算、提供商特有设置差异编辑配置与apply_diff相关限流设置Rate Limit默认为 0 即禁用可按档案设置两次 API 请求之间的最小间隔秒数用于控制成本或规避提供商限流。配置档案与模式的绑定发生在Prompts提示词标签页中你可以显式地将某个配置档案关联到某个模式。此外Roo Code 会自动记住每个模式上次使用的模型Sticky Models——当你切换模式时它会自动选中该模式对应的模型。这带来的典型工作流是Architect / Ask 模式使用成本更低、推理能力强的模型进行规划与问答Code 模式使用编码能力更强的模型进行实现。官方文档 custom-modes.mdx 中的提示框也确认了这一点每个模式包括自定义模式都具备 Sticky Models 特性即自动记住并选择该模式最近使用的模型无需反复重新配置。模式体系的底层实现从配置到运行模式的类型定义与校验在 packages/types/src/mode.ts 中modeConfigSchema定义了每个模式的完整结构字段说明校验规则slug唯一内部标识符必须匹配/^[a-zA-Z0-9-]$/仅字母、数字、连字符不允许重复nameUI 中显示的名称必填roleDefinition模式的核心身份与专长放置在系统提示词开头必填whenToUse为 Roo 的自动决策模式选择、任务编排提供指导可选description模式选择器中显示的一句话摘要可选customInstructions附加在系统提示词末尾的行为准则可选groups允许访问的工具组及文件限制经过特殊处理自动剔除已废弃的工具组如browser保证向后兼容从源码还可以看到packages/types/src/mode.ts工具组支持两种写法简单字符串edit表示无限制访问元组[edit, { fileRegex: pattern, description: optional }]表示带文件类型限制的访问其中fileRegex会被校验为正则表达式。模式的加载、合并与覆盖src/shared/modes.ts 是模式体系的运行时核心提供了getToolsForMode(groups)根据模式的工具组展开出实际可用的工具列表并始终追加必需工具ALWAYS_AVAILABLE_TOOLSgetAllModes(customModes)将内置模式与自定义模式合并自定义模式按 slug 覆盖同名内置模式getModeSelection(mode, promptComponent, customModes)解析最终生效的模式配置——自定义模式优先其次内置模式叠加提示词覆盖getFullModeDetails(...)进一步合并全局自定义指令、语言与工作区级自定义指令addCustomInstructions得到最终注入系统提示词的完整配置。模式的配置优先级由 CustomModesManager 维护官方文档 custom-modes.mdx 明确给出的优先级顺序为项目级模式配置来自工作区根目录的.roomodes文件全局模式配置来自custom_modes.yaml若不存在则回退到custom_modes.json内置默认模式配置。当.roomodes与全局设置中存在相同 slug 的模式时.roomodes版本完全覆盖全局版本所有属性均不合并。这一规则由 CustomModesManager.ts 的mergeCustomModes实现项目模式先写入集合全局模式只追加不冲突的 slug。内置模式的覆盖与自定义由于 3.0 奠定了模式化的架构基础后续版本把这一能力延伸为完整的自定义模式系统。你可以通过三种方式创建/配置模式详见 custom-modes.mdx直接让 Roo 创建推荐例如输入Create a new mode called Documentation Writer. It should only be able to read files and write Markdown files.Roo 会引导你完成创建通过 Modes 页面打开 Roo Code 面板点击输入框下方的模式菜单再点击齿轮图标进入 Modes 页面点击新建模式填写 Name、Slug、Description、Save Location、Role Definition、When to Use、Available Tools、Custom Instructions 等字段手动编辑 YAML/JSON 配置文件全局模式编辑custom_modes.yaml或custom_modes.json项目模式编辑工作区根目录的.roomodes。一个自定义模式的 YAML 示例来自官方文档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如果要覆盖内置模式例如把 Code限制为只允许编辑 JS/TS 文件只需在.roomodes或全局配置中定义一个 slug 为code的模式即可。3.0.x 系列附带更新在 v3.0.0 引入 Chat Modes 之后3.0.x 系列还包含了以下修复与更新v3.0.1修复聊天输入框的一个小的视觉故障Chat Input Visual Glitchv3.0.2微调聊天输入框中的按钮对齐Button Alignment Tweaksv3.0.3将所需 VSCode 引擎版本更新为^1.84.0与 Cline 保持一致VSCode Engine Requirement。这组补丁体现了发布说明中sometimes multiple times per day的高频迭代节奏参见 扩展发布说明索引核心特性在 v3.0.0 落地紧随其后的是围绕聊天输入界面的打磨以及运行时兼容性VSCode 引擎版本的同步。总结3.0 Chat Modes 的遗产Roo Code 3.0 的 Chat Modes 不仅是三个按钮的叠加而是确立了一套影响深远的架构原则角色与工具权限分离Ask/Architect/Code 各自拥有不同的工具组与文件限制用机制而非口头约束来防止 AI 越权操作思考与编码解耦通过模式切换switch_mode与规划工具update_todo_list把讨论方案和落地实现拆成两个可独立管控的阶段模型与模式绑定每个模式可绑定独立 API 配置档案让规划用轻量模型、实现用重型模型成为可行的工作流可扩展性模式以 schema 化的ModeConfig定义slug、roleDefinition、groups 等天然支持后续版本的自定义模式、.roomodes项目级配置与模式导入导出能力。如果你希望深入了解模式化的完整能力可以继续阅读仓库中的 自定义模式官方文档、API 配置档案文档 以及 模式使用指南如果想从源码层面验证可重点查看 packages/types/src/mode.ts、src/shared/modes.ts 与 src/core/config/CustomModesManager.ts 三处核心实现。【免费下载链接】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),仅供参考
