From a69057a1effb08b3c2ebc5f5b6ab639388699908 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=9D=E5=B0=98?= <237809796@qq.com> Date: Sat, 1 Aug 2026 15:54:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=20aichat=20Plan-driven=20?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E6=96=87=E6=A1=A3(=E5=AF=B9=E8=AF=9D?= =?UTF-8?q?=E6=8E=A2=E8=AE=A8=E6=88=90=E6=9E=9C=E5=9B=BA=E5=8C=96)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aichat-plan-driven-设计-2026-08-01.md | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 docs/02-架构设计/专项设计/aichat-plan-driven-设计-2026-08-01.md diff --git a/docs/02-架构设计/专项设计/aichat-plan-driven-设计-2026-08-01.md b/docs/02-架构设计/专项设计/aichat-plan-driven-设计-2026-08-01.md new file mode 100644 index 0000000..c7d9df3 --- /dev/null +++ b/docs/02-架构设计/专项设计/aichat-plan-driven-设计-2026-08-01.md @@ -0,0 +1,61 @@ +# aichat Plan-driven 设计(2026-08-01,对话探讨确定) + +## 背景 + +DevFlow 第一步 = 开发者 AI Coding,AI Chat 对话为唯一入口。当前 agentic loop 是单链 ReAct(反应式),用户痛点:工具/CMD 失败多 + 过程黑盒 + 不放心。用户要**执行前先基本规划**(Plan-then-Execute),且规划**可见**(前端展示)。 + +## 设计决策(用户对话探讨定) + +| 维度 | 决策 | 理由 | +|---|---|---| +| **可见性** | 前端展示计划(非 AI 内部思维) | 用户"看得见才放心" | +| **确认** | 按 risk 看情况(Low 直跑 / High 审批),**不强制每次确认** | 避免确认动作卡住执行;复用现有审批门控(risk 分级) | +| **过程粒度** | 细到工具(read_file X / patch_file Y / run cargo) | 执行中看每步,最放心 | +| **完成后** | 动态自动折叠(隐藏过程细节,突出结果/总结),可手动展开回看 | 完成后突出需看到的(结果),不淹没在过程细节 | +| **目标锚定** | AI 自动从对话推理目标(不靠用户手动钉) | 对话驱动,AI 主动;补 infer_goal 盲区(纯分析无工具时目标空) | + +## 核验基础(wgotj3dfb workflow,2026-08-01) + +| 组件 | 现状 | 缺口 | +|---|---|---| +| coordinator.rs(1114 行) | DAG 分层并行 + token 预算池 + 冲突仲裁,**非空壳** | decompose 是关键词匹配(非 LLM);LLMDriven 枚举空壳(:73-88) | +| planner.rs | Plan/SubTask DAG + validate + to_layers(Kahn)**完整**,50+ 测试 | 仅门控 filter_tool_defs_planned(排序工具),不驱动执行 | +| plan_executor.rs | 骨架(JoinSet 未实装,串行模拟) | PLAN_EXECUTION_ENABLED=false(默认关);FnMut 闭包不能进 JoinSet | +| agentic loop(mod.rs) | 纯单链 ReAct(for iteration → stream → process_tool_calls) | Plan 入口 mod.rs:973-1051 门控 plan_execution_enabled 但默认关 + dispatch mock | +| 目标 G1 | ✅ 已就绪(system_prompt 每轮重注入 + 压缩解耦) | infer_goal_from_tool_calls 盲区(无工具时目标空);前端无主动入口(用户不要手动,要 AI 自动) | + +## 实施分步(4 性:合理机制/简洁/可靠兜底/健壮;开关默认关,gradual) + +### Phase 1:backend LLM 规划端(中改 + 开关) +- coordinator.rs decompose 加 LLMDriven 分支:调 LLM(system prompt 引导出 Plan JSON:步骤 + tool_hint + risk + deps)+ 解析 + planner.validate 兜底。 +- 开关 AICHAT_PLAN_ENABLED(默认关,gradual 灰度)。 +- 兜底:Plan 失败/LLM 错/解析失败 → 回退纯 ReAct(不影响现有)。 +- emit Plan(步骤 + 状态)供前端展示。 + +### Phase 2:Plan 执行调度(中改) +- plan_executor 接通:Plan → to_layers → 按层调度(独立步并行 via JoinSet / 依赖串行)+ 每步调工具/agentic。 +- 每步状态(pending/running/done/failed)emit 给前端。 +- 按 risk:Low 直跑,High 走审批(复用现有 audit/approval)。 + +### Phase 3:前端计划卡片(动态折叠) +- 计划卡片组件:步骤列表(工具级 + risk 徽章 + 状态)。 +- 执行中:展开(看每步 tool/输出/进度)。 +- 完成后:自动折叠(隐藏过程,突出结果/总结),可手动展开。 +- 用户介入:改计划/停。 + +### Phase 4:目标自动推理(补 infer 盲区) +- AI 自动从对话推理目标(LLM 生成附带 current_goal,或首轮 LLM 推理),覆盖纯分析/问答无工具场景。 +- 不靠用户手动钉(对话驱动)。 + +## 关联 + +- memory `aichat-b-route-parallel-multiround`:Plan-driven 子流并行(本设计的并行维度)。 +- memory `devflow-aichat-goal-loss-diagnosis`:目标丢失诊断(G1 已治 R1/R3/R5)。 +- memory `aichat-decision-capability`:单链 ReAct,无规划式(本设计补)。 +- wgotj3dfb 核验:coordinator/planner/plan_executor 当前形态(2026-08-01)。 + +## 不做(当前第一步 AI Coding 范围外) + +- 通用多 Agent 编排(u-box/ai-working 阶段)。 +- 复杂 Plan DAG(子任务分解 + 多 Agent)—— 当前"基本规划"(线性/简单依赖)。 +- df-workflow 复用(它是用户编排工作流运行时,Node trait 重;Plan-driven 需轻量子流)。