Commit cd6f294016eb6e25c437406100b4a3f00f8bac10

Authored by yibo
1 parent 5f1e1efd

docs: 已完成阶段文档归档到 done/,README 索引补全

按 docs/README.md 既有约定(done/ 放「已实现/当前有效」),把两份已落地的
阶段设计文档移入 done/system-design/:

- 27-p1-virtual-reference.md  P1 虚拟引用寻址,commit 226489d
- 27-p2-org-graph.md          P2 Org Graph,70a4727 + f20d0d8,真实建公司端到端验证过

用 git mv 保留历史(R098 / R087)。移动断掉的 33 处相对链接已全部修复:
moved 文件内的出向链接改 ../../todo/system-design/,todo/ 下 6 个文件的入向链接
改 ../../done/system-design/。全 docs/ 扫描无断链。

README 此前严重过时——只列了 2 份 27 文档,实际已有 11 份。本次补全 todo/ 表格,
每份标注状态与作用(总纲 / 需求源头 / 命名规范 / 端到端 / 参考场景 /
P3+P4 已实现 / 验收契约 / P4 设计中),并在 done/ 表格补上 P1、P2 两行。

■ 刻意没有移动 27-p3-p4-work-graph-console.md
它虽然已实现(c3abf4a),但文档正被另一进程持续修改(工作区 M 状态)。
移动会打断它的编辑路径,等它收尾后再归档。

■ 三份文件的链接修复留在工作区未提交
27-naming-conventions.md / 27-p3-p4-work-graph-console.md / 27-requirement.md
里,我的链接修复与另一进程的在途编辑混在同一文件中,单独拆分风险大于收益。
工作区内容是正确的(链接已指向新路径),会随它下次提交一并带上。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
docs/README.md
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 8
9 判断依据:文档正文的显式「状态」标记(✅ 已完成 / 已实现 vs 📝 设计中 / 未实现)、未勾选的 checklist,以及与代码库实际实现的交叉核对(见各条目备注)。 9 判断依据:文档正文的显式「状态」标记(✅ 已完成 / 已实现 vs 📝 设计中 / 未实现)、未勾选的 checklist,以及与代码库实际实现的交叉核对(见各条目备注)。
10 10
11 -> **当前主线**:Graph Agent 架构重构([27-graph-agent-architecture.md](./todo/system-design/27-graph-agent-architecture.md))。`todo/` 下只保留这一份,其余待办已移入 `todo/future/`,避免和主线抢注意力。 11 +> **当前主线**:Graph Agent 架构重构([27-graph-agent-architecture.md](./todo/system-design/27-graph-agent-architecture.md))。该系列已完成的阶段文档(P1/P2)移入 `done/`,其余非主线待办在 `todo/future/`。
12 12
13 ## done/ 13 ## done/
14 14
@@ -21,14 +21,24 @@ @@ -21,14 +21,24 @@
21 | [qa_judge_req.md](./done/qa_judge_req.md) | QA Judge Agent 需求文档 — 已在 `system/templates/qa-judge/` 落地 | 21 | [qa_judge_req.md](./done/qa_judge_req.md) | QA Judge Agent 需求文档 — 已在 `system/templates/qa-judge/` 落地 |
22 | [task_timeline_design.md](./done/task_timeline_design.md) | Task Timeline View 设计文档 — 已实现(`server/routes/tasks.js`、`server/services/task-service.js`、`web/src/views/TaskTimeline.vue`) | 22 | [task_timeline_design.md](./done/task_timeline_design.md) | Task Timeline View 设计文档 — 已实现(`server/routes/tasks.js`、`server/services/task-service.js`、`web/src/views/TaskTimeline.vue`) |
23 | [user-guides/08-base-agent-4-phase-guide.md](./done/user-guides/08-base-agent-4-phase-guide.md) | Base Agent 四阶段使用指南 | 23 | [user-guides/08-base-agent-4-phase-guide.md](./done/user-guides/08-base-agent-4-phase-guide.md) | Base Agent 四阶段使用指南 |
  24 +| [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` 承载公司语境 |
  25 +| [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 建公司时自动规划并招聘。真实建公司端到端验证通过 |
24 | [system-design/01-26](./done/system-design/) | 系统设计正文 01~26 章(14、25-harness-engineering-improvements 例外,见 todo/future/;27 例外,见 todo/),各章节状态见文内「状态」标记 | 26 | [system-design/01-26](./done/system-design/) | 系统设计正文 01~26 章(14、25-harness-engineering-improvements 例外,见 todo/future/;27 例外,见 todo/),各章节状态见文内「状态」标记 |
25 27
26 ## todo/(当前主线) 28 ## todo/(当前主线)
27 29
  30 +Graph Agent 架构重构(27 系列)。**已完成的阶段文档已移入 `done/`**(P1、P2),下面是仍在推进或长期有效的部分。
  31 +
28 | 文件 | 说明 | 32 | 文件 | 说明 |
29 |------|------| 33 |------|------|
30 -| [system-design/27-graph-agent-architecture.md](./todo/system-design/27-graph-agent-architecture.md) | Graph Agent 架构,状态:📝 设计中,未实现。P0-P6 分阶段路线图,当前唯一在推进的重构 |  
31 -| [system-design/27-p1-virtual-reference.md](./todo/system-design/27-p1-virtual-reference.md) | P1(虚拟引用)细化需求与设计文档:`getAgentConfig()`/`PromptBuilder.build()`/`hire()` 的具体改法、验收标准、blast radius、未决问题 | 34 +| [27-graph-agent-architecture.md](./todo/system-design/27-graph-agent-architecture.md) | **总纲**。P0-P6 分阶段路线图与整体架构。P0-P3+P4 已实现,P4(新)/P5/P6 待做 |
  35 +| [27-requirement.md](./todo/system-design/27-requirement.md) | **需求源头**。用户原话照搬(R-1..R-16)+ 需求→设计落点速查。其余文档都是对它的转述,出现分歧以此为准 |
  36 +| [27-naming-conventions.md](./todo/system-design/27-naming-conventions.md) | **命名规范**。`{作用域}-{职能}`;图节点按层级轴命名;节点名 ≠ 本体名;三种 benchmark 消歧;OKR 正名。新增 agent id / 表名 / 字段名前必读 |
  37 +| [27-e2e-task-execution-flow.md](./todo/system-design/27-e2e-task-execution-flow.md) | 端到端流程总览:建公司 → 下达任务 → org graph 逐节点执行 → work graph 规划与循环 → 验收收敛。含与 DevLoop 既有实现的对应关系分析 |
  38 +| [27-example-dev-company-walkthrough.md](./todo/system-design/27-example-dev-company-walkthrough.md) | 参考场景走查(虚构的「配图工厂」),把架构跑一遍具体的数:各阶段 JSON 形态、成本估算、断点清单 |
  39 +| [27-p3-p4-work-graph-console.md](./todo/system-design/27-p3-p4-work-graph-console.md) | P3+P4(原 P4 回退+Loop-Validator 已并入)图执行引擎与执行控制台 — ✅ 已实现(`c3abf4a`),文档仍在补充中 |
  40 +| [27-goal-contract-format.md](./todo/system-design/27-goal-contract-format.md) | 验收契约格式(`goal-benchmark` / `goal-test-data` / `goal-test-script` 的产物形态与跨节点传递) |
  41 +| [27-p4-parallel-and-artifacts.md](./todo/system-design/27-p4-parallel-and-artifacts.md) | **P4(回收编号)并行执行与产物索引** — 📝 设计中。fan-out 真并发 + 同 agent 多实例隔离 + `files.json` 产物索引。三个 Phase,C 可插队 |
32 42
33 ## todo/future/(暂缓,非当前重心) 43 ## todo/future/(暂缓,非当前重心)
34 44
docs/todo/system-design/27-p1-virtual-reference.md renamed to docs/done/system-design/27-p1-virtual-reference.md
1 # 27-P1. 虚拟引用寻址 — 需求与设计文档 1 # 27-P1. 虚拟引用寻址 — 需求与设计文档
2 2
3 -> **所属**: [27 Graph Agent 架构](./27-graph-agent-architecture.md) 的 Phase P1("虚拟引用") 3 +> **所属**: [27 Graph Agent 架构](../../todo/system-design/27-graph-agent-architecture.md) 的 Phase P1("虚拟引用")
4 > **版本**: v0.2(设计阶段,未实现;因 P0 完工同步更新) 4 > **版本**: v0.2(设计阶段,未实现;因 P0 完工同步更新)
5 > **日期**: 2026-08-15 5 > **日期**: 2026-08-15
6 -> **前置**: P0 地基已**全部完工**并提交(commit `8421f55`)——`seedGlobalAgents()`/`seedTemplates()`/`seedCompanyAgents()`/`verifyCounts()` 四步全部实现,`system_agents.legacy_path` 可用,`org_graph_nodes` 已经把**现有全部公司雇佣关系**回填完毕(不再是空表)。P0 实施过程中发现一个直接影响 P1 设计的问题:**`system/agents/` 与 `system/templates/` 存在 6 个同名但内容可能不同步的 id**,详见 [27 号文档 §7](./27-graph-agent-architecture.md#七p0-实施发现2026-08-15) 与下文 §4.6——本版本已针对这个问题修正了查表逻辑。 6 +> **前置**: P0 地基已**全部完工**并提交(commit `8421f55`)——`seedGlobalAgents()`/`seedTemplates()`/`seedCompanyAgents()`/`verifyCounts()` 四步全部实现,`system_agents.legacy_path` 可用,`org_graph_nodes` 已经把**现有全部公司雇佣关系**回填完毕(不再是空表)。P0 实施过程中发现一个直接影响 P1 设计的问题:**`system/agents/` 与 `system/templates/` 存在 6 个同名但内容可能不同步的 id**,详见 [27 号文档 §7](../../todo/system-design/27-graph-agent-architecture.md#七p0-实施发现2026-08-15) 与下文 §4.6——本版本已针对这个问题修正了查表逻辑。
7 7
8 --- 8 ---
9 9
docs/todo/system-design/27-p2-org-graph.md renamed to docs/done/system-design/27-p2-org-graph.md
1 # 27-P2. Org Graph — å…¬å¸çº§ Workflow 的生æˆä¸Žè½åœ° 1 # 27-P2. Org Graph — å…¬å¸çº§ Workflow 的生æˆä¸Žè½åœ°
2 2
3 -> **所属**: [27 Graph Agent 架构](./27-graph-agent-architecture.md) 的 Phase P2 3 +> **所属**: [27 Graph Agent 架构](../../todo/system-design/27-graph-agent-architecture.md) 的 Phase P2
4 > **版本**: v0.4(**按执行æµè¾¹æ¨¡åž‹é‡å†™**ï¼›v0.1-v0.3 把 Org Graph å»ºæ¨¡ä¸ºé™æ€æ±‡æŠ¥ç»“æž„ï¼Œè¯¥æ¨¡åž‹å·²ä½œåºŸï¼Œè§ Â§ä¸€ï¼‰ 4 > **版本**: v0.4(**按执行æµè¾¹æ¨¡åž‹é‡å†™**ï¼›v0.1-v0.3 把 Org Graph å»ºæ¨¡ä¸ºé™æ€æ±‡æŠ¥ç»“æž„ï¼Œè¯¥æ¨¡åž‹å·²ä½œåºŸï¼Œè§ Â§ä¸€ï¼‰
5 > **日期**: 2026-08-15 5 > **日期**: 2026-08-15
6 > **å‰ç½®**: P0 地基已完工(commit `8421f55`)ã€**P1 虚拟引用寻å€å·²å®žçް**(commit `226489d`,`server/services/graph-service.js`) 6 > **å‰ç½®**: P0 地基已完工(commit `8421f55`)ã€**P1 虚拟引用寻å€å·²å®žçް**(commit `226489d`,`server/services/graph-service.js`)
7 -> **命å**: 全文éµå¾ª [27-NAMING 命å规范](./27-naming-conventions.md)。v0.3 çš„ `org-graph-creator` 在本版本统一改å为 **`orggraph-planning`**。  
8 -> **é…套**: [27-E2E 端到端æµç¨‹](./27-e2e-task-execution-flow.md)(本文档在整æ¡é“¾è·¯é‡Œçš„ä½ç½®ï¼‰ã€[27-EXAMPLE å‚考场景](./27-example-dev-company-walkthrough.md)(跑一é具体的数) 7 +> **命å**: 全文éµå¾ª [27-NAMING 命å规范](../../todo/system-design/27-naming-conventions.md)。v0.3 çš„ `org-graph-creator` 在本版本统一改å为 **`orggraph-planning`**。
  8 +> **é…套**: [27-E2E 端到端æµç¨‹](../../todo/system-design/27-e2e-task-execution-flow.md)(本文档在整æ¡é“¾è·¯é‡Œçš„ä½ç½®ï¼‰ã€[27-EXAMPLE å‚考场景](../../todo/system-design/27-example-dev-company-walkthrough.md)(跑一é具体的数)
9 9
10 --- 10 ---
11 11
@@ -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](./27-p3-p4-work-graph-console.md) çš„åŒä¸€å¥— | åŒå·¦ | 28 +| 执行引擎 | [27-P3/P4](../../todo/system-design/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](./27-p3-p4-work-graph-console.md)。P2 åªè´Ÿè´£"把图建出æ¥ã€å­˜å¥½ã€èƒ½è¯»èƒ½ç”»"。 50 +- **ä¸åš**图的执行 —— 执行引擎ã€å¯åЍ/æš‚åœ/啿­¥/é‡è¯•ã€SSE 全部属于 [27-P3/P4](../../todo/system-design/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,10 +95,10 @@ CREATE UNIQUE INDEX IF NOT EXISTS idx_org_graph_edges_dedupe_active @@ -95,10 +95,10 @@ 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](./27-p3-p4-work-graph-console.md) §四.A): 98 +与 work graph çš„æ‰§è¡Œå‰æ ¡éªŒåŒä¸€å¥—规则([27-P3/P4](../../todo/system-design/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](./27-requirement.md) R-13)—— å¿…é¡»æ°å¥½æœ‰ä¸€ä¸ªå…¥åº¦ä¸º 0 çš„ forward 节点,任务从这里进入。多入å£ä¼šè®©"任务从哪开始"无法确定,且需è¦ä»»åС入å£å¤šå¸¦ä¸€ä¸ªå‚数。 101 +2. **å•一入å£**(✅ å·²å®šæ¡ˆï¼Œè§ [27-REQ](../../todo/system-design/27-requirement.md) R-13)—— å¿…é¡»æ°å¥½æœ‰ä¸€ä¸ªå…¥åº¦ä¸º 0 çš„ forward 节点,任务从这里进入。多入å£ä¼šè®©"任务从哪开始"无法确定,且需è¦ä»»åС入å£å¤šå¸¦ä¸€ä¸ªå‚数。
102 3. **å¯è¾¾æ€§** —— æ¯ä¸ªèŠ‚ç‚¹éƒ½å¿…é¡»ä»Žå…¥å£å¯è¾¾ï¼Œå­¤ç«‹èŠ‚ç‚¹ç›´æŽ¥æ‹’ç»ã€‚ 102 3. **å¯è¾¾æ€§** —— æ¯ä¸ªèŠ‚ç‚¹éƒ½å¿…é¡»ä»Žå…¥å£å¯è¾¾ï¼Œå­¤ç«‹èŠ‚ç‚¹ç›´æŽ¥æ‹’ç»ã€‚
103 4. **å›žé€€è¾¹å¿…é¡»æ˜¾å¼æ ‡æ³¨** —— 任何指å‘"æ‹“æ‰‘åºæ›´æ—©èŠ‚ç‚¹"的边,`edge_kind` 必须是 `backward`ï¼›å¼•æ“Žç‹¬ç«‹å¤æ ¸ï¼Œä¸ä¿¡ä»»æ ‡æ³¨ï¼ˆ27 å·æ–‡æ¡£ §3.4 第 5 ç‚¹çš„åŒæ¬¾å…œåº•)。 103 4. **å›žé€€è¾¹å¿…é¡»æ˜¾å¼æ ‡æ³¨** —— 任何指å‘"æ‹“æ‰‘åºæ›´æ—©èŠ‚ç‚¹"的边,`edge_kind` 必须是 `backward`ï¼›å¼•æ“Žç‹¬ç«‹å¤æ ¸ï¼Œä¸ä¿¡ä»»æ ‡æ³¨ï¼ˆ27 å·æ–‡æ¡£ §3.4 第 5 ç‚¹çš„åŒæ¬¾å…œåº•)。
104 104
@@ -111,7 +111,7 @@ CREATE UNIQUE INDEX IF NOT EXISTS idx_org_graph_edges_dedupe_active @@ -111,7 +111,7 @@ CREATE UNIQUE INDEX IF NOT EXISTS idx_org_graph_edges_dedupe_active
111 新增 system agent æ¨¡æ¿ `system/templates/orggraph-planning/`(`config.json.type` å– `meta-bootstrap`,与业务角色区分)。工作æµï¼š 111 新增 system agent æ¨¡æ¿ `system/templates/orggraph-planning/`(`config.json.type` å– `meta-bootstrap`,与业务角色区分)。工作æµï¼š
112 112
113 1. **读输入**ï¼šå…¬å¸ `id` / `name` / **`goal`(company-goal)** / `description`(由 §4.4 的首轮消æ¯å¸¦å…¥ï¼‰ã€‚ 113 1. **读输入**ï¼šå…¬å¸ `id` / `name` / **`goal`(company-goal)** / `description`(由 §4.4 的首轮消æ¯å¸¦å…¥ï¼‰ã€‚
114 - `company-goal` 是「这家公å¸è¦è¾¾æˆä»€ä¹ˆã€ï¼Œ`description` æ˜¯ã€Œè¿™å®¶å…¬å¸æ˜¯å¹²ä»€ä¹ˆçš„ã€â€”—å‰è€…æ˜¯è§„åˆ’æµæ°´çº¿çš„䏻便®ï¼ŒåŽè€…æ˜¯èƒŒæ™¯ã€‚è§ [27-NAMING](./27-naming-conventions.md) §四。 114 + `company-goal` 是「这家公å¸è¦è¾¾æˆä»€ä¹ˆã€ï¼Œ`description` æ˜¯ã€Œè¿™å®¶å…¬å¸æ˜¯å¹²ä»€ä¹ˆçš„ã€â€”—å‰è€…æ˜¯è§„åˆ’æµæ°´çº¿çš„䏻便®ï¼ŒåŽè€…æ˜¯èƒŒæ™¯ã€‚è§ [27-NAMING](../../todo/system-design/27-naming-conventions.md) §四。
115 2. **读候选骨架**:`ls system/org-graph-templates/`,é€ä¸ªè¯»å–,ç†è§£å„自的 `whenToUse`。 115 2. **读候选骨架**:`ls system/org-graph-templates/`,é€ä¸ªè¯»å–,ç†è§£å„自的 `whenToUse`。
116 3. **è¯»å¯æ‹›è§’色**:`node bin/lemon.js company templates`(å¤ç”¨çŽ°æˆ CLI,`listTemplates()` 返回 id/name/type/description)。 116 3. **è¯»å¯æ‹›è§’色**:`node bin/lemon.js company templates`(å¤ç”¨çŽ°æˆ CLI,`listTemplates()` 返回 id/name/type/description)。
117 4. **规划**:综åˆä¸‰è€…,产出一张 workflow —— 节点列表 + 执行æµè¾¹ã€‚å…许è£å‰ªã€æ›¿æ¢ã€ç»„åˆå¤šä¸ªæ¨¡æ¿ï¼Œä¹Ÿå…许判断需è¦ä¸€ä¸ªæ¨¡æ¿åº“里没有的新角色。 117 4. **规划**:综åˆä¸‰è€…,产出一张 workflow —— 节点列表 + 执行æµè¾¹ã€‚å…许è£å‰ªã€æ›¿æ¢ã€ç»„åˆå¤šä¸ªæ¨¡æ¿ï¼Œä¹Ÿå…许判断需è¦ä¸€ä¸ªæ¨¡æ¿åº“里没有的新角色。
@@ -119,7 +119,7 @@ CREATE UNIQUE INDEX IF NOT EXISTS idx_org_graph_edges_dedupe_active @@ -119,7 +119,7 @@ CREATE UNIQUE INDEX IF NOT EXISTS idx_org_graph_edges_dedupe_active
119 6. **æäº¤å›¾**:调用 §4.3 的整体写入 API,图通过 §3.3 校验åŽè½åº“。 119 6. **æäº¤å›¾**:调用 §4.3 的整体写入 API,图通过 §3.3 校验åŽè½åº“。
120 7. **执行招è˜**:按拓扑åºå¯¹æ¯ä¸ªèŠ‚ç‚¹è°ƒ `hire()`。 120 7. **执行招è˜**:按拓扑åºå¯¹æ¯ä¸ªèŠ‚ç‚¹è°ƒ `hire()`。
121 - **模æ¿å·²å­˜åœ¨** → èµ° P1 虚拟引用寻å€ï¼Œä¸æ‹·è´ `agent.md`。 121 - **模æ¿å·²å­˜åœ¨** → èµ° P1 虚拟引用寻å€ï¼Œä¸æ‹·è´ `agent.md`。
122 - - **模æ¿ä¸å­˜åœ¨** → **从 `system/templates/base/` å…ƒ agent 继承出骨架**(自动带上 base çš„ `RESEARCH → PLAN → EXECUTE → VERIFY` 四段å¼ç”Ÿå‘½å‘¨æœŸï¼‰ï¼Œå†ç”± `agent-creator` 填充该角色特有的定义。这是 [27-E2E](./27-e2e-task-execution-flow.md) §八bis「所有 node agent 由元 agent 继承生æˆã€åœ¨ P2 çš„è½åœ°ç‚¹â€”—**䏿˜¯**直接走现有的 `needs_training` å…¨é‡åŸ¹å…»åˆ†æ”¯ã€‚ 122 + - **模æ¿ä¸å­˜åœ¨** → **从 `system/templates/base/` å…ƒ agent 继承出骨架**(自动带上 base çš„ `RESEARCH → PLAN → EXECUTE → VERIFY` 四段å¼ç”Ÿå‘½å‘¨æœŸï¼‰ï¼Œå†ç”± `agent-creator` 填充该角色特有的定义。这是 [27-E2E](../../todo/system-design/27-e2e-task-execution-flow.md) §八bis「所有 node agent 由元 agent 继承生æˆã€åœ¨ P2 çš„è½åœ°ç‚¹â€”—**䏿˜¯**直接走现有的 `needs_training` å…¨é‡åŸ¹å…»åˆ†æ”¯ã€‚
123 - **新建 agent çš„ `scope`**:一律默认 `scope='company'`ã€`owner_company_id` 为本公å¸ï¼ˆ27 å·æ–‡æ¡£ §3.2)。å‡çº§ä¸º `public` 走既有的 benchmark ≥95 门槛,ä¸åœ¨ P2 范围内。 123 - **新建 agent çš„ `scope`**:一律默认 `scope='company'`ã€`owner_company_id` 为本公å¸ï¼ˆ27 å·æ–‡æ¡£ §3.2)。å‡çº§ä¸º `public` 走既有的 benchmark ≥95 门槛,ä¸åœ¨ P2 范围内。
124 - **训练是å¯é€‰çš„åŽç½®æ­¥éª¤**:建æˆåŽå¯æ‰‹åŠ¨è§¦å‘ `innovator` åŸ¹å…»ï¼Œä¹Ÿå¯æŒ‰å…¬å¸éœ€æ±‚é…置为自动触å‘。P2 åªä¿è¯ã€Œè§’色能被建出æ¥ä¸”带四段å¼éª¨æž¶ã€ï¼Œä¸å¼ºåˆ¶ç­‰è®­ç»ƒå®Œæˆã€‚ 124 - **训练是å¯é€‰çš„åŽç½®æ­¥éª¤**:建æˆåŽå¯æ‰‹åŠ¨è§¦å‘ `innovator` åŸ¹å…»ï¼Œä¹Ÿå¯æŒ‰å…¬å¸éœ€æ±‚é…置为自动触å‘。P2 åªä¿è¯ã€Œè§’色能被建出æ¥ä¸”带四段å¼éª¨æž¶ã€ï¼Œä¸å¼ºåˆ¶ç­‰è®­ç»ƒå®Œæˆã€‚
125 8. **æ”¶å°¾**:关闭自己的心跳转入休眠。åŽç»­å¢žé‡è°ƒæ•´å½’ HR。 125 8. **æ”¶å°¾**:关闭自己的心跳转入休眠。åŽç»­å¢žé‡è°ƒæ•´å½’ HR。
@@ -183,7 +183,7 @@ if (bootstrap.status === &#39;hired_from_template&#39;) { @@ -183,7 +183,7 @@ if (bootstrap.status === &#39;hired_from_template&#39;) {
183 183
184 ### 4.5 å‰ç«¯ 184 ### 4.5 å‰ç«¯
185 185
186 -**ä¸è‡ªå·±å†™æ¸²æŸ“逻辑** —— org graph 与 work graph åŒæž„,直接å¤ç”¨ [27-P3/P4](./27-p3-p4-work-graph-console.md) T3 çš„ç”»å¸ƒç»„ä»¶ï¼ˆå…¶æœ¬èº«åˆæ˜¯æ‰©å±•自既有的 `web/src/components/devloop/UnitsDAG.vue`,已实现 SVG + Kahn 分波布局 + 状æ€ç€è‰² + 点击下钻)。 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 分波布局 + 状æ€ç€è‰² + 点击下钻)。
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
@@ -209,9 +209,9 @@ if (bootstrap.status === &#39;hired_from_template&#39;) { @@ -209,9 +209,9 @@ if (bootstrap.status === &#39;hired_from_template&#39;) {
209 ``` 209 ```
210 210
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](./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](./27-p3-p4-work-graph-console.md) §四.D.2.2): 214 +`dev.json` é‚£ä¸¤æ¡ `fail` 边是 P3 çš„ `fail_reason` 细分路由([27-P3/P4](../../todo/system-design/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` ç›®å‰åªæœ‰å…œåº•边。
@@ -220,7 +220,7 @@ if (bootstrap.status === &#39;hired_from_template&#39;) { @@ -220,7 +220,7 @@ if (bootstrap.status === &#39;hired_from_template&#39;) {
220 220
221 - **是起点集åˆï¼Œä¸æ˜¯ç©·ä¸¾æžšä¸¾** —— 加一ç§å…¬å¸ç±»åž‹åªéœ€åŠ ä¸€ä¸ª JSON æ–‡ä»¶ï¼Œä¸æ”¹ä»»ä½•代ç ã€‚`orggraph-planning` 读全部模æ¿åŽè‡ªè¡Œé€‰åž‹/è£å‰ª/组åˆï¼Œä¸æ˜¯ä»£ç é‡Œçš„ `switch(type)`。 221 - **是起点集åˆï¼Œä¸æ˜¯ç©·ä¸¾æžšä¸¾** —— 加一ç§å…¬å¸ç±»åž‹åªéœ€åŠ ä¸€ä¸ª JSON æ–‡ä»¶ï¼Œä¸æ”¹ä»»ä½•代ç ã€‚`orggraph-planning` 读全部模æ¿åŽè‡ªè¡Œé€‰åž‹/è£å‰ª/组åˆï¼Œä¸æ˜¯ä»£ç é‡Œçš„ `switch(type)`。
222 - **`nodes` é‡Œçš„è§’è‰²åæ˜¯å»ºè®®**,`orggraph-planning` 必须对照 `company templates` 核实是å¦çœŸæœ‰å¯æ‹›æ¨¡æ¿ï¼›æ²¡æœ‰åˆ™èµ° `needs_training` 培养分支。 222 - **`nodes` é‡Œçš„è§’è‰²åæ˜¯å»ºè®®**,`orggraph-planning` 必须对照 `company templates` 核实是å¦çœŸæœ‰å¯æ‹›æ¨¡æ¿ï¼›æ²¡æœ‰åˆ™èµ° `needs_training` 培养分支。
223 -- **模æ¿é‡Œçš„角色åå¿…é¡»éµå¾ª [27-NAMING](./27-naming-conventions.md) §3.1 çš„ `org-{èŒèƒ½}` 规则**,ä¸å…许裸用 `planner` / `validator`,也ä¸å†æŒ‰ä¸šåŠ¡é¢†åŸŸèµ· `code-` / `content-` 这类å‰ç¼€ï¼ˆv0.2 的写法,已作废)。 223 +- **模æ¿é‡Œçš„角色åå¿…é¡»éµå¾ª [27-NAMING](../../todo/system-design/27-naming-conventions.md) §3.1 çš„ `org-{èŒèƒ½}` 规则**,ä¸å…许裸用 `planner` / `validator`,也ä¸å†æŒ‰ä¸šåŠ¡é¢†åŸŸèµ· `code-` / `content-` 这类å‰ç¼€ï¼ˆv0.2 的写法,已作废)。
224 - âš ï¸ **é¿å¼€å‘½åå†²çª id**:`agent-creator` / `digester` / `evolver` / `evolver-youtube-crawler` / `hunter` / `innovator` è¿™ 6 个 id 在 `system/agents/` 与 `system/templates/` ä¸‹åŒæ—¶å­˜åœ¨ä¸”内容å¯èƒ½ä¸åŒæ­¥ï¼ˆ27 å·æ–‡æ¡£ §七),模æ¿é‡Œä¸è¦å¼•用它们。 224 - âš ï¸ **é¿å¼€å‘½åå†²çª id**:`agent-creator` / `digester` / `evolver` / `evolver-youtube-crawler` / `hunter` / `innovator` è¿™ 6 个 id 在 `system/agents/` 与 `system/templates/` ä¸‹åŒæ—¶å­˜åœ¨ä¸”内容å¯èƒ½ä¸åŒæ­¥ï¼ˆ27 å·æ–‡æ¡£ §七),模æ¿é‡Œä¸è¦å¼•用它们。
225 225
226 --- 226 ---
@@ -292,7 +292,7 @@ P0 çš„ `seedCompanyAgents()` 已把所有存é‡å…¬å¸çš„è§’è‰²å›žå¡«æˆ `org_gra @@ -292,7 +292,7 @@ P0 çš„ `seedCompanyAgents()` 已把所有存é‡å…¬å¸çš„è§’è‰²å›žå¡«æˆ `org_gra
292 292
293 ## å…«ã€é£Žé™© / Open Questions 293 ## å…«ã€é£Žé™© / Open Questions
294 294
295 -1. ~~**å•一入å£çº¦æŸæ˜¯å¦è¿‡ä¸¥**~~ ✅ **已定案**([27-REQ](./27-requirement.md) R-13.4):强制å•å…¥å£ã€‚ä¿ç•™åŽŸå§‹è®ºè¯ï¼šå¦‚果将æ¥å‡ºçް"两类任务从ä¸åŒèŠ‚ç‚¹è¿›å…¥åŒä¸€å®¶å…¬å¸"的需求(如 bugfix 直接从 coder 进入),需放宽为"å…è®¸å¤šå…¥å£ + 任务æºå¸¦æŒ‡å®šå…¥å£",届时任务入å£è¦å¤šå¸¦ä¸€ä¸ªå‚数。 295 +1. ~~**å•一入å£çº¦æŸæ˜¯å¦è¿‡ä¸¥**~~ ✅ **已定案**([27-REQ](../../todo/system-design/27-requirement.md) R-13.4):强制å•å…¥å£ã€‚ä¿ç•™åŽŸå§‹è®ºè¯ï¼šå¦‚果将æ¥å‡ºçް"两类任务从ä¸åŒèŠ‚ç‚¹è¿›å…¥åŒä¸€å®¶å…¬å¸"的需求(如 bugfix 直接从 coder 进入),需放宽为"å…è®¸å¤šå…¥å£ + 任务æºå¸¦æŒ‡å®šå…¥å£",届时任务入å£è¦å¤šå¸¦ä¸€ä¸ªå‚数。
296 2. **`orggraph-planning` çš„è§„åˆ’è´¨é‡æ²¡æœ‰ç¡¬æ ¡éªŒ**:§3.3 åªä¿è¯å›¾**ç»“æž„åˆæ³•**,ä¸ä¿è¯å®ƒ**适åˆè¿™å®¶å…¬å¸**。缓解:`workspace/orggraph-plan.md` ç•™ä¸‹å†³ç­–è®°å½•ä¾›äººå·¥å¤æ ¸ï¼›å‘现ä¸åˆç†æ—¶èµ° §4.3 çš„ PATCH 增é‡ä¿®æ­£ã€‚ 296 2. **`orggraph-planning` çš„è§„åˆ’è´¨é‡æ²¡æœ‰ç¡¬æ ¡éªŒ**:§3.3 åªä¿è¯å›¾**ç»“æž„åˆæ³•**,ä¸ä¿è¯å®ƒ**适åˆè¿™å®¶å…¬å¸**。缓解:`workspace/orggraph-plan.md` ç•™ä¸‹å†³ç­–è®°å½•ä¾›äººå·¥å¤æ ¸ï¼›å‘现ä¸åˆç†æ—¶èµ° §4.3 çš„ PATCH 增é‡ä¿®æ­£ã€‚
297 3. **一次建公å¸å¤šä¸€è½® LLM 对è¯**:✅ 实测约 30 秒(`p2-verify` 验è¯å…¬å¸ï¼Œ4 节点 5 è¾¹ + 4 个角色招è˜ï¼‰ã€‚`POST /create` ä¿æŒåŒæ­¥è¿”回(fire-and-forgetï¼‰ã€‚âš ï¸ å‰ç«¯ç©ºæ€æ–‡æ¡ˆå·²æåŠ"å­˜é‡å…¬å¸æˆ–规划ä»åœ¨è¿›è¡Œä¸­",但**没有真正区分这两ç§çжæ€**——è¦åŒºåˆ†éœ€è¦è½®è¯¢ `/org-graph` 或给公å¸åŠ ä¸€ä¸ª `orgGraphStatus` å­—æ®µã€‚å½“å‰æ˜¯åˆ»æ„的简化。 297 3. **一次建公å¸å¤šä¸€è½® LLM 对è¯**:✅ 实测约 30 秒(`p2-verify` 验è¯å…¬å¸ï¼Œ4 节点 5 è¾¹ + 4 个角色招è˜ï¼‰ã€‚`POST /create` ä¿æŒåŒæ­¥è¿”回(fire-and-forgetï¼‰ã€‚âš ï¸ å‰ç«¯ç©ºæ€æ–‡æ¡ˆå·²æåŠ"å­˜é‡å…¬å¸æˆ–规划ä»åœ¨è¿›è¡Œä¸­",但**没有真正区分这两ç§çжæ€**——è¦åŒºåˆ†éœ€è¦è½®è¯¢ `/org-graph` 或给公å¸åŠ ä¸€ä¸ª `orgGraphStatus` å­—æ®µã€‚å½“å‰æ˜¯åˆ»æ„的简化。
298 4. **6 个命åå†²çª id**(27 å·æ–‡æ¡£ §七):本文档 §4.6 å·²è¦æ±‚模æ¿é¿å¼€å®ƒä»¬ï¼Œä½†å¦‚æžœ `orggraph-planning` 自主判断需è¦å…¶ä¸­æŸä¸ªè§’色,ä»ä¼šæ’žä¸Š"该读哪份 `agent.md`"的歧义。建议在 P2 ä¸Šçº¿å‰æŠŠè¿™ä¸ªäº§å“å†³ç­–åšæŽ‰ã€‚ 298 4. **6 个命åå†²çª id**(27 å·æ–‡æ¡£ §七):本文档 §4.6 å·²è¦æ±‚模æ¿é¿å¼€å®ƒä»¬ï¼Œä½†å¦‚æžœ `orggraph-planning` 自主判断需è¦å…¶ä¸­æŸä¸ªè§’色,ä»ä¼šæ’žä¸Š"该读哪份 `agent.md`"的歧义。建议在 P2 ä¸Šçº¿å‰æŠŠè¿™ä¸ªäº§å“å†³ç­–åšæŽ‰ã€‚
@@ -304,4 +304,4 @@ P0 çš„ `seedCompanyAgents()` 已把所有存é‡å…¬å¸çš„è§’è‰²å›žå¡«æˆ `org_gra @@ -304,4 +304,4 @@ P0 çš„ `seedCompanyAgents()` 已把所有存é‡å…¬å¸çš„è§’è‰²å›žå¡«æˆ `org_gra
304 304
305 - **P0/P1**:å‡å·²å®žçŽ°ã€‚P2 唯一需è¦åЍ P1 代ç çš„地方是 DROP 它建的全é‡å”¯ä¸€ç´¢å¼•(T1)。 305 - **P0/P1**:å‡å·²å®žçŽ°ã€‚P2 唯一需è¦åЍ P1 代ç çš„地方是 DROP 它建的全é‡å”¯ä¸€ç´¢å¼•(T1)。
306 - **P3/P4**:P2 产出图,P3/P4 执行图。**两者共用åŒä¸€å¥— schema å½¢æ€ã€æ‰§è¡Œå¼•擎和画布组件** —— 这是 v0.4 新模型最大的收益。P2 ä¸å«ä»»ä½•执行逻辑。 306 - **P3/P4**:P2 产出图,P3/P4 执行图。**两者共用åŒä¸€å¥— schema å½¢æ€ã€æ‰§è¡Œå¼•擎和画布组件** —— 这是 v0.4 新模型最大的收益。P2 ä¸å«ä»»ä½•执行逻辑。
307 -- **端到端**:本文档在整æ¡é“¾è·¯é‡Œçš„ä½ç½®è§ [27-E2E](./27-e2e-task-execution-flow.md) §三 阶段 2,具体跑一é的样å­è§ [27-EXAMPLE](./27-example-dev-company-walkthrough.md) 阶段 2。 307 +- **端到端**:本文档在整æ¡é“¾è·¯é‡Œçš„ä½ç½®è§ [27-E2E](../../todo/system-design/27-e2e-task-execution-flow.md) §三 阶段 2,具体跑一é的样å­è§ [27-EXAMPLE](../../todo/system-design/27-example-dev-company-walkthrough.md) 阶段 2。
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 è½åœ°](./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 执行控制å°](./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
@@ -67,7 +67,7 @@ @@ -67,7 +67,7 @@
67 67
68 ### 阶段 2 · orggraph-planning æ ¹æ®æè¿°ç”ŸæˆåŸºç¡€ org graph 68 ### 阶段 2 · orggraph-planning æ ¹æ®æè¿°ç”ŸæˆåŸºç¡€ org graph
69 69
70 -**状æ€**:📠已设计未实现([27-P2](./27-p2-org-graph.md) §4.8/§4.9/§4.10) 70 +**状æ€**:📠已设计未实现([27-P2](../../done/system-design/27-p2-org-graph.md) §4.8/§4.9/§4.10)
71 71
72 P2 å·²ç»è®¾è®¡äº†ï¼š`system/org-graph-templates/{dev,content,ops}.json` 模æ¿åº“ + `orggraph-planning` agent + 创建时自动招è˜å¹¶ fire-and-forget 触å‘首轮对è¯ã€‚ 72 P2 å·²ç»è®¾è®¡äº†ï¼š`system/org-graph-templates/{dev,content,ops}.json` 模æ¿åº“ + `orggraph-planning` agent + 创建时自动招è˜å¹¶ fire-and-forget 触å‘首轮对è¯ã€‚
73 73
@@ -177,7 +177,7 @@ P2 å·²ç»è®¾è®¡äº†ï¼š`system/org-graph-templates/{dev,content,ops}.json` 模æ¿å @@ -177,7 +177,7 @@ P2 å·²ç»è®¾è®¡äº†ï¼š`system/org-graph-templates/{dev,content,ops}.json` 模æ¿å
177 > | **Org Graph** | orggraph-planning | å»ºå…¬å¸æ—¶ï¼Œä¸€æ¬¡ | org node agent | 执行æµï¼ˆsuccess/fail æ¡ä»¶ï¼‰ | 177 > | **Org Graph** | orggraph-planning | å»ºå…¬å¸æ—¶ï¼Œä¸€æ¬¡ | org node agent | 执行æµï¼ˆsuccess/fail æ¡ä»¶ï¼‰ |
178 > | **Work Graph** | workgraph-planning agent | æ¯ä¸ª org node 接到任务时 | system agent 引用 | 执行æµï¼ˆsuccess/fail æ¡ä»¶ï¼‰ | 178 > | **Work Graph** | workgraph-planning agent | æ¯ä¸ª org node 接到任务时 | system agent 引用 | 执行æµï¼ˆsuccess/fail æ¡ä»¶ï¼‰ |
179 > 179 >
180 -> **è¿™æ„å‘³ç€ [27-P2](./27-p2-org-graph.md) 现在的 org graph æ¨¡åž‹éœ€è¦æ”¹**ï¼šå®ƒæŠŠè¾¹å®šä¹‰æˆ `reports_to` / `collaborates_with`ï¼ˆé™æ€æ±‡æŠ¥ç»“构),而实际需è¦çš„æ˜¯**带 success/fail æ¡ä»¶çš„æ‰§è¡Œæµè¾¹**,与 work graph çš„è¾¹åŒæž„。汇报关系如果还需è¦ï¼Œåº”é™çº§ä¸ºèŠ‚ç‚¹ä¸Šçš„å…ƒæ•°æ®å±žæ€§ï¼Œè€Œä¸æ˜¯ org graph 的主干语义。 180 +> **è¿™æ„å‘³ç€ [27-P2](../../done/system-design/27-p2-org-graph.md) 现在的 org graph æ¨¡åž‹éœ€è¦æ”¹**ï¼šå®ƒæŠŠè¾¹å®šä¹‰æˆ `reports_to` / `collaborates_with`ï¼ˆé™æ€æ±‡æŠ¥ç»“构),而实际需è¦çš„æ˜¯**带 success/fail æ¡ä»¶çš„æ‰§è¡Œæµè¾¹**,与 work graph çš„è¾¹åŒæž„。汇报关系如果还需è¦ï¼Œåº”é™çº§ä¸ºèŠ‚ç‚¹ä¸Šçš„å…ƒæ•°æ®å±žæ€§ï¼Œè€Œä¸æ˜¯ org graph 的主干语义。
181 > 181 >
182 > **好处**:一套 schemaã€ä¸€å¥—执行引擎ã€ä¸€å¥—æŽ§åˆ¶å° UI,在两个层级上原样å¤ç”¨ï¼›ä¸‰å±‚下钻(org graph → work graph → 并行å­å›¾ï¼‰å¤©ç„¶é€’å½’ï¼›"å¯åЍ/下一步/æš‚åœ/åœæ­¢/é‡è¯•"五个æ“作在æ¯ä¸€å±‚语义完全一致。 182 > **好处**:一套 schemaã€ä¸€å¥—执行引擎ã€ä¸€å¥—æŽ§åˆ¶å° UI,在两个层级上原样å¤ç”¨ï¼›ä¸‰å±‚下钻(org graph → work graph → 并行å­å›¾ï¼‰å¤©ç„¶é€’å½’ï¼›"å¯åЍ/下一步/æš‚åœ/åœæ­¢/é‡è¯•"五个æ“作在æ¯ä¸€å±‚语义完全一致。
183 > 183 >
@@ -356,7 +356,7 @@ DevLoop 就这个问题åšè¿‡æ˜¾å¼å†³ç­–(`loops-l2.md` 方案 A/B/C),选æ @@ -356,7 +356,7 @@ DevLoop 就这个问题åšè¿‡æ˜¾å¼å†³ç­–(`loops-l2.md` 方案 A/B/C),选æ
356 356
357 **所有 org graph / work graph çš„ node agent,都由一个元 agent 架构继承生æˆï¼Œç»Ÿä¸€æ˜¯ã€Œå…¨å±€é€šç”¨æœ¬ä½“ + å…¬å¸/角色记忆分区ã€çš„结构。** 357 **所有 org graph / work graph çš„ node agent,都由一个元 agent 架构继承生æˆï¼Œç»Ÿä¸€æ˜¯ã€Œå…¨å±€é€šç”¨æœ¬ä½“ + å…¬å¸/角色记忆分区ã€çš„结构。**
358 358
359 -è¿™æ¡å®šæ¡ˆå–代了 v0.1 §四 里"三个验收 agent è¦ä¸è¦æŒ‰çˆ¶èŠ‚ç‚¹ç‰¹åŒ–"这个问题——答案是**ä¸ç‰¹åŒ–**:ä¸å­˜åœ¨ `goal-benchmark` / `test-planner-benchmark` å„自独立的 agentï¼Œåªæœ‰é€šç”¨çš„ benchmark 设计能力,é è®°å¿†åˆ†åŒºåŒºåˆ†å®ƒåœ¨ä¸åŒ org node / ä¸åŒå…¬å¸ä¸‹çš„ç»éªŒç§¯ç´¯ã€‚agent æ± ä¸éš org node æ•°é‡è†¨èƒ€ï¼Œä¹Ÿä¸Ž [27-P1](./27-p1-virtual-reference.md) 虚拟引用寻å€çš„åˆè¡·ä¸€è‡´ï¼ˆåŒä¸€ä»½æœ¬ä½“,多处引用,å„è‡ªç§æœ‰è¯­å¢ƒï¼‰ã€‚ 359 +è¿™æ¡å®šæ¡ˆå–代了 v0.1 §四 里"三个验收 agent è¦ä¸è¦æŒ‰çˆ¶èŠ‚ç‚¹ç‰¹åŒ–"这个问题——答案是**ä¸ç‰¹åŒ–**:ä¸å­˜åœ¨ `goal-benchmark` / `test-planner-benchmark` å„自独立的 agentï¼Œåªæœ‰é€šç”¨çš„ benchmark 设计能力,é è®°å¿†åˆ†åŒºåŒºåˆ†å®ƒåœ¨ä¸åŒ org node / ä¸åŒå…¬å¸ä¸‹çš„ç»éªŒç§¯ç´¯ã€‚agent æ± ä¸éš org node æ•°é‡è†¨èƒ€ï¼Œä¹Ÿä¸Ž [27-P1](../../done/system-design/27-p1-virtual-reference.md) 虚拟引用寻å€çš„åˆè¡·ä¸€è‡´ï¼ˆåŒä¸€ä»½æœ¬ä½“,多处引用,å„è‡ªç§æœ‰è¯­å¢ƒï¼‰ã€‚
360 360
361 ✅ **å…ƒ agent 在仓库里已ç»å­˜åœ¨**:`system/templates/base/`("标准基座员工 Base Agent")。它已ç»å¼ºåˆ¶äº†ä¸€å¥—四段å¼ç”Ÿå‘½å‘¨æœŸï¼š 361 ✅ **å…ƒ agent 在仓库里已ç»å­˜åœ¨**:`system/templates/base/`("标准基座员工 Base Agent")。它已ç»å¼ºåˆ¶äº†ä¸€å¥—四段å¼ç”Ÿå‘½å‘¨æœŸï¼š
362 362
@@ -376,9 +376,9 @@ RESEARCH → PLAN → EXECUTE → VERIFY @@ -376,9 +376,9 @@ RESEARCH → PLAN → EXECUTE → VERIFY
376 376
377 | # | 文档 | 原错误陈述 | 事实 | 修订结果 | 377 | # | 文档 | 原错误陈述 | 事实 | 修订结果 |
378 |---|---|---|---|---| 378 |---|---|---|---|---|
379 -| 1 | [27-P2](./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`)〠| 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,**已完整实现**…)ã€ï¼Œå¹¶è¿½åŠ äº†ã€Œæ³¢å†…å®žé™…æ˜¯ä¸²è¡Œã€çš„补充观察 | 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,**已完整实现**…)ã€ï¼Œå¹¶è¿½åŠ äº†ã€Œæ³¢å†…å®žé™…æ˜¯ä¸²è¡Œã€çš„补充观察 |
381 -| 3 | [27-P2](./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](./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 ### æ­¤å¤–å»ºè®®ï¼ˆå¤æ ¸ç»“论)
docs/todo/system-design/27-example-dev-company-walkthrough.md
@@ -33,7 +33,7 @@ @@ -33,7 +33,7 @@
33 } 33 }
34 ``` 34 ```
35 35
36 -**系统动作**([27-P2](./27-p2-org-graph.md) §4.10): 36 +**系统动作**([27-P2](../../done/system-design/27-p2-org-graph.md) §4.10):
37 37
38 1. `companyService.create()` 建目录 + `company.json`(`agents: []`) 38 1. `companyService.create()` 建目录 + `company.json`(`agents: []`)
39 2. 🔴 自动 `hire(id, 'orggraph-planning', {})` 39 2. 🔴 自动 `hire(id, 'orggraph-planning', {})`
@@ -48,7 +48,7 @@ @@ -48,7 +48,7 @@
48 **它读三样东西**: 48 **它读三样东西**:
49 49
50 1. 公司 description(上面那段) 50 1. 公司 description(上面那段)
51 -2. `system/org-graph-templates/*.json`(候选骨架,[27-P2](./27-p2-org-graph.md) §4.8) 51 +2. `system/org-graph-templates/*.json`(候选骨架,[27-P2](../../done/system-design/27-p2-org-graph.md) §4.8)
52 3. `node bin/lemon.js company templates`(现实里能招到的角色,`listTemplates()` 返回 id/name/type/description) 52 3. `node bin/lemon.js company templates`(现实里能招到的角色,`listTemplates()` 返回 id/name/type/description)
53 53
54 **它的判断**:description 里有"做一个工具""跑在本地""CLI 版本"→ 匹配 `dev.json`。 54 **它的判断**:description 里有"做一个工具""跑在本地""CLI 版本"→ 匹配 `dev.json`。
@@ -76,7 +76,7 @@ @@ -76,7 +76,7 @@
76 76
77 `ceo` / `hr` 这类不参与任务执行的角色仍然可以被招聘进公司(存在于 `company.json.agents[]`),但**不出现在 org graph 这张 workflow 里**——org graph 只画"任务怎么流过这家公司"。 77 `ceo` / `hr` 这类不参与任务执行的角色仍然可以被招聘进公司(存在于 `company.json.agents[]`),但**不出现在 org graph 这张 workflow 里**——org graph 只画"任务怎么流过这家公司"。
78 78
79 -**它提交图 + 执行招聘**(两步,[27-P2](./27-p2-org-graph.md) §4.1 第 6-7 步): 79 +**它提交图 + 执行招聘**(两步,[27-P2](../../done/system-design/27-p2-org-graph.md) §4.1 第 6-7 步):
80 80
81 ```bash 81 ```bash
82 # 1. 整体提交图定义,过四项校验(无环 / 单一入口 / 可达性 / 回退边标注)后事务性落库 82 # 1. 整体提交图定义,过四项校验(无环 / 单一入口 / 可达性 / 回退边标注)后事务性落库
@@ -255,10 +255,10 @@ brd-planning → prd-planning → sdd-planning ─┬→ goal-test-data ── @@ -255,10 +255,10 @@ brd-planning → prd-planning → sdd-planning ─┬→ goal-test-data ──
255 | 1 | `qa-judge` 没有程序化调用入口(判决无法驱动任何自动动作) | 5, 6, 7 | [27-E2E](./27-e2e-task-execution-flow.md) §11.3 | 255 | 1 | `qa-judge` 没有程序化调用入口(判决无法驱动任何自动动作) | 5, 6, 7 | [27-E2E](./27-e2e-task-execution-flow.md) §11.3 |
256 | 2 | org-validator 节点的验收执行能力(跑 test_script / 喂 test_data)未实现 | 5, 7 | §11.3 | 256 | 2 | org-validator 节点的验收执行能力(跑 test_script / 喂 test_data)未实现 | 5, 7 | §11.3 |
257 | 3 | 「用户 → 公司」任务入口不存在 | 3 | §三 阶段 3 | 257 | 3 | 「用户 → 公司」任务入口不存在 | 3 | §三 阶段 3 |
258 -| 4 | **P2 的 org graph 边模型需从 `reports_to` 改为 `success`/`fail` 执行流边** | 2, 4 | §五定案 + [27-P2](./27-p2-org-graph.md) v0.4 修正 | 258 +| 4 | **P2 的 org graph 边模型需从 `reports_to` 改为 `success`/`fail` 执行流边** | 2, 4 | §五定案 + [27-P2](../../done/system-design/27-p2-org-graph.md) v0.4 修正 |
259 | 5 | fan-out 并行撞 CONVENTIONS §12 不变量 + SessionPool key 复用 | 5, 6 | §7.4 | 259 | 5 | fan-out 并行撞 CONVENTIONS §12 不变量 + SessionPool key 复用 | 5, 6 | §7.4 |
260 | 6 | 任务级总预算不存在 | 7 | §7.1 | 260 | 6 | 任务级总预算不存在 | 7 | §7.1 |
261 | 7 | L4-general 的 agent dream 流程不存在(跨公司批量蒸馏层缺失,单点接口已齐) | 7 之后(离线) | §8.1 | 261 | 7 | L4-general 的 agent dream 流程不存在(跨公司批量蒸馏层缺失,单点接口已齐) | 7 之后(离线) | §8.1 |
262 -| 8 | orggraph-planning / workgraph-planning agent 均未实现 | 2, 5, 6 | [27-P2](./27-p2-org-graph.md) §4.9 | 262 +| 8 | orggraph-planning / workgraph-planning agent 均未实现 | 2, 5, 6 | [27-P2](../../done/system-design/27-p2-org-graph.md) §4.9 |
263 263
264 第 4 项是**架构前提**,必须先改;改完之后做 1-3 项,这个场景就能在"串行、无 L4"的模式下端到端跑通一遍。 264 第 4 项是**架构前提**,必须先改;改完之后做 1-3 项,这个场景就能在"串行、无 L4"的模式下端到端跑通一遍。
docs/todo/system-design/27-graph-agent-architecture.md
@@ -35,7 +35,7 @@ @@ -35,7 +35,7 @@
35 |------|------| 35 |------|------|
36 | **System Agent** | 全局唯一的可执行 Agent 实体。自带 prompt 定义、公共记忆(`memory.md`)、按公司分区的私有历史。是 24 号文档里"System Agent"与"Agent Template"两个概念的合并——不再区分"模板"和"实例",只有"这个 agent,被谁调用过"。 | 36 | **System Agent** | 全局唯一的可执行 Agent 实体。自带 prompt 定义、公共记忆(`memory.md`)、按公司分区的私有历史。是 24 号文档里"System Agent"与"Agent Template"两个概念的合并——不再区分"模板"和"实例",只有"这个 agent,被谁调用过"。 |
37 | **scope** | System Agent 的可见性:`public`(跨公司共享,记忆公共累积)或 `company`(私有,只属于 `owner_company_id` 指定的一家公司)。 | 37 | **scope** | System Agent 的可见性:`public`(跨公司共享,记忆公共累积)或 `company`(私有,只属于 `owner_company_id` 指定的一家公司)。 |
38 -| **Org Graph** | **company 级别生成的 workflow**。由 `orggraph-planning` agent 在建公司时根据公司目标/描述生成一次。节点 = 对某个 org node agent 的引用;边 = **执行流**(`condition ∈ {success, fail}` + `edge_kind ∈ {forward, backward}`)。⚠️ v0.3 修正:本文档 v0.2 曾把它定义为"静态汇报结构、边是汇报/协作关系",该建模已作废,详见 [27-P2 v0.4](./27-p2-org-graph.md) §一。 | 38 +| **Org Graph** | **company 级别生成的 workflow**。由 `orggraph-planning` agent 在建公司时根据公司目标/描述生成一次。节点 = 对某个 org node agent 的引用;边 = **执行流**(`condition ∈ {success, fail}` + `edge_kind ∈ {forward, backward}`)。⚠️ v0.3 修正:本文档 v0.2 曾把它定义为"静态汇报结构、边是汇报/协作关系",该建模已作废,详见 [27-P2 v0.4](../../done/system-design/27-p2-org-graph.md) §一。 |
39 | **Work Graph** | **org graph node 级别生成的 workflow**。某个 org node 收到任务后,现场调用 `workgraph-planning` agent 针对这一具体任务规划出。节点 = 对某个 system agent 的一次调用;边的语义与 Org Graph **完全同构**。执行完归档,不复用到下一个任务。 | 39 | **Work Graph** | **org graph node 级别生成的 workflow**。某个 org node 收到任务后,现场调用 `workgraph-planning` agent 针对这一具体任务规划出。节点 = 对某个 system agent 的一次调用;边的语义与 Org Graph **完全同构**。执行完归档,不复用到下一个任务。 |
40 | **两者关系** | Org Graph 与 Work Graph 是**同一种东西在不同层级上的递归**——同一套 schema 形态、同一个执行引擎、同一套控制台 UI,区别只在生成者、生成时机、节点指向。 | 40 | **两者关系** | Org Graph 与 Work Graph 是**同一种东西在不同层级上的递归**——同一套 schema 形态、同一个执行引擎、同一套控制台 UI,区别只在生成者、生成时机、节点指向。 |
41 | **Loop-Validator** | 一个专职的 system agent,内置带硬编码熔断逻辑的 skill。所有"回退到历史节点"的边必须先经过它:备案 → 审计上次修复是否生效 → 判断修复方案是否被正确传递 → 循环数 > 3 强制终止。 | 41 | **Loop-Validator** | 一个专职的 system agent,内置带硬编码熔断逻辑的 skill。所有"回退到历史节点"的边必须先经过它:备案 → 审计上次修复是否生效 → 判断修复方案是否被正确传递 → 循环数 > 3 强制终止。 |
@@ -101,7 +101,7 @@ system/agents/{agentId}/ @@ -101,7 +101,7 @@ system/agents/{agentId}/
101 101
102 ### 3.3 Org Graph:company 级 workflow 102 ### 3.3 Org Graph:company 级 workflow
103 103
104 -> ⚠️ **v0.3 修正**:本节 v0.2 的内容("公司静态结构、边是汇报/协作关系、招聘时由 CEO 或 HR 维护")已作废。完整设计见 [27-P2 v0.4](./27-p2-org-graph.md)。 104 +> ⚠️ **v0.3 修正**:本节 v0.2 的内容("公司静态结构、边是汇报/协作关系、招聘时由 CEO 或 HR 维护")已作废。完整设计见 [27-P2 v0.4](../../done/system-design/27-p2-org-graph.md)。
105 105
106 - **节点**:对某个 org node agent 的引用(`org_graph_nodes`)。 106 - **节点**:对某个 org node agent 的引用(`org_graph_nodes`)。
107 - **边**:**执行流**(`org_graph_edges`:`condition ∈ {success, fail}`、`edge_kind ∈ {forward, backward}`),与 `work_graph_edges` 同构。 107 - **边**:**执行流**(`org_graph_edges`:`condition ∈ {success, fail}`、`edge_kind ∈ {forward, backward}`),与 `work_graph_edges` 同构。
@@ -225,8 +225,8 @@ CREATE TABLE work_graph_edges ( @@ -225,8 +225,8 @@ CREATE TABLE work_graph_edges (
225 | Phase | 目标 | 交付物 | 验收标准 | 225 | Phase | 目标 | 交付物 | 验收标准 |
226 |-------|------|--------|----------| 226 |-------|------|--------|----------|
227 | **P0 地基** ✅ | 建表 + 现有数据迁移,不改变任何现有执行路径 | `system_agents`/`org_graph_*` 表;把现有 `system/agents/` + `system/templates/` 目录扫描导入为种子数据(`system_agents` 行,`scope` 按当前所属推断) | 迁移脚本跑完,`system_agents` 表行数与现有 agent+模板目录数一致(**实际行数与本文档最初估计不同,见第七节**);现有 `company-service.js` 行为不变(并行只读验证,已确认零改动) | 227 | **P0 地基** ✅ | 建表 + 现有数据迁移,不改变任何现有执行路径 | `system_agents`/`org_graph_*` 表;把现有 `system/agents/` + `system/templates/` 目录扫描导入为种子数据(`system_agents` 行,`scope` 按当前所属推断) | 迁移脚本跑完,`system_agents` 表行数与现有 agent+模板目录数一致(**实际行数与本文档最初估计不同,见第七节**);现有 `company-service.js` 行为不变(并行只读验证,已确认零改动) |
228 -| **P1 虚拟引用** | 停止文件拷贝,改为引用 | 改造 `AgentManager.getAgentConfig()` + `PromptBuilder.build()` 支持 `(agentId, companyId)` 寻址;`company-service.hire()` 改为创建 org_graph 引用节点而非 `_copyTemplate()`。细化需求与设计见 [27-P1 虚拟引用寻址](./27-p1-virtual-reference.md) | 新雇佣的 agent 不再产生文件拷贝,调用时能正确拼装公共+私有上下文;旧公司(仍是拷贝模式)继续可跑,不强制迁移存量数据 |  
229 -| **P2 Org Graph** | `company.json.agents[]` 迁移为图结构 | `org_graph_nodes`/`edges` 落地;HR/CEO 招聘走新表。细化需求与设计见 [27-P2 Org Graph 落地](./27-p2-org-graph.md) | 现有 Company Dashboard 前端能正确读出 org graph 并渲染(哪怕暂时按列表展示) | 228 +| **P1 虚拟引用** | 停止文件拷贝,改为引用 | 改造 `AgentManager.getAgentConfig()` + `PromptBuilder.build()` 支持 `(agentId, companyId)` 寻址;`company-service.hire()` 改为创建 org_graph 引用节点而非 `_copyTemplate()`。细化需求与设计见 [27-P1 虚拟引用寻址](../../done/system-design/27-p1-virtual-reference.md) | 新雇佣的 agent 不再产生文件拷贝,调用时能正确拼装公共+私有上下文;旧公司(仍是拷贝模式)继续可跑,不强制迁移存量数据 |
  229 +| **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 并渲染(哪怕暂时按列表展示) |
230 | **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`」 | 230 | **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`」 |
231 | ~~**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 两层都加 | 同上 | 231 | ~~**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 | **P4 并行执行与产物索引**(**回收编号**) | fan-out 真并发 + 产物统一索引 | `advanceBatch` 批量拾取(手动模式退化为 `maxConcurrency=1`,行为与 P3 一致);同 agent 多实例隔离(启用 `SessionPool.getKey` 已预留但从未使用的 `scope` 参数);解除「一家公司一个 active root run」;`data/companies/{cid}/tasks/{taskId}/` 产物目录 + `files.json` 检索索引。细化设计见 [27-P4 并行执行与产物索引](./27-p4-parallel-and-artifacts.md) | 3 个并行分支同时 running 且总墙钟明显短于串行;部分失败时 fan-in 停等且可视化「在等谁」;`files.json` 可从节点行 rebuild | 232 | **P4 并行执行与产物索引**(**回收编号**) | fan-out 真并发 + 产物统一索引 | `advanceBatch` 批量拾取(手动模式退化为 `maxConcurrency=1`,行为与 P3 一致);同 agent 多实例隔离(启用 `SessionPool.getKey` 已预留但从未使用的 `scope` 参数);解除「一家公司一个 active root run」;`data/companies/{cid}/tasks/{taskId}/` 产物目录 + `files.json` 检索索引。细化设计见 [27-P4 并行执行与产物索引](./27-p4-parallel-and-artifacts.md) | 3 个并行分支同时 running 且总墙钟明显短于串行;部分失败时 fan-in 停等且可视化「在等谁」;`files.json` 可从节点行 rebuild |
@@ -263,7 +263,7 @@ P0 阶段的处理方式是**迁移脚本层面的临时保护**:`system_agent @@ -263,7 +263,7 @@ P0 阶段的处理方式是**迁移脚本层面的临时保护**:`system_agent
263 - **[27-E2E 端到端任务执行流程](./27-e2e-task-execution-flow.md)** — 跨阶段总览:从建公司 → 下达任务 → org graph 逐节点执行 → work graph 规划与循环 → 验收收敛。**建议先读这一份**,它指出了本文档体系与已有 DevLoop 实现之间的对应关系、三处语义冲突和若干空白。 263 - **[27-E2E 端到端任务执行流程](./27-e2e-task-execution-flow.md)** — 跨阶段总览:从建公司 → 下达任务 → org graph 逐节点执行 → work graph 规划与循环 → 验收收敛。**建议先读这一份**,它指出了本文档体系与已有 DevLoop 实现之间的对应关系、三处语义冲突和若干空白。
264 - **[27-NAMING 命名规范](./27-naming-conventions.md)** — 跨文档命名约定(`{作用域}-{职能}`)。新增 agent id / 表名 / 字段名前必读,避免与既有的 `benchmark` / `goal` 等命名撞车。 264 - **[27-NAMING 命名规范](./27-naming-conventions.md)** — 跨文档命名约定(`{作用域}-{职能}`)。新增 agent id / 表名 / 字段名前必读,避免与既有的 `benchmark` / `goal` 等命名撞车。
265 - **[27-EXAMPLE 参考场景走查](./27-example-dev-company-walkthrough.md)** — 把上面那套架构在一家具体公司上跑一遍数(含各阶段真实形态的 JSON / 图 / 成本估算 / 断点清单)。实现时的靶子与端到端验收场景。 265 - **[27-EXAMPLE 参考场景走查](./27-example-dev-company-walkthrough.md)** — 把上面那套架构在一家具体公司上跑一遍数(含各阶段真实形态的 JSON / 图 / 成本估算 / 断点清单)。实现时的靶子与端到端验收场景。
266 -- [27-P1 虚拟引用寻址](./27-p1-virtual-reference.md) — 已实现(commit `226489d`)  
267 -- [27-P2 Org Graph 落地](./27-p2-org-graph.md) — 设计稿 266 +- [27-P1 虚拟引用寻址](../../done/system-design/27-p1-virtual-reference.md) — 已实现(commit `226489d`)
  267 +- [27-P2 Org Graph 落地](../../done/system-design/27-p2-org-graph.md) — 设计稿
268 - [27-P3/P4 Work Graph 执行控制台](./27-p3-p4-work-graph-console.md) — 已实现(commit `c3abf4a`) 268 - [27-P3/P4 Work Graph 执行控制台](./27-p3-p4-work-graph-console.md) — 已实现(commit `c3abf4a`)
269 - [27-P4 并行执行与产物索引](./27-p4-parallel-and-artifacts.md) — 设计稿 269 - [27-P4 并行执行与产物索引](./27-p4-parallel-and-artifacts.md) — 设计稿