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.type | string | 是 | 计划内容类型。 |
plan.planId | PlanId | 是 | 此计划在会话内的唯一标识符。 |
plan.entries | PlanEntry[] | 是 | 表示要完成任务的计划条目数组。 |
可扩展性
当客户端可以保留或通用显示时,plan.type 值可以是自定义或未来变体。自定义计划内容类型 必须 以 _ 开头;未知的非下划线计划内容类型保留给未来的 ACP 变体。
每个计划内容变体,包括自定义或未来变体,必须 携带 planId。
计划条目
每个计划条目代表整体执行策略中的特定任务或目标:
| 字段 | 类型 | 必需 | 描述 |
|---|---|---|---|
content | string | 是 | 此任务旨在完成的人类可读描述 |
priority | PlanEntryPriority | 是 | 此任务的相对重要性。可选值:high、medium、low。自定义或未来的优先级值可用作显示提示。自定义优先级 必须 以 _ 开头;未知的非下划线优先级保留给未来的 ACP 变体。 |
status | PlanEntryStatus | 是 | 此任务的当前执行状态。可选值:pending、in_progress、completed、cancelled。当客户端可以保留或显示通用的计划条目状态时,可以使用自定义或未来的状态值。自定义状态 必须 以 _ 开头;未知的非下划线状态保留给未来的 ACP 变体。 |
更新计划
随着 Agent 按计划推进,它 应该 通过发送更多具有相同 sessionUpdate: "plan_update" 结构和 planId 的 session/update 通知来报告更新。
对于基于条目的计划,Agent 必须 在每次更新中发送所有计划条目的完整列表及其当前状态。客户端 必须 完全替换该计划的当前内容。
动态规划
计划可以在执行过程中演变。Agent 可以 在发现新需求或完成任务时添加、移除或修改计划条目,从而根据所学内容进行适应。