重构: F-09 batch4 启用多会话上线(决策e真并发·F-09完整)

- IPC签名加conv_id: ai_is_generating/ai_chat_send/ai_chat_force_send/ai_chat_stop + 内部移除active一致性校验(后台conv可操作)
- 删switch readonly分支 + 删ai_conversation_create强制结束旧loop(决策e,切走旧loop不退出)
- 删双写桥接+顶层字段: messages/generating/stop_flag/notify/iteration_used/agent_language/model_override/session_trust全删,per_conv唯一真相源 + 删双写代码(全模块)+ 删fallback读 + pending_approvals retain目标conv
- 前端: api/ai.ts+useAiSend/useAiWindow传conv_id
保留: session_state(SW预留标allow)/readonly(前端不读);零调用方预留按用户指导保留
主代兜底: cargo check --workspace 0 + vue-tsc 0 + test 98 + grep顶层删除/per_conv唯一印证
F-09完整(batch1 PerConvState+batch2迁移+batch5限流调整+batch8恢复+batch4上线);双会话人工验收留用户
This commit is contained in:
2026-06-19 03:03:48 +08:00
parent 2b40f65ef2
commit d899c58682
10 changed files with 345 additions and 522 deletions

View File

@@ -116,9 +116,10 @@ export async function restoreGeneratingState(opts?: { fromMainPanel?: boolean })
const gen = fromMainPanel ? state.activeConversationId : localStorage.getItem('df-ai-gen')
if (!gen) return false
// 核对后端 ai_is_generating 真值
// F-260616-09 B 批4(决策 e):传 gen(目标 conv)精确查,不读全局单值。
let backendGenerating = false
try {
backendGenerating = await invoke<boolean>('ai_is_generating')
backendGenerating = await invoke<boolean>('ai_is_generating', { conversationId: gen })
} catch (e) {
console.error('[AI] restoreGeneratingState: 核对 ai_is_generating 失败,跳过重建生成态', e)
return false