# 发现记录 ## 2026-07-24 - `processCcwebMcpChildNotification` 当前仅处理子线程 turn 和 agent message,忽略计划通知。 - `processCodexAppNotification` 已兼容 `plan/updated`、`turn/plan/updated`、`item/plan/updated`、`item/todoList/updated`。 - `planUpdateItemFromParams`、`normalizeTodoListFromPlanItem`、`isTodoListPlanDone` 可作为纯解析链路复用。 - 子代理公开状态通过 `ccwebMcpChildPublicState`、`mergeCcwebMcpChildIntoTool` 和现有 child update 事件传给前端,适合承载精简计划字段。 - 前端已有 `createPlanProgressElement`,可抽出由 `{ completed, total }` 直接渲染的基础函数。 - 当前工作区已有未提交改动和用户自有 CSV,必须保留且不能误清理。 - 子代理恢复路径当前只从原始 `subAgentActivity` input 恢复;精简计划应写进工具 `input.agentsStates[threadId]`,并在恢复时读取对应 agent state。 - `rememberCollabAgentStateFromChild` 会 spread 子代理公开状态,字段可进入缓存;但 `mergeCollabAgentTaskState` 需要确认不会在卡片工具合并时丢失计划字段。 - 现有 Plan List 进度点只在总数超过 12 时显示计数;子代理卡片需求明确要求始终展示 `completed/total`,基础渲染函数需要可配置计数显示。 - 样式文件实际为 `public/style.css`,后续 CSS 契约应使用现有 `PUBLIC_STYLE_PATH`。 - `normalizeIdentifier` 会把 `inProgress` / `in_progress` 都归一为 `inprogress` / `in_progress`;当前完成状态判断已经兼容多种形状。 - 纯解析 API 适合返回 `{ item, todoList, progress, currentStep, done }`:父线程用 `todoList` 更新工具,子线程只保留 `progress/currentStep`。 - 现有 Plan List 回归只断言 items 的 `completed` 和 progress,可以在不改变 todo payload 形状的前提下从原始 entries 提取当前步骤。 - Plan List 的桌面进度点单点实际占用约 22px;在 220px 子卡片内最多 12 点会溢出,因此子卡片保留同一语义和主题色,但将点尺寸收敛为 8px。