# 修复子代理计划进度不可见 ## 目标 基于真实子代理 rollout 与会话快照,定位 `update_plan` 已执行但父会话子代理卡片不显示进度的断点,补齐回归并修复历史重建与实时更新链路;优先避免不必要的 ccweb 重启。 ## 阶段 | 阶段 | 状态 | 验收标准 | |---|---|---| | 1. 核验真实通知与会话快照,确定显示链路断点 | complete | 真实数据能稳定复现字段被吞或 DOM 未刷新的具体路径 | | 2. 补充真实快照驱动的失败回归 | complete | 回归在修复前失败,且覆盖已确认断点 | | 3. 修复卡片计划字段的合并与实时更新 | complete | 历史消息和实时 child update 均保留并展示计划摘要 | | 4. 运行定向回归和语法检查 | complete | 相关回归与 JS 语法检查通过 | | 5. 运行全量回归并审查差异 | complete | 全量回归、diff check 通过且无无关改动 | | 6. 验证线上静态资源并确认无需重启 | complete | 当前服务可读取修复资源;仅在确需且满足安全门禁时重启 | | 7. 对齐真实计划事件与卡片工具 ID | complete | 找到 `plan_progress_live_demo` 计划更新实际写入哪张 tool/card,以及为何当前卡片未命中 | | 8. 补充真实工具路由失败回归 | complete | 使用本次消息 33/35 的双工具形状稳定复现错误卡片被更新 | | 9. 修复工具路由并完成回归 | complete | 实时计划仅更新当前子代理所属卡片,定向与全量回归通过 | | 10. 启动新演示并以实际画面验收 | in_progress | 新代理运行时卡片实际出现 `x/4`;未经用户画面确认不宣告完成 | ## 机器可读阶段状态 ### Phase 1:核验真实链路 **Status:** complete ### Phase 2:补充失败回归 **Status:** complete ### Phase 3:修复历史与实时更新 **Status:** complete ### Phase 4:定向验证 **Status:** complete ### Phase 5:全量回归与差异审查 **Status:** complete ### Phase 6:在线资源验证 **Status:** complete ### Phase 7:对齐真实工具路由 **Status:** complete ### Phase 8:补充真实路由回归 **Status:** complete ### Phase 9:修复并验证 **Status:** complete ### Phase 10:真实画面验收 **Status:** in_progress ## 关键决策 - 以真实 rollout 中 4 次 `update_plan` 和 session 中最终 `3/3` 为事实基线,不再把问题归因于子代理未调用。 - 先验证历史消息重建,再验证实时 `ccweb_mcp_child_agent_update` DOM 更新,避免凭 UI 现象猜测。 - 使用现有 child update 事件与卡片结构,不新增协议字段或消息类型。 - 保留工作区既有脏改动和用户的其他 TODO CSV,只修改本任务相关区域。 ## 错误记录 | 错误 | 尝试 | 处理 | |---|---|---| | 定向回归报错:实时子代理更新未先定位原卡片 | 1 | 预期失败,证明回归已覆盖真实断点;进入实现修复 | | 完成检查器报告 0/0 phases | 1 | 计划原为表格格式,补充机器可读阶段标题和完成状态标记 | | 用户真实截图仍无 `x/4` | 2 | 前一回归只覆盖单工具历史 DOM,未覆盖同一 child 同时落入消息 33/35 两个 tool 的真实路由;重新打开任务 | | 全量回归:Nested V2 child result 未合并到可见卡片 | 1 | 严格禁止非精确回退破坏嵌套子代理;改为按 child/parent 归属回退,不恢复“最新卡片”策略 |