From 462db8f3bf121ad5c2a2bcad8a8b62452ae86ea0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Sat, 5 Sep 2026 11:51:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20DirectProject=20=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E5=8E=86=E5=8F=B2=E6=94=B6=E5=B0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 异常收尾时尝试写入全部未完成消息 保留首个落盘错误并避免后续部分历史被丢弃 --- .../src/agent/direct_project_turn_history.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_project_turn_history.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_project_turn_history.rs index 62e161d0b..c2c317692 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_project_turn_history.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_project_turn_history.rs @@ -41,8 +41,14 @@ pub(crate) fn persist_direct_project_partial_items_at( root: &Path, accumulator: &mut DirectProjectHistoryAccumulator, ) -> Result<(), String> { - for item in accumulator.take_partial_items() { - append_direct_project_history_item_at(root, &item)?; + let items = accumulator.take_partial_items().collect::>(); + let mut first_error = None; + for item in items { + if let Err(error) = append_direct_project_history_item_at(root, &item) { + if first_error.is_none() { + first_error = Some(error); + } + } } - Ok(()) + first_error.map_or(Ok(()), Err) }