From b1456d9f116499d8663c8d84038874be0037fcfd Mon Sep 17 00:00:00 2001 From: Linghong Date: Sat, 5 Sep 2026 08:17:04 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E7=AD=96=E5=88=92V2=E6=B5=81?= =?UTF-8?q?=E5=BC=8F=E4=BA=A4=E4=BA=92=E5=A5=91=E7=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 明确用户交互以工具调用结果为准 取消逐 delta 投影的业务契约要求 同步技术方案与长期决策记录 --- docs/project-memory/shared-memory/decision-log.md | 5 +++++ ...技术方案】策划会话RuntimeV2接入与旧链路退役-2026-09-03.md | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/project-memory/shared-memory/decision-log.md b/docs/project-memory/shared-memory/decision-log.md index 7ff470a6a..a5443bff4 100644 --- a/docs/project-memory/shared-memory/decision-log.md +++ b/docs/project-memory/shared-memory/decision-log.md @@ -8071,3 +8071,8 @@ CI 上 `background_agent_runtime_recovers_stale_running_before_pending_task` 在 - Planning V2 的 P4 灰度与回归验收已通过人工校验:正常提问/回答/GDD/批准链路、GDD 修改后再次批准链路、Provider 失败恢复、非法输出失败边界、重启恢复、前端工作台展示以及编码/差异门禁均完成验证。 - P4 收口不代表旧链路退役;旧 `project-supervisor-plan` / `project-planning` 源码和入口仍保留,旧活跃会话封存、迟到结果隔离、旧入口关闭和只读历史展示统一留在后续 P5。 - P5 收缩为最小退役:旧 `project-supervisor-plan` caller 统一立即返回退役错误,不启动旧 Runtime/Provider;不扩展 V1 `PlanSessionV1` schema,不做旧数据迁移,旧文件继续保留只读,V2 只读取 `.agent/planning-v2`。 + +## 2026-09-05 修正 Planning V2 流式交互契约 + +- Planning V2 不要求把 Provider 的文本 stream delta 逐条投影为用户可见对话。V2 的用户交互是结构化工具调用结果:`plan_ask_question` 渲染澄清选项卡,`plan_submit_gdd` 渲染 GDD 输出和审批卡;中间纯文本不是用户对话内容。 +- `planning-session-v2-stream` 若继续存在,只能作为内部状态/兼容事件能力,不构成实时逐 delta 的功能契约;Provider 是否使用流式传输不影响 V2 的业务验收。 diff --git a/docs/technical/【技术方案】策划会话RuntimeV2接入与旧链路退役-2026-09-03.md b/docs/technical/【技术方案】策划会话RuntimeV2接入与旧链路退役-2026-09-03.md index 98254a7a4..477b4f97a 100644 --- a/docs/technical/【技术方案】策划会话RuntimeV2接入与旧链路退役-2026-09-03.md +++ b/docs/technical/【技术方案】策划会话RuntimeV2接入与旧链路退役-2026-09-03.md @@ -646,7 +646,7 @@ hydrate_planning_session_v2 状态:实现已落在 AGC Tauri Runtime(2026-09-03)。当前仅提供内核闭环,尚未接入 GDD 解析、审批或生产 UI。 -已落地的 P1 入口:`start_planning_session_v2`、`continue_planning_session_v2`、`hydrate_planning_session_v2`。会话快照和完整消息分别持久化到 `.agent/planning-v2/session.json` 与 `.agent/planning-v2/conversation.jsonl`;Provider 请求沿用现有 `platform-llm`,按配置执行流式或普通调用,并把流式增量统一投影为 `planning-session-v2-stream` 事件。 +已落地的 P1 入口:`start_planning_session_v2`、`continue_planning_session_v2`、`hydrate_planning_session_v2`。会话快照和完整消息分别持久化到 `.agent/planning-v2/session.json` 与 `.agent/planning-v2/conversation.jsonl`;Provider 请求沿用现有 `platform-llm`,按配置执行流式或普通调用。流式传输只是 Provider 调用实现细节,不属于策划用户交互契约;用户可见结果以 `plan_ask_question` / `plan_submit_gdd` 工具调用及其结构化结果为准。 当前 P1 的恢复语义是轻量且显式的:进程退出时若快照仍为 `planning`,hydrate 将其投影为 `provider_failed/RECOVERY_REQUIRED`,要求用户重新提交当前意图;不会伪造成功或自动制造 GDD。`clientTurnId` 命中已有成功 assistant 记录时直接等值重放;若只有 error 记录,则沿用原用户意图重试且不重复追加用户消息。 @@ -665,7 +665,7 @@ hydrate_planning_session_v2 阶段验收: -- 真实 Provider 可以返回一轮流式文本,前端收到增量并在终态落盘。 +- 真实 Provider 可以完成一轮工具调用,前端收到结构化 question 或 GDD 结果并在终态落盘。 - 同一 `clientTurnId` 重试不会重复追加用户/助手消息。 - 同一项目第二个在途回合被拒绝,原回合不受影响。 - Provider 失败后 Session 保留,恢复不会自动制造新问题或 GDD。 @@ -733,7 +733,7 @@ hydrate_planning_session_v2 - 正式 `planningStartMode` 首轮提交已改走 `start_planning_session_v2`,后续回答改走 `continue_planning_session_v2`,审批改走 `decide_planning_artifact_v2`;不再为新策划回合创建 Supervisor Run。 - 前端通过 V2 适配层复用现有聊天区、澄清卡、GDD 审批卡和阶段进度条;V2 Session 的 hydrate 结果额外携带 `conversation`,用于刷新/重启恢复历史消息。 -- 监听 `planning-session-v2-stream`,将 Provider 回合的增量投影到现有实时回复区域;旧 Runtime 轮询、专业 Agent 轮询和旧 Runtime 事件在 V2 策划会话中关闭。 +- V2 只将结构化工具调用结果投影到澄清选项卡和 GDD 审批卡;旧 Runtime 轮询、专业 Agent 轮询和旧 Runtime 事件在 V2 策划会话中关闭。Provider 中间文本不作为策划用户对话展示。 - 对已存在 V2 Session 的项目,打开项目时先 hydrate V2;没有 V2 authority 的旧项目继续走旧读取路径,避免误把旧项目数据当成 V2。 - P3 已完成;P4 的真实 Provider、前端工作台、失败恢复和安全门禁验收已通过。旧会话 `legacy_retired` 封存与旧入口彻底关闭仍属于 P5。