回旋镖任务:编排复杂工作流程
回旋镖任务(也称为子任务或任务编排)允许您使用内置的 🪃 编排器
模式(也称为回旋镖模式) 将复杂项目分解为更小、可管理的部分。将其想象为将工作的各个部分委托给专门的助手。每个子任务都在自己的上下文中运行,通常使用为特定工作量身定制的不同 itBuilder 模式(如 💻 代码
、🏗️ 架构师
或 🪲 调试
)。编排器模式管理这个过程。
编排器模式是内置的
🪃 编排器
模式(之前通过自定义"回旋镖模式"实现)现在是一个专门设计用于通过分解任务并将其委托给其他模式来编排工作流程的内置模式。您不再需要为此功能创建自定义模式。
了解更多关于 内置模式 的信息。
为什么使用回旋镖任务?
- 处理复杂性: 将大型、多步骤项目(例如,构建完整功能)分解为专注的子任务(例如,设计、实现、文档)。
- 使用专门模式: 自动将子任务委托给最适合该特定工作的模式,利用专门功能获得最佳结果。
- 保持专注和效率: 每个子任务都在自己的隔离上下文中运行,具有独立的对话历史。这防止父(编排器)任务被详细的执行步骤(如代码差异或文件分析结果)弄得混乱,使其能够高效地专注于高级工作流程,并根据已完成子任务的简洁摘要来管理整体过程。
- 简化工作流程: 一个子任务的结果可以自动传递给下一个,创建流畅的流程(例如,架构决策输入到编码任务中)。
工作原理
关键考虑因素
- 需要批准: 默认情况下,您必须批准每个子任务的创建和完成。如果需要,可以通过 自动批准操作 设置进行自动化。
- 上下文隔离和传输: 每个子任务都在完全隔离的环境中运行,具有自己的对话历史。它不会自动继承父任务的上下文。信息必须明确传递:
- 向下: 通过创建子任务时提供的初始指令。
- 向上: 通过子任务完成时提供的最终摘要。请注意,只有此摘要会返回给父任务。
- 导航: Roo 的界面帮助您查看任务的层次结构(哪个任务是父任务,哪些是子任务)。您通常可以在活动和暂停的任务之间导航。
回旋镖任务提供了一种在 itBuilder 内直接管理复杂开发工作流程的强大方式,利用专门模式实现最大效率。
保持任务专注
使用子任务(通过编排器模式委托)来保持清晰度。如果请求显著改变焦点或需要不同的专业知识(模式),考虑创建子任务而不是使当前任务过载。
常见问题
为什么编排器模式不能读取文件、写入文件、调用 MCP 或运行命令?
编排器模式被故意限制以专注于高级工作流程管理。默认情况下给予它读取文件的能力会导致上下文被文件读取填满,阻碍其保持专注于编排的能力。设计理念是子任务应该处理详细工作,并仅返回必要信息(通过其完成摘要)供编排器有效委托进一步任务。
这种限制有助于防止 上下文污染,即不相关或过度的信息污染模型的活跃上下文,导致性能下降和任务偏离。
如何覆盖编排器模式的限制?
您可以通过遵循 配置优先级 系统 自定义编排器模式 来添加文件读取等功能:
- 打开命令面板并选择 "编辑全局模式"
- 复制并粘贴此配置:
{
"customModes": [
{
"slug": "orchestrator",
"name": "🪃 编排器",
"roleDefinition": "您是 Roo,一个战略工作流程编排器,通过将复杂任务委托给适当的专门模式来协调它们。您对每个模式的功能和限制有全面的理解,使您能够有效地将复杂问题分解为可以由不同专家解决的离散任务。",
"customInstructions": "您的角色是通过将任务委托给专门模式来协调复杂的工作流程。作为编排器,您应该:\n\n1. 当给定复杂任务时,将其分解为可以委托给适当专门模式的逻辑子任务。\n\n2. 对于每个子任务,使用 `new_task` 工具进行委托。为子任务的特定目标选择最合适的模式,并在 `message` 参数中提供全面的指令。这些指令必须包括:\n * 完成工作所需的来自父任务或先前子任务的所有必要上下文。\n * 明确定义的范围,指定子任务应该完成的确切内容。\n * 明确声明子任务应该*仅*执行这些指令中概述的工作,不要偏离。\n * 指示子任务通过使用 `attempt_completion` 工具发出完成信号,在 `result` 参数中提供简洁而全面的结果摘要,记住此摘要将是用作跟踪此项目完成内容的真相来源。\n * 声明这些特定指令优先于子任务模式可能具有的任何冲突的一般指令。\n\n3. 跟踪和管理所有子任务的进度。当子任务完成时,分析其结果并确定下一步。\n\n4. 帮助用户理解不同子任务如何在整个工作流程中配合。提供关于为什么将特定任务委托给特定模式的清晰推理。\n\n5. 当所有子任务完成时,综合结果并提供完成内容的全面概述。\n\n6. 在必要时提出澄清问题,以更好地理解如何有效分解复杂任务。\n\n7. 根据已完成子任务的结果建议工作流程改进。\n\n使用子任务来保持清晰度。如果请求显著改变焦点或需要不同的专业知识(模式),考虑创建子任务而不是使当前任务过载。",
"groups": [
"read"
],
"source": "global"
}
]
}
- 保存文件。您的全局编排器模式现在将具有读取功能。
warning
向编排器模式添加功能应该深思熟虑。有限的默认功能有助于保持对编排而不是实现细节的关注。