Agent 计划

Agent 如何传达其执行计划

计划是需要多个步骤的复杂任务的执行策略。

Agent 可以通过 session/update 通知与客户端共享计划,提供对其思考和进度的实时可见性。

plan_update 携带一个 plan 对象,具有 type 判别字段和必需的 planId,以便客户端可以独立跟踪多个计划。

计划内容类型为 items。额外的计划操作仍不稳定,Plan Operations RFD 正在进行中。

创建计划

当语言模型创建执行计划时,Agent 应该 通过 plan_update 向客户端报告。

基于条目的计划

{
  "jsonrpc": "2.0",
  "method": "session/update",
  "params": {
    "sessionId": "sess_abc123def456",
    "update": {
      "sessionUpdate": "plan_update",
      "plan": {
        "type": "items",
        "planId": "plan-1",
        "entries": [
          {
            "content": "Analyze the existing codebase structure",
            "priority": "high",
            "status": "pending"
          },
          {
            "content": "Identify components that need refactoring",
            "priority": "high",
            "status": "pending"
          },
          {
            "content": "Create unit tests for critical functions",
            "priority": "medium",
            "status": "pending"
          }
        ]
      }
    }
  }
}
字段类型必需描述
plan.typestring计划内容类型。
plan.planIdPlanId此计划在会话内的唯一标识符。
plan.entriesPlanEntry[]表示要完成任务的计划条目数组。

可扩展性

当客户端可以保留或通用显示时,plan.type 值可以是自定义或未来变体。自定义计划内容类型 必须_ 开头;未知的非下划线计划内容类型保留给未来的 ACP 变体。

每个计划内容变体,包括自定义或未来变体,必须 携带 planId

计划条目

每个计划条目代表整体执行策略中的特定任务或目标:

字段类型必需描述
contentstring此任务旨在完成的人类可读描述
priorityPlanEntryPriority此任务的相对重要性。可选值:highmediumlow。自定义或未来的优先级值可用作显示提示。自定义优先级 必须_ 开头;未知的非下划线优先级保留给未来的 ACP 变体。
statusPlanEntryStatus此任务的当前执行状态。可选值:pendingin_progresscompletedcancelled。当客户端可以保留或显示通用的计划条目状态时,可以使用自定义或未来的状态值。自定义状态 必须_ 开头;未知的非下划线状态保留给未来的 ACP 变体。

更新计划

随着 Agent 按计划推进,它 应该 通过发送更多具有相同 sessionUpdate: "plan_update" 结构和 planIdsession/update 通知来报告更新。

对于基于条目的计划,Agent 必须 在每次更新中发送所有计划条目的完整列表及其当前状态。客户端 必须 完全替换该计划的当前内容。

动态规划

计划可以在执行过程中演变。Agent 可以 在发现新需求或完成任务时添加、移除或修改计划条目,从而根据所学内容进行适应。