comet dashboard 启动一个本地只读的浏览器仪表盘。在左上角切换 Classic 与 Native 后,页面只显示当前工作流的概览和变更工作区:Classic 提供活跃/归档 change、五阶段进度、产物、任务、风险和 Git 摘要;Native 直接展示 portable 状态、验收、检查、阻塞和恢复信息。
它只读,不会修改任何文件,可以随时安全启动,适合在开发过程中常驻一个标签页观察进度。
仪表盘支持亮色和暗色两种主题(见下方主题切换):


活跃变更概览:阶段步进条、产物分组、任务完成度环形图与风险提示

支持产物markdown预览

支持Supervisor Change顶层监督子Change
启动
在项目根目录运行:http://localhost:4321 启动并自动打开浏览器。终端会显示:
服务器只绑定
127.0.0.1
(localhost),不对外暴露。静态文件服务有路径穿越防护,产物预览有大小限制(256
KiB,超出标记 truncated)。Classic / Native 切换
Dashboard 左上角提供 Classic / Native 工作流切换。两种工作区复用相同的项目概览、Changes Explorer、变更详情和状态侧栏布局,但不会同时显示。切换到 Native 后,Dashboard 直接读取comet-state.yaml,只在 change 和状态版本匹配时补充本机 overlay;Dashboard 不重新运行检查,也不自行推导工作流事实。
每个 Native change 显示:
- 当前 phase/status:Shape、Build、Verify、Archive,或等待用户/阻塞
- Loop 的 iteration、attempt、actor 和 next action
- Acceptance 的 passed、failed、blocked、pending 数量及逐项原因
- Builder handoff、Runtime checks、Verifier 结论和风险
- blockers、有限 history 与 history overflow 提示
- brief、完整目标 Spec、
comet-state.yaml和verification.md等用户可读产物 - 本机 overlay 是否正在运行、已中断或缺失(缺失在已完成 change 上是正常的)
comet native status --details 和其他 Native CLI 输出为准。
Native 视图只读 portable YAML 的摘要和用户文档;不会暴露绝对路径、原始日志、
execution id 或本机 Runtime 文件,也没有推进、修复或归档按钮。所有状态变更仍由
Native CLI 和 Runtime 执行。
跨 Git worktree 查看 Supervisor Change 和子 Change
Dashboard 会扫描当前 Git 仓库已经注册的 worktree。每个 worktree 都会显示自己的分支或目录标签,因此来自其他工作目录的 Classic 和 Native change 仍然保持独立。 Native Supervisor Change 会显示子 Change 的完成进度,并提供展开按钮。展开后可以直接选择某个 child,查看它对应的阶段、工作区和详情;独立的 Native change 会继续作为根条目显示。/comet-native 和 comet native 命令推进实际工作。
Classic 工作区布局
仪表盘采用三栏布局:左侧导航栏、中间变更详情、右侧侧边面板,顶部是项目信息和工具栏。项目概览卡片
页面顶部是五张汇总卡片,每张都有一个从 0 开始的数字动画,一眼看清整个项目的健康度:变更工作区
概览下方是变更工作区,左侧是 Changes Explorer 列表,右侧是被选中 change 的详情和侧边面板。 工作区会随视口宽度调整;即使左侧导航栏同时显示,中间详情和右侧面板也会保持在可见区域内,不需要横向滚动查找内容。 Changes Explorer 支持:- 标签页筛选:活跃 / 已归档 / 全部
- 搜索框:按 change 名称、工作流、阶段实时筛选
- 每张卡片显示:change 名称、当前阶段、任务完成度进度条(completed/total)和 verify 状态药丸(通过/失败/待验证/未知);状态同时以绿色、红色、琥珀色或中性色区分,便于快速判断。
每个 Classic change 能看到什么
选中一个 change 后,中间和右侧会展示它的完整状态。生命周期阶段步进条
以五个圆点 + 连接线展示 open → design → build → verify → archive 的当前位置:- 已完成的阶段显示为 ✓ 蓝色实心
- 当前阶段高亮显示阶段名
- 未开始的阶段为灰色
关键产物(按来源分组)
产物不再是一个平铺列表,而是按来源分三组展示,并显示每个产物的状态:
每个产物行显示三种状态:
- 已生成(蓝点):文件存在,点击可预览全文
- 未生成(空心点):预期产物但尚未创建
- 无需生成(灰点):当前模式/阶段不适用,例如
subagent-progress在executing-plans模式下
changes/archive/ 后,Design Doc、Plan 和验证报告仍可查看。
任务进度环形图
任务进度用一个环形图(donut)+ 三列统计展示:- 环形图:完成度百分比,从 0% 动画填充;全部完成时变绿
- 三列统计:已完成 / 剩余 / 分组数
- 分组进度条:tasks.md 里每个 section 的完成度
- 下一步提示:全部完成时提示「可以进入 Verify」,否则提示剩余多少项
右侧侧边面板
侧边面板根据 change 状态显示不同卡片:活跃 change - 下一步建议:推荐的 slash 命令 + 原因 + 说明 -
风险提示:检测到的 info/warning/error 级风险项和恢复建议 - Git
快照:分支、HEAD、最近提交、未提交文件
已归档 change - 归档摘要:归档名、原名、归档时间和路径、任务完成度 -
风险提示:归档时的遗留风险 - Git 快照:归档时的 Git 状态
产物预览抽屉
点击任意已生成的产物,会从右侧滑出一个全屏高度的抽屉:- 标题区:产物名、完整文件路径(长路径自动换行,并提供一键复制)
- 元数据:文件大小(B/KB/MB)和更新时间
- 内容区:完整 Markdown 渲染,超过 256 KiB 时截断并提示 0.4.0-beta.5 起内容区从子集渲染器升级为完整渲染:
- 完整 Markdown:支持标题、列表、表格、引用、任务列表、代码块(语法高亮)和行内格式,标题中的行内代码和加粗也能正确渲染。
-
Mermaid 图:代码块语言为
mermaid时直接渲染为流程图/时序图等,重复标题生成唯一锚点。 -
结构化产物:
.comet.yaml/ YAML 和 handoff / checkpoint JSON 不再以原始文本显示,而是渲染为结构化表格:标量字段为键值行,files等同构对象数组渲染为独立数据表。 - 侧边预览 vs 全屏:侧边面板预览保持无干扰,不显示目录;切换到全屏后会显示目录(存在标题时),并提供展开/折叠控件。
产物 HTML 在注入 DOM 前会用 DOMPurify 清洗,危险 URL scheme 被阻断,Mermaid 以
securityLevel: ‘strict’
运行,因此即使产物内容来自不可信来源也无法通过原始
HTML、事件处理器或松散的图渲染执行脚本。主题切换:亮色 / 暗色
仪表盘支持亮色和暗色两种主题,在顶部工具栏右侧点击太阳/月亮图标切换。- 首次访问时,根据系统偏好(
prefers-color-scheme)自动选择主题 - 手动切换后,选择会持久化到
localStorage(key 为comet-theme),下次打开沿用 - 切换在
<html data-theme>属性上生效,避免首次渲染闪烁
主题偏好存储在浏览器本地,不会跨设备同步。在另一台机器或另一个浏览器上打开
dashboard 时,会重新读取系统偏好。
自动刷新
前端每 30 秒自动刷新一次快照,无需手动操作。也可以点击工具栏的「立即刷新」按钮手动刷新,刷新成功会弹出 toast 提示。- 自动刷新不会和手动刷新并发(有锁保护,避免重复请求)
- 演示模式(
?demo)下同样每 30 秒重新加载演示数据
演示模式
在 URL 加?demo 可以加载演示数据(不读真实 change),方便预览界面、截图或检查布局:
web/demo.js,覆盖首屏、侧边栏、卡片、产物分组和抽屉的全部 UI 状态。
风险码参考
仪表盘的风险提示卡片会显示检测到的风险码:从仓库子目录启动 Dashboard 时,它会先定位项目根目录。Classic 工作区依据
classic.artifact_layout 读取 docs/openspec/changes/
或保留旧布局的 openspec/changes/,并从对应的
changes/archive/ 读取归档 change。Native 工作区依据项目配置读取
Native artifact root 下的状态。两部分都采用
只读、尽力而为
策略;采集失败会显示对应错误,不会伪装成空工作区,也不会阻止另一工作流的数据加载。下一步
- comet dashboard 命令 — 完整命令选项和脚本/CI 用法
- comet status — 命令行版的活跃 change 状态
- 中间产物 —
.comet/中间产物的作用

