新增: 并行多轮Phase0落地路线图+4agent论证整合
Phase0十维方案(锁分片/三层Semaphore/sub_react_loop/审批sub_flow/压缩协调/UX事件schema/规划校验/planner+plan_hint/全局协调/测试矩阵)+路线图(DAG/关键路径115人时/0a-0b-0c三子阶段独立可回退);4agent共识P0机制缺失须先Phase0
This commit is contained in:
@@ -131,3 +131,109 @@ struct SubTask {
|
||||
3. **每 Phase 核心功能级测试**(单测 + 集成 + 边界 + 并发竞态),非跑通即止
|
||||
|
||||
> 全局设计可能需多代理并行调研各维度(架构/资源/UX/并发/授权),汇总全局方案。
|
||||
|
||||
## 十三、4 Agent 多角度论证共识(2026-06-20 架构/并发/UX/全局平衡)
|
||||
|
||||
4 agent 独立核验源码(非信文档自述)后**一致结论**:方向站得住,但 P0 机制缺失,**不可直接进 Phase 1**,须先 Phase 0 全局设计补机制。
|
||||
|
||||
### 🔴 致命(物理不可并行,必须先解决)
|
||||
|
||||
| # | 风险 | 证据 | 影响 |
|
||||
|---|---|---|---|
|
||||
| P0-1 | **AiSession 单 Mutex 全锁**:`process_tool_calls(&mut AiSession)` 持全锁,多子流并发必串行化 | audit/mod.rs:206 签名 / mod.rs:271 单 Arc<Mutex> | 并行多轮物理上不并行(伪命题) |
|
||||
| P0-2 | **三层 Semaphore 配额冲突**:global=3 硬天花板,3conv×3sub=9 路抢 3 permit → 6 阻塞 | state.rs:526 LlmConcurrency::new(3,2) 无 sub 层 | 并行收益归零 |
|
||||
| P0-3 | **子 loop 复用 run_agentic_loop 不可行**:14 参 + GeneratingGuard + per_conv permit + 审批全绑单 conv | agentic/mod.rs:308-322 | 子流复用必互相复位/抢占/路由错乱 |
|
||||
|
||||
### 🔴 安全
|
||||
|
||||
| # | 风险 | 证据 |
|
||||
|---|---|---|
|
||||
| P0-4 | **审批无 sub_flow 路由**:PendingApproval 无 sub_flow_id,审批恢复子流 context 路由不明 | mod.rs:556 struct |
|
||||
| P0-5 | **session_trust 并发信任污染**:子流 A 批准目录 → 子流 B 自动放行,绕过独立审批 | audit/mod.rs:356 trust 命中 / PerConvState.session_trust 会话级共享 |
|
||||
|
||||
### 🔴 Phase 3 失败前置
|
||||
|
||||
| # | 风险 | 证据 |
|
||||
|---|---|---|
|
||||
| P0-6 | **coordinator 语义漂移**:多 Agent 协作空壳 → Plan 调度,未推翻既有"B 路线多 agent 占位"决策(4 处文档) | coordinator.rs:1-3 / 功能决策记录 L427-429 |
|
||||
| P0-7 | **规划质量校验机制空**:Plan 无 validate()(环/粒度/依赖完整性),Phase 2 无 go/no-go 量化判据 | coordinator.rs 空壳 + Plan 结构 |
|
||||
| P0-8 | **上下文压缩协调缺失**:子流 messages 压缩/丢弃策略空 → token 爆炸 | compress_via_llm agentic/mod.rs:725 |
|
||||
|
||||
### 🟡 重要(Phase 1/3 前补)
|
||||
|
||||
- PerSubFlowState 字段共享/独立边界未定义(messages/stop/iteration 独立;trust/language/model 共享)
|
||||
- UX 事件 schema 无 sub_flow_id(G1-G7:currentText 单累加器/AiMessage 无字段/无生命周期事件/streaming 单布尔/pending 单值)
|
||||
- intent 与 plan 语义错位(filter 按主消息单 intent 收敛,子流跨多 intent 工具被滤)
|
||||
- 失败降级边界未定义(全子流失败/汇总 LLM 失败/sub_flow 超时回滚)
|
||||
- plan_hint 塞 intent.rs 职责模糊 → 独立 plan_hint.rs
|
||||
- Plan deps 与 parallel_groups 冗余 → 删 parallel_groups 只存 deps(Kahn 分层)
|
||||
- 标题生成/知识提炼/记忆审计 sub_flow_id 协调缺失
|
||||
|
||||
## 十四、Phase 0 全局设计(实施前置,整合 4 agent 解决方案)
|
||||
|
||||
**目标**:补 P0 机制,使并行多轮物理可行 + 安全 + 全局协调。**Phase 1 实施的硬前置**。
|
||||
|
||||
### 0.1 锁分片模型(P0-1)
|
||||
- `AiSession.per_conv: HashMap<conv_id, Arc<Mutex<PerConvState>>>`(每 conv 独立锁)
|
||||
- PerConvState 内 `sub_flows: HashMap<sub_flow_id, Arc<Mutex<SubFlowState>>>`(每子流独立锁)
|
||||
- `process_tool_calls` 改按 sub_flow_id 取局部锁,不持全 AiSession 锁
|
||||
- pending_approvals 独立 Arc<Mutex<HashMap>>,与 per_conv 锁不嵌套
|
||||
- **锁顺序约定**(文档化):allowed_dirs(R) → release → per_conv Mutex → release → pending Mutex
|
||||
|
||||
### 0.2 三层 Semaphore 协议(P0-2)
|
||||
- `global`(全应用 LLM 硬上限,上调如 8) > `per_conv`(单 conv 总并发=主+辅+sub,上调如 6) > `per_sub_flow`(单 conv 内 sub 并发,默认 3)
|
||||
- 公式:`sum(sub_permit across convs) ≤ global`,超限降级串行(回退 Phase 2 串行 execution)
|
||||
- 新增 `acquire_per_sub_flow(conv_id)` + 全局硬上限 `max_total_sub_flows`(如 8)
|
||||
- per_conv permits 上调(主1 + 辅2 + sub3 = 6),否则子流饿死
|
||||
|
||||
### 0.3 sub_react_loop(P0-3)
|
||||
- 抽 run_agentic_loop 核心 ReAct 内核(stream→tool_calls→tool_result→loop),**无 guard/无 per_conv permit/不写 pending_approvals**
|
||||
- 主 loop 改 Plan 调度器:planning → spawn sub_react_loop(parallel_groups)→ join → 汇总
|
||||
- GeneratingGuard 升级 sub_flow 级或共享 conv 级
|
||||
|
||||
### 0.4 审批 sub_flow 路由(P0-4/5)
|
||||
- PendingApproval 加 `sub_flow_id: Option<String>`
|
||||
- ai_approve/try_continue 按 (conv_id, sub_flow_id) 路由
|
||||
- session_trust 并发隔离:子流不走 trust 自动放行(或 per-sub_flow trust)
|
||||
- 高危去重缓存加 sub_flow_id 维度
|
||||
|
||||
### 0.5 上下文压缩协调(P0-8)
|
||||
- PerSubFlowState.messages 独立压缩(子流级 budget)
|
||||
- 子流结果回主后,子流 messages 标 archived(释放 token,防会话膨胀)
|
||||
|
||||
### 0.6 UX 事件 schema(G1-G7)
|
||||
- AiChatEvent 加 `sub_flow_id?: string`(undefined=主链/单流,向后兼容)
|
||||
- 新增 AiSubFlowStarted/Completed/Cancelled 三事件
|
||||
- AiMessage 加 sub_flow_id/sub_flow_goal
|
||||
- currentText 分流:planning→sub_flows_running(Map<sub_flow_id,text>)→summarizing(复用单源)→completed
|
||||
- streaming 分层:streaming(整轮布尔)+ subFlowsStreaming(计数)
|
||||
- 子流 UI 模型:每子流=可折叠 assistant 卡片(标题=goal+进度),汇总=主链气泡
|
||||
- 中断两级:整轮 stopChat(已有)+ sub_flow ai_cancel_sub_flow(新 IPC)
|
||||
|
||||
### 0.7 规划校验 + Phase 2 go/no-go(P0-7)
|
||||
- `Plan::validate()` 枚举 PlanError {CycleDetected/UnknownDep/OrphanSubtask/SubtaskWithoutTools}
|
||||
- Plan 删 parallel_groups,只存 deps,运行时 Kahn 分层(单一真相源)
|
||||
- Phase 2 验收:人工抽检 N 任务,规划合法率 ≥ 80% 才进 Phase 3
|
||||
- 规划失败/校验不过 → 回退单链 ReAct(planning_fallback_to_react)
|
||||
|
||||
### 0.8 planner.rs + plan_hint.rs(P0-6 + 职责)
|
||||
- 新建 `crates/df-ai/src/planner.rs`(Plan 调度,纵向拆解)
|
||||
- coordinator.rs **保留**多 Agent 协作占位(横向角色),不挪用
|
||||
- plan_hint 独立 `plan_hint.rs`(纯函数),不塞 intent.rs
|
||||
- 显式推翻功能决策记录 L427-429(coordinator 语义收窄)+ 更新 4 处文档
|
||||
|
||||
### 0.9 全局协调补(标题/提炼/记忆)
|
||||
- 标题生成:子流 LLM 与标题争 per_conv permit 协调
|
||||
- 知识提炼:"对话完成"= 所有子流 join 完成;提炼输入主 messages
|
||||
- 记忆/审计:audit_tool_call 加 sub_flow_id 维度(回溯)
|
||||
|
||||
### 0.10 测试矩阵(核心功能级)
|
||||
- 并发竞态:同文件并发写 / sub_flow 审批与 stop 竞态 / Plan 五类非法形态 / 全子流失败 / 汇总 LLM 失败 / global 耗尽降级 / trust 并发污染 / 高危缓存并发未命中
|
||||
- 对齐 intent.rs 苛刻测密度
|
||||
|
||||
## 十五、决策记录(更新)
|
||||
|
||||
- **2026-06-20 用户**:场景常见,**必须做,核心功能,打磨漂亮,全局平衡**。B 路线启动。
|
||||
- **2026-06-20 4 agent 论证**:P0 机制缺失,**Phase 0 全局设计优先**(十四章 10 维度),Phase 1 等全局设计成熟。
|
||||
- 实施:Phase 0(全局设计补机制)→ Phase 1(plan_hint)→ Phase 2(planning 验证)→ Phase 3(并行 execution)。不跳 Phase。
|
||||
- **待用户确认**:Phase 0 十维方案(0.1-0.10)是否认同 → 启动 Phase 0 设计落地。
|
||||
|
||||
Reference in New Issue
Block a user