Commit 556c0c8786bf1a082f12b4b08555eb014e1a0c4d
1 parent
9ce9dad2
docs(27-p3-p4): 真实验证按需 hire 路径,四条硬规矩欠账只剩本质限制
隔离 worktree + 真 Claude CLI 探针:CompanyService.create() 建一家有真实 company.json 但从未雇过 workgraph-planning 的公司,建最小 subgraph 节点 work graph 并驱动一步。resolvePlanningAgentName 的按需 hire 真实触发并成功 (区别于 27-P3B §六quater 那次因公司无 company.json 而降级回裸名的反例), 随后按公司作用域名正确寻址、workgraph-planning 真实规划出子 work graph。 四条硬规矩第 2 条现在只剩 (a) 真 LLM 进不了 CI 这条本质限制,(b)(c) 均已还清。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JnCKUFSGvdz4SY7BvYWdMU
Showing
2 changed files
with
20 additions
and
3 deletions
docs/README.md
| ... | ... | @@ -60,7 +60,7 @@ Graph Agent 架构重构(27 系列)。**已完成的阶段文档已移入 `d |
| 60 | 60 | | [27-naming-conventions.md](./todo/system-design/27-naming-conventions.md) | **命名规范**。`{作用域}-{职能}`;图节点按层级轴命名;节点名 ≠ 本体名;三种 benchmark 消歧;OKR 正名。新增 agent id / 表名 / 字段名前必读 | |
| 61 | 61 | | [27-e2e-task-execution-flow.md](./todo/system-design/27-e2e-task-execution-flow.md) | 端到端流程总览:建公司 → 下达任务 → org graph 逐节点执行 → work graph 规划与循环 → 验收收敛。含与 DevLoop 既有实现的对应关系分析 | |
| 62 | 62 | | [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` 两支 + 多节点/回退边/双层熔断三种形状。剩下的只有真 LLM(本质限制,进不了 CI)与按需 hire 那一段未走过这条链路 | | |
| 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 | 64 | | [27-goal-contract-format.md](./todo/system-design/27-goal-contract-format.md) | 验收契约格式(`goal-benchmark` / `goal-test-data` / `goal-test-script` 的产物形态与跨节点传递) | |
| 65 | 65 | | [28-followups.md](./todo/system-design/28-followups.md) | 28 号(Agent 注册表统一)的遗留清单 — 主文档已在 `done/`,这份装没做完的:dream 机制(设计见 29 号,已实现,见下)、`source_kind`(✅已删)/`legacy_path`(不能删)删列、三项「已实施未验证」。任务态清理(✅已实现,见下)。§五 是**已立起来的守卫清单**(别重复造,也别删) | |
| 66 | 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 交给人工 | | ... | ... |
docs/todo/system-design/27-p3-p4-work-graph-console.md
| ... | ... | @@ -1069,8 +1069,25 @@ agent 默认**只挂载 `meta-research` 一个元技能**,必须主动呼叫 ` |
| 1069 | 1069 | > `company-hire-org-layer.test.js` 盯着。 |
| 1070 | 1070 | > |
| 1071 | 1071 | > **还没还的部分,别当成还清了**:(a) 真 LLM 仍然进不了 CI(要额度、分钟级、输出不确定), |
| 1072 | - > `scripts/real-pm-smoke.js` 仍是人工跑(这条是本质限制,不是欠账,不会有"还清"的一天); | |
| 1073 | - > (c) 按需 hire 那一段没在这条链路里走过。 | |
| 1072 | + > `scripts/real-pm-smoke.js` 仍是人工跑(这条是本质限制,不是欠账,不会有"还清"的一天, | |
| 1073 | + > 只能靠隔一段时间人工真跑一次核实,见下一条)。 | |
| 1074 | + > | |
| 1075 | + > **2026-09-09:(c) 已还上**——隔离 worktree、真 Claude CLI(不是 mock)跑了一次专门探针: | |
| 1076 | + > `CompanyService.create()` 建一家有真实 `company.json` 但**从未雇过 `workgraph-planning`** | |
| 1077 | + > 的公司(`ondemand-hire-mttqdwqh`),建一张只有一个 `subgraph` 节点的最小 work graph 并驱动 | |
| 1078 | + > 一步。日志实测:`[Company] ✅ ondemand-hire-mttqdwqh 招聘 workgraph-planning(引用本体 | |
| 1079 | + > system/agents/workgraph-planning)`——`resolvePlanningAgentName` 的按需 hire 真的触发了、 | |
| 1080 | + > 真的成功了;随后的 `AgentManager` session key 里 agent 名是 `ondemand-hire-mttqdwqh: | |
| 1081 | + > workgraph-planning`(带公司前缀的作用域名,不是裸名),证明 hire 之后走的是正确的寻址路径。 | |
| 1082 | + > `workgraph-planning` 真实规划出一张子 work graph(引用 `coder`,落库为 `wg_0cc5bbb6a660`), | |
| 1083 | + > 子 run 正确创建(`run_9fcf09d9b946`,`parent_run_id`/`parent_node_run_id` 都指对)。 | |
| 1084 | + > 顺带核实了 `company_agents` 表事后确实是 `[workgraph-planning, coder]`,`org_graph` 里只有 | |
| 1085 | + > `coder`、没有 `workgraph-planning` 混进去(W7 判据①的豁免生效:`workgraph-planning` 的 | |
| 1086 | + > `config.type='meta-planning'` 不写 org 节点)。此前 27-P3B §六quater 那次真跑(`accept9-*`) | |
| 1087 | + > 里同一条按需 hire 路径其实也被撞到过,但当时公司是用裸 DB insert 造的、没有 `company.json`, | |
| 1088 | + > hire 因此**失败**并降级回裸名(日志「公司不存在」)——那次只证明了「hire 失败时优雅降级」, | |
| 1089 | + > 没证明「hire 真的能成功」;这次是补的正例。跑完即删(worktree + `scripts/real-ondemand-hire-run.js` | |
| 1090 | + > 均未提交,一次性探针脚本)。 | |
| 1074 | 1091 | > |
| 1075 | 1092 | > **2026-09-08:(b) 已还上**——`graph-real-chain-smoke.test.js` 新增 ⑥⑦⑧ 三例: |
| 1076 | 1093 | > ⑥ 非法契约真的判 fail(不是 success)且判词/归因落库;⑦ 两节点图 + 一条 backward | ... | ... |