prd-feature-tree.md
5.68 KB
功能树
把 DevLoop 系统所有功能拆成 4 层树。每个叶子节点对应一个或一组 Unit,将被 Architect Agent 翻译成 units.json 的 DAG 节点。这是 Claude Code 复现整个项目时的第一份「清单」。
全景树
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/ |