new_task
new_task
工具创建具有专用模式的子任务,同时维护父子关系。它将复杂项目分解为可管理的部分,每个部分在最适合特定工作的模式下运行。
参数
工具接受以下参数:
mode
(必填): 启动新任务的模式slug(如"code"、"ask"、"architect")message
(必填): 新任务的初始用户消息或指令
功能
该工具创建具有指定启动模式和初始消息的新任务实例。它允许将复杂工作流划分为具有各自对话历史的子任务。父任务在子任务执行期间暂停,子任务完成后恢复父任务,并将结果传回父任务。
使用场景
- 将复杂项目分解为独立的、专注的子任务时
- 当任务的不同方面需要不同的专用模式时
- 当工作的不同阶段受益于上下文分离时
- 组织多阶段开发工作流时
主要特点
- 创建具有专用对话历史和专用模式的子任务
- 暂停父任务以便稍后恢复
- 维护层次化任务关系以便导航
- 子任务完成后将结果传回父任务
- 支持复杂项目的工作流隔离
- 允许项目的不同部分使用针对特定工作优化的模式
- 需要明确用户批准才能创建任务
- 在UI中提供清晰的任务转换
限制
- 不能创建系统中不存在的模式的任务
- 创建每个新任务都需要用户批准
- 深度嵌套子任务可能使任务界面复杂化
- 子任务继承父任务的某些工作区和扩展配置
- 在深度嵌套任务间切换时可能需要重新建立上下文
- 需要明确信号才能正确返回父任务
工作原理
当调用new_task
工具时,遵循以下流程:
-
参数验证:
- 验证必填的
mode
和message
参数 - 确认请求的模式存在于系统中
- 验证必填的
-
任务栈管理:
- 维护跟踪所有活动和暂停任务的任务栈
- 保留当前模式以便稍后恢复
- 将父任务设置为暂停状态
-
任务上下文管理:
- 用提供的消息创建新任务上下文
- 分配唯一的taskId和instanceId标识符用于状态管理
- 捕获关于工具使用和任务生命周期的遥测数据
-
模式切换与集成:
- 切换到指定模式并具有适当的角色和能力
- 用提供的消息初始化新任务
- 与VS Code的命令面板和代码操作集成
-
任务完成与结果传递:
- 子任务完成后,结果通过
finishSubTask()
传回父任务 - 父任务恢复其原始模式
- 更新任务历史和token使用指标
- 发出带有性能数据的
taskCompleted
事件
- 子任务完成后,结果通过
使用示例
- 前端开发人员需要架构新功能、实现代码并编写文档时,可以为每个阶段创建单独的任务,结果从一个阶段流向下一阶段。
- 在实现修复前调试问题时,调试任务可以记录发现的问题并传递给实现任务。
- 开发全栈应用时,来自架构模式任务的数据库模式设计可以告知后续代码模式任务的实现细节。
- 实现后记录系统时,文档任务可以引用已完成的实现,同时使用文档专用功能。
使用示例
在代码模式下创建新任务:
<new_task>
<mode>code</mode>
<message>实现具有登录、注册和密码重置功能的用户认证服务。</message>
</new_task>
完成实现后创建文档任务:
<new_task>
<mode>docs</mode>
<message>为我们刚构建的认证服务创建全面的API文档。</message>
</new_task>
将复杂功能分解为架构规划和实现:
<new_task>
<mode>architect</mode>
<message>为我们新的电商平台设计数据库模式和系统架构。</message>
</new_task>