diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_project_history.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_project_history.rs index e51c425ae..b552a53b9 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_project_history.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_project_history.rs @@ -140,15 +140,18 @@ pub(crate) fn append_direct_project_history_item_at( } let _project_lock = crate::project::acquire_project_write_lock(root, "conversation.write")?; let path = history_path(root); - prepare_game_creator_private_path_for_read(&path, false, "DirectProject 历史")?; + let history_exists = + prepare_game_creator_private_path_for_read(&path, false, "DirectProject 历史")?; let lock = project_append_lock_for(&path)?; let _append_guard = lock.lock("DirectProject 历史追加写")?; - if let Some(item_id) = item.get("id").and_then(Value::as_str) { - if let Some(existing) = find_direct_project_history_item_by_id_at(&path, item_id)? { - if &existing == item { - return Ok(()); + if history_exists { + if let Some(item_id) = item.get("id").and_then(Value::as_str) { + if let Some(existing) = find_direct_project_history_item_by_id_at(&path, item_id)? { + if &existing == item { + return Ok(()); + } + return Err(format!("DirectProject 历史 item id 冲突:{item_id}")); } - return Err(format!("DirectProject 历史 item id 冲突:{item_id}")); } } let line = record(item)?;