07 · OPS/Progress

Progress · 项目实时进度

渲染 LoopController.getProgress(pid) (C-14) 的返回值。一页一眼看完「这项目现在做到哪、花了多少、还要多久、当前哪个 Agent 在干嘛」。

UI Wireframe

/devloop/p-731042/ops/progress
Progress · p-731042 · TODO Auth System OVERALL PROGRESS 62% · L2 round 2/3 ETA: ~ 12 min remaining PRD rev 3 ✓ ok SDD rev 6 ✓ ok UNITS 10 / 12 2 testing · 0 blocked L2 / TOKENS 2 / 3 · 280K budget 3 rounds / 5M tokens ACTIVE AGENTS · 2 running ▶ coder · unit oauth-be · attempt 2/5 step 4/6 · 实现 token refresh 端点 running 42s ▶ tester · unit oauth-fe · attempt 1/5 step 2/5 · 写 callback redirect 测试用例 running 18s RECENT 5 EVENTS 12:04:21 · L2 run 3 fail (impl_bug) 12:04:08 · architect patched SDD rev 6 12:03:55 · oauth-be reset to pending

聚合算法

percent 加权求和(来自 C-14 文档):

阶段权重判定 ok
PRD10prd.html 存在且校验通过
SDD20sdd.html 存在且 units.json 一致
Units (L1)50按 passed / total 比例
L2 整合15最近一次 L2 ok=true
Ship5project.status=shipped
合计100—

ETA 基于历史项目均值 + 当前阶段剩余项数线性外推;blocked 状态时 ETA = ∞ 显示「等人介入」。

数据来源

  • 头部数字:C-14 LoopController.getProgress(pid) 一次性返回
  • Active Agents:聚合自 agent-state/*.json + agent-state/*-todo.json
  • Recent events:timelineLogger.tail(pid, 10)
  • SSE:订阅 unit.state · agent.step · integration.result 等事件,自动刷新

更新频率

区域触发方式
大数字 / breakdownSSE 任一关键事件debounce 500ms 重算
Active AgentsSSE agent.step立即
Recent eventsSSE 任一事件append 顶部,溢出剔旧
ETA30s 周期低频,避免抖动

无项目时的空态

页面打开时若没有任何 active project:显示「No project running」+ 列出最近 3 个项目让用户选;若有 shipped 项目,加 「✓ Demo: TODO Auth - shipped」可作为复现起点。

关联视图