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>