docs(eino): 诚实修正 Phase C —— 报告流水线未 compose 化(刻意保留独立路径)
Phase C 改动清单曾把「report.go 改用 compose」标 ✅,实际 report intent 仍走独立 handleReport(writeSections 并发流水线),不经 compose.Graph。改为诚实记录:报告是 固定形状专用流水线、并行已由 writeSections 拿到,硬迁移只是拿稳定功能冒回归风险、 无用户可见收益,故刻意保留为 compose 之外的第二条编排路径。顺带把 Phase C 头部 灰度开关的陈旧描述更新为「已单引擎、graph.go 退役」的实况(与代码一致)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+8
-2
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
- [x] **Phase A · 地基**:`llm.Pool` 换 Eino ChatModel 组件(commit d84b1ec,验收通过)
|
- [x] **Phase A · 地基**:`llm.Pool` 换 Eino ChatModel 组件(commit d84b1ec,验收通过)
|
||||||
- [x] **Phase B · 质变**:MCP 工具→`InvokableTool` + ReAct agent(模型自主调工具,验收 7/7 命中)
|
- [x] **Phase B · 质变**:MCP 工具→`InvokableTool` + ReAct agent(模型自主调工具,验收 7/7 命中)
|
||||||
- [x] **Phase C · 编排归一**:✅ 全图 `DSL→compose.Graph` 编译器(全节点 + branch + DAG 并行调度)+ callbacks→ExecEvent 归一,等价回归通过(EINO_COMPOSE 灰度开关,默认关;过渡期后 graph.go 退役)
|
- [x] **Phase C · 编排归一**:✅ 全图 `DSL→compose.Graph` 编译器(全节点 + branch + DAG 并行调度)+ callbacks→ExecEvent 归一,等价回归通过;灰度期已过、graph.go 退役、compose 为唯一引擎(**例外**:报告 intent 仍走独立 `handleReport` 流水线,刻意未 compose 化,理由见 Phase C 改动清单)
|
||||||
- [~] **Phase D · 状态化执行**:✅ 任务生命周期 FSM / ✅ HITL 人工审批中断(审批节点暂停→waiting→批准回 running / 拒绝→rejected,NATS 决定回传 + AckWait 续租,全栈含 Studio 审批节点 + 运行抽屉批准条)/ ⬜ 多智能体(按场景)
|
- [~] **Phase D · 状态化执行**:✅ 任务生命周期 FSM / ✅ HITL 人工审批中断(审批节点暂停→waiting→批准回 running / 拒绝→rejected,NATS 决定回传 + AckWait 续租,全栈含 Studio 审批节点 + 运行抽屉批准条)/ ⬜ 多智能体(按场景)
|
||||||
|
|
||||||
**组件化补完(A)**:检索 → `ragRetriever`(`components/retriever.Retriever`,`eino_components.go`);提示词 → `buildMessages` 改用 `prompt.FromMessages`+`MessagesPlaceholder`;工具 → `mcpTool`(`InvokableTool`,模型自主调用)。至此终态架构 8 层中 模型/工具/检索/提示词/编排/智能体(单)/可观测 均已 Eino 组件化;剩 人机交互(中断恢复,按场景)。
|
**组件化补完(A)**:检索 → `ragRetriever`(`components/retriever.Retriever`,`eino_components.go`);提示词 → `buildMessages` 改用 `prompt.FromMessages`+`MessagesPlaceholder`;工具 → `mcpTool`(`InvokableTool`,模型自主调用)。至此终态架构 8 层中 模型/工具/检索/提示词/编排/智能体(单)/可观测 均已 Eino 组件化;剩 人机交互(中断恢复,按场景)。
|
||||||
@@ -150,7 +150,13 @@ github.com/cloudwego/eino-ext/... # ⚠️ 官方组件实现(open
|
|||||||
- `sundynix-dispatcher/internal/dsl/compile.go`(兑现文件头那句 TODO:"演进为 compose.NewGraph 的完整多节点编译")
|
- `sundynix-dispatcher/internal/dsl/compile.go`(兑现文件头那句 TODO:"演进为 compose.NewGraph 的完整多节点编译")
|
||||||
- 写 `DSL Flow → compose.Graph` 编译器:节点映射为 ChatModel / ToolNode / Retriever / `Lambda`;连线 → 边;branch 真假 → `compose` 分支;map → 并发分支。
|
- 写 `DSL Flow → compose.Graph` 编译器:节点映射为 ChatModel / ToolNode / Retriever / `Lambda`;连线 → 边;branch 真假 → `compose` 分支;map → 并发分支。
|
||||||
- `callbacks`:实现 handler 把 Eino 回调桥接到现有 `ExecEvent`(节点 start/end/error + 耗时),统一可观测,不重复造。
|
- `callbacks`:实现 handler 把 Eino 回调桥接到现有 `ExecEvent`(节点 start/end/error + 耗时),统一可观测,不重复造。
|
||||||
- `report.go`:报告多步流水线改用 compose(章节并行 + 汇聚天然契合)。
|
- ~~`report.go`:报告多步流水线改用 compose(章节并行 + 汇聚天然契合)。~~
|
||||||
|
**实际未迁,刻意保留为独立路径(诚实修正)**:`orchestrator.go` 按 `intent==IntentReport`
|
||||||
|
分流到 `handleReport`,用自研 `writeSections`(WaitGroup + 信号量并发 + 部分失败可见标记)做
|
||||||
|
规划→分章并行→渲染,**不经 compose.Graph**。原因:① 报告是固定形状的专用流水线(规划-map-渲染),
|
||||||
|
并行能力已由 `writeSections` 拿到,compose 化不带来用户可见收益;② 硬迁移会拿一个有单测背书、
|
||||||
|
已 live 验证的稳定功能去冒回归风险。故报告是 compose 之外的第二条编排路径,通用 DSL 图仍全走 compose。
|
||||||
|
真要归一(去掉第二条路径)另立任务评估,非本阶段承诺。
|
||||||
- 检索节点 → `components/retriever`(包 mcp-go RAG);提示词 → `components/prompt.ChatTemplate`。
|
- 检索节点 → `components/retriever`(包 mcp-go RAG);提示词 → `components/prompt.ChatTemplate`。
|
||||||
- **对齐策略**:compose 版与 graph.go 版**并存**,用 `graph_test.go`/`integration_test.go` 做等价回归;全绿且灰度通过后,`graph.go` 才退役。
|
- **对齐策略**:compose 版与 graph.go 版**并存**,用 `graph_test.go`/`integration_test.go` 做等价回归;全绿且灰度通过后,`graph.go` 才退役。
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user