全景树
DevLoop System ├── F1 · 项目生命周期 │ ├── F1.1 创建项目 (POST /projects) │ │ └── Unit: devloop-be-projects │ ├── F1.2 启动 / 续跑 (POST /run) │ │ └── Unit: devloop-be-run │ ├── F1.3 查询状态 (GET /state) │ │ └── Unit: devloop-be-state │ ├── F1.4 Sign-off / Abandon │ │ └── Unit: devloop-be-finalize │ └── F1.5 项目元数据持久化 │ └── Unit: devloop-be-projectmeta │ ├── F2 · 文档管理 (DocStore) │ ├── F2.1 PRD CRUD + 归档 │ │ └── Unit: docstore-prd │ ├── F2.2 SDD CRUD + 归档 │ │ └── Unit: docstore-sdd │ ├── F2.3 units.json schema 校验 │ │ └── Unit: docstore-units-schema │ ├── F2.4 HTML 解析与校验 (cheerio) │ │ └── Unit: docstore-html-validator │ └── F2.5 contract_hash 计算 │ └── Unit: docstore-contract-hash │ ├── F3 · Unit 状态机 (UnitRegistry) │ ├── F3.1 状态转换合法性 │ │ └── Unit: registry-fsm │ ├── F3.2 L2 gate 判定 │ │ └── Unit: registry-l2gate │ ├── F3.3 增量 diff (added/changed/removed) │ │ └── Unit: registry-diff │ └── F3.4 retry 预算管理 │ └── Unit: registry-budget │ ├── F4 · 三层 Loop 编排 (LoopController) │ ├── F4.1 L1 单 Unit 跑通 │ │ └── Unit: loop-l1-runner │ ├── F4.2 L1 retryWithReflection │ │ └── Unit: loop-retry │ ├── F4.3 L1 并行调度 (scheduler 复用) │ │ └── Unit: loop-parallel │ ├── F4.4 L2 集成 gate + run │ │ └── Unit: loop-l2-runner │ ├── F4.5 L2 修复回写 (triage → patch SDD → reset) │ │ └── Unit: loop-l2-repair │ ├── F4.6 L3 增量需求并入 │ │ └── Unit: loop-l3-merge │ └── F4.7 全局预算 + 终止条件 │ └── Unit: loop-guard │ ├── F5 · Agent 模板 + 调用 │ ├── F5.1 PM Agent │ │ └── Unit: agent-pm │ ├── F5.2 Architect Agent (generate + patch 两模式) │ │ └── Unit: agent-architect │ ├── F5.3 Coder Agent │ │ └── Unit: agent-coder │ ├── F5.4 Tester Agent │ │ └── Unit: agent-tester │ ├── F5.5 Integrator Agent │ │ └── Unit: agent-integrator │ └── F5.6 BugTriager Agent │ └── Unit: agent-triager │ ├── F6 · 事件推送 (SSE) │ ├── F6.1 SSEBroker 订阅 / 退订 │ │ └── Unit: sse-broker │ ├── F6.2 9 类事件序列化 │ │ └── Unit: sse-events │ └── F6.3 断线重连 + replay │ └── Unit: sse-replay │ ├── F7 · 前端 Dashboard │ ├── F7.1 主页面 DevLoopDashboard.vue │ │ └── Unit: fe-dashboard │ ├── F7.2 DashboardHeader (含 + NEW REQUIREMENT) │ │ └── Unit: fe-header │ ├── F7.3 LoopStatusBar (3 张状态卡) │ │ └── Unit: fe-loopbar │ ├── F7.4 UnitsDAG (复用 PipelineEditor 渲染) │ │ └── Unit: fe-dag │ ├── F7.5 LiveAgentStream (终端样式 SSE) │ │ └── Unit: fe-stream │ ├── F7.6 PrdDiffPanel (section 级 diff) │ │ └── Unit: fe-prddiff │ ├── F7.7 FeedbackModal (反馈输入) │ │ └── Unit: fe-modal │ ├── F7.8 UnitDrawer (Unit 详情侧栏) │ │ └── Unit: fe-drawer │ └── F7.9 路由 + i18n keys │ └── Unit: fe-router-i18n │ └── F8 · 复现 / 可执行性 ├── F8.1 PRD/SDD data-* 锚点协议 │ └── (无 Unit,文档约定) ├── F8.2 build-manifest 提取脚本 │ └── Unit: tool-manifest-extract └── F8.3 Reproducibility prompt 模板 └── (无 Unit,prompt 文件)
绿色 = 一个 Unit。共 34 个 Unit。Architect Agent 在 P1 演示时会从这棵树派生 units.json。
按层级统计
| L1 功能群 | L2 功能 | Unit 数 | 类型构成 |
|---|---|---|---|
| F1 项目生命周期 | 5 | 5 | be × 5 |
| F2 文档管理 | 5 | 5 | be × 5 |
| F3 Unit 状态机 | 4 | 4 | be × 4 |
| F4 Loop 编排 | 7 | 7 | be × 7 |
| F5 Agent 模板 | 6 | 6 | config × 6(Agent prompt + 注册) |
| F6 SSE | 3 | 3 | be × 3 |
| F7 前端 | 9 | 9 | fe × 9 |
| F8 复现 | 3 | 1 | tool × 1 |
| 合计 | 42 | 34 | be × 24 / fe × 9 / tool × 1 |
依赖拓扑(粗)
箭头 = 「下游 Unit 需要上游 contract」。LoopController.scheduler 据此分波并行。
P1 优先做 F2 + F5 (PM + Architect);P2 加 F3 + F4.1~4.3;P3 加 F4.4~4.7 + F1 + F6;P4 加 F7。
Unit id 命名约定
本树里的 Unit id 全部遵循 Architect 拆解策略:
| 前缀 | 层 | 预计 cwd |
|---|---|---|
devloop-be-* | F1 | server/routes/devloop.js · server/services/ |
docstore-* | F2 | server/services/doc-store.js |
registry-* | F3 | server/services/unit-registry.js |
loop-* | F4 | server/src/core/loop-controller.js |
agent-* | F5 | system/templates/devloop-*.md |
sse-* | F6 | server/services/sse-broker.js |
fe-* | F7 | web/src/views/ · web/src/components/devloop/ |
tool-* | F8 | scripts/ |