目标
目标不是「再造一个 Devin」,而是把当前散落在 server/src/core/、packages/evolution/、routes/pipeline* 的能力,组装成一个有名字、有状态、可观测的 LoopController。新代码总量控制在 1500 行以内,最大化复用已有抽象。
| 系统能力 | 当前状态 | 本次改造后 |
|---|---|---|
| 多 Agent 调度 | master-session + orchestrator(散) | 统一由 LoopController 入口 |
| 需求 → 代码 | 无端到端链路 | PM → Architect → Coder → Tester → Integrator 闭环 |
| 失败修复 | EvolutionLoop(只对 Skill) | 抽出 retryWithReflection 共享给 L1 |
| 文档化输出 | 仅 Skill 训练 digest | PRD / SDD 双 HTML,每 rev 归档 |
三条设计原则
REUSE
最大化复用
Master / Orchestrate / SessionPool / EvolutionLoop / Scheduler / Pipeline 全部沿用。新增组件不超过 5 个文件,新增模板 6 个。
NEW
文档即状态
PRD / SDD / units.json 是流程的唯一真源。Agent 之间通过文档交接,而不是共享内存或 RPC payload。文档版本即流程游标。
PATCH
失败先修文档
L2 集成失败时,默认先回写 SDD 再重跑 L1。不允许 Coder Agent 直接 patch 别的 Unit 的代码以「绕过」契约。
例外:BugTriager 输出 category=impl_bug 时不改 SDD,只 reset 该 Unit — 因为是代码没遵守 SDD,改的是代码不是契约。
不在范围内
| 能力 | 原因 | 留给后续 |
|---|---|---|
| 真实浏览器 E2E 测试 (Playwright headed) | 初版用 vitest + 后端集成测试足够覆盖 | P5 后续 |
| 生产环境部署管线(CI/CD) | 聚焦在「跑通」而非「上线」 | 独立 PRD |
| GitHub PR 自动开 | 需要外部 token、权限边界复杂 | P5 后续 |
| 外部 IDE 插件 | 看板已能展示,编辑器集成性价比低 | — |
| 多语言 / 跨语言项目 | P1~P4 仅证明 JS/TS 全栈链路 | P6+ |
本 PRD 包含的信息类型(HTML 8 元素)
用户明确要求 PRD HTML 必须装入 8 类信息:
① Tables
规格 / 映射 / 阶段
② Design
色板 / 字号 / 排版语言
③ Illustrations
嵌套环 / 状态机 SVG
④ Code
JSON / curl / JS 骨架
⑤ Interaction
Tabs · 折叠 · 侧栏
⑥ Workflows
跨泳道时序图
⑦ Spatial
目录树 / 组件方框
⑧ Images
UI wireframe SVG