新增: spawn_agent 子代理派发与级联取消

- 纯内存子会话隔离上下文,一轮回传结论报告
- 白名单钳制低风险并恒剔 spawn_agent 防递归
- 子代理策略下高风险自动拒绝,不挂审批防卡死
- 轮数令牌挂钟三重熔断
- 父停止与删会话级联取消子代理
- AiAgentFinished 事件挂父会话
This commit is contained in:
lxy
2026-10-01 19:35:21 +08:00
parent 524120b110
commit 2187ffe173
13 changed files with 1407 additions and 21 deletions
+17
View File
@@ -222,6 +222,23 @@ pub enum AiChatEvent {
/// - 点继续 → ai_continue_loop → try_continue_agent_loop 再跑 max_iterations 轮
/// - 点停止 → ai_stop_loop → 走完成流程(save + AiCompleted + generating=false)
AiMaxRoundsReached { conversation_id: Option<String> },
/// 子代理结束(spawn_agent v1):每个子循环统一出口经挂父会话 emit 一条,
/// 汇总子代理终态供前端展示(消费二期)。报告本体不经本事件传输(经父 tool_result
/// 返回值交付),此处 summary 仅为终态快照摘要。
///
/// 字段:
/// - `agent_id`:子会话 id(形态 `{parent}::agent-{n}`,与 Started 无对应卡,独立事件)
/// - `conversation_id`:父会话 id(路由键,挂父不挂子,子会话不在侧栏)
/// - `status`:"completed" | "truncated" | "failed"
/// - `rounds`/`tokens`:实际执行轮数与累计 token(启动失败为 0)
AiAgentFinished {
agent_id: String,
conversation_id: Option<String>,
summary: String,
status: String,
rounds: u32,
tokens: u64,
},
/// 流式调用自动重试提示流前失败重试中)
///
/// 每次重试前 emit,前端可在错误气泡内显示「重试 n/m」。