Skip to main content

new_task

new_task 工具通过创建具有专门模式的子任务来维持父子关系。它将复杂项目分解为可管理的部分,每个部分在最适合特定工作的模式下运行。


参数

该工具接受以下参数:

  • mode(必需):新任务启动模式的 slug(例如 "code"、"ask"、"architect")
  • message(必需):此新任务的初始用户消息或指令
  • todos(可选):以 Markdown 检查清单格式的初始待办列表

功能说明

此工具创建一个具有指定起始模式和初始消息的新任务实例。它允许将复杂工作流分解为具有自己对话历史的子任务。父任务在子任务执行期间被暂停,并在子任务完成后恢复,结果会传回父任务。


使用场景

  • 将复杂项目分解为独立、专注的子任务时
  • 当任务的不同方面需要不同的专门模式时
  • 当工作流程的不同阶段受益于上下文分离时
  • 当组织多阶段开发工作流时

主要功能

  • 创建具有自己对话历史和专门模式的子任务
  • 暂停父任务以供稍后恢复
  • 维护任务层级关系以进行导航
  • 在子任务完成时将结果传回父任务
  • 支持复杂项目的流程隔离
  • 允许项目的不同部分使用针对特定工作优化的模式
  • 需要用户明确批准才能创建每个新任务
  • 在 UI 中提供清晰的任务转换

限制

  • 无法创建不存在模式的任务
  • 需要在创建每个新任务之前获得用户批准
  • 随着子任务深度嵌套,任务界面可能变得复杂
  • 子任务从父任务继承某些工作区和扩展配置
  • 在深度嵌套任务之间切换时可能需要重新建立上下文
  • 任务完成需要明确信号以正确返回父任务

工作原理

当调用 new_task 工具时,它遵循以下过程:

  1. 参数验证

    • 验证必需的 modemessage 参数
    • 验证请求的模式在系统中存在
  2. 任务栈管理

    • 维护跟踪所有活动和暂停任务的任务栈
    • 保留当前模式以供稍后恢复
    • 将父任务设置为暂停状态
  3. 任务上下文管理

    • 使用提供的消息创建新的任务上下文
    • 分配唯一的 taskId 和 instanceId 标识符以进行状态管理
    • 捕获工具使用和任务生命周期的遥测数据
  4. 模式切换和集成

    • 切换到具有适当角色和功能的指定模式
    • 使用提供的消息初始化新任务
    • 与 VS Code 的命令面板和代码操作集成
  5. 任务完成和结果传输

    • 当子任务完成时,结果通过 finishSubTask() 传回父任务
    • 父任务以其原始模式恢复
    • 更新任务历史和令牌使用指标
    • 发出带有性能数据的 taskCompleted 事件

配置

通过子任务的可选待办列表参数简化分层任务规划:

  • 传递待办列表:创建子任务时包含预定义的待办列表
  • 维持上下文:以待办列表形式将上下文传递给子任务
  • 可选强制执行:如果需要,可以在 VS Code 中配置"新任务需要待办列表"设置以强制所有新子任务使用待办列表
VS Code 设置中的子任务待办列表配置

此功能开箱即用,您可以选择配置 VS Code 设置以要求所有新任务使用待办列表。


使用示例

  • 当前端开发者需要架构新功能、实现代码并记录文档时,他们可以为每个阶段创建独立的任务,结果从一个阶段流向下一个阶段。
  • 在实现修复之前调试问题时,调试任务可以记录发现并传递给实现任务。
  • 开发全栈应用程序时,架构模式任务中的数据库模式设计会告知后续代码模式任务中的实现细节。
  • 在实现后记录系统时,文档任务可以引用已完成的实现,同时使用特定的文档功能。

使用示例

创建代码模式的新任务:

<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>

创建带有初始待办列表的任务:

<new_task>
<mode>code</mode>
<message>构建用户管理的 REST API</message>
<todos>
[ ] 设置 Express 服务器
[ ] 创建用户模型
[ ] 实现 CRUD 端点
[ ] 添加认证中间件
[ ] 编写 API 测试
</todos>
</new_task>