PDCA Watch — 实时刷新仪表盘
版本 v2.1.11 Sprint β FR-β4。该技能在 Claude Code 的 /loop(v2.1.71+)之上封装 lib/dashboard/watch.js。它是只读的——仅消费状态文件,从不写入。当 /loop 不受支持时,回退为单次渲染(E-β4-01)。
参数
- (无参数):从 pdca-status.primaryFeature 自动解析当前活跃特性,示例 /pdca-watch
- <feature>:按名称观察指定特性,示例 /pdca-watch bkit-v2111-integrated-enhancement
行为
解析
- 如果提供了 <feature>,则原样使用。
- 否则读取 .bkit/state/pdca-status.json → primaryFeature,再以 activeFeatures[0] 作为回退。
- 如果仍无特性 → 渲染 “No active PDCA feature. Start one with /pdca pm <feature>” 并退出。
刷新(通过 /loop 每 30 秒一次)
每次刷新时,lib/dashboard/watch.js#renderTick 生成一个面板,包含:
Watch <feature> — tick N (HH:MM:SS) ───────────────────────────────────────────────────────────── Phase: <phase> Match: <%> Iter: <n / 5> Tokens: <in> in / <out> out · samples <N> Est cost: $<USD> ─────────────────────────────────────────────────────────────
数据来源:
- Phase / matchRate / iterationCount:pdca-status.features[<feature>]
- Token 总量:token-ledger.ndjson 的最后 50 行
- 成本:Sonnet 级别固定估算($3/Mtok 输入,$15/Mtok 输出)
终止条件
- 用户按 Ctrl-C
- 特性 phase === 'completed' 或 phase === 'archived'
- 达到最多 60 次刷新(约 30 分钟)后——如需更长时间由调用方重启
CC /loop 支持
- CC 版本 ≥ 2.1.71:原生 /loop 30 秒定时器
- CC 版本 < 2.1.71:E-β4-01:单次渲染 + 警告,不循环
- 版本未知:与 < 2.1.71 相同(故障安全)
该检查通过 watch.checkLoopSupport({ ccVersion }) 执行——调用方传入由 lib/infra/cc-version-checker 解析出的 CC 版本。
安全
- 对 .bkit/state/pdca-status.json 和 .bkit/runtime/token-ledger.ndjson 纯读取。
- 无论调用方输入如何,尾部读取上限为 MAX_TAIL_LINES = 200——防御 NDJSON 异常增长。
- 不启动子进程,无网络访问。
- 账本中的 PII 脱敏由写入方(Token Accountant)负责;watch 只读取已脱敏的内容。
模块依赖
- lib/dashboard/watch.js 的 resolveFeature():无参数时自动检测
- lib/dashboard/watch.js 的 renderTick():每次刷新一帧
- lib/dashboard/watch.js 的 tailLedger():NDJSON 尾部(≤200)
- lib/dashboard/watch.js 的 checkLoopSupport():CC 版本门控
- lib/infra/cc-version-checker.js 的 getCurrent():版本来源
示例
自动检测活跃特性
/pdca-watch
观察指定特性
/pdca-watch bkit-v2111-integrated-enhancement
相关
- /pdca status — 单次快照(不循环)
- /control trust — 信任分数影响自动升级
- /pdca-fast-track — Daniel 模式自动批准检查点
ARGUMENTS: