flow-event-reader 是一个技能原生的 CocoFlow transcript 完成事件读取器,取代了原先的 flow-event-reader 运行时辅助程序。其目标是根据权威的 transcript 队列记录,校正后台 CocoPod 的完成时间戳。
用途 该技能用于从 transcript 记录中提取队列或子代理的完成事件,并据此修正 flow-state 中 pod 的完成时间信息,确保完成时间戳以 transcript 为准,而非依赖 hook 或工具结果的时序。
输入 技能接受直接参数,或从 .cocoplus/v2-runtime-requests.jsonl 读取排队请求。输入包括:transcript_path、flow_state(默认 .cocoplus/lifecycle/flow-state.json)、idempotency_key。
时间戳优先级 以 transcript 派生的完成记录为最强来源,优先级依次为:终端 transcript 记录中的 completed_at;终端 transcript 记录中的 timestamp;仅当不存在完成时间戳时使用 enqueued_at;已有的 hook/工具结果时序作为回退。不得用 hook 时序覆盖 transcript 派生时间戳。若某个 pod 已有 completion_source: "enqueue_record" 且 completion_timestamp_reliable: true,则保留该值,除非同一 pod 出现更新的、带显式终端 completed_at 的 transcript 记录。
处理流程
- 读取已有的 flow-state JSON,若不存在则以 { "pods": [] } 开始。
- 逐行读取 transcript JSONL。
- 仅通过命名字段识别队列/子代理完成记录:subagent_id、pod_id、agent_id 或 task_id;status、event 或 type;completed_at、timestamp 或 enqueued_at。
- 对每个终端完成事件(completed、failed、exited、cancelled),更新匹配的 pod 记录:completed_at、completion_source: "enqueue_record"、completion_timestamp_reliable: true。
- 若某个 pod 仅有 hook/工具结果时序,则保留但标记:completion_source: "tool_result_fallback"、completion_timestamp_reliable: false。
- 原子写入 flow_state。
队列结算 当从 .cocoplus/v2-runtime-requests.jsonl 调用时,遵循 execution-engine/runtime-queue:使用 idempotency_key 或由 transcript_path 与 flow_state 派生的键认领请求;协调 flow-state 文件;追加带 artifact: flow_state 的完成结算;若无法读取 transcript 或无法写入 flow_state,则追加失败记录。
输出 报告内容:CocoFlow completion events reconciled. Pods corrected: <N> Fallback records retained: <N> Flow state: <path>
退出标准
- transcript 派生的完成记录已设置 completion_source。
- 回退记录被显式标记为不可靠。
- flow-state 文件保持有效 JSON。
- 排队请求已结算,且可重放而不重复状态变更。
限制与注意事项 该技能会变更状态,因此需保留与小型命令相同的检查门槛,不应因命令简单而跳过 artifact 与安全检查。技能契约应描述可观察的行为与验证方式,而不仅是命令名称。