Files
DevFlow/docs/02-架构设计/构想审查/aichat异步审批构想-2026-06-14.md
绝尘 998a2f243d 文档: 架构方案文档(意图识别论证+多主题愿景/论证+文档物理分类+边界清晰化)
squash合并:
- 意图识别层论证(8维度+10业界佐证)
- 多主题上下文管理愿景+并存论证+补充论证(多轮agentic)
- 架构设计文档物理分类(四子目录+INDEX+命名规范+引用同步+边界清晰化)
- 前端架构技术债清单归档
2026-06-19 15:04:04 +08:00

3.8 KiB

构想:对话 AI 异步审批 — 2026-06-14

性质:功能升级构想,未实现。记录用户提出的方向 + 可行性评估。

构想

对话 AI 的对话与审批改成异步审批:审批 pending 时不卡住整个对话,用户可继续聊别的,审批挂着随时处理。

痛点:当前同步审批卡住对话

当前审批是同步阻塞模型:

  1. LLM 返回 Medium/High tool_callsprocess_tool_calls(audit.rs:170-191)推 pending_approvals + 占位 tool_result("需要用户审批,等待确认")→ agentic loop return(agentic.rs:184-192),generating 保持 true
  2. 等待期间:session.generating = true → 新 ai_chat_send 直接 Err("AI 正在生成中")(commands.rs:45)→ 前端 sendMessage 把新消息入队(useAiSend.ts:36),streaming = true 输入框变停止按钮。
  3. 用户必须先审批(或 stop)才能继续对话。整个对话被审批阻塞。

典型困扰:AI 提出待审批操作,用户想先问个别的(比如"等等,这个项目之前是不是建过?"),被阻塞,必须先处理审批。

难点分析

异步审批的真正难点不在 UI,而在 agent loop 的语义:

  • 同步模型:LLM 发 tool_call → 占位 tool_result → loop 挂起 → 审批后 tool_result 替换为真实结果 → LLM 据真实结果生成下一步。上下文连贯。
  • 异步模型:若审批 pending 时对话继续,LLM 已基于"占位结果"生成后续 → 审批结果回流时上下文已前进 → 不一致。

核心瓶颈是 AiSession 单例 + generating 单标志互斥(防并发混乱)。异步审批 + 并发对话需要 AiSession 多实例化或 sub-session——正是 aichat-arch-extensibility 记录的"剩四空壳/AiSession 单例未动"部分,属 B 路线。

方案分两档

档位一:轻量 — 跨对话异步(推荐先做)

审批 pending 的对话挂起(释放 generating 锁),用户切到别的对话继续聊,审批在原对话挂着,通过后结果回流原对话。

  • 触及:AiSession 从单例 → 多对话独立状态(每对话一个活跃 loop 槽)。
  • 不触及:同对话内 agent loop 语义不变(同对话内审批仍阻塞)。
  • 复杂度:中等,是 B 路线(AiSession 多实例化)的一部分。
  • 价值:解决"审批时想干别的"主诉求(切对话即可),不破坏 agent 语义。

档位二:完整 — 同对话异步

审批不阻塞同一对话,用户在同一对话里继续发消息,审批通过后工具结果作为新上下文回流。

  • 触及:agent loop 语义重设计——LLM 上下文如何处理"待执行工具"(标记转审批?LLM 基于"已转人工"假设继续?)。
  • 可能形态:审批转独立审批队列/通知中心,对话流遇到待审批工具不阻塞,告知"有 N 个待审批"后继续;审批通过后台执行工具,结果追加为新消息。
  • 复杂度:高,接近重做 agent loop。
  • 风险:LLM 上下文一致性、工具结果时效性、多任务并发安全。

评估

维度 档位一(跨对话异步) 档位二(同对话异步)
解决主诉求 切对话即可继续 同对话继续
架构改动 AiSession 多实例化 agent loop 语义重设计
与 B 路线 一部分 接近独立重做
风险 中(并发状态管理) 高(上下文一致性)
建议 先做 评估后定

建议:作为 B 路线一部分,先做档位一(跨对话异步),需先完成 AiSession 多实例化。档位二待 agent 能力升级时再评估。

关联

  • 触及 aichat-arch-extensibility 记录的 AiSession 单例瓶颈。
  • aichat-roadmap-ab-split B 路线(补决策/并发能力)相关。
  • 当前同步审批的其他问题(审批态 stop 卡死、新建对话破坏 session)见 aichat审查报告-2026-06-14.md H2/H3,异步化时一并解决。