Skip to main content

new_task 工具和上下文管理策略

概述

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 斜杠命令的更多详细信息,请参阅新任务命令文档。

默认行为(没有 .clinerules)

默认情况下,没有特定的 .clinerules 指示其行为:
  • 工具可用性: new_task 工具存在,Cline 可以 选择使用它。
  • 上下文感知: Cline 知道 其上下文使用百分比。
  • 无自动触发: Cline 不会 仅仅 基于上下文使用达到特定百分比(如 50%)自动启动任务移交。使用 new_task 的决定来自 AI 模型基于整体任务进度和提示指令的推理。
  • 基本上下文预加载: 如果在没有定义 <context> 块结构的特定规则的情况下使用 new_task,Cline 将尝试根据其当前理解预加载相关信息(例如,进度和下一步骤的基本摘要),但这可能不如规则驱动的方法全面。

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

虽然核心功能默认存在,但当您将 new_task 和上下文感知与 .clinerules 中定义的自定义工作流结合时,真正的力量、自动化和自定义才会出现。这允许您精确控制 何时 和 如何 Cline 管理上下文和任务连续性。 使用 .clinerules 与 new_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 工具可以与其他自定义规则一起以不同方式使用。