# 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 需轻量子流)。
