From 680bb200a8f8ec5daacb51c009e0a9869d63a8ef Mon Sep 17 00:00:00 2001 From: Linghong Date: Thu, 13 Aug 2026 08:22:42 +0000 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=EF=BC=9Acheckpoint=20handoff?= =?UTF-8?q?=20=E7=A7=81=E6=9C=89=E6=8C=81=E4=B9=85=E5=8C=96=E9=9A=8F=20D10?= =?UTF-8?q?=20=E4=BD=9C=E5=BA=9F=EF=BC=8CM1=20=E5=85=A5=E5=8F=A3=E5=89=8D?= =?UTF-8?q?=E7=BD=AE=E5=86=B3=E7=AD=96=E5=BD=92=E9=9B=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 该待裁决项待的是 plan-decision-checkpoint 专用请求 kind 的 handoff 契约,而该 kind 是 D10「Runtime 直投」的组成部分。D11 下策划子 Agent 以终态信封退出来提问、 run 随即结束,解释与下一步由 continuation 子 Agent 的第一个普通 tool-plan turn 完成,专用 kind 不存在,其专用 handoff 也不需要。 两条核实依据:现役 tool_plan_handoff::lookup_at 按 (agentId, runId) 寻址、与 agent 身份无关,已覆盖任何 Agent 的普通 tool-plan 响应;第 8.6 节预留的 supersededCheckpointHandoffs 全仓库零代码引用,作废无迁移成本。 通用 handoff 安全边界不受影响,策划链路照用现役机制。 M1 入口前置决策至此归零,剩余全部为待执行项。 Co-Authored-By: Claude Opus 5 --- docs/project-memory/shared-memory/decision-log.md | 7 +++++++ ...术方案】立项策划Agent(Fast GDD)-2026-08-10.md | 14 +++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/docs/project-memory/shared-memory/decision-log.md b/docs/project-memory/shared-memory/decision-log.md index eb059310b..f603b9669 100644 --- a/docs/project-memory/shared-memory/decision-log.md +++ b/docs/project-memory/shared-memory/decision-log.md @@ -1,5 +1,12 @@ # 决策记录 +## 2026-08-13 checkpoint handoff 私有持久化随 D10 作废;M1 入口前置决策归零 + +- 处置:原待裁决项「checkpoint handoff 私有持久化」**无需裁决,随 D10 一并作废**。它待的是 `plan-decision-checkpoint` 这份 Provider 响应的专用 handoff schema / path / requestSlot / ledger 排序语义;该请求 kind 是 D10「Runtime 直投」的组成部分(策划节点持续存活于同一 run,用户回答后在同一 run 内再发一次专用请求形成设计解释)。D11 下策划子 Agent 以终态信封退出来提问、该 run 随即结束,解释与下一步由 continuation 子 Agent 的第一个普通 tool-plan turn 完成,专用请求 kind 不存在,其专用 handoff 也就不需要。 +- 核实依据:① 现役 `tool_plan_handoff::lookup_at(root, agent_id, run_id, &response_identity)`(`agent/runtime_actions/provider_tool_plan.rs:367`)按 `(agentId, runId)` 寻址、与 agent 身份无关,任何 Agent 的普通 tool-plan 响应都已被覆盖,continuation 子 Agent 首轮不需要新机制;② 技术方案第 8.6 节为该方案预留的 `supersededCheckpointHandoffs` 全仓库零代码引用,纯设计构想,作废无迁移成本。 +- 不受影响:通用 handoff 安全边界(任何 Provider 成功响应必须先过 storage 的大小/控制字符/敏感键/绝对路径/容量/durable identity 门并落盘才可消费;门拒绝或无法 durable 提交时禁止保存不安全正文、补 lifecycle completed 或自动重发)是现役机制,策划链路照用。 +- 结果:**M1 入口前置决策归零**。剩余全部是待执行项:该可信 matcher 约 19 处消费点逐点复核(steer 门须实现为独立显式否决)、为 standard 下 plan 根 run 补「不得自行提问」的机制兜底。 + ## 2026-08-13 plan source 进可信 matcher;做方案验收图取自固定 Fast GDD 合格标准 - 裁决一:`project-supervisor-plan` **进** `agent_runtime_supervisor_source_is_trusted`(`agent/runtime_driver.rs:113`),做方案链路正常参与 Goal Contract 协议,不做豁免。2026-08-12 条记录的硬门「裁决冻结前,依赖 plan source 可信身份的 M1 代码不得合入」随本条解除。 diff --git a/docs/technical/【技术方案】立项策划Agent(Fast GDD)-2026-08-10.md b/docs/technical/【技术方案】立项策划Agent(Fast GDD)-2026-08-10.md index ae4579671..d5451e6b7 100644 --- a/docs/technical/【技术方案】立项策划Agent(Fast GDD)-2026-08-10.md +++ b/docs/technical/【技术方案】立项策划Agent(Fast GDD)-2026-08-10.md @@ -1741,7 +1741,11 @@ D9 之后,root 是未变的 Project Supervisor,它在 `standard` 下天然 **仍然保留的 M1 入口前置决策**: -- **checkpoint handoff 私有持久化**——原有待裁决项,不受拓扑变更影响,继续保留。 +- ~~**checkpoint handoff 私有持久化**~~——**2026-08-13 随 D10 一并作废,无需裁决。** 本项待的是「`plan-decision-checkpoint` 这份 Provider 响应的专用 handoff schema / path / requestSlot / ledger 排序语义」。该请求 kind 是 D10「Runtime 直投」的组成部分——策划节点持续存活于同一 run,用户回答后 Runtime 在**同一 run** 内再发一次专用请求让 Agent 形成设计解释,那份响应需要自己的持久化契约。D11 下策划子 Agent 是**以终态信封退出**来提问的,该 run 随即结束,解释与下一步由 continuation 子 Agent 的**第一个普通 tool-plan turn** 完成(见第 5.1 节),专用请求 kind 不复存在,它的专用 handoff 自然也不需要。 + + 两条核实依据:① 现役 `tool_plan_handoff::lookup_at(root, agent_id, run_id, &response_identity)`(`apps/ai-game-creator-shell/src-tauri/src/agent/runtime_actions/provider_tool_plan.rs:367`)按 `(agentId, runId)` 寻址、与 agent 身份无关,**任何 Agent 的普通 tool-plan 响应都已被它覆盖**,continuation 子 Agent 的首轮不需要新机制;② 第 8.6 节为该方案预留的 `supersededCheckpointHandoffs` 全仓库**零代码引用**,是纯设计构想,作废不产生迁移成本。 + + 仍然成立、且与本项无关的是**通用 handoff 安全边界**:任何 Provider 成功响应都必须先过现役 storage 的大小、控制字符、敏感键、绝对路径、容量与 durable identity 门并落盘,才允许被消费;storage 门拒绝或 handoff 无法 durable 提交时,禁止保存不安全正文、补 lifecycle completed 或自动重发。这是现役机制,策划链路照用,不需要额外裁决。 - ~~**plan source 与 Goal Contract 协议的关系**~~——**2026-08-13 已裁决**:`project-supervisor-plan` **进** `agent_runtime_supervisor_source_is_trusted`;做方案链路正常参与 Goal Contract 协议,不做豁免。原「裁决冻结前依赖 plan source 可信身份的 M1 代码不得合入」的硬门随本裁决解除。 *原阻塞理由已失效*:2026-08-12 排除该方向的依据是「出口门在验收阶段照卡且更难救——合同强制至少一个带 `requiredEvidence` 的 required 节点,而**策划 Agent 按设计一项证据工具都不该有**,`.agent/planning/**` 由 Runtime 写、不产生 Agent 回执,必然留下永不 `passed` 的节点」。该推理写于 D6/D9 拓扑,当时「plan run」就是策划 Agent 本身。D11 拆成两层后两个前提都不成立:① 策划子 Agent 的 exact allowlist 恰好含 `file.read` / `file.list`,二者都在 `agent_runtime_acceptance_evidence_tools()` 白名单内;② 更根本的是证据**不必由它出**——`validate_acceptance_evidence_identity_at`(`apps/ai-game-creator-shell/src-tauri/src/agent/runtime_protocol/acceptance_graph.rs:152`)对证据来源的唯一要求是 `binding.root_agent_id/root_run_id` 等于合同的根,**不要求是根 Agent 自己的回执**;委派子 Agent 的 binding 根就是 Supervisor,因此两层的 `file.read` 回执都是合法验收证据。 @@ -1850,9 +1854,13 @@ M0 完成不表示任何策划功能已上线。M1 的功能实现仍未开始 *一、身份可执行性缺口*(第 3.1 节「登记前必须先处理的代码改动」,仅 catalog 登记不足以让静态委派跑起来)——其中角色身份合成缺口为 blocking,另有若干 needs_change 项与一条既有测试的期望集合需同步更新。清单以第 3.1 节为准,本节不重复。 -*二、既有待裁决项*(第 23.1 节)——**只剩 `checkpoint handoff` 私有持久化一项**,它是 M1 的合入门,不是 M0 或本节前三步的完成门。另两项已于 2026-08-13 关闭:「plan run 是否允许 steer」裁决为**不允许**;「plan source 与 Goal Contract 协议的关系」裁决为 `project-supervisor-plan` **进**可信 matcher、正常参与 Goal Contract 协议,原「依赖 plan source 可信身份的 M1 代码不得合入」硬门随之解除。 +*二、既有待裁决项*(第 23.1 节)——**2026-08-13 起为空,M1 不再有未决的入口前置决策。** 三项分别于同日关闭:「plan run 是否允许 steer」裁决为**不允许**;「plan source 与 Goal Contract 协议的关系」裁决为 `project-supervisor-plan` **进**可信 matcher、正常参与 Goal Contract 协议,原「依赖 plan source 可信身份的 M1 代码不得合入」硬门随之解除;「checkpoint handoff 私有持久化」**随 D10 一并作废、无需裁决**——它待的是 `plan-decision-checkpoint` 专用请求 kind 的持久化契约,而该 kind 在 D11 下不存在。 -后者虽已裁决,但留下一项**落地前必须完成的复核**(不是待裁决,是待执行):`agent_runtime_supervisor_source_is_trusted` 的约 19 处生产消费点须逐点确认对 plan 语义正确,不适用者单独收窄;这项复核连同第 4.3 节记录的「Supervisor 自行提问目前只有 Prompt 兜底、缺机制约束」一并属 M1 范围。 +*三、待执行项*(已有结论,只差落地,不阻塞开工决策): + +- `agent_runtime_supervisor_source_is_trusted` 的约 19 处生产消费点逐点复核,确认对 plan 语义正确,不适用者单独收窄;其中 steer 门须实现为独立于该 matcher 的显式否决。 +- 第 4.3 节记录的「Supervisor 自行发起提问目前只有 Prompt 兜底、缺机制约束」——若要变成机制约束,须为 `standard` 下的 plan 根 run 单独接一道等价校验。 +- 第 3.1 节「登记前必须先处理的代码改动」清单中,`project-planning` 身份登记已于 2026-08-13 落地(含 blocking 项与四处 needs_change),该清单已清空。 以下为已识别但**明确后置**、不阻塞上述任何一步的工作项: