New Task Tool

概述

Cline 包含一个强大的内部工具 new_task,旨在帮助管理工作流连续性和上下文保存,特别是在复杂或长时间运行的任务中。此工具与 Cline 对自身上下文窗口使用情况的感知以及 .clinerules 的灵活性相结合,使得能够实施复杂的分解工作和确保任务会话之间无缝过渡的策略。

理解核心能力以及它们如何与自定义规则交互,是有效利用此功能的关键。

核心能力

两个基本能力实现了高级上下文管理:

  1. new_task 工具:

    • 功能: 允许 Cline 在用户批准后结束当前任务会话并立即开始新任务。

    • 上下文预加载: 关键是,Cline 可以预加载带有工具 <context> 块中提供的特定上下文的新任务会话。此上下文可以是 Cline 或 .clinerules 文件定义的任何内容——摘要、代码片段、后续步骤、项目状态等。

  2. 上下文窗口感知:

    • 跟踪: Cline 在任务期间内部跟踪其可用上下文窗口当前被使用的百分比。

    • 可见性: 此信息在提供给 Cline 的 environment_details 中可见。

使用 /newtask 斜杠命令

作为 Cline 建议使用 newtask 工具或定义复杂规则的快速替代方案,你可以直接使用斜杠命令启动该过程。

  • 如何使用: 只需在聊天输入字段中输入 /newtask

  • 操作: Cline 将提议创建新任务,通常基于当前会话建议上下文(类似于使用工具时的默认行为)。你仍然会收到 ask_followup_question 提示以确认并在创建新任务之前可能修改上下文。

  • 好处: 提供快速、用户发起的方式来利用 new_task 功能进行分支探索或管理长时间会话,而无需等待 Cline 建议它。

有关使用 `/newtask` 斜杠命令的更多详细信息,请参阅[新任务命令](/features/slash-commands/new-task)文档。

默认行为(没有 .clinerules

默认情况下,在没有特定的 .clinerules 指示其行为的情况下:

  • 工具可用性: new_task 工具存在,Cline_可以_选择使用它。

  • 上下文感知: Cline_确实_知道其上下文使用百分比。

  • 无自动触发: Cline_不会_仅根据上下文使用达到特定百分比(如 50%)就自动启动任务交接。使用 new_task 的决定来自 AI 模型基于整体任务进度和提示指令的推理。

  • 基本上下文预加载: 如果使用 new_task 而没有定义 <context> 块结构的特定规则,Cline 将尝试基于其当前理解预加载相关信息(例如,进度和后续步骤的基本摘要),但这可能不如规则驱动的方法全面。

.clinerules 的力量:启用自定义工作流

虽然默认情况下存在核心能力,但当你将 new_task 和上下文感知与 .clinerules 中定义的自定义工作流结合时,真正的力量、自动化和定制化才会显现出来。这使你能够精确控制 Cline_何时_以及_如何_管理上下文和任务连续性。

.clinerulesnew_task 一起使用的关键好处:

  • 自动上下文管理: 定义规则以在特定上下文百分比(例如,>50%、>70%)或令牌计数时自动触发交接,确保最佳性能并防止上下文丢失。

  • 模型特定优化: 基于不同 LLM 的已知阈值定制交接触发器(例如,对于已知超过特定令牌计数后性能下降的模型提前触发)。

  • 智能断点: 通过规则指示 Cline 在通过上下文阈值_后_找到逻辑停止点(例如,完成函数或测试后),确保更清晰的交接。

  • 结构化任务分解: 使用计划模式定义子任务,然后使用 .clinerules 让 Cline 在完成每个子任务后通过 new_task 自动创建新任务,为_下一个_子任务预加载上下文。

  • 自定义上下文打包:.clinerules 中规定 <context> 块的精确结构和内容,以实现高度详细和一致的交接(参见下面的示例)。

  • 改进的内存持久性: 使用 new_task 上下文块作为跨会话持久化信息的主要、集成方式,可能替代或补充基于文件的内存系统。

  • 工作流自动化: 为特定场景定义规则,比如在启动特定类型的任务时总是预加载某些设置说明或项目模板。

示例规则驱动工作流:任务交接过程

一种常见的工作流,由特定的 .clinerules 驱动,如下面的示例,涉及以下步骤:

  1. 触发器识别(基于规则): Cline 监视规则中定义的交接点(例如,上下文使用 > 50%、任务完成)。

  2. 用户确认: Cline 使用 ask_followup_question 提议创建新任务,通常显示规则定义的预期上下文。

  3. 用户控制: 你可以在创建新任务之前批准、拒绝或要求 Cline 修改上下文。

  4. 上下文打包(new_task 工具): 如果获得批准,Cline 使用 new_task,根据 .clinerules 规定的结构打包上下文。

  5. 新任务创建: 当前任务结束,新会话立即开始,预加载指定的上下文。

交接上下文块(规则定义的结构)

规则驱动交接的有效性在很大程度上取决于 .clinerules 如何定义 <context> 块。全面的结构通常包括:

  • ## 已完成的工作:成就、修改/创建的文件、关键决策的详细列表。

  • ## 当前状态:项目状态、正在运行的进程、关键文件状态。

  • ## 后续步骤:剩余任务的清晰、优先级列表、实现细节、已知挑战。

  • ## 参考信息:链接、代码片段、模式、用户偏好。

  • 可操作的开始:立即下一步操作的清晰指令。

潜在用例和工作流

new_task.clinerules 结合的灵活性开辟了许多可能性:

  • 主动上下文窗口管理: 在特定百分比(例如,50%、70%)或令牌计数时自动触发交接以维持最佳性能。

  • 智能断点: 指示 Cline 在通过上下文阈值_后_找到逻辑停止点(例如,完成函数或测试后),确保更清晰的交接。

  • 结构化任务分解: 使用计划模式定义子任务,然后使用 .clinerules 让 Cline 在完成每个子任务后通过 new_task 自动创建新任务。

  • 自动会话摘要: 配置 <context> 块以始终包含前一次会话关键讨论点的摘要。

  • 预加载模板/设置: 启动与特定项目相关的新任务时预加载标准设置说明或文件模板。

  • "内存库"替代方案: 使用 new_task 上下文块作为跨会话持久化信息的主要方式,可能替代基于文件的内存系统。

鼓励使用 .clinerules 进行实验,以发现最适合你需求的工作流!

示例 .clinerules:任务交接策略指南

下面是一个专门专注于使用 new_task 进行上下文窗口管理的示例 .clinerules 文件。请记住,这只是一种特定策略;核心 new_task 工具可以与其他自定义规则以不同方式使用。

Last updated