用途:harness-progress 是认知负荷 HTML 三件套中的第三个界面(前两个为 Plan Brief 与 Acceptance Demo),目标是把当前会话“完成了多少任务、预计何时结束、已花多少成本”汇总成一张静态 HTML,让非工程背景的 vibecoder 在浏览器中快速掌握全局。
主要能力:统计 Plans.md 中 cc:TODO、cc:WIP、cc:完了 的条目数;计算 progress_pct(cc:完了 ÷ 总任务 × 100,四舍五入取整);显示已用分钟、预计总分钟、已发生成本与成本估算;显示 drift alert(Phase 65.4.3 起填充)。输出遵循 progress-snapshot.v1 schema,包含 project、current_task、todo_tasks、wip_tasks、done_tasks(含 7 位 commit hash)、elapsed_minutes、estimated_total_minutes、cost_so_far_usd、cost_estimate_usd、alerts、generated_at 等字段。
使用方式:执行 /harness-progress 生成并打开当前项目的进度快照 HTML;/harness-progress --no-open 仅生成不打开浏览器(供 PostToolUse hook 使用);/harness-progress --out <path> 指定输出路径,默认 out/progress-snapshot.html。内部流程为:用 git 仓库名取得 PROJECT_NAME,调用 scripts/progress-snapshot.sh 解析 Plans.md 生成符合 schema 的 JSON,再用 scripts/render-html.sh --template progress 渲染 HTML,最后通过 scripts/plan-brief-open.sh 打开。
适用场景:需要向非工程人员展示当前会话进度、任务分布与成本概况时。
限制:本周期为静态 HTML,不支持 WebSocket/SSE 实时更新,需重新生成;不做历史会话对比(Phase 65.4.4 另议);不做跨项目视图,--cross-project-group 默认关闭,仅统计当前项目。Plans.md 不存在时脚本以 exit 1 报错;无任务时 progress_pct 为 0 并显示“任务なし”;无 state file 时 elapsed_minutes 与 cost_so_far_usd 回退为 0;不在 git 仓库时 project 回退为 current。