Commit 601ed9abbaba3b33a4476c6ac094f7caabea2336
1 parent
c03ae10b
docs(27-p3-p4): 同步全部交叉引用(前一提交只带了改名,本次补上内容)
前一提交(c03ae10b)的 git add 因命令里混了一个已失效的 pathspec 而整体失败, 只有此前单独 git mv 出去的改名部分被记录下来,实际的引用修正全部漏提交。 补上:docs/README.md 索引(todo 表挪到 done 表 + 顶部状态行)、其余 27 系列 文档里指向该文档的相对链接(todo/ 与 done/ 下深度不同,分别处理)、 system/agents/*/agent.md 与 tools.md 里 cwd 深度 3 的 ../../../../../ 相对引用 (agent-md-refs.test.js 会校验这些链接真实可解析到文件)、_registry.json 的 description 字段、work-graph-templates/README.md、server/ 源码里的设计文档路径注释。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JnCKUFSGvdz4SY7BvYWdMU
Showing
26 changed files
with
75 additions
and
74 deletions
docs/README.md
| @@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
| 9 | 判断依据:文档正文的显式「状态」标记(✅ 已完成 / 已实现 vs 📝 设计中 / 未实现)、未勾选的 checklist,以及与代码库实际实现的交叉核对(见各条目备注)。 | 9 | 判断依据:文档正文的显式「状态」标记(✅ 已完成 / 已实现 vs 📝 设计中 / 未实现)、未勾选的 checklist,以及与代码库实际实现的交叉核对(见各条目备注)。 |
| 10 | 10 | ||
| 11 | > **当前主线**:Graph Agent 架构重构([27-graph-agent-architecture.md](./todo/system-design/27-graph-agent-architecture.md))。 | 11 | > **当前主线**:Graph Agent 架构重构([27-graph-agent-architecture.md](./todo/system-design/27-graph-agent-architecture.md))。 |
| 12 | -> 该系列已完成的阶段文档(P1 / P2 / **P3 收尾 P3C**)移入 `done/`,其余非主线待办在 `todo/future/`。 | 12 | +> 该系列已完成的阶段文档(P1 / P2 / **P3+P4 执行控制台** / **P3 收尾 P3C** / P3B / P4)移入 `done/`,其余非主线待办在 `todo/future/`。 |
| 13 | > **当前未完成的是**:28-followups。P3B 九条验收已于 2026-09-08 全部验完;P4 已于 2026-09-08 收口;P3/P4「真实路径 smoke 进 CI」的欠账已基本还清,只剩真 LLM(本质限制)与按需 hire 未覆盖。 | 13 | > **当前未完成的是**:28-followups。P3B 九条验收已于 2026-09-08 全部验完;P4 已于 2026-09-08 收口;P3/P4「真实路径 smoke 进 CI」的欠账已基本还清,只剩真 LLM(本质限制)与按需 hire 未覆盖。 |
| 14 | 14 | ||
| 15 | ## done/ | 15 | ## done/ |
| @@ -27,6 +27,7 @@ | @@ -27,6 +27,7 @@ | ||
| 27 | | [user-guides/08-base-agent-4-phase-guide.md](./done/user-guides/08-base-agent-4-phase-guide.md) | Base Agent 四阶段使用指南 | | 27 | | [user-guides/08-base-agent-4-phase-guide.md](./done/user-guides/08-base-agent-4-phase-guide.md) | Base Agent 四阶段使用指南 | |
| 28 | | [system-design/27-p1-virtual-reference.md](./done/system-design/27-p1-virtual-reference.md) | P1 虚拟引用寻址 — ✅ 已实现(commit `226489d`,`server/services/graph-service.js`):`agent.md` 不再逐公司拷贝,改为 `config.json.systemAgentRef` 引用 + `company-context.md` 承载公司语境 | | 28 | | [system-design/27-p1-virtual-reference.md](./done/system-design/27-p1-virtual-reference.md) | P1 虚拟引用寻址 — ✅ 已实现(commit `226489d`,`server/services/graph-service.js`):`agent.md` 不再逐公司拷贝,改为 `config.json.systemAgentRef` 引用 + `company-context.md` 承载公司语境 | |
| 29 | | [system-design/27-p2-org-graph.md](./done/system-design/27-p2-org-graph.md) | P2 Org Graph — ✅ 已实现(`70a4727` + `f20d0d8`):org graph 定位为 company 级 workflow(执行流边),`orggraph-planning` agent 建公司时自动规划并招聘。真实建公司端到端验证通过 | | 29 | | [system-design/27-p2-org-graph.md](./done/system-design/27-p2-org-graph.md) | P2 Org Graph — ✅ 已实现(`70a4727` + `f20d0d8`):org graph 定位为 company 级 workflow(执行流边),`orggraph-planning` agent 建公司时自动规划并招聘。真实建公司端到端验证通过 | |
| 30 | +| [system-design/27-p3-p4-work-graph-console.md](./done/system-design/27-p3-p4-work-graph-console.md) | P3+P4(原 P4 回退+Loop-Validator 已并入)图执行引擎与执行控制台 — ✅ **2026-09-09 已彻底收口**,移入 `done/`(`c3abf4a` 起七轮实现)。§十「四条硬规矩」第 2 条欠账已还清:`graph-real-chain-smoke.test.js`(零注入、只换掉真 CLI 子进程)进 CI,覆盖 `agent_call`/`subgraph` 两支 + 多节点/回退边/双层熔断三种形状;按需 hire(`resolvePlanningAgentName`)用隔离 worktree + 真 Claude CLI 探针跑通,`workgraph-planning` 真的被按需雇进了一家没预雇过它的真实公司。唯一剩下的是真 LLM 本身进不了 CI 这条本质限制(要额度、分钟级、输出不确定),不算欠账,只能靠隔一段时间人工真跑核实 | | ||
| 30 | | [system-design/27-p3c-goal-task-model.md](./done/system-design/27-p3c-goal-task-model.md) | **P3 收尾** goal / task 两级模型 + 控制台任务列表 — ✅ 已完成(2026-08-20):五批实施 + §十七 清尾。含队列 / 并行槽位、`task-planning`、两套任务体系统一、墙钟预算改「只算活跃时长」。**§17.5 是真跑验收** —— 返工闭环第一次由真 agent(不是注入的假 executor)走通 | | 31 | | [system-design/27-p3c-goal-task-model.md](./done/system-design/27-p3c-goal-task-model.md) | **P3 收尾** goal / task 两级模型 + 控制台任务列表 — ✅ 已完成(2026-08-20):五批实施 + §十七 清尾。含队列 / 并行槽位、`task-planning`、两套任务体系统一、墙钟预算改「只算活跃时长」。**§17.5 是真跑验收** —— 返工闭环第一次由真 agent(不是注入的假 executor)走通 | |
| 31 | | [system-design/27-p3c-batch3-handover.md](./done/system-design/27-p3c-batch3-handover.md) | 批 3 交接 —— ✅ 已收口(2026-08-20)。**事故记录归档**:一份未经复核的代码被第三方会话提交进 main。留着是因为 §六 那几条多会话协作规则是真踩出来的 | | 32 | | [system-design/27-p3c-batch3-handover.md](./done/system-design/27-p3c-batch3-handover.md) | 批 3 交接 —— ✅ 已收口(2026-08-20)。**事故记录归档**:一份未经复核的代码被第三方会话提交进 main。留着是因为 §六 那几条多会话协作规则是真踩出来的 | |
| 32 | | [system-design/38-auth-multi-tenant-isolation.md](./done/system-design/38-auth-multi-tenant-isolation.md) | 登录鉴权 + 公司级多租户隔离 —— ✅ Phase 0/1/2/3 全部完成(2026-08-25)。种子账号 `admin`/`hex1234` + 登录页;全站挂 `requireAuth`(`agent-chat.js` 用 `requireAuthOrInternal` 放行三处服务端自环调用);`company.json` 加 `ownerId`,`canAccessCompany` 是全仓库唯一归属判据,`company.js`/`graph-run.js`/`devloop.js` 分别接入(`graph-run.js` 双挂载点参数形状不同,设计阶段描述不准确,实现时才发现);`okr.js` 因是零导航入口的孤儿页面改挂 `requireAdmin` 而非归属校验。**Phase 3 验证阶段真查出一个漏洞**:`agent-chat.js` 靠 `:agentId` 的 `"companyId:role"` 前缀区分会话归属却从没做过归属校验,任意登录用户可跨租户读别家公司会话,已修复。全量 `vitest` 1433 passed | | 33 | | [system-design/38-auth-multi-tenant-isolation.md](./done/system-design/38-auth-multi-tenant-isolation.md) | 登录鉴权 + 公司级多租户隔离 —— ✅ Phase 0/1/2/3 全部完成(2026-08-25)。种子账号 `admin`/`hex1234` + 登录页;全站挂 `requireAuth`(`agent-chat.js` 用 `requireAuthOrInternal` 放行三处服务端自环调用);`company.json` 加 `ownerId`,`canAccessCompany` 是全仓库唯一归属判据,`company.js`/`graph-run.js`/`devloop.js` 分别接入(`graph-run.js` 双挂载点参数形状不同,设计阶段描述不准确,实现时才发现);`okr.js` 因是零导航入口的孤儿页面改挂 `requireAdmin` 而非归属校验。**Phase 3 验证阶段真查出一个漏洞**:`agent-chat.js` 靠 `:agentId` 的 `"companyId:role"` 前缀区分会话归属却从没做过归属校验,任意登录用户可跨租户读别家公司会话,已修复。全量 `vitest` 1433 passed | |
| @@ -51,7 +52,7 @@ | @@ -51,7 +52,7 @@ | ||
| 51 | 52 | ||
| 52 | ## todo/(当前主线) | 53 | ## todo/(当前主线) |
| 53 | 54 | ||
| 54 | -Graph Agent 架构重构(27 系列)。**已完成的阶段文档已移入 `done/`**(P1、P2),下面是仍在推进或长期有效的部分。 | 55 | +Graph Agent 架构重构(27 系列)。**已完成的阶段文档已移入 `done/`**(P1、P2、P3+P4、P3C、P3B、P4),下面是仍在推进或长期有效的部分。 |
| 55 | 56 | ||
| 56 | | 文件 | 说明 | | 57 | | 文件 | 说明 | |
| 57 | |------|------| | 58 | |------|------| |
| @@ -60,7 +61,6 @@ Graph Agent 架构重构(27 系列)。**已完成的阶段文档已移入 `d | @@ -60,7 +61,6 @@ Graph Agent 架构重构(27 系列)。**已完成的阶段文档已移入 `d | ||
| 60 | | [27-naming-conventions.md](./todo/system-design/27-naming-conventions.md) | **命名规范**。`{作用域}-{职能}`;图节点按层级轴命名;节点名 ≠ 本体名;三种 benchmark 消歧;OKR 正名。新增 agent id / 表名 / 字段名前必读 | | 61 | | [27-naming-conventions.md](./todo/system-design/27-naming-conventions.md) | **命名规范**。`{作用域}-{职能}`;图节点按层级轴命名;节点名 ≠ 本体名;三种 benchmark 消歧;OKR 正名。新增 agent id / 表名 / 字段名前必读 | |
| 61 | | [27-e2e-task-execution-flow.md](./todo/system-design/27-e2e-task-execution-flow.md) | 端到端流程总览:建公司 → 下达任务 → org graph 逐节点执行 → work graph 规划与循环 → 验收收敛。含与 DevLoop 既有实现的对应关系分析 | | 62 | | [27-e2e-task-execution-flow.md](./todo/system-design/27-e2e-task-execution-flow.md) | 端到端流程总览:建公司 → 下达任务 → org graph 逐节点执行 → work graph 规划与循环 → 验收收敛。含与 DevLoop 既有实现的对应关系分析 | |
| 62 | | [27-example-dev-company-walkthrough.md](./todo/system-design/27-example-dev-company-walkthrough.md) | 参考场景走查(虚构的「配图工厂」),把架构跑一遍具体的数:各阶段 JSON 形态、成本估算、断点清单 | | 63 | | [27-example-dev-company-walkthrough.md](./todo/system-design/27-example-dev-company-walkthrough.md) | 参考场景走查(虚构的「配图工厂」),把架构跑一遍具体的数:各阶段 JSON 形态、成本估算、断点清单 | |
| 63 | -| [27-p3-p4-work-graph-console.md](./todo/system-design/27-p3-p4-work-graph-console.md) | P3+P4(原 P4 回退+Loop-Validator 已并入)图执行引擎与执行控制台 — ✅ 已实现(`c3abf4a`)。**仍留 todo 的原因**:§十 末「四条硬规矩」第 2 条那笔欠账**已基本还清**(2026-09-08)——`graph-real-chain-smoke.test.js`(零注入、只换掉真 CLI 子进程)已进 CI,覆盖 `agent_call`/`subgraph` 两支 + 多节点/回退边/双层熔断三种形状;按需 hire(`resolvePlanningAgentName`)2026-09-09 用隔离 worktree + 真 Claude CLI 探针跑通,`workgraph-planning` 真的被按需雇进了一家没预雇过它的真实公司。剩下的只有真 LLM 本身进不了 CI 这一条本质限制(要额度、分钟级、输出不确定,只能靠隔一段时间人工真跑核实,不会有"还清"的一天) | | ||
| 64 | | [27-goal-contract-format.md](./todo/system-design/27-goal-contract-format.md) | 验收契约格式(`goal-benchmark` / `goal-test-data` / `goal-test-script` 的产物形态与跨节点传递) | | 64 | | [27-goal-contract-format.md](./todo/system-design/27-goal-contract-format.md) | 验收契约格式(`goal-benchmark` / `goal-test-data` / `goal-test-script` 的产物形态与跨节点传递) | |
| 65 | | [28-followups.md](./todo/system-design/28-followups.md) | 28 号(Agent 注册表统一)的遗留清单 — 主文档已在 `done/`,这份装没做完的:dream 机制(设计见 29 号,已实现,见下)、`source_kind`(✅已删)/`legacy_path`(不能删)删列、三项「已实施未验证」。任务态清理(✅已实现,见下)。§五 是**已立起来的守卫清单**(别重复造,也别删) | | 65 | | [28-followups.md](./todo/system-design/28-followups.md) | 28 号(Agent 注册表统一)的遗留清单 — 主文档已在 `done/`,这份装没做完的:dream 机制(设计见 29 号,已实现,见下)、`source_kind`(✅已删)/`legacy_path`(不能删)删列、三项「已实施未验证」。任务态清理(✅已实现,见下)。§五 是**已立起来的守卫清单**(别重复造,也别删) | |
| 66 | | [30-task-delegation-reliability-gaps.md](./todo/system-design/30-task-delegation-reliability-gaps.md) | **任务委派可靠性现状**— 📝 调研记录,非设计方案。DevLoop `runUnit`、Company 招聘装配、Graph 执行三条链路核对结论一致:都是「失败预算耗尽 → 停等人工」,没有「卡住了主动通知人」这一层;DevLoop 当前还默认走 mock,真实 CLI 成功率无实证数据。2026-08-23 追加真实实例并已修:`infra_flake` 原地重跑没有熔断线,真撞上过一次确定性死循环(节点把诊断结论误判成自己的执行结果,反复重跑却从不路由到诊断建议的目标节点);已加 `infra_flake_count` 列 + 硬顶 3 次熔断,连续判 infra_flake 超过硬顶就改判 blocked 交给人工 | | 66 | | [30-task-delegation-reliability-gaps.md](./todo/system-design/30-task-delegation-reliability-gaps.md) | **任务委派可靠性现状**— 📝 调研记录,非设计方案。DevLoop `runUnit`、Company 招聘装配、Graph 执行三条链路核对结论一致:都是「失败预算耗尽 → 停等人工」,没有「卡住了主动通知人」这一层;DevLoop 当前还默认走 mock,真实 CLI 成功率无实证数据。2026-08-23 追加真实实例并已修:`infra_flake` 原地重跑没有熔断线,真撞上过一次确定性死循环(节点把诊断结论误判成自己的执行结果,反复重跑却从不路由到诊断建议的目标节点);已加 `infra_flake_count` 列 + 硬顶 3 次熔断,连续判 infra_flake 超过硬顶就改判 blocked 交给人工 | |
| @@ -69,6 +69,7 @@ Graph Agent 架构重构(27 系列)。**已完成的阶段文档已移入 `d | @@ -69,6 +69,7 @@ Graph Agent 架构重构(27 系列)。**已完成的阶段文档已移入 `d | ||
| 69 | | [36-prd-agent-methodology-training-feasibility.md](./todo/system-design/36-prd-agent-methodology-training-feasibility.md) | 📝 **调研 + 阶段一/二均已完成**。回应"落地页太单薄是不是该用 Innovator 先训练专业 agent、再用 Dream 持续迭代"——认同方向。**阶段一**:`graph-engine.js` 结算节点后把 `success`/`fail:<reason>` 写进本体 `memory.md`(此前只有人类对话路径会写,Dream 天天空转)。**阶段二**:新建独立试验节点 `prd-methodology-trial` 走真实 Hunt→Digest→Evolve,2 轮收敛(96/97 分,真实基线 50 分),三个真实历史项目反推验证方法论有效;过程中连带修复同一个 2026-08-16 改名批次遗留的 5 处 `innovator`→`org-innovator` 死链(后端两处硬编码、前端"重新训练"按钮、`/api/agent/list` 展示 id 来源的四个 `config.json`),以及 `AgentScaffold` 默认模板一处裸相对路径缺陷。结论:FDE 对方法论类角色确实管用,但收敛速度/验收严谨度依赖任务书显式写明的自纠正要求,非免人工黑盒。环节 3(训练产物 → 雇佣本体转换)尚未开工 | | 69 | | [36-prd-agent-methodology-training-feasibility.md](./todo/system-design/36-prd-agent-methodology-training-feasibility.md) | 📝 **调研 + 阶段一/二均已完成**。回应"落地页太单薄是不是该用 Innovator 先训练专业 agent、再用 Dream 持续迭代"——认同方向。**阶段一**:`graph-engine.js` 结算节点后把 `success`/`fail:<reason>` 写进本体 `memory.md`(此前只有人类对话路径会写,Dream 天天空转)。**阶段二**:新建独立试验节点 `prd-methodology-trial` 走真实 Hunt→Digest→Evolve,2 轮收敛(96/97 分,真实基线 50 分),三个真实历史项目反推验证方法论有效;过程中连带修复同一个 2026-08-16 改名批次遗留的 5 处 `innovator`→`org-innovator` 死链(后端两处硬编码、前端"重新训练"按钮、`/api/agent/list` 展示 id 来源的四个 `config.json`),以及 `AgentScaffold` 默认模板一处裸相对路径缺陷。结论:FDE 对方法论类角色确实管用,但收敛速度/验收严谨度依赖任务书显式写明的自纠正要求,非免人工黑盒。环节 3(训练产物 → 雇佣本体转换)尚未开工 | |
| 70 | | [49-antigravity-inspired-parallel-verification-proposal.md](./todo/system-design/49-antigravity-inspired-parallel-verification-proposal.md) | 📝 **设计讨论,不代表已拍板**(2026-09-04)。对照 Google Antigravity「Teamwork」多智能体框架博客文章,给 27 号 P4「真并行」与 34/35 号「验证严谨度不稳定」两个议题出的方案草稿。**先纠正一个前提**:重读 27-P4 全文后发现阶段 A/B/C 早已全部实现(又一次「文档落后于代码」),当时判断真并行只剩 T2/role 列/`advanceTree` 兄弟子 run 并发三件小事——2026-09-08 收口时又发现这个判断本身有两处误判(role 列其实早就落库、T1 的✅遗漏了 scope 参数的生产接线),三件小事(连同两处误判一起)已全部核实/补齐,见 [27-P4](./done/system-design/27-p4-parallel-and-artifacts.md)。**新提案 A**:借鉴长证明模式的「竞争候选+对抗批评+综合」,区别于现有 `executor-fanout.json` 的分解型 fan-out——需要先有真实场景验证价值,不建议凭空立项,详细设计见 [50 号文档](./todo/system-design/50-competing-candidates-critic-synthesis-design.md)。**新提案 B**:把 35 号提案 D「浏览器关键词命中才要证据」泛化成 benchmark 段全维度默认要求执行级证据(**唯一建议现在推进的部分**);实地核实过把验收路径引导到 `test_script` 段的工作量后**结论是不做**——撞上 `test_script.path` 解析根不含 `org-coder` 实际写代码的项目根这个结构性冲突,改造面远超预期;新增「陷阱注册表」,把 validator 判卷失败的结构化原因喂回 Dream 机制,落点已定案为独立文件 `known_pitfalls.md`(不复用 `memory.md`,避免语义混淆)。建议推进顺序:陷阱注册表最低成本先做,证据泛化次之,竞争候选需要真实场景才立项 | | 70 | | [49-antigravity-inspired-parallel-verification-proposal.md](./todo/system-design/49-antigravity-inspired-parallel-verification-proposal.md) | 📝 **设计讨论,不代表已拍板**(2026-09-04)。对照 Google Antigravity「Teamwork」多智能体框架博客文章,给 27 号 P4「真并行」与 34/35 号「验证严谨度不稳定」两个议题出的方案草稿。**先纠正一个前提**:重读 27-P4 全文后发现阶段 A/B/C 早已全部实现(又一次「文档落后于代码」),当时判断真并行只剩 T2/role 列/`advanceTree` 兄弟子 run 并发三件小事——2026-09-08 收口时又发现这个判断本身有两处误判(role 列其实早就落库、T1 的✅遗漏了 scope 参数的生产接线),三件小事(连同两处误判一起)已全部核实/补齐,见 [27-P4](./done/system-design/27-p4-parallel-and-artifacts.md)。**新提案 A**:借鉴长证明模式的「竞争候选+对抗批评+综合」,区别于现有 `executor-fanout.json` 的分解型 fan-out——需要先有真实场景验证价值,不建议凭空立项,详细设计见 [50 号文档](./todo/system-design/50-competing-candidates-critic-synthesis-design.md)。**新提案 B**:把 35 号提案 D「浏览器关键词命中才要证据」泛化成 benchmark 段全维度默认要求执行级证据(**唯一建议现在推进的部分**);实地核实过把验收路径引导到 `test_script` 段的工作量后**结论是不做**——撞上 `test_script.path` 解析根不含 `org-coder` 实际写代码的项目根这个结构性冲突,改造面远超预期;新增「陷阱注册表」,把 validator 判卷失败的结构化原因喂回 Dream 机制,落点已定案为独立文件 `known_pitfalls.md`(不复用 `memory.md`,避免语义混淆)。建议推进顺序:陷阱注册表最低成本先做,证据泛化次之,竞争候选需要真实场景才立项 | |
| 71 | | [50-competing-candidates-critic-synthesis-design.md](./todo/system-design/50-competing-candidates-critic-synthesis-design.md) | 📝 **设计草稿,不代表已拍板**(2026-09-04)。49 号文档提案 A 的展开:竞争候选骨架 JSON 形状草稿(`candidate-council.json`,未定案)、命名(按 27-NAMING 节点带前缀/本体不带前缀两轴)、`workgraph-planning` 选型判据方向。**关键设计约束**:critic(评判)与 synthesis(择优/融合)必须拆成两个节点,依据是仓库真实事故——`qa-judge` 早期"评判+终态判决合一"设计导致过一次无限循环(20 次调用/31 分钟才熔断,记录在 `deliverable.json` 的反模式说明里),新骨架延续 `validator-triager`/`benchmark-validator` 已验证的"归因/打分/判定三者分离"范式。**预算风险量化**:N 路候选并行消耗 N 倍预算,且 `checkBudget` 只在批量拾取前查一次,实际可能超支到 `maxConcurrency-1`(默认最多多花 4 次调用)才被拦下,候选数 N 目前代码层没有硬顶 | | 71 | | [50-competing-candidates-critic-synthesis-design.md](./todo/system-design/50-competing-candidates-critic-synthesis-design.md) | 📝 **设计草稿,不代表已拍板**(2026-09-04)。49 号文档提案 A 的展开:竞争候选骨架 JSON 形状草稿(`candidate-council.json`,未定案)、命名(按 27-NAMING 节点带前缀/本体不带前缀两轴)、`workgraph-planning` 选型判据方向。**关键设计约束**:critic(评判)与 synthesis(择优/融合)必须拆成两个节点,依据是仓库真实事故——`qa-judge` 早期"评判+终态判决合一"设计导致过一次无限循环(20 次调用/31 分钟才熔断,记录在 `deliverable.json` 的反模式说明里),新骨架延续 `validator-triager`/`benchmark-validator` 已验证的"归因/打分/判定三者分离"范式。**预算风险量化**:N 路候选并行消耗 N 倍预算,且 `checkBudget` 只在批量拾取前查一次,实际可能超支到 `maxConcurrency-1`(默认最多多花 4 次调用)才被拦下,候选数 N 目前代码层没有硬顶 | |
| 72 | +| [51-ceo-autonomous-goal-refill-design.md](./todo/system-design/51-ceo-autonomous-goal-refill-design.md) | 📝 **设计草稿,不代表已拍板**(2026-09-09)。回应"公司能否 7×24 自转"的提问——核实执行层(存活扫描/僵尸 goal 收口/CEO 阻塞任务兜底心跳)已经扎实,真正缺口在决策层:`ceo/heartbeat.md` 与 `tools.md` 的"该提新任务"判断全部要求先有一个 goal/task 存在,没有一条覆盖"公司没有任何 active/draft/planning goal"这种完全空转场景;且 CEO 目前**没有创建 goal 的工具**(`tools.md` 对 `/goals` 只有 GET 示例),`POST /:companyId/goals` 端点存在于路由层但从未暴露给它。设计方案:心跳查询为空时进入"立项模式",先查公司使命(`company-context.md`,默认"待定义"时拒绝立项、转人工)作为立项锚点,用 `created_by:'ceo'` + `split:false`(避免草稿阶段就烧 task-planning token)建草稿 goal,去重后停在 `draft` 等人工 `/dispatch`——分两阶段放权,阶段 B(CEO 自动 enqueue + guardrail)本文档只给方向不实现 | | ||
| 72 | 73 | ||
| 73 | ## todo/future/(暂缓,非当前重心) | 74 | ## todo/future/(暂缓,非当前重心) |
| 74 | 75 |
docs/done/system-design/27-p2-org-graph.md
| @@ -25,7 +25,7 @@ v0.1-v0.3 把 Org Graph 建模为**陿€æ±‡æŠ¥ç»“æž„**:节点是角色引用ï | @@ -25,7 +25,7 @@ v0.1-v0.3 把 Org Graph 建模为**陿€æ±‡æŠ¥ç»“æž„**:节点是角色引用ï | ||
| 25 | | ç”Ÿæˆæ—¶æœº | å»ºå…¬å¸æ—¶ï¼Œä¸€æ¬¡ | æ¯ä¸ª org node 接到任务时 | | 25 | | ç”Ÿæˆæ—¶æœº | å»ºå…¬å¸æ—¶ï¼Œä¸€æ¬¡ | æ¯ä¸ª org node 接到任务时 | |
| 26 | | èŠ‚ç‚¹æŒ‡å‘ | org node agent(`org-planner` ç‰ï¼‰ | system agent 引用 | | 26 | | èŠ‚ç‚¹æŒ‡å‘ | org node agent(`org-planner` ç‰ï¼‰ | system agent 引用 | |
| 27 | | 边的è¯ä¹‰ | **执行æµ**:`condition ∈ {success, fail}` | **执行æµ**:åŒå·¦ | | 27 | | 边的è¯ä¹‰ | **执行æµ**:`condition ∈ {success, fail}` | **执行æµ**:åŒå·¦ | |
| 28 | -| 执行引擎 | [27-P3/P4](../../todo/system-design/27-p3-p4-work-graph-console.md) çš„åŒä¸€å¥— | åŒå·¦ | | 28 | +| 执行引擎 | [27-P3/P4](./27-p3-p4-work-graph-console.md) çš„åŒä¸€å¥— | åŒå·¦ | |
| 29 | 29 | ||
| 30 | **ç”±æ¤å¸¦æ¥çš„四处结构性改动**(这也是本次é‡å†™çš„主è¦å†…容): | 30 | **ç”±æ¤å¸¦æ¥çš„四处结构性改动**(这也是本次é‡å†™çš„主è¦å†…容): |
| 31 | 31 | ||
| @@ -47,7 +47,7 @@ v0.1-v0.3 把 Org Graph 建模为**陿€æ±‡æŠ¥ç»“æž„**:节点是角色引用ï | @@ -47,7 +47,7 @@ v0.1-v0.3 把 Org Graph 建模为**陿€æ±‡æŠ¥ç»“æž„**:节点是角色引用ï | ||
| 47 | 47 | ||
| 48 | ### éžç›®æ ‡ | 48 | ### éžç›®æ ‡ |
| 49 | 49 | ||
| 50 | -- **ä¸åš**图的执行 —— 执行引擎ã€å¯åЍ/æš‚åœ/啿¥/é‡è¯•ã€SSE 全部属于 [27-P3/P4](../../todo/system-design/27-p3-p4-work-graph-console.md)。P2 åªè´Ÿè´£"把图建出æ¥ã€å˜å¥½ã€èƒ½è¯»èƒ½ç”»"。 | 50 | +- **ä¸åš**图的执行 —— 执行引擎ã€å¯åЍ/æš‚åœ/啿¥/é‡è¯•ã€SSE 全部属于 [27-P3/P4](./27-p3-p4-work-graph-console.md)。P2 åªè´Ÿè´£"把图建出æ¥ã€å˜å¥½ã€èƒ½è¯»èƒ½ç”»"。 |
| 51 | - **ä¸åš** `company.json.agents[]` 的废弃 —— å®ƒä»æ˜¯"这家公å¸é›‡äº†è°"的真相æºï¼›org graph 回ç”的是"任务怎么æµè¿‡è¿™äº›äºº",两者并å˜ã€‚ | 51 | - **ä¸åš** `company.json.agents[]` 的废弃 —— å®ƒä»æ˜¯"这家公å¸é›‡äº†è°"的真相æºï¼›org graph 回ç”的是"任务怎么æµè¿‡è¿™äº›äºº",两者并å˜ã€‚ |
| 52 | - **ä¸åš**å˜é‡å…¬å¸çš„补图 —— è§ Â§å…。 | 52 | - **ä¸åš**å˜é‡å…¬å¸çš„补图 —— è§ Â§å…。 |
| 53 | - **ä¸åš** `workgraph-planning` agent 本身的设计 —— 属于 P3。 | 53 | - **ä¸åš** `workgraph-planning` agent 本身的设计 —— 属于 P3。 |
| @@ -95,7 +95,7 @@ CREATE UNIQUE INDEX IF NOT EXISTS idx_org_graph_edges_dedupe_active | @@ -95,7 +95,7 @@ CREATE UNIQUE INDEX IF NOT EXISTS idx_org_graph_edges_dedupe_active | ||
| 95 | 95 | ||
| 96 | ### 3.3 å›¾çš„åˆæ³•性约æŸï¼ˆå†™å…¥å‰æ ¡éªŒï¼‰ | 96 | ### 3.3 å›¾çš„åˆæ³•性约æŸï¼ˆå†™å…¥å‰æ ¡éªŒï¼‰ |
| 97 | 97 | ||
| 98 | -与 work graph çš„æ‰§è¡Œå‰æ ¡éªŒåŒä¸€å¥—规则([27-P3/P4](../../todo/system-design/27-p3-p4-work-graph-console.md) §四.A): | 98 | +与 work graph çš„æ‰§è¡Œå‰æ ¡éªŒåŒä¸€å¥—规则([27-P3/P4](./27-p3-p4-work-graph-console.md) §四.A): |
| 99 | 99 | ||
| 100 | 1. **æ— çŽ¯**(仅针对 `edge_kind='forward'`)—— 三色 DFS,å¤ç”¨ DevLoop `doc-store.js:167` çš„ `hasCycle()` 实现。 | 100 | 1. **æ— çŽ¯**(仅针对 `edge_kind='forward'`)—— 三色 DFS,å¤ç”¨ DevLoop `doc-store.js:167` çš„ `hasCycle()` 实现。 |
| 101 | 2. **å•一入å£**(✅ å·²å®šæ¡ˆï¼Œè§ [27-REQ](../../todo/system-design/27-requirement.md) R-13)—— å¿…é¡»æ°å¥½æœ‰ä¸€ä¸ªå…¥åº¦ä¸º 0 çš„ forward 节点,任务从这里进入。多入å£ä¼šè®©"任务从哪开始"æ— æ³•ç¡®å®šï¼Œä¸”éœ€è¦ä»»åС入å£å¤šå¸¦ä¸€ä¸ªå‚数。 | 101 | 2. **å•一入å£**(✅ å·²å®šæ¡ˆï¼Œè§ [27-REQ](../../todo/system-design/27-requirement.md) R-13)—— å¿…é¡»æ°å¥½æœ‰ä¸€ä¸ªå…¥åº¦ä¸º 0 çš„ forward 节点,任务从这里进入。多入å£ä¼šè®©"任务从哪开始"æ— æ³•ç¡®å®šï¼Œä¸”éœ€è¦ä»»åС入å£å¤šå¸¦ä¸€ä¸ªå‚数。 |
| @@ -183,7 +183,7 @@ if (bootstrap.status === 'hired_from_template') { | @@ -183,7 +183,7 @@ if (bootstrap.status === 'hired_from_template') { | ||
| 183 | 183 | ||
| 184 | ### 4.5 å‰ç«¯ | 184 | ### 4.5 å‰ç«¯ |
| 185 | 185 | ||
| 186 | -**ä¸è‡ªå·±å†™æ¸²æŸ“逻辑** —— org graph 与 work graph åŒæž„,直接å¤ç”¨ [27-P3/P4](../../todo/system-design/27-p3-p4-work-graph-console.md) T3 çš„ç”»å¸ƒç»„ä»¶ï¼ˆå…¶æœ¬èº«åˆæ˜¯æ‰©å±•自既有的 `web/src/components/devloop/UnitsDAG.vue`,已实现 SVG + Kahn 分波布局 + 状æ€ç€è‰² + 点击下钻)。 | 186 | +**ä¸è‡ªå·±å†™æ¸²æŸ“逻辑** —— org graph 与 work graph åŒæž„,直接å¤ç”¨ [27-P3/P4](./27-p3-p4-work-graph-console.md) T3 çš„ç”»å¸ƒç»„ä»¶ï¼ˆå…¶æœ¬èº«åˆæ˜¯æ‰©å±•自既有的 `web/src/components/devloop/UnitsDAG.vue`,已实现 SVG + Kahn 分波布局 + 状æ€ç€è‰² + 点击下钻)。 |
| 187 | 187 | ||
| 188 | 这也æ„å‘³ç€ **P2 çš„å‰ç«¯å·¥ä½œä¾èµ– P3 的画布组件先åšå‡ºæ¥**。若想让 P2 独立上线,å¯ä»¥å…ˆåœ¨ Company Dashboard 用一个纯文本的拓扑åºåˆ—表å ä½ï¼ˆ`org-planner → org-coder → org-validator`ï¼‰ï¼Œç‰ P3 ç”»å¸ƒå°±ç»ªå†æ›¿æ¢ã€‚ | 188 | 这也æ„å‘³ç€ **P2 çš„å‰ç«¯å·¥ä½œä¾èµ– P3 的画布组件先åšå‡ºæ¥**。若想让 P2 独立上线,å¯ä»¥å…ˆåœ¨ Company Dashboard 用一个纯文本的拓扑åºåˆ—表å ä½ï¼ˆ`org-planner → org-coder → org-validator`ï¼‰ï¼Œç‰ P3 ç”»å¸ƒå°±ç»ªå†æ›¿æ¢ã€‚ |
| 189 | 189 | ||
| @@ -211,7 +211,7 @@ if (bootstrap.status === 'hired_from_template') { | @@ -211,7 +211,7 @@ if (bootstrap.status === 'hired_from_template') { | ||
| 211 | åŒç†æä¾› `content.json`(`org-planner → org-writer → org-validator`)ã€`ops.json`ã€‚ä¸‰å¼ å›¾**首尾节点åŒå**, | 211 | åŒç†æä¾› `content.json`(`org-planner → org-writer → org-validator`)ã€`ops.json`ã€‚ä¸‰å¼ å›¾**首尾节点åŒå**, |
| 212 | åªæœ‰ä¸æ®µæ‰§è¡ŒèŠ‚ç‚¹ä¸åŒâ€”—命åè½´æ˜¯èŠ‚ç‚¹æ‰€åœ¨å›¾çš„å±‚çº§ï¼Œä¸æ˜¯ä¸šåŠ¡é¢†åŸŸï¼ˆ[27-NAMING](../../todo/system-design/27-naming-conventions.md) §3.1)。 | 212 | åªæœ‰ä¸æ®µæ‰§è¡ŒèŠ‚ç‚¹ä¸åŒâ€”—命åè½´æ˜¯èŠ‚ç‚¹æ‰€åœ¨å›¾çš„å±‚çº§ï¼Œä¸æ˜¯ä¸šåŠ¡é¢†åŸŸï¼ˆ[27-NAMING](../../todo/system-design/27-naming-conventions.md) §3.1)。 |
| 213 | 213 | ||
| 214 | -`dev.json` é‚£ä¸¤æ¡ `fail` 边是 P3 çš„ `fail_reason` 细分路由([27-P3/P4](../../todo/system-design/27-p3-p4-work-graph-console.md) §四.D.2.2): | 214 | +`dev.json` é‚£ä¸¤æ¡ `fail` 边是 P3 çš„ `fail_reason` 细分路由([27-P3/P4](./27-p3-p4-work-graph-console.md) §四.D.2.2): |
| 215 | 带 `failReason` çš„è¾¹æŒ‰å½’å› ç»“æžœç²¾ç¡®åŒ¹é…,ä¸å¸¦ `failReason` çš„é‚£æ¡æ˜¯**兜底边**, | 215 | 带 `failReason` çš„è¾¹æŒ‰å½’å› ç»“æžœç²¾ç¡®åŒ¹é…,ä¸å¸¦ `failReason` çš„é‚£æ¡æ˜¯**兜底边**, |
| 216 | 任何有 `fail` 出边的节点都必须留一æ¡ï¼Œå¦åˆ™å½’å› äº§å‡ºå›¾ä¸Šæ²¡æœ‰çš„å–值时会è½åˆ°æ»è·¯ã€‚ | 216 | 任何有 `fail` 出边的节点都必须留一æ¡ï¼Œå¦åˆ™å½’å› äº§å‡ºå›¾ä¸Šæ²¡æœ‰çš„å–值时会è½åˆ°æ»è·¯ã€‚ |
| 217 | `content.json` / `ops.json` ç›®å‰åªæœ‰å…œåº•边。 | 217 | `content.json` / `ops.json` ç›®å‰åªæœ‰å…œåº•边。 |
docs/done/system-design/27-p3c-goal-task-model.md
| 1 | # 27-P3C. 公司目标与任务 —— goal / task 两级模型 + 控制台任务列表 | 1 | # 27-P3C. 公司目标与任务 —— goal / task 两级模型 + 控制台任务列表 |
| 2 | 2 | ||
| 3 | -> **所属**: [27 Graph Agent 架构](../../todo/system-design/27-graph-agent-architecture.md) 的 **P3 收尾**(P3C),直接续 [27-P3/P4 执行控制台](../../todo/system-design/27-p3-p4-work-graph-console.md) §四.B 与 [27-P3B 真跑跑道](./27-p3b-real-run-runway.md)。 | 3 | +> **所属**: [27 Graph Agent 架构](../../todo/system-design/27-graph-agent-architecture.md) 的 **P3 收尾**(P3C),直接续 [27-P3/P4 执行控制台](./27-p3-p4-work-graph-console.md) §四.B 与 [27-P3B 真跑跑道](./27-p3b-real-run-runway.md)。 |
| 4 | > **日期**: 2026-08-18 | 4 | > **日期**: 2026-08-18 |
| 5 | > **状态**: ✅ **已完成并归档**(2026-08-20)。五批全部实施(§十三 ~ §十六),§15.5 / §16.8 的后续项也已全部收掉(§十七)。 | 5 | > **状态**: ✅ **已完成并归档**(2026-08-20)。五批全部实施(§十三 ~ §十六),§15.5 / §16.8 的后续项也已全部收掉(§十七)。 |
| 6 | > 138 文件 / 1292 测试全绿,`web:build` 通过。**真跑验收见 §17.5** —— 返工闭环第一次由真 agent(不是注入的假 executor)走通。 | 6 | > 138 文件 / 1292 测试全绿,`web:build` 通过。**真跑验收见 §17.5** —— 返工闭环第一次由真 agent(不是注入的假 executor)走通。 |
| @@ -845,7 +845,7 @@ parent_task_id TEXT REFERENCES tasks(id), -- B 的任务链;A 的 depends_ | @@ -845,7 +845,7 @@ parent_task_id TEXT REFERENCES tasks(id), -- B 的任务链;A 的 depends_ | ||
| 845 | 845 | ||
| 846 | ## 十三、批 1 实施记录(2026-08-18,commit `7f24ef0`) | 846 | ## 十三、批 1 实施记录(2026-08-18,commit `7f24ef0`) |
| 847 | 847 | ||
| 848 | -> 体例照 [27-P3/P4](../../todo/system-design/27-p3-p4-work-graph-console.md) §十:**设计正文不改写,只在这里与实现对账**。 | 848 | +> 体例照 [27-P3/P4](./27-p3-p4-work-graph-console.md) §十:**设计正文不改写,只在这里与实现对账**。 |
| 849 | > 凡本节与前文冲突,**以本节为准** —— 前文是设计时的判断,本节是跑出来的事实。 | 849 | > 凡本节与前文冲突,**以本节为准** —— 前文是设计时的判断,本节是跑出来的事实。 |
| 850 | 850 | ||
| 851 | ### 13.1 落地了什么 | 851 | ### 13.1 落地了什么 |
docs/todo/system-design/27-e2e-task-execution-flow.md
| @@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
| 3 | > **所属**: [27 Graph Agent æž¶æž„](./27-graph-agent-architecture.md) 的跨阶段总览文档,串起 P2(Org Graph)ã€P3/P4(Work Graph 执行)ã€P5(自我进化)。 | 3 | > **所属**: [27 Graph Agent æž¶æž„](./27-graph-agent-architecture.md) 的跨阶段总览文档,串起 P2(Org Graph)ã€P3/P4(Work Graph 执行)ã€P5(自我进化)。 |
| 4 | > **版本**: v0.1 | 4 | > **版本**: v0.1 |
| 5 | > **日期**: 2026-08-15 | 5 | > **日期**: 2026-08-15 |
| 6 | -> **å‰ç½®**: [27-P2 Org Graph è½åœ°](../../done/system-design/27-p2-org-graph.md)ã€[27-P3/P4 Work Graph 执行控制å°](./27-p3-p4-work-graph-console.md)ã€**ä»¥åŠæœ¬æ–‡æ¡£æœ€é‡è¦çš„å‚考æº** `docs/prd/newfunction/_spec/`(DevLoop 的完整 MVCP è§„æ ¼ï¼Œå°¤å…¶ `loops-overview.md` / `loops-l1.md` / `loops-l2.md` / `loops-l3.md` / `sdd-process.md` / `plan-cost-concurrency.md`)。 | 6 | +> **å‰ç½®**: [27-P2 Org Graph è½åœ°](../../done/system-design/27-p2-org-graph.md)ã€[27-P3/P4 Work Graph 执行控制å°](../../done/system-design/27-p3-p4-work-graph-console.md)ã€**ä»¥åŠæœ¬æ–‡æ¡£æœ€é‡è¦çš„å‚考æº** `docs/prd/newfunction/_spec/`(DevLoop 的完整 MVCP è§„æ ¼ï¼Œå°¤å…¶ `loops-overview.md` / `loops-l1.md` / `loops-l2.md` / `loops-l3.md` / `sdd-process.md` / `plan-cost-concurrency.md`)。 |
| 7 | > **需求æºå¤´**: [27-REQ 原始需求](./27-requirement.md) —— 本文档是对那些原è¯çš„结构化转述,原文以那份为准。 | 7 | > **需求æºå¤´**: [27-REQ 原始需求](./27-requirement.md) —— 本文档是对那些原è¯çš„结构化转述,原文以那份为准。 |
| 8 | > **é…套**: [27-EXAMPLE å‚考场景走查](./27-example-dev-company-walkthrough.md) —— 本文档讲机制,那份文档把机制在一家具体公å¸ä¸Šè·‘䏀鿕°ã€‚两份对照ç€è¯»ã€‚ | 8 | > **é…套**: [27-EXAMPLE å‚考场景走查](./27-example-dev-company-walkthrough.md) —— 本文档讲机制,那份文档把机制在一家具体公å¸ä¸Šè·‘䏀鿕°ã€‚两份对照ç€è¯»ã€‚ |
| 9 | 9 | ||
| @@ -31,7 +31,7 @@ | @@ -31,7 +31,7 @@ | ||
| 31 | - **æˆæœ¬ä¸Žå¹¶å‘预算的数å—版**(`plan-cost-concurrency.md`):æ¯ä¸ª agent æ¯æ¬¡è°ƒç”¨çš„ token ä¼°ç®—ã€å…¸åž‹é¡¹ç›®æ€»æˆæœ¬ï¼ˆä¸é¡¹ç›® ≈ 410K token ≈ $4.8)ã€ä¸‰å±‚å¹¶å‘上é™ã€å¢™é’Ÿä¼°ç®—ã€6 ä¸ªç›‘æŽ§æŒ‡æ ‡åŠå‘Šè¦é˜ˆå€¼ã€‚ | 31 | - **æˆæœ¬ä¸Žå¹¶å‘预算的数å—版**(`plan-cost-concurrency.md`):æ¯ä¸ª agent æ¯æ¬¡è°ƒç”¨çš„ token ä¼°ç®—ã€å…¸åž‹é¡¹ç›®æ€»æˆæœ¬ï¼ˆä¸é¡¹ç›® ≈ 410K token ≈ $4.8)ã€ä¸‰å±‚å¹¶å‘上é™ã€å¢™é’Ÿä¼°ç®—ã€6 ä¸ªç›‘æŽ§æŒ‡æ ‡åŠå‘Šè¦é˜ˆå€¼ã€‚ |
| 32 | - **å‰ç«¯ç»„件全集**(`sdd-view.md` V-1..V-11),且**代ç å·²ç»å˜åœ¨**:`web/src/components/devloop/` 下 8 ä¸ªç»„ä»¶ï¼Œå« `UnitsDAG.vue`(SVG + Kahn 分波布局的 DAG 渲染器)ã€`LiveAgentStream.vue`(带 Last-Event-ID æ–线é‡è¿žçš„ SSE 消费)ã€`UnitDrawer.vue`(节点详情抽屉)。 | 32 | - **å‰ç«¯ç»„件全集**(`sdd-view.md` V-1..V-11),且**代ç å·²ç»å˜åœ¨**:`web/src/components/devloop/` 下 8 ä¸ªç»„ä»¶ï¼Œå« `UnitsDAG.vue`(SVG + Kahn 分波布局的 DAG 渲染器)ã€`LiveAgentStream.vue`(带 Last-Event-ID æ–线é‡è¿žçš„ SSE 消费)ã€`UnitDrawer.vue`(节点详情抽屉)。 |
| 33 | 33 | ||
| 34 | -**这直接影å“ä½ çš„é—®é¢˜ã€Œè¿™ä¸ªæµç¨‹æ˜¯å¦æ˜¯è¿™æ ·å®žçŽ°çš„ã€â€”â€”ç”æ¡ˆæ˜¯ï¼šåœ¨"一家写代ç 的公å¸"这个具体场景下,是的,而且已ç»å®žçŽ°äº†å¤§åŠã€‚** `loop-controller.js` çš„ `runProject()` å·²å®Œæ•´å®žçŽ°ï¼ˆä¸æ˜¯æˆ‘在 [27-P3/P4](./27-p3-p4-work-graph-console.md) 文档里写的 501,那æ¡é™ˆè¿°å·²è¿‡æœŸï¼Œè§ §ä¹ï¼‰ï¼ŒåŒ…å« Kahn 拓扑分波ã€L2 闸门ã€Integratorã€Triager 四分支调度ã€é¢„算熔æ–ã€SSE 埋点。 | 34 | +**这直接影å“ä½ çš„é—®é¢˜ã€Œè¿™ä¸ªæµç¨‹æ˜¯å¦æ˜¯è¿™æ ·å®žçŽ°çš„ã€â€”â€”ç”æ¡ˆæ˜¯ï¼šåœ¨"一家写代ç 的公å¸"这个具体场景下,是的,而且已ç»å®žçŽ°äº†å¤§åŠã€‚** `loop-controller.js` çš„ `runProject()` å·²å®Œæ•´å®žçŽ°ï¼ˆä¸æ˜¯æˆ‘在 [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 文档里写的 501,那æ¡é™ˆè¿°å·²è¿‡æœŸï¼Œè§ §ä¹ï¼‰ï¼ŒåŒ…å« Kahn 拓扑分波ã€L2 闸门ã€Integratorã€Triager 四分支调度ã€é¢„算熔æ–ã€SSE 埋点。 |
| 35 | 35 | ||
| 36 | ### 结论 2:DevLoop å°±æ˜¯ä½ è¿™å¥—æž¶æž„çš„ä¸€ä¸ªã€Œç¡¬ç¼–ç 实例〠| 36 | ### 结论 2:DevLoop å°±æ˜¯ä½ è¿™å¥—æž¶æž„çš„ä¸€ä¸ªã€Œç¡¬ç¼–ç 实例〠|
| 37 | 37 | ||
| @@ -90,7 +90,7 @@ P2 å·²ç»è®¾è®¡äº†ï¼š`system/org-graph-templates/{dev,content,ops}.json` 模æ¿å | @@ -90,7 +90,7 @@ P2 å·²ç»è®¾è®¡äº†ï¼š`system/org-graph-templates/{dev,content,ops}.json` 模æ¿å | ||
| 90 | 90 | ||
| 91 | ### 阶段 4 · 第一个 org node(planner)调 planning-work-graph subagent 规划自己的 work graph | 91 | ### 阶段 4 · 第一个 org node(planner)调 planning-work-graph subagent 规划自己的 work graph |
| 92 | 92 | ||
| 93 | -**状æ€**:📠概念已在 27 å·æ–‡æ¡£ §3.4 å®šä¹‰ï¼Œæ‰§è¡Œå¼•æ“Žè§ [27-P3/P4](./27-p3-p4-work-graph-console.md),**但 planning agent 本身未设计** | 93 | +**状æ€**:📠概念已在 27 å·æ–‡æ¡£ §3.4 å®šä¹‰ï¼Œæ‰§è¡Œå¼•æ“Žè§ [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md),**但 planning agent 本身未设计** |
| 94 | 94 | ||
| 95 | ä½ ä¸¾çš„ä¾‹å `brd-planning → prd-planning → sdd-planning → benchmark → testdata → planner-validator → loop-validator`,与 DevLoop 的实际链路高度é‡åˆï¼š | 95 | ä½ ä¸¾çš„ä¾‹å `brd-planning → prd-planning → sdd-planning → benchmark → testdata → planner-validator → loop-validator`,与 DevLoop 的实际链路高度é‡åˆï¼š |
| 96 | 96 | ||
| @@ -212,7 +212,7 @@ edge_kind TEXT NOT NULL DEFAULT 'forward' CHECK (edge_kind IN ('forward','back | @@ -212,7 +212,7 @@ edge_kind TEXT NOT NULL DEFAULT 'forward' CHECK (edge_kind IN ('forward','back | ||
| 212 | 212 | ||
| 213 | 汇报关系若ä»éœ€è¦ï¼Œé™çº§ä¸º `org_graph_nodes` 上的一个å¯ç©ºå±žæ€§ï¼ˆ`reports_to_node_id`),ä¸å†æ˜¯å›¾çš„主干è¯ä¹‰ã€‚ | 213 | 汇报关系若ä»éœ€è¦ï¼Œé™çº§ä¸º `org_graph_nodes` 上的一个å¯ç©ºå±žæ€§ï¼ˆ`reports_to_node_id`),ä¸å†æ˜¯å›¾çš„主干è¯ä¹‰ã€‚ |
| 214 | 214 | ||
| 215 | -2. **两层图的递归关系**(å¤ç”¨ [27-P3/P4](./27-p3-p4-work-graph-console.md) 已有的 `parent_node_id`): | 215 | +2. **两层图的递归关系**(å¤ç”¨ [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 已有的 `parent_node_id`): |
| 216 | 216 | ||
| 217 | ``` | 217 | ``` |
| 218 | Org Graph(company 级 workflow,orggraph-planning å»ºå…¬å¸æ—¶ç”Ÿæˆï¼‰ | 218 | Org Graph(company 级 workflow,orggraph-planning å»ºå…¬å¸æ—¶ç”Ÿæˆï¼‰ |
| @@ -376,10 +376,10 @@ RESEARCH → PLAN → EXECUTE → VERIFY | @@ -376,10 +376,10 @@ RESEARCH → PLAN → EXECUTE → VERIFY | ||
| 376 | 376 | ||
| 377 | | # | 文档 | 原错误陈述 | 事实 | 修订结果 | | 377 | | # | 文档 | 原错误陈述 | 事实 | 修订结果 | |
| 378 | |---|---|---|---|---| | 378 | |---|---|---|---|---| |
| 379 | -| 1 | [27-P2](../../done/system-design/27-p2-org-graph.md) §ä¹ã€[27-P3/P4](./27-p3-p4-work-graph-console.md) Â§ä¹ | "P1 ç›®å‰ä»æ˜¯è®¾è®¡ç¨¿ï¼Œæœªå®žçŽ°ï¼Œ`graph-service.js` å°šä¸å˜åœ¨" | **P1 已实现并æäº¤**(commit `226489d`),`server/services/graph-service.js` å·²å˜åœ¨ï¼Œé…套测试 `graph-service.test.js` / `agent-manager-p1.test.js` å‡åœ¨ | **✅ 已改**。27-P2 文件头「å‰ç½®ã€å·²å†™æ˜Žã€ŒP1 虚拟引用寻å€å·²å®žçŽ°ï¼ˆcommit `226489d`)ã€ï¼›27-P3/P4 §ä¹ã€Œä¸Ž P1ã€æ¡å†™æ˜Žã€Œæ— 直接ä¾èµ–,已实现(commit `226489d`)〠| | ||
| 380 | -| 2 | [27-P3/P4](./27-p3-p4-work-graph-console.md) §三.1 | "`runProject` ç›®å‰ç›´æŽ¥ 501" | **已完整实现**(`loop-controller.js:576`ï¼‰ï¼Œå« Kahn 分波ã€L2 闸门ã€Triager 四分支ã€é¢„ç®—ç†”æ– | **✅ 已改**。27-P3/P4 §三.1 现为「`runProject()`(行 576,**已完整实现**…)ã€ï¼Œå¹¶è¿½åŠ äº†ã€Œæ³¢å†…å®žé™…æ˜¯ä¸²è¡Œã€çš„补充观察 | | 379 | +| 1 | [27-P2](../../done/system-design/27-p2-org-graph.md) §ä¹ã€[27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) Â§ä¹ | "P1 ç›®å‰ä»æ˜¯è®¾è®¡ç¨¿ï¼Œæœªå®žçŽ°ï¼Œ`graph-service.js` å°šä¸å˜åœ¨" | **P1 已实现并æäº¤**(commit `226489d`),`server/services/graph-service.js` å·²å˜åœ¨ï¼Œé…套测试 `graph-service.test.js` / `agent-manager-p1.test.js` å‡åœ¨ | **✅ 已改**。27-P2 文件头「å‰ç½®ã€å·²å†™æ˜Žã€ŒP1 虚拟引用寻å€å·²å®žçŽ°ï¼ˆcommit `226489d`)ã€ï¼›27-P3/P4 §ä¹ã€Œä¸Ž P1ã€æ¡å†™æ˜Žã€Œæ— 直接ä¾èµ–,已实现(commit `226489d`)〠| |
| 380 | +| 2 | [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §三.1 | "`runProject` ç›®å‰ç›´æŽ¥ 501" | **已完整实现**(`loop-controller.js:576`ï¼‰ï¼Œå« Kahn 分波ã€L2 闸门ã€Triager 四分支ã€é¢„ç®—ç†”æ– | **✅ 已改**。27-P3/P4 §三.1 现为「`runProject()`(行 576,**已完整实现**…)ã€ï¼Œå¹¶è¿½åŠ äº†ã€Œæ³¢å†…å®žé™…æ˜¯ä¸²è¡Œã€çš„补充观察 | | ||
| 381 | | 3 | [27-P2](../../done/system-design/27-p2-org-graph.md) §4.1 | æè®®å»ºéƒ¨åˆ†å”¯ä¸€ç´¢å¼• `idx_org_graph_nodes_company_role_active`(带 `WHERE status='active'`),但没说è¦å…ˆ DROP 旧索引 | **`graph-service.js` å·²ç»å»ºäº†å…¨é‡å”¯ä¸€ç´¢å¼• `idx_org_graph_nodes_company_role`**ï¼ˆæ— WHERE),必须先 DROP | **✅ 已改且已è½åœ°ä»£ç **。27-P2 §4.1 çš„ SQL 现以 `DROP INDEX IF EXISTS idx_org_graph_nodes_company_role;` 开头;`graph-db.js:59-60` å·²å®žçŽ°è¿™æ¡ DROP + é‡å»º | | 381 | | 3 | [27-P2](../../done/system-design/27-p2-org-graph.md) §4.1 | æè®®å»ºéƒ¨åˆ†å”¯ä¸€ç´¢å¼• `idx_org_graph_nodes_company_role_active`(带 `WHERE status='active'`),但没说è¦å…ˆ DROP 旧索引 | **`graph-service.js` å·²ç»å»ºäº†å…¨é‡å”¯ä¸€ç´¢å¼• `idx_org_graph_nodes_company_role`**ï¼ˆæ— WHERE),必须先 DROP | **✅ 已改且已è½åœ°ä»£ç **。27-P2 §4.1 çš„ SQL 现以 `DROP INDEX IF EXISTS idx_org_graph_nodes_company_role;` 开头;`graph-db.js:59-60` å·²å®žçŽ°è¿™æ¡ DROP + é‡å»º | |
| 382 | -| 4 | [27-P3/P4](./27-p3-p4-work-graph-console.md) §四.B.2ã€Â§äº” T3 | 把"手写分层布局算法,ä¸å¼•入图形库"当作**æ–°**å·¥ä½œé‡ | `web/src/components/devloop/UnitsDAG.vue` **已实现** SVG + Kahn 分波布局 | **✅ 已改**。27-P3/P4 §三.5 新增「å‰ç«¯ DAG 已实现,扩展而éžé‡å†™ã€ä¸€èŠ‚ï¼›Â§å››.B.2 与 §五 T3 凿”¹ä¸ºã€Œ**扩展 `UnitsDAG.vue`**ã€ï¼Œå¹¶æŠŠæ–°å¢žå·¥ä½œé‡æ”¶çª„到「subgraph è§’æ ‡ + backward 曲线路由 + å¾ªçŽ¯å¾½æ ‡ã€ä¸‰å— | | 382 | +| 4 | [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §四.B.2ã€Â§äº” T3 | 把"手写分层布局算法,ä¸å¼•入图形库"当作**æ–°**å·¥ä½œé‡ | `web/src/components/devloop/UnitsDAG.vue` **已实现** SVG + Kahn 分波布局 | **✅ 已改**。27-P3/P4 §三.5 新增「å‰ç«¯ DAG 已实现,扩展而éžé‡å†™ã€ä¸€èŠ‚ï¼›Â§å››.B.2 与 §五 T3 凿”¹ä¸ºã€Œ**扩展 `UnitsDAG.vue`**ã€ï¼Œå¹¶æŠŠæ–°å¢žå·¥ä½œé‡æ”¶çª„到「subgraph è§’æ ‡ + backward 曲线路由 + å¾ªçŽ¯å¾½æ ‡ã€ä¸‰å— | |
| 383 | 383 | ||
| 384 | ### æ¤å¤–å»ºè®®ï¼ˆå¤æ ¸ç»“论) | 384 | ### æ¤å¤–å»ºè®®ï¼ˆå¤æ ¸ç»“论) |
| 385 | 385 | ||
| @@ -396,7 +396,7 @@ RESEARCH → PLAN → EXECUTE → VERIFY | @@ -396,7 +396,7 @@ RESEARCH → PLAN → EXECUTE → VERIFY | ||
| 396 | 396 | ||
| 397 | | 原建议 | 为什么作废 | 被什么å–代 | | 397 | | 原建议 | 为什么作废 | 被什么å–代 | |
| 398 | |---|---|---| | 398 | |---|---|---| |
| 399 | -| **27-P3/P4:补 `node_kind='org_node'`** —— å³åœ¨èŠ‚ç‚¹è¡¨ä¸Šå¼€ä¸€ä¸ªä¸“é—¨è¡¨ç¤ºã€Œè¿™æ˜¯ä¸ª org 节点ã€çš„æžšä¸¾å€¼ | å®ƒçš„å‰ææ˜¯ã€Œorg graph å’Œ work graph 是两ç§ä¸åŒçš„东西,引擎è¦é èŠ‚ç‚¹ä¸Šçš„ä¸€ä¸ªæ ‡è®°åŽ»åˆ†è¾¨ã€ã€‚**[27-REQ](./27-requirement.md) R-15.4 æŽ¨ç¿»äº†è¿™ä¸ªå‰æ**:两层图是åŒä¸€ç§ä¸œè¥¿åœ¨ä¸åŒå±‚级的递归,引擎泛化åŽ**ä¸ä¸ºå®ƒä»¬å„写一套**,也就ä¸éœ€è¦åœ¨èŠ‚ç‚¹ç²’åº¦ä¸ŠåŒºåˆ†å±‚çº§ | **`graph_runs.graph_kind IN ('org','work')`**([27-P3/P4](./27-p3-p4-work-graph-console.md) §四.A.2ï¼‰ã€‚å±‚çº§ä¿¡æ¯æŒ‚在**è¿è¡Œæ—¶çš„ run 上**ï¼Œä¸æŒ‚在定义层的节点上;`graph_run_nodes.def_node_id` 按所属 run çš„ `graph_kind` 解释到 `org_graph_nodes` 还是 `work_graph_nodes`。<br>节点粒度上真æ£å˜åœ¨çš„æžšä¸¾æ˜¯**å¦ä¸€ä¸ªä¸œè¥¿**——`node_kind IN ('agent_call','subgraph')`(§四.D.0),它区分的是**执行è¯ä¹‰**(调一次 agent / èµ·ä¸€å¼ å图并ç‰å®ƒæ”¶æ•›ï¼‰ï¼Œ**䏿˜¯**图的层级。org graph 的节点æ°å¥½å…¨éƒ½æ˜¯ `subgraph`ï¼Œä½†è¿™æ˜¯æŽ¨è®ºï¼Œä¸æ˜¯å®šä¹‰ | | 399 | +| **27-P3/P4:补 `node_kind='org_node'`** —— å³åœ¨èŠ‚ç‚¹è¡¨ä¸Šå¼€ä¸€ä¸ªä¸“é—¨è¡¨ç¤ºã€Œè¿™æ˜¯ä¸ª org 节点ã€çš„æžšä¸¾å€¼ | å®ƒçš„å‰ææ˜¯ã€Œorg graph å’Œ work graph 是两ç§ä¸åŒçš„东西,引擎è¦é èŠ‚ç‚¹ä¸Šçš„ä¸€ä¸ªæ ‡è®°åŽ»åˆ†è¾¨ã€ã€‚**[27-REQ](./27-requirement.md) R-15.4 æŽ¨ç¿»äº†è¿™ä¸ªå‰æ**:两层图是åŒä¸€ç§ä¸œè¥¿åœ¨ä¸åŒå±‚级的递归,引擎泛化åŽ**ä¸ä¸ºå®ƒä»¬å„写一套**,也就ä¸éœ€è¦åœ¨èŠ‚ç‚¹ç²’åº¦ä¸ŠåŒºåˆ†å±‚çº§ | **`graph_runs.graph_kind IN ('org','work')`**([27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §四.A.2ï¼‰ã€‚å±‚çº§ä¿¡æ¯æŒ‚在**è¿è¡Œæ—¶çš„ run 上**ï¼Œä¸æŒ‚在定义层的节点上;`graph_run_nodes.def_node_id` 按所属 run çš„ `graph_kind` 解释到 `org_graph_nodes` 还是 `work_graph_nodes`。<br>节点粒度上真æ£å˜åœ¨çš„æžšä¸¾æ˜¯**å¦ä¸€ä¸ªä¸œè¥¿**——`node_kind IN ('agent_call','subgraph')`(§四.D.0),它区分的是**执行è¯ä¹‰**(调一次 agent / èµ·ä¸€å¼ å图并ç‰å®ƒæ”¶æ•›ï¼‰ï¼Œ**䏿˜¯**图的层级。org graph 的节点æ°å¥½å…¨éƒ½æ˜¯ `subgraph`ï¼Œä½†è¿™æ˜¯æŽ¨è®ºï¼Œä¸æ˜¯å®šä¹‰ | |
| 400 | 400 | ||
| 401 | > âš ï¸ **ä¸è¦ç…§è¿™æ¡ä½œåºŸå»ºè®®åŽ»åŠ å—æ®µ**。设计里ä¸å˜åœ¨ `node_kind='org_node'` 这个å–å€¼ï¼ŒåŠ äº†ä¼šä¸Ž `graph_kind` å½¢æˆä¸¤å¥—äº’ç›¸çŸ›ç›¾çš„å±‚çº§æ ‡è®°ï¼Œä¸” `node_kind` çš„ CHECK 约æŸï¼ˆ`IN ('agent_call','subgraph')`)会直接拒ç»å®ƒã€‚ | 401 | > âš ï¸ **ä¸è¦ç…§è¿™æ¡ä½œåºŸå»ºè®®åŽ»åŠ å—æ®µ**。设计里ä¸å˜åœ¨ `node_kind='org_node'` 这个å–å€¼ï¼ŒåŠ äº†ä¼šä¸Ž `graph_kind` å½¢æˆä¸¤å¥—äº’ç›¸çŸ›ç›¾çš„å±‚çº§æ ‡è®°ï¼Œä¸” `node_kind` çš„ CHECK 约æŸï¼ˆ`IN ('agent_call','subgraph')`)会直接拒ç»å®ƒã€‚ |
| 402 | 402 |
docs/todo/system-design/27-example-dev-company-walkthrough.md
| @@ -70,7 +70,7 @@ | @@ -70,7 +70,7 @@ | ||
| 70 | 边是 `success` / `fail` 执行æµè¾¹ï¼Œä¸Ž work graph çš„è¾¹å®Œå…¨åŒæž„——**åŒä¸€å¥— schemaã€åŒä¸€ä¸ªæ‰§è¡Œå¼•擎ã€åŒä¸€ä¸ªæŽ§åˆ¶å° UI 在两层å¤ç”¨**。 | 70 | 边是 `success` / `fail` 执行æµè¾¹ï¼Œä¸Ž work graph çš„è¾¹å®Œå…¨åŒæž„——**åŒä¸€å¥— schemaã€åŒä¸€ä¸ªæ‰§è¡Œå¼•擎ã€åŒä¸€ä¸ªæŽ§åˆ¶å° UI 在两层å¤ç”¨**。 |
| 71 | 71 | ||
| 72 | > ä¸Šé¢æ˜¯ **P2 å½¢æ€**(fail åªæœ‰ä¸€æ¡å…œåº•边)。P3 ç»™è¾¹åŠ äº†å¯ç©ºçš„ `fail_reason` | 72 | > ä¸Šé¢æ˜¯ **P2 å½¢æ€**(fail åªæœ‰ä¸€æ¡å…œåº•边)。P3 ç»™è¾¹åŠ äº†å¯ç©ºçš„ `fail_reason` |
| 73 | -> ([27-P3/P4](./27-p3-p4-work-graph-console.md) §四.D.2.2),`system/org-graph-templates/dev.json` çš„éª¨æž¶å› æ¤ | 73 | +> ([27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §四.D.2.2),`system/org-graph-templates/dev.json` çš„éª¨æž¶å› æ¤ |
| 74 | > å¤šä¸€æ¡ `org-validator --fail[input_underspecified]--> org-planner`ï¼šå½’å› åˆ¤å®šæ˜¯"规划给的约æŸä¸å¤Ÿ"æ—¶é€€å›žé‡æ–°è§„划, | 74 | > å¤šä¸€æ¡ `org-validator --fail[input_underspecified]--> org-planner`ï¼šå½’å› åˆ¤å®šæ˜¯"规划给的约æŸä¸å¤Ÿ"æ—¶é€€å›žé‡æ–°è§„划, |
| 75 | > 其余一切情况ä»èµ°è¿™é‡Œç”»çš„è¿™æ¡æ— `fail_reason` 的兜底边退回 `org-coder`。本文åŽç»æµç¨‹åªç”¨åˆ°å…œåº•边,ä¸å—å½±å“。 | 75 | > 其余一切情况ä»èµ°è¿™é‡Œç”»çš„è¿™æ¡æ— `fail_reason` 的兜底边退回 `org-coder`。本文åŽç»æµç¨‹åªç”¨åˆ°å…œåº•边,ä¸å—å½±å“。 |
| 76 | 76 | ||
| @@ -178,7 +178,7 @@ brd-planning → prd-planning → sdd-planning ─┬→ goal-test-data ──┠| @@ -178,7 +178,7 @@ brd-planning → prd-planning → sdd-planning ─┬→ goal-test-data ──┠| ||
| 178 | ``` | 178 | ``` |
| 179 | 179 | ||
| 180 | - **fan-out**:三个 unit æ— ä¾èµ–,并行(DevLoop çš„ `_groupUnitsByWave()` Kahn 分波已实现,🔴 ä½†æ³¢å†…ç›®å‰æ˜¯ä¸²è¡Œçš„,`loop-controller.js:609` 注释 `// 串行跑`) | 180 | - **fan-out**:三个 unit æ— ä¾èµ–,并行(DevLoop çš„ `_groupUnitsByWave()` Kahn 分波已实现,🔴 ä½†æ³¢å†…ç›®å‰æ˜¯ä¸²è¡Œçš„,`loop-controller.js:609` 注释 `// 串行跑`) |
| 181 | -- **fan-in**:`integrate` 节点ç‰ä¸‰æ¡æ”¯çº¿å…¨ç»¿æ‰èƒ½è¿›å…¥ `ready`(多入边 = 汇åˆç‚¹ï¼Œå…¨éƒ¨æ»¡è¶³æ‰æŽ¨è¿›ï¼Œ[27-P3/P4](./27-p3-p4-work-graph-console.md) §D.1) | 181 | +- **fan-in**:`integrate` 节点ç‰ä¸‰æ¡æ”¯çº¿å…¨ç»¿æ‰èƒ½è¿›å…¥ `ready`(多入边 = 汇åˆç‚¹ï¼Œå…¨éƒ¨æ»¡è¶³æ‰æŽ¨è¿›ï¼Œ[27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §D.1) |
| 182 | - æ¯ä¸ª `unittest` 失败 → 打回对应的 unit é‡å†™ = **L1 循环**,`retry_budget=5` | 182 | - æ¯ä¸ª `unittest` 失败 → 打回对应的 unit é‡å†™ = **L1 循环**,`retry_budget=5` |
| 183 | 183 | ||
| 184 | **å‡è®¾ `integration-test` 失败了**:`html-render` 拿到的分段结构和 `md-parser` 产出的ä¸ä¸€è‡´ã€‚ | 184 | **å‡è®¾ `integration-test` 失败了**:`html-render` 拿到的分段结构和 `md-parser` 产出的ä¸ä¸€è‡´ã€‚ |
docs/todo/system-design/27-goal-contract-format.md
| 1 | # 27-T0. 验收契约格式 —— `acceptance.json` 与执行器 | 1 | # 27-T0. 验收契约格式 —— `acceptance.json` 与执行器 |
| 2 | 2 | ||
| 3 | -> **所属**: [27-P3/P4](./27-p3-p4-work-graph-console.md) §五 **阶段 0**(T0),需求源头 [27-REQ](./27-requirement.md) R-15.6 | 3 | +> **所属**: [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §五 **阶段 0**(T0),需求源头 [27-REQ](./27-requirement.md) R-15.6 |
| 4 | > **实现**: `server/services/goal-contract.js` | 4 | > **实现**: `server/services/goal-contract.js` |
| 5 | > **配套**: [27-E2E](./27-e2e-task-execution-flow.md) §十一(三个验收产出节点)、`docs/prd/newfunction/_spec/sdd-model.md` M-6/M-7/M-8(形态来源) | 5 | > **配套**: [27-E2E](./27-e2e-task-execution-flow.md) §十一(三个验收产出节点)、`docs/prd/newfunction/_spec/sdd-model.md` M-6/M-7/M-8(形态来源) |
| 6 | > **日期**: 2026-08-16(2026-08-17 R19-B:契约落点归并到 `tasks/{taskId}/` 并进产物索引,见 §一 / §八) | 6 | > **日期**: 2026-08-16(2026-08-17 R19-B:契约落点归并到 `tasks/{taskId}/` 并进产物索引,见 §一 / §八) |
| @@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
| 9 | 9 | ||
| 10 | ## 〇、这份文档定死什么、放开什么 | 10 | ## 〇、这份文档定死什么、放开什么 |
| 11 | 11 | ||
| 12 | -[27-P3/P4](./27-p3-p4-work-graph-console.md) §八.9 给的边界很明确——阶段 0 的契约格式一旦定错,阶段 A 的 schema 要返工,所以 | 12 | +[27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §八.9 给的边界很明确——阶段 0 的契约格式一旦定错,阶段 A 的 schema 要返工,所以 |
| 13 | 13 | ||
| 14 | > 先把**存储位置**和**与 `output_ref` / `artifacts/` 的关联方式**定死,格式内部细节允许后续演进。 | 14 | > 先把**存储位置**和**与 `output_ref` / `artifacts/` 的关联方式**定死,格式内部细节允许后续演进。 |
| 15 | 15 | ||
| @@ -30,7 +30,7 @@ | @@ -30,7 +30,7 @@ | ||
| 30 | 30 | ||
| 31 | ## 一、存储位置(稳定面) | 31 | ## 一、存储位置(稳定面) |
| 32 | 32 | ||
| 33 | -沿用 [27-P3/P4](./27-p3-p4-work-graph-console.md) §四.A.5 已定的产物布局,本文档补上 `verdicts/` 这一格;契约本体按 [27-P4](../../done/system-design/27-p4-parallel-and-artifacts.md) §4.6 的目录约定归并到 `tasks/{taskId}/`(**R19-B**): | 33 | +沿用 [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §四.A.5 已定的产物布局,本文档补上 `verdicts/` 这一格;契约本体按 [27-P4](../../done/system-design/27-p4-parallel-and-artifacts.md) §4.6 的目录约定归并到 `tasks/{taskId}/`(**R19-B**): |
| 34 | 34 | ||
| 35 | ``` | 35 | ``` |
| 36 | data/companies/{cid}/ | 36 | data/companies/{cid}/ |
| @@ -98,7 +98,7 @@ tasks/{taskId}/acceptance.json ─readContract┼──▶ executeContract ─ | @@ -98,7 +98,7 @@ tasks/{taskId}/acceptance.json ─readContract┼──▶ executeContract ─ | ||
| 98 | 98 | ||
| 99 | ## 二bis、接进生产路径:为什么是 agent 工具层,不是引擎钩子(R5-F3) | 99 | ## 二bis、接进生产路径:为什么是 agent 工具层,不是引擎钩子(R5-F3) |
| 100 | 100 | ||
| 101 | -T0 交付后有四轮时间里,全仓库唯一提到 `goal-contract.js` 的是 `graph-engine.js:331` 的一句注释——实现完整、零调用方、零单测,[27-P3/P4](./27-p3-p4-work-graph-console.md) §六 验收 1 从未被执行过。接线时有两个位置可选,选了后者: | 101 | +T0 交付后有四轮时间里,全仓库唯一提到 `goal-contract.js` 的是 `graph-engine.js:331` 的一句注释——实现完整、零调用方、零单测,[27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §六 验收 1 从未被执行过。接线时有两个位置可选,选了后者: |
| 102 | 102 | ||
| 103 | | | ① 引擎在节点收尾时自动跑 | ② **validator agent 通过工具(CLI)调用** ← 选这个 | | 103 | | | ① 引擎在节点收尾时自动跑 | ② **validator agent 通过工具(CLI)调用** ← 选这个 | |
| 104 | |---|---|---| | 104 | |---|---|---| |
docs/todo/system-design/27-graph-agent-architecture.md
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | 2 | ||
| 3 | > **版本**: v0.3(P0/P1 已实现;Org Graph 建模在 v0.3 修正为 company 级 workflow) | 3 | > **版本**: v0.3(P0/P1 已实现;Org Graph 建模在 v0.3 修正为 company 级 workflow) |
| 4 | > **日期**: 2026-08-15 | 4 | > **日期**: 2026-08-15 |
| 5 | -> **状态**(2026-09-08 校准): P0 ✅ 已实现(`graph-db.js` + `graph-seed-service.js`,见第七节);P1 ✅ 已实现(commit `226489d`,`graph-service.js`);**P2 ✅ 已实现**(设计已归档 [27-P2](../../done/system-design/27-p2-org-graph.md));**P3 主体 ✅ 已实现**(`c3abf4a` 起七轮,见 [27-P3/P4](./27-p3-p4-work-graph-console.md) §十 实现记录);**P3 收尾 ✅ 已完成并归档**([27-P3C](../../done/system-design/27-p3c-goal-task-model.md) 五批 + §十七 清尾,2026-08-20 真跑走通返工闭环);**P3B 真跑跑道 ✅ 九条验收全部验完**([27-P3B](../../done/system-design/27-p3b-real-run-runway.md) §六quater,2026-09-08 隔离 worktree 真跑验掉最后一条验收 9:org 层回退边真的指向了 subgraph 节点);**P4 ✅ 已彻底收口**(2026-09-08,[27-P4](../../done/system-design/27-p4-parallel-and-artifacts.md) 阶段 A/B/C 全部完成,仅 T5 账户欠费门因外部计费接口未接而悬置) | 5 | +> **状态**(2026-09-08 校准): P0 ✅ 已实现(`graph-db.js` + `graph-seed-service.js`,见第七节);P1 ✅ 已实现(commit `226489d`,`graph-service.js`);**P2 ✅ 已实现**(设计已归档 [27-P2](../../done/system-design/27-p2-org-graph.md));**P3 主体 ✅ 已实现**(`c3abf4a` 起七轮,见 [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §十 实现记录);**P3 收尾 ✅ 已完成并归档**([27-P3C](../../done/system-design/27-p3c-goal-task-model.md) 五批 + §十七 清尾,2026-08-20 真跑走通返工闭环);**P3B 真跑跑道 ✅ 九条验收全部验完**([27-P3B](../../done/system-design/27-p3b-real-run-runway.md) §六quater,2026-09-08 隔离 worktree 真跑验掉最后一条验收 9:org 层回退边真的指向了 subgraph 节点);**P4 ✅ 已彻底收口**(2026-09-08,[27-P4](../../done/system-design/27-p4-parallel-and-artifacts.md) 阶段 A/B/C 全部完成,仅 T5 账户欠费门因外部计费接口未接而悬置) |
| 6 | > | 6 | > |
| 7 | > ⚠️ 这一行是别人判断「哪些文档能从 `docs/todo/` 搬去 `docs/done/`」的依据 —— 它过期会连累后面每一次迁移判断,改阶段状态时请顺手更新它。 | 7 | > ⚠️ 这一行是别人判断「哪些文档能从 `docs/todo/` 搬去 `docs/done/`」的依据 —— 它过期会连累后面每一次迁移判断,改阶段状态时请顺手更新它。 |
| 8 | > **命名**: 新增 agent id / 表名 / 字段名前先读 [27-NAMING 命名规范](./27-naming-conventions.md) | 8 | > **命名**: 新增 agent id / 表名 / 字段名前先读 [27-NAMING 命名规范](./27-naming-conventions.md) |
| @@ -119,7 +119,7 @@ system/agents/{agentId}/ | @@ -119,7 +119,7 @@ system/agents/{agentId}/ | ||
| 119 | 4. **回退边必须显式经过 loop-validator 节点**——即"节点A --fail--> loop-validator --> 节点B",而不是"节点A --fail(隐藏回退属性)--> 节点B"。这是画图时的**结构要求**,不是引擎运行时才附加的隐藏逻辑。 | 119 | 4. **回退边必须显式经过 loop-validator 节点**——即"节点A --fail--> loop-validator --> 节点B",而不是"节点A --fail(隐藏回退属性)--> 节点B"。这是画图时的**结构要求**,不是引擎运行时才附加的隐藏逻辑。 |
| 120 | 5. **执行前结构校验**:图规划完成后、进入执行前,引擎做一次静态校验——任何边如果目标节点在图中已存在其他指向它的边(即会构成"回到历史节点"),但没有经过 loop-validator 节点,直接拒绝这张图,不进入执行。类比现有 `npm run spec:check` 的"结构先校验,再允许跑"模式。这是对"planning agent 应该自觉画上 validator"这条规则的**引擎级兜底**,防止规划疏漏导致死循环绕过审计。 | 120 | 5. **执行前结构校验**:图规划完成后、进入执行前,引擎做一次静态校验——任何边如果目标节点在图中已存在其他指向它的边(即会构成"回到历史节点"),但没有经过 loop-validator 节点,直接拒绝这张图,不进入执行。类比现有 `npm run spec:check` 的"结构先校验,再允许跑"模式。这是对"planning agent 应该自觉画上 validator"这条规则的**引擎级兜底**,防止规划疏漏导致死循环绕过审计。 |
| 121 | 121 | ||
| 122 | -> ⚠️ **上面第 4、5 点已被 [27-P3/P4](./27-p3-p4-work-graph-console.md) v0.3 §四.D.2.1 改写**:`loop_validator` 节点由「回退边必须经过」的**强制结构要求**降级为**可选增强**(理由:org graph 是 `orggraph-planning` 生成的「这家公司有哪些角色」,往里塞基础设施节点会污染这个语义,而引擎泛化后两层用同一套校验)。熔断改由**引擎无条件的整数计数**承担,落地的写入前校验是**五项**:`acyclic` / `single-entry` / `reachable` / `backward-labeled` / `fail-fallback-edge`——**没有一项要求经过 loop-validator**。本节保留原文作为设计演进记录,实现以 27-P3/P4 为准。 | 122 | +> ⚠️ **上面第 4、5 点已被 [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) v0.3 §四.D.2.1 改写**:`loop_validator` 节点由「回退边必须经过」的**强制结构要求**降级为**可选增强**(理由:org graph 是 `orggraph-planning` 生成的「这家公司有哪些角色」,往里塞基础设施节点会污染这个语义,而引擎泛化后两层用同一套校验)。熔断改由**引擎无条件的整数计数**承担,落地的写入前校验是**五项**:`acyclic` / `single-entry` / `reachable` / `backward-labeled` / `fail-fallback-edge`——**没有一项要求经过 loop-validator**。本节保留原文作为设计演进记录,实现以 27-P3/P4 为准。 |
| 123 | 123 | ||
| 124 | ### 3.5 Loop-Validator:死循环兜底 | 124 | ### 3.5 Loop-Validator:死循环兜底 |
| 125 | 125 | ||
| @@ -229,8 +229,8 @@ CREATE TABLE work_graph_edges ( | @@ -229,8 +229,8 @@ CREATE TABLE work_graph_edges ( | ||
| 229 | | **P0 地基** ✅ | 建表 + 现有数据迁移,不改变任何现有执行路径 | `system_agents`/`org_graph_*` 表;把现有 `system/agents/` + `system/templates/` 目录扫描导入为种子数据(`system_agents` 行,`scope` 按当前所属推断) | 迁移脚本跑完,`system_agents` 表行数与现有 agent+模板目录数一致(**实际行数与本文档最初估计不同,见第七节**);现有 `company-service.js` 行为不变(并行只读验证,已确认零改动) | | 229 | | **P0 地基** ✅ | 建表 + 现有数据迁移,不改变任何现有执行路径 | `system_agents`/`org_graph_*` 表;把现有 `system/agents/` + `system/templates/` 目录扫描导入为种子数据(`system_agents` 行,`scope` 按当前所属推断) | 迁移脚本跑完,`system_agents` 表行数与现有 agent+模板目录数一致(**实际行数与本文档最初估计不同,见第七节**);现有 `company-service.js` 行为不变(并行只读验证,已确认零改动) | |
| 230 | | **P1 虚拟引用** | 停止文件拷贝,改为引用 | 改造 `AgentManager.getAgentConfig()` + `PromptBuilder.build()` 支持 `(agentId, companyId)` 寻址;`company-service.hire()` 改为创建 org_graph 引用节点而非 `_copyTemplate()`。细化需求与设计见 [27-P1 虚拟引用寻址](../../done/system-design/27-p1-virtual-reference.md) | 新雇佣的 agent 不再产生文件拷贝,调用时能正确拼装公共+私有上下文;旧公司(仍是拷贝模式)继续可跑,不强制迁移存量数据 | | 230 | | **P1 虚拟引用** | 停止文件拷贝,改为引用 | 改造 `AgentManager.getAgentConfig()` + `PromptBuilder.build()` 支持 `(agentId, companyId)` 寻址;`company-service.hire()` 改为创建 org_graph 引用节点而非 `_copyTemplate()`。细化需求与设计见 [27-P1 虚拟引用寻址](../../done/system-design/27-p1-virtual-reference.md) | 新雇佣的 agent 不再产生文件拷贝,调用时能正确拼装公共+私有上下文;旧公司(仍是拷贝模式)继续可跑,不强制迁移存量数据 | |
| 231 | | **P2 Org Graph** | `company.json.agents[]` 迁移为图结构 | `org_graph_nodes`/`edges` 落地;HR/CEO 招聘走新表。细化需求与设计见 [27-P2 Org Graph 落地](../../done/system-design/27-p2-org-graph.md) | 现有 Company Dashboard 前端能正确读出 org graph 并渲染(哪怕暂时按列表展示) | | 231 | | **P2 Org Graph** | `company.json.agents[]` 迁移为图结构 | `org_graph_nodes`/`edges` 落地;HR/CEO 招聘走新表。细化需求与设计见 [27-P2 Org Graph 落地](../../done/system-design/27-p2-org-graph.md) | 现有 Company Dashboard 前端能正确读出 org graph 并渲染(哪怕暂时按列表展示) | |
| 232 | -| **P3+P4 图执行引擎与执行控制台**(**两个 Phase 已合并**) | **一套引擎同时驱动 org graph 与 work graph**(R-15.4 引擎泛化),带回退与熔断 | 定义层 `work_graphs`/`work_graph_nodes`/`work_graph_edges` + **两层共用的运行时层** `graph_runs`/`graph_run_nodes`/`graph_run_loop_records`(共五张新表);`graph-engine.js` 的 `advanceOne(runId)` 幂等推进原语 + 两种 node executor(`agent_call` / `subgraph`);五个控制操作(启动 / 下一步 / 暂停 / 停止 / 重试)× 手动·自动两种模式;`GraphConsole.vue` 执行控制台页面;`workgraph-planning` agent + 用户→公司任务入口。细化需求与设计见 [27-P3/P4 Work Graph 执行控制台](./27-p3-p4-work-graph-console.md) **v0.3**,落地切成**五个可独立验收的阶段**(0 验收契约 / A 引擎地基 / B 回退熔断 / C 控制台 / D 规划闭环) | 见该文档 §六 的 17 条。**核心验收点是第 6 条**:一张 `graph_kind='org'` 的图与一张 work graph 用**同一套端点、同一条代码路径**跑通「手动逐步 / 自动跑完 / 暂停恢复 / 停止」;外加第 8 条「总是失败的节点第 4 次 `force_terminated` 收敛到 `blocked`」、第 17 条「一句自然语言任务两层跑到 `completed`」 | | ||
| 233 | -| ~~**P4 回退 + Loop-Validator**~~ | **已并入上一行**,不再单列 | 合并理由见 [27-P3/P4](./27-p3-p4-work-graph-console.md) §二:执行引擎一旦要支持「暂停/单步/停止/重试」这种可被外部随时打断的控制语义,「先做单向、再加回退」会让第一版状态机设计得过窄,P4 加回退时必然回来重改数据模型和主循环。**两处定案变更**:① 熔断改为**引擎无条件做的整数计数**(单边 `loop_count > 3` + run 级 `backward_count > 5` 双层硬顶),不依赖 LLM,`loop_validator` 节点由「强制」降级为**可选增强**;② 结构校验从四项扩到**五项**,新增 `fail-fallback-edge`(有 `fail` 出边的节点必须留一条 `fail_reason IS NULL` 兜底边),org / work 两层都加 | 同上 | | 232 | +| ~~**P3+P4 图执行引擎与执行控制台**~~ ✅(**两个 Phase 已合并**,2026-09-09 移入 `done/`) | **一套引擎同时驱动 org graph 与 work graph**(R-15.4 引擎泛化),带回退与熔断 | 定义层 `work_graphs`/`work_graph_nodes`/`work_graph_edges` + **两层共用的运行时层** `graph_runs`/`graph_run_nodes`/`graph_run_loop_records`(共五张新表);`graph-engine.js` 的 `advanceOne(runId)` 幂等推进原语 + 两种 node executor(`agent_call` / `subgraph`);五个控制操作(启动 / 下一步 / 暂停 / 停止 / 重试)× 手动·自动两种模式;`GraphConsole.vue` 执行控制台页面;`workgraph-planning` agent + 用户→公司任务入口。细化需求与设计见 [27-P3/P4 Work Graph 执行控制台](../../done/system-design/27-p3-p4-work-graph-console.md) **v0.3**,落地切成**五个可独立验收的阶段**(0 验收契约 / A 引擎地基 / B 回退熔断 / C 控制台 / D 规划闭环) | 见该文档 §六 的 17 条。**核心验收点是第 6 条**:一张 `graph_kind='org'` 的图与一张 work graph 用**同一套端点、同一条代码路径**跑通「手动逐步 / 自动跑完 / 暂停恢复 / 停止」;外加第 8 条「总是失败的节点第 4 次 `force_terminated` 收敛到 `blocked`」、第 17 条「一句自然语言任务两层跑到 `completed`」 | |
| 233 | +| ~~**P4 回退 + Loop-Validator**~~ | **已并入上一行**,不再单列 | 合并理由见 [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §二:执行引擎一旦要支持「暂停/单步/停止/重试」这种可被外部随时打断的控制语义,「先做单向、再加回退」会让第一版状态机设计得过窄,P4 加回退时必然回来重改数据模型和主循环。**两处定案变更**:① 熔断改为**引擎无条件做的整数计数**(单边 `loop_count > 3` + run 级 `backward_count > 5` 双层硬顶),不依赖 LLM,`loop_validator` 节点由「强制」降级为**可选增强**;② 结构校验从四项扩到**五项**,新增 `fail-fallback-edge`(有 `fail` 出边的节点必须留一条 `fail_reason IS NULL` 兜底边),org / work 两层都加 | 同上 | | ||
| 234 | | ~~**P4 并行执行与产物索引**~~ ✅(**回收编号**) | fan-out 真并发 + 产物统一索引 —— **2026-09-08 全部完成** | `advanceBatch` 批量拾取(手动模式退化为 `maxConcurrency=1`,行为与 P3 一致);同 agent 多实例隔离(`SessionPool.getKey` 的 `scope` 参数已实际接线:`graph-engine.js` 传 `gr:{nodeRunId}`);`advanceTree` 兄弟子 run 真并发;解除「一家公司一个 active root run」;`data/companies/{cid}/tasks/{taskId}/` 产物目录 + `graph_files` 表检索索引。细化设计见 [27-P4 并行执行与产物索引](../../done/system-design/27-p4-parallel-and-artifacts.md) | 3 个并行分支同时 running 且总墙钟明显短于串行;部分失败时 fan-in 停等且可视化「在等谁」;产物索引可从节点行 rebuild | | 234 | | ~~**P4 并行执行与产物索引**~~ ✅(**回收编号**) | fan-out 真并发 + 产物统一索引 —— **2026-09-08 全部完成** | `advanceBatch` 批量拾取(手动模式退化为 `maxConcurrency=1`,行为与 P3 一致);同 agent 多实例隔离(`SessionPool.getKey` 的 `scope` 参数已实际接线:`graph-engine.js` 传 `gr:{nodeRunId}`);`advanceTree` 兄弟子 run 真并发;解除「一家公司一个 active root run」;`data/companies/{cid}/tasks/{taskId}/` 产物目录 + `graph_files` 表检索索引。细化设计见 [27-P4 并行执行与产物索引](../../done/system-design/27-p4-parallel-and-artifacts.md) | 3 个并行分支同时 running 且总墙钟明显短于串行;部分失败时 fan-in 停等且可视化「在等谁」;产物索引可从节点行 rebuild | |
| 235 | | **P5 自我进化** | 公共记忆蒸馏机制 | 公共 `memory.md` 写入走自省校验 + git 版本化;company-scoped → public 的升级门槛复用现有 benchmark ≥95 链路 | 同一 public agent 被两家公司调用后,`memory.md` 有可观察的增量更新,且能 git revert 到升级前版本 | | 235 | | **P5 自我进化** | 公共记忆蒸馏机制 | 公共 `memory.md` 写入走自省校验 + git 版本化;company-scoped → public 的升级门槛复用现有 benchmark ≥95 链路 | 同一 public agent 被两家公司调用后,`memory.md` 有可观察的增量更新,且能 git revert 到升级前版本 | |
| 236 | | **P6(~~可选~~ **应前置**)DevLoop 收编** | 统一循环逻辑 | 把 `loop-controller.js`/`unit-registry.js` 重构为 Work Graph 引擎上的一个具体图模板。⚠️ **定位修正**:端到端流程梳理后发现 DevLoop 不是"将来可选整合的边缘子系统",而是**本架构唯一一个已经跑通的参考实现**——它的 L1/L2/L3 三层循环、四分类失败归因、分级预算熔断、`contract_hash` 闸门、DAG 分波、SSE 埋点、前端 DAG 组件都已实现或已有完整规格(`docs/prd/newfunction/_spec/`)。通用 Work Graph 引擎应当**从它抽象而来**,而不是平行发明后再回头合并。详见 [27-E2E](./27-e2e-task-execution-flow.md) §二结论 2 | DevLoop 现有测试套件(`server/tests/devloop/**`)在新引擎上全部通过,无需单独维护两套循环代码 | | 236 | | **P6(~~可选~~ **应前置**)DevLoop 收编** | 统一循环逻辑 | 把 `loop-controller.js`/`unit-registry.js` 重构为 Work Graph 引擎上的一个具体图模板。⚠️ **定位修正**:端到端流程梳理后发现 DevLoop 不是"将来可选整合的边缘子系统",而是**本架构唯一一个已经跑通的参考实现**——它的 L1/L2/L3 三层循环、四分类失败归因、分级预算熔断、`contract_hash` 闸门、DAG 分波、SSE 埋点、前端 DAG 组件都已实现或已有完整规格(`docs/prd/newfunction/_spec/`)。通用 Work Graph 引擎应当**从它抽象而来**,而不是平行发明后再回头合并。详见 [27-E2E](./27-e2e-task-execution-flow.md) §二结论 2 | DevLoop 现有测试套件(`server/tests/devloop/**`)在新引擎上全部通过,无需单独维护两套循环代码 | |
| @@ -267,5 +267,5 @@ P0 阶段的处理方式是**迁移脚本层面的临时保护**:`system_agent | @@ -267,5 +267,5 @@ P0 阶段的处理方式是**迁移脚本层面的临时保护**:`system_agent | ||
| 267 | - **[27-EXAMPLE 参考场景走查](./27-example-dev-company-walkthrough.md)** — 把上面那套架构在一家具体公司上跑一遍数(含各阶段真实形态的 JSON / 图 / 成本估算 / 断点清单)。实现时的靶子与端到端验收场景。 | 267 | - **[27-EXAMPLE 参考场景走查](./27-example-dev-company-walkthrough.md)** — 把上面那套架构在一家具体公司上跑一遍数(含各阶段真实形态的 JSON / 图 / 成本估算 / 断点清单)。实现时的靶子与端到端验收场景。 |
| 268 | - [27-P1 虚拟引用寻址](../../done/system-design/27-p1-virtual-reference.md) — 已实现(commit `226489d`) | 268 | - [27-P1 虚拟引用寻址](../../done/system-design/27-p1-virtual-reference.md) — 已实现(commit `226489d`) |
| 269 | - [27-P2 Org Graph 落地](../../done/system-design/27-p2-org-graph.md) — 设计稿 | 269 | - [27-P2 Org Graph 落地](../../done/system-design/27-p2-org-graph.md) — 设计稿 |
| 270 | -- [27-P3/P4 Work Graph 执行控制台](./27-p3-p4-work-graph-console.md) — 已实现(commit `c3abf4a`) | 270 | +- [27-P3/P4 Work Graph 执行控制台](../../done/system-design/27-p3-p4-work-graph-console.md) — ✅ 已实现(commit `c3abf4a`),已彻底收口(2026-09-09) |
| 271 | - [27-P4 并行执行与产物索引](../../done/system-design/27-p4-parallel-and-artifacts.md) — ✅ 已彻底收口(2026-09-08) | 271 | - [27-P4 并行执行与产物索引](../../done/system-design/27-p4-parallel-and-artifacts.md) — ✅ 已彻底收口(2026-09-08) |
docs/todo/system-design/27-naming-conventions.md
| @@ -77,7 +77,7 @@ ops.json org-planner → org-monitor → org-validator | @@ -77,7 +77,7 @@ ops.json org-planner → org-monitor → org-validator | ||
| 77 | | **org graph 节点** | `org-planner` / `org-coder` / `org-validator` | ✅ 带 `org-` | | 77 | | **org graph 节点** | `org-planner` / `org-coder` / `org-validator` | ✅ 带 `org-` | |
| 78 | | **work graph 节点** | `org-coder-validator` / `org-planner-validator` | ✅ 带父节点全å | | 78 | | **work graph 节点** | `org-coder-validator` / `org-planner-validator` | ✅ 带父节点全å | |
| 79 | 79 | ||
| 80 | -è½åˆ° schema ä¸Šå°±æ˜¯ä¸¤ä¸ªå—æ®µï¼ˆ[27-P3/P4](./27-p3-p4-work-graph-console.md) §四.A):`node_name` å˜èŠ‚ç‚¹å(图内唯一),`system_agent_id` å˜æœ¬ä½“å(跨图å¤ç”¨ï¼‰ã€‚ | 80 | +è½åˆ° schema ä¸Šå°±æ˜¯ä¸¤ä¸ªå—æ®µï¼ˆ[27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §四.A):`node_name` å˜èŠ‚ç‚¹å(图内唯一),`system_agent_id` å˜æœ¬ä½“å(跨图å¤ç”¨ï¼‰ã€‚ |
| 81 | 81 | ||
| 82 | **为什么本体ä¸å¸¦å‰ç¼€**ï¼šç¦æ¢è£¸ç”¨ `validator` çš„ç†ç”±æ˜¯ã€Œä¸€å®¶å…¬å¸å†…两个节点ä¸èƒ½é‡åã€â€”—该ç†ç”±é’ˆå¯¹**节点**,ä¸é’ˆå¯¹**本体**。本体若被迫带领域å‰ç¼€ï¼Œ`coder-validator` 会å¤åˆ¶æˆ `org-coder-validator` / `content-coder-validator` 多份,与 [27-P1](../../done/system-design/27-p1-virtual-reference.md)「åŒä¸€ä»½æœ¬ä½“ã€å¤šå¤„引用ã€å„è‡ªç§æœ‰è¯å¢ƒã€ç›´æŽ¥å†²çªã€‚ | 82 | **为什么本体ä¸å¸¦å‰ç¼€**ï¼šç¦æ¢è£¸ç”¨ `validator` çš„ç†ç”±æ˜¯ã€Œä¸€å®¶å…¬å¸å†…两个节点ä¸èƒ½é‡åã€â€”—该ç†ç”±é’ˆå¯¹**节点**,ä¸é’ˆå¯¹**本体**。本体若被迫带领域å‰ç¼€ï¼Œ`coder-validator` 会å¤åˆ¶æˆ `org-coder-validator` / `content-coder-validator` 多份,与 [27-P1](../../done/system-design/27-p1-virtual-reference.md)「åŒä¸€ä»½æœ¬ä½“ã€å¤šå¤„引用ã€å„è‡ªç§æœ‰è¯å¢ƒã€ç›´æŽ¥å†²çªã€‚ |
| 83 | 83 | ||
| @@ -126,7 +126,7 @@ ops.json org-planner → org-monitor → org-validator | @@ -126,7 +126,7 @@ ops.json org-planner → org-monitor → org-validator | ||
| 126 | 126 | ||
| 127 | R-16 把「失败该怪è°ã€ä»Ž validator 手里拆出æ¥ï¼Œäº¤ç»™ä¸€ä¸ªä¸“èŒçš„**å½’å› èŠ‚ç‚¹**:`org-validator` 自己的 work graph 里 | 127 | R-16 把「失败该怪è°ã€ä»Ž validator 手里拆出æ¥ï¼Œäº¤ç»™ä¸€ä¸ªä¸“èŒçš„**å½’å› èŠ‚ç‚¹**:`org-validator` 自己的 work graph 里 |
| 128 | 第一个节点就是它,产出 `fail_reason` + `remediation_note`,é€ä¼ 回 org å±‚ä½œä¸ºé€‰è¾¹ä¾æ® | 128 | 第一个节点就是它,产出 `fail_reason` + `remediation_note`,é€ä¼ 回 org å±‚ä½œä¸ºé€‰è¾¹ä¾æ® |
| 129 | -ï¼ˆè§ [27-P3/P4](./27-p3-p4-work-graph-console.md) §四.D.2.2 / §四.D.3)。 | 129 | +ï¼ˆè§ [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) §四.D.2.2 / §四.D.3)。 |
| 130 | 130 | ||
| 131 | 按本节的命å轴,它是**work graph 层的节点**——它活在 `org-validator` 这个 org node çš„ work graph 里, | 131 | 按本节的命å轴,它是**work graph 层的节点**——它活在 `org-validator` 这个 org node çš„ work graph 里, |
| 132 | 䏿˜¯ org graph ä¸Šçš„èŠ‚ç‚¹ï¼Œå› æ¤ä¸å¸¦ `org-` å‰ç¼€ï¼Œè€Œæ˜¯éšçˆ¶èŠ‚ç‚¹å¾—å。 | 132 | 䏿˜¯ org graph ä¸Šçš„èŠ‚ç‚¹ï¼Œå› æ¤ä¸å¸¦ `org-` å‰ç¼€ï¼Œè€Œæ˜¯éšçˆ¶èŠ‚ç‚¹å¾—å。 |
| @@ -148,7 +148,7 @@ R-16 把「失败该怪è°ã€ä»Ž validator 手里拆出æ¥ï¼Œäº¤ç»™ä¸€ä¸ªä¸“èŒç | @@ -148,7 +148,7 @@ R-16 把「失败该怪è°ã€ä»Ž validator 手里拆出æ¥ï¼Œäº¤ç»™ä¸€ä¸ªä¸“èŒç | ||
| 148 | > 🔠**改å的影å“é¢**(R-17.2 è½åœ°èŒƒå›´ï¼‰ï¼š`system/templates/validator-triager/`(目录 + 内容自称)〠| 148 | > 🔠**改å的影å“é¢**(R-17.2 è½åœ°èŒƒå›´ï¼‰ï¼š`system/templates/validator-triager/`(目录 + 内容自称)〠|
| 149 | > `system/templates/_registry.json` æ¡ç›®ã€`system/templates/org-validator/` 的节点å引用〠| 149 | > `system/templates/_registry.json` æ¡ç›®ã€`system/templates/org-validator/` 的节点å引用〠|
| 150 | > `system/work-graph-templates/validator.json` 的 `nodeName` / `systemAgentId` / 边端点〠| 150 | > `system/work-graph-templates/validator.json` 的 `nodeName` / `systemAgentId` / 边端点〠|
| 151 | -> 本文档本节ã€[27-P3/P4](./27-p3-p4-work-graph-console.md) å…¨æ–‡ï¼Œä»¥åŠ `graph-engine.js` çš„ | 151 | +> 本文档本节ã€[27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) å…¨æ–‡ï¼Œä»¥åŠ `graph-engine.js` çš„ |
| 152 | > `ATTRIBUTION_NODE_NAME` 常é‡ä¸Ž `node.reflection` timeline 事件å(引擎侧å¦è¡Œæ”¹ï¼‰ã€‚ | 152 | > `ATTRIBUTION_NODE_NAME` 常é‡ä¸Ž `node.reflection` timeline 事件å(引擎侧å¦è¡Œæ”¹ï¼‰ã€‚ |
| 153 | > **è¿™ä¸ƒå¤„å¿…é¡»åŒæ—¶æ”¹**——节点å与 `systemAgentId` 与引擎常é‡ä¸‰è€…åªè¦æœ‰ä¸€å¤„ä¸åŒæ¥ï¼Œ | 153 | > **è¿™ä¸ƒå¤„å¿…é¡»åŒæ—¶æ”¹**——节点å与 `systemAgentId` 与引擎常é‡ä¸‰è€…åªè¦æœ‰ä¸€å¤„ä¸åŒæ¥ï¼Œ |
| 154 | > å½’å› äº§å‡ºå°±ä¼šé™é»˜è½ä¸åˆ°é€ä¼ 路径上(27-P3/P4 §å 的「四环æ¼ä¸€çޝã€ç¼ºé™·æ¨¡å¼ï¼‰ã€‚ | 154 | > å½’å› äº§å‡ºå°±ä¼šé™é»˜è½ä¸åˆ°é€ä¼ 路径上(27-P3/P4 §å 的「四环æ¼ä¸€çޝã€ç¼ºé™·æ¨¡å¼ï¼‰ã€‚ |
docs/todo/system-design/27-requirement.md
| @@ -47,7 +47,7 @@ | @@ -47,7 +47,7 @@ | ||
| 47 | 47 | ||
| 48 | > 賑閬銝芣△嚗內 org graph 銝 org node 餈 work graph嚗葵瘙閬挽霈∩銝葵餈閬挽霈∩銝 MVCP嚗摨挽霈∴霈曇恣嚗嚗甇伐迫嚗嚗閬內瘥銝芾敹器颲嚗oop 瑪嚗內嚗蜓瘚虜瘚 sub agent 內 | 48 | > 賑閬銝芣△嚗內 org graph 銝 org node 餈 work graph嚗葵瘙閬挽霈∩銝葵餈閬挽霈∩銝 MVCP嚗摨挽霈∴霈曇恣嚗嚗甇伐迫嚗嚗閬內瘥銝芾敹器颲嚗oop 瑪嚗內嚗蜓瘚虜瘚 sub agent 內 |
| 49 | 49 | ||
| 50 | -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 批 MVCP 情 | 50 | +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 批 MVCP 情 |
| 51 | **瞉**嚗迨憭 "MVCP" 蝏&霈斗 **Model-View-Control-Process**嚗隞 SDD 情﹝撘docs/prd/newfunction/_spec/sdd-{model,view,control,process}.md`嚗 MVP嚗撠銵嚗 | 51 | **瞉**嚗迨憭 "MVCP" 蝏&霈斗 **Model-View-Control-Process**嚗隞 SDD 情﹝撘docs/prd/newfunction/_spec/sdd-{model,view,control,process}.md`嚗 MVP嚗撠銵嚗 |
| 52 | 52 | ||
| 53 | --- | 53 | --- |
| @@ -56,7 +56,7 @@ | @@ -56,7 +56,7 @@ | ||
| 56 | 56 | ||
| 57 | > 撖對舅銝芷嚗嚗 org graph嚗ork graph 銵閬銝銝甇乩甇交摰隞仍撠曇銵銝芾摰頝唾蓮銝銝芾銵 | 57 | > 撖對舅銝芷嚗嚗 org graph嚗ork graph 銵閬銝銝甇乩甇交摰隞仍撠曇銵銝芾摰頝唾蓮銝銝芾銵 |
| 58 | 58 | ||
| 59 | -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.C嚗execution_mode {manual, auto}`嚗舅銝 `advanceOne()` 祗嚗靚圻甈∟嚗 | 59 | +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.C嚗execution_mode {manual, auto}`嚗舅銝 `advanceOne()` 祗嚗靚圻甈∟嚗 |
| 60 | 60 | ||
| 61 | --- | 61 | --- |
| 62 | 62 | ||
| @@ -242,7 +242,7 @@ | @@ -242,7 +242,7 @@ | ||
| 242 | 242 | ||
| 243 | 蝖株恕霈刻捏**** R-15.2 韏瑕撅 27 蝟餃 | 243 | 蝖株恕霈刻捏**** R-15.2 韏瑕撅 27 蝟餃 |
| 244 | 244 | ||
| 245 | -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) | 245 | +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) |
| 246 | 246 | ||
| 247 | ### R-15.2 繚 `workgraph-planning` 撅 agent | 247 | ### R-15.2 繚 `workgraph-planning` 撅 agent |
| 248 | 248 | ||
| @@ -250,7 +250,7 @@ | @@ -250,7 +250,7 @@ | ||
| 250 | 250 | ||
| 251 | **瞉銋**嚗葵 org node 隞餃銝撣虫隞質**靚銝芸撅 `workgraph-planning` 雿**嚗扇敹銝 org node / 銝銝祗憓 R-9.2 agent 蝏扳27-P1](../../done/system-design/27-p1-virtual-reference.md) 撖餃銝gent 瘙 org node | 251 | **瞉銋**嚗葵 org node 隞餃銝撣虫隞質**靚銝芸撅 `workgraph-planning` 雿**嚗扇敹銝 org node / 銝銝祗憓 R-9.2 agent 蝏扳27-P1](../../done/system-design/27-p1-virtual-reference.md) 撖餃銝gent 瘙 org node |
| 252 | 252 | ||
| 253 | -****嚗27-NAMING](./27-naming-conventions.md) 禮鈭砲撌脣銵典27-P3/P4](./27-p3-p4-work-graph-console.md) 畾 D | 253 | +****嚗27-NAMING](./27-naming-conventions.md) 禮鈭砲撌脣銵典27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 畾 D |
| 254 | 254 | ||
| 255 | ### R-15.3 繚 validator 舅銝芸漣嚗撅雿 | 255 | ### R-15.3 繚 validator 舅銝芸漣嚗撅雿 |
| 256 | 256 | ||
| @@ -277,31 +277,31 @@ | @@ -277,31 +277,31 @@ | ||
| 277 | 277 | ||
| 278 | **`org-validator` 靚 sub agent 銝閬**嚗org-validator` 頨急銝銝 org node嚗撌梁 work graph嚗benchmark-validator` / `testdata-validator` 撠望餈 work graph 嚗撌脫芋 | 278 | **`org-validator` 靚 sub agent 銝閬**嚗org-validator` 頨急銝銝 org node嚗撌梁 work graph嚗benchmark-validator` / `testdata-validator` 撠望餈 work graph 嚗撌脫芋 |
| 279 | 279 | ||
| 280 | -**餈蒂敶勗**嚗-9.3lanner alidator 銵舅銝芾**銝支葵銝 org node**goal-benchmark` / `goal-test-data` / `goal-test-script` `org-planner` work graph 漣嚗 `org-validator` 餈葵 org node 瘨晶迨閬**頝 org node 漣隡**嚗27-P3/P4](./27-p3-p4-work-graph-console.md) `output_ref`嚗漣 | 280 | +**餈蒂敶勗**嚗-9.3lanner alidator 銵舅銝芾**銝支葵銝 org node**goal-benchmark` / `goal-test-data` / `goal-test-script` `org-planner` work graph 漣嚗 `org-validator` 餈葵 org node 瘨晶迨閬**頝 org node 漣隡**嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) `output_ref`嚗漣 |
| 281 | 281 | ||
| 282 | -****嚗27-NAMING](./27-naming-conventions.md) 禮銝 + 憓 validator 蓬27-P2](../../done/system-design/27-p2-org-graph.md) 禮4.6 銝葵璅⊥27-P3/P4](./27-p3-p4-work-graph-console.md) | 282 | +****嚗27-NAMING](./27-naming-conventions.md) 禮銝 + 憓 validator 蓬27-P2](../../done/system-design/27-p2-org-graph.md) 禮4.6 銝葵璅⊥27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) |
| 283 | 283 | ||
| 284 | ### R-15.4 繚 撘撅氖 | 284 | ### R-15.4 繚 撘撅氖 |
| 285 | 285 | ||
| 286 | **★蝖株恕**嚗葵★嚗”嚗葉嚗/ org graph 銵 work_graph 摰 / work graph org graph 銵 P5 | 286 | **★蝖株恕**嚗葵★嚗”嚗葉嚗/ org graph 銵 work_graph 摰 / work graph org graph 銵 P5 |
| 287 | 287 | ||
| 288 | -**蝧颱銋**嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.A 釣銝箝””儔嚗 work graph銵銵敶﹝摰**霂亙 org graph 銋◤銵仃**rg graph 撱箏甈~暑銝芸隞賢◤頝活嚗銝銝芯遙頝 | 288 | +**蝧颱銋**嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.A 釣銝箝””儔嚗 work graph銵銵敶﹝摰**霂亙 org graph 銋◤銵仃**rg graph 撱箏甈~暑銝芸隞賢◤頝活嚗銝銝芯遙頝 |
| 289 | 289 | ||
| 290 | **摰**嚗舅憟org_graph_*` / `work_graph_*` 銝甈⊥改撅銝箔憟 `graph_runs` + `graph_run_nodes`嚗撅 `graph_runs.graph_kind` 摰 `parent_run_id` 銝嚗誨 `parent_node_id`嚗遙蝥扳駁27-E2E](./27-e2e-task-execution-flow.md) 禮7.1嚗 root run嚗 run 銝滲銝芣/迫瘝踹漣7.5嚗 | 290 | **摰**嚗舅憟org_graph_*` / `work_graph_*` 銝甈⊥改撅銝箔憟 `graph_runs` + `graph_run_nodes`嚗撅 `graph_runs.graph_kind` 摰 `parent_run_id` 銝嚗誨 `parent_node_id`嚗遙蝥扳駁27-E2E](./27-e2e-task-execution-flow.md) 禮7.1嚗 root run嚗 run 銝滲銝芣/迫瘝踹漣7.5嚗 |
| 291 | 291 | ||
| 292 | **餈蒂摰**嚗rg node 銝 work node 銵祗銋絲銝撘撟嗥 run `completed` success嚗blocked` fail嚗甈 agent 靚閬 `agent_call` / `subgraph` 銝斤 node executorrg 撅**銝**撘箏 `loop_validator` 嚗情振鈭祗銋撘笆 `edge_kind='backward'` 器蝏霈⊥ + 蝖祇▲ | 292 | **餈蒂摰**嚗rg node 銝 work node 銵祗銋絲銝撘撟嗥 run `completed` success嚗blocked` fail嚗甈 agent 靚閬 `agent_call` / `subgraph` 銝斤 node executorrg 撅**銝**撘箏 `loop_validator` 嚗情振鈭祗銋撘笆 `edge_kind='backward'` 器蝏霈⊥ + 蝖祇▲ |
| 293 | 293 | ||
| 294 | -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.A / 禮.D | 294 | +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.A / 禮.D |
| 295 | 295 | ||
| 296 | ### R-15.5 繚 P3 `workgraph-planning` + 隞餃 | 296 | ### R-15.5 繚 P3 `workgraph-planning` + 隞餃 |
| 297 | 297 | ||
| 298 | **★蝖株恕**嚗 | 298 | **★蝖株恕**嚗 |
| 299 | 299 | ||
| 300 | -**蝧颱銋**嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮銝 `workgraph-planning` 憭誨隞瑟霂交﹝ 禮.5 撌望霈扎嚗蝡臬蝡舫霂剛銝撘銵餈頝胯 [27 餌熔](./27-graph-agent-architecture.md) 禮撠望 `workgraph-planning` 蛹 P3 鈭支遙嚗 嚗 [27-E2E](./27-e2e-task-execution-flow.md) 禮 #7 釣蝛箇瓷瘝⊥皞 | 300 | +**蝧颱銋**嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮銝 `workgraph-planning` 憭誨隞瑟霂交﹝ 禮.5 撌望霈扎嚗蝡臬蝡舫霂剛銝撘銵餈頝胯 [27 餌熔](./27-graph-agent-architecture.md) 禮撠望 `workgraph-planning` 蛹 P3 鈭支遙嚗 嚗 [27-E2E](./27-e2e-task-execution-flow.md) 禮 #7 釣蝛箇瓷瘝⊥皞 |
| 301 | 301 | ||
| 302 | **摰**嚗舅餈 P3嚗蛹銝芷畾蛛畾萄銝絲 LLM蝡嚗 [27-P2](../../done/system-design/27-p2-org-graph.md) 禮鈭葵蝡畾萸憟 | 302 | **摰**嚗舅餈 P3嚗蛹銝芷畾蛛畾萄銝絲 LLM蝡嚗 [27-P2](../../done/system-design/27-p2-org-graph.md) 禮鈭葵蝡畾萸憟 |
| 303 | 303 | ||
| 304 | -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮銝舅雿找遙 | 304 | +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮銝舅雿找遙 |
| 305 | 305 | ||
| 306 | ### R-15.6 繚 撉憟漲 | 306 | ### R-15.6 繚 撉憟漲 |
| 307 | 307 | ||
| @@ -311,7 +311,7 @@ | @@ -311,7 +311,7 @@ | ||
| 311 | 311 | ||
| 312 | **摰**嚗3 憓銝芸蔭畾蛛 `goal-benchmark` / `goal-test-data` / `goal-test-script` 銝漣憟漲撘僎撱箸銵嚗撘 | 312 | **摰**嚗3 憓銝芸蔭畾蛛 `goal-benchmark` / `goal-test-data` / `goal-test-script` 銝漣憟漲撘僎撱箸銵嚗撘 |
| 313 | 313 | ||
| 314 | -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮鈭遙27-E2E](./27-e2e-task-execution-flow.md) 禮 | 314 | +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮鈭遙27-E2E](./27-e2e-task-execution-flow.md) 禮 |
| 315 | 315 | ||
| 316 | --- | 316 | --- |
| 317 | 317 | ||
| @@ -319,9 +319,9 @@ | @@ -319,9 +319,9 @@ | ||
| 319 | 319 | ||
| 320 | > org-validator 摰遙颲暹嚗 code-coder嚗憸 code-planner嚗憸? 餈葵org-validator 隡撌梁 work graph subagent 摰閬銝 validator-reflection subagent 敶 bug 仍銝 agent 銝 skill 憸銝 agent 蝥行憸銝 agent 銵憸摰 skill嚗霈拇葵 agent +bug context 膩 隞亙器憭葵銝銝芰銝芾器摰 | 320 | > org-validator 摰遙颲暹嚗 code-coder嚗憸 code-planner嚗憸? 餈葵org-validator 隡撌梁 work graph subagent 摰閬銝 validator-reflection subagent 敶 bug 仍銝 agent 銝 skill 憸銝 agent 蝥行憸銝 agent 銵憸摰 skill嚗霈拇葵 agent +bug context 膩 隞亙器憭葵銝銝芰銝芾器摰 |
| 321 | 321 | ||
| 322 | -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.D.2.2嚗器嚗批.D.0嚗 run 批.D.2.1嚗嚗 | 322 | +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.D.2.2嚗器嚗批.D.0嚗 run 批.D.2.1嚗嚗 |
| 323 | 323 | ||
| 324 | -**餈銋**嚗27-P3/P4](./27-p3-p4-work-graph-console.md) v0.3 禮.1 銝芾 fail 颲寞韏啣蛹閬&霈斤 open question嚗摰 | 324 | +**餈銋**嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) v0.3 禮.1 銝芾 fail 颲寞韏啣蛹閬&霈斤 open question嚗摰 |
| 325 | 325 | ||
| 326 | **蝏**嚗**銝**憭梯揖撌梢◇銝 reason嚗 `org-validator` 撌 work graph 洵銝雿銝芯 `validator-reflection` DevLoop 極ntegrator 摰仃韐乓ugTriager 敶銝支葵銝 agent嚗銝 agent 敶摰寞憭梯揖恕銝箄砲芾毽甈∟ | 326 | **蝏**嚗**銝**憭梯揖撌梢◇銝 reason嚗 `org-validator` 撌 work graph 洵銝雿銝芯 `validator-reflection` DevLoop 極ntegrator 摰仃韐乓ugTriager 敶銝支葵銝 agent嚗銝 agent 敶摰寞憭梯揖恕銝箄砲芾毽甈∟ |
| 327 | 327 | ||
| @@ -336,7 +336,7 @@ | @@ -336,7 +336,7 @@ | ||
| 336 | 336 | ||
| 337 | **kill 憸 P3 **嚗4 銝漣憭葉韐萸憭抒蝥改27-E2E](./27-e2e-task-execution-flow.md) 禮 撱箄悅**撱箄悅**嚗1 靽 `skill_defect` 餈葵敶潸悟 reflection 撣詨摰嚗頂銝甈⊥雿漣銝箝絲蝑犖撌乓閫血 L4infra_flake` 撱箄悅銵乩滲撘餉嚗‘隡◤霂臬銵憸銝頧桅 | 337 | **kill 憸 P3 **嚗4 銝漣憭葉韐萸憭抒蝥改27-E2E](./27-e2e-task-execution-flow.md) 禮 撱箄悅**撱箄悅**嚗1 靽 `skill_defect` 餈葵敶潸悟 reflection 撣詨摰嚗頂銝甈⊥雿漣銝箝絲蝑犖撌乓閫血 L4infra_flake` 撱箄悅銵乩滲撘餉嚗‘隡◤霂臬銵憸銝頧桅 |
| 338 | 338 | ||
| 339 | -**撖 schema **嚗 run 銝 success/fail嚗**餈 `fail_reason` `remediation_note` 銝韏琿**蛹摰粥颲寧摮 reflection 嚗憭梯揖頨怒27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.D.0 ” run completed success嚗locked/failed fail撩餈 | 339 | +**撖 schema **嚗 run 銝 success/fail嚗**餈 `fail_reason` `remediation_note` 銝韏琿**蛹摰粥颲寧摮 reflection 嚗憭梯揖頨怒27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.D.0 ” run completed success嚗locked/failed fail撩餈 |
| 340 | 340 | ||
| 341 | **撣血銝芰瞍**嚗0.3 禮.D.2.1 `(run_id, edge_id)` 霈⊥′憿 3嚗銝銝芾颲嫘颲孵霈⊥**蝖祇▲摰 3**eflection 閬活敶銝 agent粥銝器嚗停瘞貉隞颱銝芾恣▲ [27-E2E](./27-e2e-task-execution-flow.md) 禮7.1漣蔭銝蝥扯恣瓷迫隞嗚**靽格恣**嚗器霈⊥嚗頝臬香敺芰嚗+ `graph_runs.backward_count` run 蝥扳餃霈⊥嚗銝芸蝏抒賒遙銝▲ `force_terminated`遙蝥扳駁銝文恣鈭嚗葵蝞∠舅閬 | 341 | **撣血銝芰瞍**嚗0.3 禮.D.2.1 `(run_id, edge_id)` 霈⊥′憿 3嚗銝銝芾颲嫘颲孵霈⊥**蝖祇▲摰 3**eflection 閬活敶銝 agent粥銝器嚗停瘞貉隞颱銝芾恣▲ [27-E2E](./27-e2e-task-execution-flow.md) 禮7.1漣蔭銝蝥扯恣瓷迫隞嗚**靽格恣**嚗器霈⊥嚗頝臬香敺芰嚗+ `graph_runs.backward_count` run 蝥扳餃霈⊥嚗銝芸蝏抒賒遙銝▲ `force_terminated`遙蝥扳駁銝文恣鈭嚗葵蝞∠舅閬 |
| 342 | 342 | ||
| @@ -354,18 +354,18 @@ R-16 蝏偏舅憭&霈歹蝏摰**銝斗蝧颱 | @@ -354,18 +354,18 @@ R-16 蝏偏舅憭&霈歹蝏摰**銝斗蝧颱 | ||
| 354 | 354 | ||
| 355 | **隞遠**嚗-16 歇蛹霂交獢漣撠 / 郊鈭銝撅祗銋蝟閬 UI 銝撘”颲整 | 355 | **隞遠**嚗-16 歇蛹霂交獢漣撠 / 郊鈭銝撅祗銋蝟閬 UI 銝撘”颲整 |
| 356 | 356 | ||
| 357 | -**撖孵歇蔣**嚗27-P3/P4](./27-p3-p4-work-graph-console.md) v0.3 銝摰嚗ommit `c3abf4a`嚗 org node 蝎漲**閬極**嚗 | 357 | +**撖孵歇蔣**嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) v0.3 銝摰嚗ommit `c3abf4a`嚗 org node 蝎漲**閬極**嚗 |
| 358 | 358 | ||
| 359 | | | 嚗rg node 蝎漲嚗 | 摰ork graph node 蝎漲嚗 | | 359 | | | 嚗rg node 蝎漲嚗 | 摰ork graph node 蝎漲嚗 | |
| 360 | |---|---|---| | 360 | |---|---|---| |
| 361 | | | org 颲嫣 `to_node_id`嚗銝 org node | 閬銝**頝典**嚗rg node + work graph 雿 node嚗 | | 361 | | | org 颲嫣 `to_node_id`嚗銝 org node | 閬銝**頝典**嚗rg node + work graph 雿 node嚗 | |
| 362 | | | 霂 org node **撘 work graph **嚗絲摮 run嚗 | 憭 work graph 摰蔭鋡怎 node | | 362 | | | 霂 org node **撘 work graph **嚗絲摮 run嚗 | 憭 work graph 摰蔭鋡怎 node | |
| 363 | -| 銝虜憭 | 撘嚗靚 | `contract_hash` added/changed/removed/**unchanged** 掩摰漣歇嚗迤憟賢嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.C 畾蛛 | | 363 | +| 銝虜憭 | 撘嚗靚 | `contract_hash` added/changed/removed/**unchanged** 掩摰漣歇嚗迤憟賢嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.C 畾蛛 | |
| 364 | | 摮 run | 瘥活撱箔撘 | 憭摮 run嚗 `attempt+1` | | 364 | | 摮 run | 瘥活撱箔撘 | 憭摮 run嚗 `attempt+1` | |
| 365 | 365 | ||
| 366 | **銝歇靽桃撩漱鈭極敹◆憭**嚗洵鈭蔭靽格ubgraph 絲摮 run 撖潸瘞訾香耨瘜迤活撱箏 run 撟嗆征 `child_run_id`摮 run 銋銝芣香霂餃銝頧桃 run 餈 pending嚗誑銝蝘耦撘極閬霈曇恣撟嚗僎靽 `graph-engine.test.js` subgraph 靘閬霂凋砲靘**餈銝捂瘚耦嚗蛹霂凋頨怠**嚗◆漱靽⊥ | 366 | **銝歇靽桃撩漱鈭極敹◆憭**嚗洵鈭蔭靽格ubgraph 絲摮 run 撖潸瘞訾香耨瘜迤活撱箏 run 撟嗆征 `child_run_id`摮 run 銋銝芣香霂餃銝頧桃 run 餈 pending嚗誑銝蝘耦撘極閬霈曇恣撟嚗僎靽 `graph-engine.test.js` subgraph 靘閬霂凋砲靘**餈銝捂瘚耦嚗蛹霂凋頨怠**嚗◆漱靽⊥ |
| 367 | 367 | ||
| 368 | -****嚗27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.D.2.2 / 禮.D.3 / 禮.A.2嚗楊撅敶X/ 禮.B嚗撅漣霂凋批 蝚 1 嚗嚗 | 368 | +****嚗27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.D.2.2 / 禮.D.3 / 禮.A.2嚗楊撅敶X/ 禮.B嚗撅漣霂凋批 蝚 1 嚗嚗 |
| 369 | 369 | ||
| 370 | ### R-17.2 繚 `validator-reflection` `validator-triager` | 370 | ### R-17.2 繚 `validator-reflection` `validator-triager` |
| 371 | 371 | ||
| @@ -373,16 +373,16 @@ R-16 蝏偏舅憭&霈歹蝏摰**銝斗蝧颱 | @@ -373,16 +373,16 @@ R-16 蝏偏舅憭&霈歹蝏摰**銝斗蝧颱 | ||
| 373 | 373 | ||
| 374 | ****嚗**敶**銝**摰**嚗triager` 銝 DevLoop 撌脩 BugTriager 撖寥祗銋 | 374 | ****嚗**敶**銝**摰**嚗triager` 銝 DevLoop 撌脩 BugTriager 撖寥祗銋 |
| 375 | 375 | ||
| 376 | -**敶勗**嚗滲敺嚗system/templates/validator-reflection/` 敶system/templates/_registry.json` org-validator` work graph 撉冽graph-engine.js` 粉敶漣釣 `resolveReflectionFile` / `readNodeProduct` `node.reflection` timeline 鈭辣27-NAMING](./27-naming-conventions.md) validator 蓬霂湔27-P3/P4](./27-p3-p4-work-graph-console.md) ﹝ R-16 | 376 | +**敶勗**嚗滲敺嚗system/templates/validator-reflection/` 敶system/templates/_registry.json` org-validator` work graph 撉冽graph-engine.js` 粉敶漣釣 `resolveReflectionFile` / `readNodeProduct` `node.reflection` timeline 鈭辣27-NAMING](./27-naming-conventions.md) validator 蓬霂湔27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) ﹝ R-16 |
| 377 | 377 | ||
| 378 | R-16 甇葉**靽 `validator-reflection` 霂**嚗雿蛹賒霈啣 | 378 | R-16 甇葉**靽 `validator-reflection` 霂**嚗雿蛹賒霈啣 |
| 379 | 銝 R-16 銝誑憭霂餃 `validator-reflection`嚗敺圾銝 `validator-triager` | 379 | 銝 R-16 銝誑憭霂餃 `validator-reflection`嚗敺圾銝 `validator-triager` |
| 380 | 380 | ||
| 381 | -****嚗27-NAMING](./27-naming-conventions.md)27-P3/P4](./27-p3-p4-work-graph-console.md)system/templates/` | 381 | +****嚗27-NAMING](./27-naming-conventions.md)27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md)system/templates/` |
| 382 | 382 | ||
| 383 | -**霈啣洵鈭蔭嚗**嚗歇摰system/templates/validator-triager/`嚗敶 + 捆蝘堆_registry.json` system/templates/org-validator/` system/work-graph-templates/validator.json` `nodeName`/`systemAgentId`/颲寧垢27-NAMING](./27-naming-conventions.md) 禮3.5嚗砲舅憭”銋撟嗆嚗銝憭摰27-P3/P4](./27-p3-p4-work-graph-console.md) 禮.2 嚗 `ATTRIBUTION_NODE_NAME` 撣賊 `node.reflection` timeline 鈭辣銵 | 383 | +**霈啣洵鈭蔭嚗**嚗歇摰system/templates/validator-triager/`嚗敶 + 捆蝘堆_registry.json` system/templates/org-validator/` system/work-graph-templates/validator.json` `nodeName`/`systemAgentId`/颲寧垢27-NAMING](./27-naming-conventions.md) 禮3.5嚗砲舅憭”銋撟嗆嚗銝憭摰27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮.2 嚗 `ATTRIBUTION_NODE_NAME` 撣賊 `node.reflection` timeline 鈭辣銵 |
| 384 | 384 | ||
| 385 | - ** / `systemAgentId` / 撘虜郊**嚗遙銝憭deriveChildOutcome` 撠勗敶嚗潮漣瓷 `fail_reason`器迤 [27-P3/P4](./27-p3-p4-work-graph-console.md) 禮 銝芥漣 隡 摨 霂餃撩璅∪摰◆ `grep -rn validator-reflection` 憭銝-16 甇**銝**捂銝哨 | 385 | + ** / `systemAgentId` / 撘虜郊**嚗遙銝憭deriveChildOutcome` 撠勗敶嚗潮漣瓷 `fail_reason`器迤 [27-P3/P4](../../done/system-design/27-p3-p4-work-graph-console.md) 禮 銝芥漣 隡 摨 霂餃撩璅∪摰◆ `grep -rn validator-reflection` 憭銝-16 甇**銝**捂銝哨 |
| 386 | 386 | ||
| 387 | --- | 387 | --- |
| 388 | 388 |
server/routes/graph-run.js
| @@ -4,7 +4,7 @@ | @@ -4,7 +4,7 @@ | ||
| 4 | * 挂载: /api/graph-runs(主 router) | 4 | * 挂载: /api/graph-runs(主 router) |
| 5 | * /api/company(companyRouter,只提供 GET /:companyId/graph-runs) | 5 | * /api/company(companyRouter,只提供 GET /:companyId/graph-runs) |
| 6 | * | 6 | * |
| 7 | - * 设计见 docs/todo/system-design/27-p3-p4-work-graph-console.md | 7 | + * 设计见 docs/done/system-design/27-p3-p4-work-graph-console.md |
| 8 | * §四.C 五个控制操作的可用条件与语义(本文件只做「条件判断 + 转调引擎」,不含推进逻辑) | 8 | * §四.C 五个控制操作的可用条件与语义(本文件只做「条件判断 + 转调引擎」,不含推进逻辑) |
| 9 | * §三.2 两处不能照抄 pipeline 的坑: | 9 | * §三.2 两处不能照抄 pipeline 的坑: |
| 10 | * ① 定义层与运行时层分开 → GET /:id 吐的是 **run 实例**(run + nodes + edges + 回退记录), | 10 | * ① 定义层与运行时层分开 → GET /:id 吐的是 **run 实例**(run + nodes + edges + 回退记录), |
server/services/graph-engine.js
| 1 | /** | 1 | /** |
| 2 | * Graph Engine — P3 图执行引擎(T2) | 2 | * Graph Engine — P3 图执行引擎(T2) |
| 3 | * | 3 | * |
| 4 | - * 设计见 docs/todo/system-design/27-p3-p4-work-graph-console.md | 4 | + * 设计见 docs/done/system-design/27-p3-p4-work-graph-console.md |
| 5 | * §四.A.4 状态机 §四.A.6 幂等(条件更新 + 受影响行数) | 5 | * §四.A.4 状态机 §四.A.6 幂等(条件更新 + 受影响行数) |
| 6 | * §四.C 五个控制操作 + 「手动/自动共用同一个 advanceOne」 | 6 | * §四.C 五个控制操作 + 「手动/自动共用同一个 advanceOne」 |
| 7 | * §四.D.0 两种 node executor(agent_call / subgraph) | 7 | * §四.D.0 两种 node executor(agent_call / subgraph) |
server/services/graph-run-sse.js
| @@ -19,7 +19,7 @@ | @@ -19,7 +19,7 @@ | ||
| 19 | * data/companies/{companyId}/runs/{rootRunId}/stream.log SSE 帧,供断线重放 | 19 | * data/companies/{companyId}/runs/{rootRunId}/stream.log SSE 帧,供断线重放 |
| 20 | * data/companies/{companyId}/runs/{rootRunId}/timeline.ndjson 审计事件,append-only | 20 | * data/companies/{companyId}/runs/{rootRunId}/timeline.ndjson 审计事件,append-only |
| 21 | * | 21 | * |
| 22 | - * 设计:docs/todo/system-design/27-p3-p4-work-graph-console.md §三.3 / §四.A.5 / §五 T5 | 22 | + * 设计:docs/done/system-design/27-p3-p4-work-graph-console.md §三.3 / §四.A.5 / §五 T5 |
| 23 | */ | 23 | */ |
| 24 | 24 | ||
| 25 | const fs = require('fs'); | 25 | const fs = require('fs'); |
server/services/work-graph-db.js
| 1 | /** | 1 | /** |
| 2 | * Work Graph DB — P3 图执行引擎的数据层(T1 + T14) | 2 | * Work Graph DB — P3 图执行引擎的数据层(T1 + T14) |
| 3 | * | 3 | * |
| 4 | - * 设计见 docs/todo/system-design/27-p3-p4-work-graph-console.md | 4 | + * 设计见 docs/done/system-design/27-p3-p4-work-graph-console.md |
| 5 | * §四.A.1 分层(定义层 ≠ 运行时层) | 5 | * §四.A.1 分层(定义层 ≠ 运行时层) |
| 6 | * §四.A.2 五张表(本文件照抄那段 SQL,含两个唯一索引与 graph_runs.backward_count) | 6 | * §四.A.2 五张表(本文件照抄那段 SQL,含两个唯一索引与 graph_runs.backward_count) |
| 7 | * §四.A.4 两张状态转换表 | 7 | * §四.A.4 两张状态转换表 |
server/tests/unit/graph-engine.test.js
| 1 | /** | 1 | /** |
| 2 | * Unit Tests — graph-engine.js(P3/P4 T10) | 2 | * Unit Tests — graph-engine.js(P3/P4 T10) |
| 3 | * | 3 | * |
| 4 | - * 逐条对应 docs/todo/system-design/27-p3-p4-work-graph-console.md §六 验收标准: | 4 | + * 逐条对应 docs/done/system-design/27-p3-p4-work-graph-console.md §六 验收标准: |
| 5 | * 阶段 A:2(手动逐节点)/ 6(org graph 走同一套代码路径)/ 7(subgraph 起子 run) | 5 | * 阶段 A:2(手动逐节点)/ 6(org graph 走同一套代码路径)/ 7(subgraph 起子 run) |
| 6 | * 阶段 B:8(单边硬顶)/ 9(fail-fallback-edge 校验)/ 9b(多边不架空熔断)/ | 6 | * 阶段 B:8(单边硬顶)/ 9(fail-fallback-edge 校验)/ 9b(多边不架空熔断)/ |
| 7 | * 9c(infra_flake 不烧计数)/ 9d(三值透传)/ 10(预算耗尽整棵树挂起)/ 11(三层级联) | 7 | * 9c(infra_flake 不烧计数)/ 9d(三值透传)/ 10(预算耗尽整棵树挂起)/ 11(三层级联) |
server/tests/unit/graph-real-chain-smoke.test.js
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | * 图执行的**真实链路 smoke** —— 全程零注入,唯一被替换的是最外层的 Claude CLI 子进程。 | 2 | * 图执行的**真实链路 smoke** —— 全程零注入,唯一被替换的是最外层的 Claude CLI 子进程。 |
| 3 | * | 3 | * |
| 4 | * ── 这条测试还的是哪笔债 ────────────────────────────────────────────── | 4 | * ── 这条测试还的是哪笔债 ────────────────────────────────────────────── |
| 5 | - * [27-P3/P4](../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §十 末 | 5 | + * [27-P3/P4](../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §十 末 |
| 6 | * 「四条硬规矩」第 2 条: | 6 | * 「四条硬规矩」第 2 条: |
| 7 | * | 7 | * |
| 8 | * > **测试全绿 ≠ 能跑**。P3 的引擎用例至今仍一律注入假 executor / 假 planner, | 8 | * > **测试全绿 ≠ 能跑**。P3 的引擎用例至今仍一律注入假 executor / 假 planner, |
system/agents/_registry.json
| @@ -75,7 +75,7 @@ | @@ -75,7 +75,7 @@ | ||
| 75 | "id": "workgraph-planning", | 75 | "id": "workgraph-planning", |
| 76 | "name": "WorkGraph 规划 Agent", | 76 | "name": "WorkGraph 规划 Agent", |
| 77 | "type": "meta-planning", | 77 | "type": "meta-planning", |
| 78 | - "description": "全局唯一一份 work graph 规划本体(R-15.2):每个 org node 每次接到任务时跑一次,读角色定义 + 任务 + artifacts/ + 上一轮 remediation_note,产出 work graph(org node 级 workflow)→ 过五项写入前校验 → 落库交回图 id。设计 docs/todo/system-design/27-p3-p4-work-graph-console.md §四.D.0 / §五 T11", | 78 | + "description": "全局唯一一份 work graph 规划本体(R-15.2):每个 org node 每次接到任务时跑一次,读角色定义 + 任务 + artifacts/ + 上一轮 remediation_note,产出 work graph(org node 级 workflow)→ 过五项写入前校验 → 落库交回图 id。设计 docs/done/system-design/27-p3-p4-work-graph-console.md §四.D.0 / §五 T11", |
| 79 | "benchmarkScore": null, | 79 | "benchmarkScore": null, |
| 80 | "trainedAt": null, | 80 | "trainedAt": null, |
| 81 | "usedCount": 29 | 81 | "usedCount": 29 |
| @@ -84,7 +84,7 @@ | @@ -84,7 +84,7 @@ | ||
| 84 | "id": "validator-triager", | 84 | "id": "validator-triager", |
| 85 | "name": "失败归因 Agent", | 85 | "name": "失败归因 Agent", |
| 86 | "type": "validator", | 86 | "type": "validator", |
| 87 | - "description": "org-validator work graph 的第一个节点:判失败根因,产出 fail_reason(impl_bug/input_underspecified/skill_defect/infra_flake) + remediation_note,透传回 org 层选边。skill_defect 挂起等人工,不触发 L4。设计 docs/todo/system-design/27-p3-p4-work-graph-console.md §四.D.2.2", | 87 | + "description": "org-validator work graph 的第一个节点:判失败根因,产出 fail_reason(impl_bug/input_underspecified/skill_defect/infra_flake) + remediation_note,透传回 org 层选边。skill_defect 挂起等人工,不触发 L4。设计 docs/done/system-design/27-p3-p4-work-graph-console.md §四.D.2.2", |
| 88 | "benchmarkScore": null, | 88 | "benchmarkScore": null, |
| 89 | "trainedAt": null, | 89 | "trainedAt": null, |
| 90 | "usedCount": 6 | 90 | "usedCount": 6 |
| @@ -93,7 +93,7 @@ | @@ -93,7 +93,7 @@ | ||
| 93 | "id": "org-validator", | 93 | "id": "org-validator", |
| 94 | "name": "org 层全局验收 Agent", | 94 | "name": "org 层全局验收 Agent", |
| 95 | "type": "validator", | 95 | "type": "validator", |
| 96 | - "description": "org graph 末节点:按 artifacts/ 里的验收契约判「整个任务达成了吗」(task-goal 级),收敛时透传 success/fail + fail_reason + remediation_note 三值。设计 docs/todo/system-design/27-p3-p4-work-graph-console.md §四.D.3", | 96 | + "description": "org graph 末节点:按 artifacts/ 里的验收契约判「整个任务达成了吗」(task-goal 级),收敛时透传 success/fail + fail_reason + remediation_note 三值。设计 docs/done/system-design/27-p3-p4-work-graph-console.md §四.D.3", |
| 97 | "benchmarkScore": null, | 97 | "benchmarkScore": null, |
| 98 | "trainedAt": null, | 98 | "trainedAt": null, |
| 99 | "usedCount": 11 | 99 | "usedCount": 11 |
| @@ -102,7 +102,7 @@ | @@ -102,7 +102,7 @@ | ||
| 102 | "id": "planner-validator", | 102 | "id": "planner-validator", |
| 103 | "name": "规划产物验收 Agent", | 103 | "name": "规划产物验收 Agent", |
| 104 | "type": "validator", | 104 | "type": "validator", |
| 105 | - "description": "work 层验收本体:验 BRD/PRD/SDD,并额外审「这套验收标准是否可度量 / 覆盖原始需求 / 存在平凡通过漏洞」。设计 docs/todo/system-design/27-p3-p4-work-graph-console.md §四.D.3 末段", | 105 | + "description": "work 层验收本体:验 BRD/PRD/SDD,并额外审「这套验收标准是否可度量 / 覆盖原始需求 / 存在平凡通过漏洞」。设计 docs/done/system-design/27-p3-p4-work-graph-console.md §四.D.3 末段", |
| 106 | "benchmarkScore": null, | 106 | "benchmarkScore": null, |
| 107 | "trainedAt": null, | 107 | "trainedAt": null, |
| 108 | "usedCount": 10 | 108 | "usedCount": 10 |
| @@ -111,7 +111,7 @@ | @@ -111,7 +111,7 @@ | ||
| 111 | "id": "coder-validator", | 111 | "id": "coder-validator", |
| 112 | "name": "代码产出验收 Agent", | 112 | "name": "代码产出验收 Agent", |
| 113 | "type": "validator", | 113 | "type": "validator", |
| 114 | - "description": "work 层验收本体:按 contract + acceptance_criteria 逐条验代码,测试必须真跑过,专抓空断言/跳过充数/只有 happy path 等假绿。设计 docs/todo/system-design/27-p3-p4-work-graph-console.md §四.D.3", | 114 | + "description": "work 层验收本体:按 contract + acceptance_criteria 逐条验代码,测试必须真跑过,专抓空断言/跳过充数/只有 happy path 等假绿。设计 docs/done/system-design/27-p3-p4-work-graph-console.md §四.D.3", |
| 115 | "benchmarkScore": null, | 115 | "benchmarkScore": null, |
| 116 | "trainedAt": null, | 116 | "trainedAt": null, |
| 117 | "usedCount": 15 | 117 | "usedCount": 15 |
system/agents/benchmark-validator/agent.md
| @@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
| 3 | ## 身份定位 | 3 | ## 身份定位 |
| 4 | 4 | ||
| 5 | 你是 `org-validator` 这个 org node **自己 work graph 里的第二个节点** | 5 | 你是 `org-validator` 这个 org node **自己 work graph 里的第二个节点** |
| 6 | -([27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.D.3, | 6 | +([27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.D.3, |
| 7 | 骨架见 `system/work-graph-templates/validator.json`)。 | 7 | 骨架见 `system/work-graph-templates/validator.json`)。 |
| 8 | 8 | ||
| 9 | ``` | 9 | ``` |
system/agents/brd-planning/tools.md
| @@ -23,7 +23,7 @@ ls $R/artifacts/ | @@ -23,7 +23,7 @@ ls $R/artifacts/ | ||
| 23 | 上一轮的 `remediation_note` **由引擎在提示词里带给你**,不需要你去查。 | 23 | 上一轮的 `remediation_note` **由引擎在提示词里带给你**,不需要你去查。 |
| 24 | 24 | ||
| 25 | ❌ **不要读** `$R/nodes/<别的 nodeRunId>/`——节点私有目录彼此隔离 | 25 | ❌ **不要读** `$R/nodes/<别的 nodeRunId>/`——节点私有目录彼此隔离 |
| 26 | -([27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.A.5)。 | 26 | +([27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.A.5)。 |
| 27 | 你是规划链第一环,本来也没有上游产物可读。 | 27 | 你是规划链第一环,本来也没有上游产物可读。 |
| 28 | 28 | ||
| 29 | ## 2. 写三份产出(全部在你自己的目录里) | 29 | ## 2. 写三份产出(全部在你自己的目录里) |
system/agents/coder-validator/agent.md
| @@ -102,7 +102,7 @@ fail 时 `remediation_note` 必须能让 coder 直接开工:**`文件:行号` | @@ -102,7 +102,7 @@ fail 时 `remediation_note` 必须能让 coder 直接开工:**`文件:行号` | ||
| 102 | ## `fail_reason` 怎么填(work 层的分寸) | 102 | ## `fail_reason` 怎么填(work 层的分寸) |
| 103 | 103 | ||
| 104 | 引擎选边只做字符串精确匹配:**先找 `fail_reason` 精确匹配的边 → 无匹配则退到 `fail_reason IS NULL` | 104 | 引擎选边只做字符串精确匹配:**先找 `fail_reason` 精确匹配的边 → 无匹配则退到 `fail_reason IS NULL` |
| 105 | -的兜底边 → 再无则死路**([27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.D.2.2)。 | 105 | +的兜底边 → 再无则死路**([27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.D.2.2)。 |
| 106 | 取值域不在引擎里硬编码,由图的规划者与你约定。 | 106 | 取值域不在引擎里硬编码,由图的规划者与你约定。 |
| 107 | 107 | ||
| 108 | | 情况 | 你填什么 | | 108 | | 情况 | 你填什么 | |
system/agents/org-validator/agent.md
| @@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
| 3 | ## 身份定位 | 3 | ## 身份定位 |
| 4 | 4 | ||
| 5 | 你是 org graph 的**末节点**,也是这家公司这次任务的最后一道闸门 | 5 | 你是 org graph 的**末节点**,也是这家公司这次任务的最后一道闸门 |
| 6 | -(R-15.3 / [27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.D.3)。 | 6 | +(R-15.3 / [27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.D.3)。 |
| 7 | 7 | ||
| 8 | ``` | 8 | ``` |
| 9 | org graph: org-planner → org-{执行职能} → org-validator(你) | 9 | org graph: org-planner → org-{执行职能} → org-validator(你) |
system/agents/planner-validator/agent.md
| @@ -22,7 +22,7 @@ BRD / PRD / SDD / 任务拆解——完整ã€å†…éƒ¨æ— çŸ›ç›¾ã€å¯è½åœ°ã€è¦†ç› | @@ -22,7 +22,7 @@ BRD / PRD / SDD / 任务拆解——完整ã€å†…éƒ¨æ— çŸ›ç›¾ã€å¯è½åœ°ã€è¦†ç› | ||
| 22 | 22 | ||
| 23 | ### èŒè´£ B · å®¡ã€Œè¿™å¥—éªŒæ”¶æ ‡å‡†ã€æœ¬èº« â | 23 | ### èŒè´£ B · å®¡ã€Œè¿™å¥—éªŒæ”¶æ ‡å‡†ã€æœ¬èº« â |
| 24 | 24 | ||
| 25 | -按 [27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.D.3 末段, | 25 | +按 [27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.D.3 末段, |
| 26 | ä½ **é¢å¤–**承担一项其它 validator 没有的èŒè´£ï¼šå®¡è¿™ä¸ª org node äº§å‡ºçš„éªŒæ”¶æ ‡å‡†ä¸‰ä»¶å¥— | 26 | ä½ **é¢å¤–**承担一项其它 validator 没有的èŒè´£ï¼šå®¡è¿™ä¸ª org node äº§å‡ºçš„éªŒæ”¶æ ‡å‡†ä¸‰ä»¶å¥— |
| 27 | (`goal-benchmark` / `goal-test-data` / `goal-test-script`)—— | 27 | (`goal-benchmark` / `goal-test-data` / `goal-test-script`)—— |
| 28 | 28 |
system/agents/prd-planning/tools.md
| @@ -24,7 +24,7 @@ cat <提示词给的 brd 节点目录>/brd.md | @@ -24,7 +24,7 @@ cat <提示词给的 brd 节点目录>/brd.md | ||
| 24 | 上一轮的 `remediation_note` **由引擎在提示词里带给你**。 | 24 | 上一轮的 `remediation_note` **由引擎在提示词里带给你**。 |
| 25 | 25 | ||
| 26 | ❌ **提示词没给到路径的节点目录一律不要翻**——节点私有目录彼此隔离 | 26 | ❌ **提示词没给到路径的节点目录一律不要翻**——节点私有目录彼此隔离 |
| 27 | -([27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.A.5, | 27 | +([27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.A.5, |
| 28 | 照搬 DevLoop `CONVENTIONS.md` §12「下游只能看到上游的契约,看不到实现」)。 | 28 | 照搬 DevLoop `CONVENTIONS.md` §12「下游只能看到上游的契约,看不到实现」)。 |
| 29 | 上游没给够,就是 `input_underspecified`,不要自己翻墙去找。 | 29 | 上游没给够,就是 `input_underspecified`,不要自己翻墙去找。 |
| 30 | 30 |
system/agents/testdata-validator/agent.md
| @@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
| 3 | ## 身份定位 | 3 | ## 身份定位 |
| 4 | 4 | ||
| 5 | 你是 `org-validator` 这个 org node **自己 work graph 里的第三个节点** | 5 | 你是 `org-validator` 这个 org node **自己 work graph 里的第三个节点** |
| 6 | -([27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.D.3, | 6 | +([27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.D.3, |
| 7 | 骨架见 `system/work-graph-templates/validator.json`)。 | 7 | 骨架见 `system/work-graph-templates/validator.json`)。 |
| 8 | 8 | ||
| 9 | ``` | 9 | ``` |
system/agents/validator-triager/agent.md
| @@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
| 2 | 2 | ||
| 3 | ## 身份定位 | 3 | ## 身份定位 |
| 4 | 4 | ||
| 5 | -你是 `org-validator` 这个 org node **自己 work graph 里的第一个节点**(R-16 / [27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.D.2.2、§四.D.3)。 | 5 | +你是 `org-validator` 这个 org node **自己 work graph 里的第一个节点**(R-16 / [27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.D.2.2、§四.D.3)。 |
| 6 | 6 | ||
| 7 | ``` | 7 | ``` |
| 8 | org graph: org-planner → org-coder → org-validator | 8 | org graph: org-planner → org-coder → org-validator |
system/agents/validator-triager/tools.md
| @@ -48,7 +48,7 @@ curl -s http://localhost:3010/api/graph-runs/<上一步的 childRunId> | @@ -48,7 +48,7 @@ curl -s http://localhost:3010/api/graph-runs/<上一步的 childRunId> | ||
| 48 | 编一个名字则是红线。 | 48 | 编一个名字则是红线。 |
| 49 | 49 | ||
| 50 | ❌ **不要读** `runs/<rootRunId>/nodes/<别的 nodeRunId>/`——节点私有目录彼此隔离 | 50 | ❌ **不要读** `runs/<rootRunId>/nodes/<别的 nodeRunId>/`——节点私有目录彼此隔离 |
| 51 | -([27-P3/P4](../../../../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.A.5)。 | 51 | +([27-P3/P4](../../../../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.A.5)。 |
| 52 | 提示词里没给够的证据,就是「证据不足」,输出 `inconclusive`,不要自己翻墙去找。 | 52 | 提示词里没给够的证据,就是「证据不足」,输出 `inconclusive`,不要自己翻墙去找。 |
| 53 | 53 | ||
| 54 | ## 2. 写归因产出(唯一的写动作) | 54 | ## 2. 写归因产出(唯一的写动作) |
system/work-graph-templates/README.md
| @@ -8,7 +8,7 @@ Work Graph(**org node 级** workflow)的**骨架模板库**。与 `system/or | @@ -8,7 +8,7 @@ Work Graph(**org node 级** workflow)的**骨架模板库**。与 `system/or | ||
| 8 | 选型,再结合宿主 org node 的角色定义、本次任务描述、可读的 `artifacts/`、上一轮 `remediation_note`, | 8 | 选型,再结合宿主 org node 的角色定义、本次任务描述、可读的 `artifacts/`、上一轮 `remediation_note`, |
| 9 | 裁剪 / 替换 / 组合出这次真正要跑的 work graph。 | 9 | 裁剪 / 替换 / 组合出这次真正要跑的 work graph。 |
| 10 | 10 | ||
| 11 | -> 设计依据:[27-P3/P4](../../docs/todo/system-design/27-p3-p4-work-graph-console.md) §四.D.0 / §四.D.2.2 / §四.D.3 / §九bis | 11 | +> 设计依据:[27-P3/P4](../../docs/done/system-design/27-p3-p4-work-graph-console.md) §四.D.0 / §四.D.2.2 / §四.D.3 / §九bis |
| 12 | > 命名规范:[27-NAMING](../../docs/todo/system-design/27-naming-conventions.md) §二 / §三 | 12 | > 命名规范:[27-NAMING](../../docs/todo/system-design/27-naming-conventions.md) §二 / §三 |
| 13 | 13 | ||
| 14 | **这是起点集合,不是穷举枚举。** 加一种起手式只需往本目录扔一个 JSON 文件,**不改任何代码**。 | 14 | **这是起点集合,不是穷举枚举。** 加一种起手式只需往本目录扔一个 JSON 文件,**不改任何代码**。 |