diff --git a/apps/ai-game-creator-shell/src-tauri/src/ui_editor/commands/recognition.rs b/apps/ai-game-creator-shell/src-tauri/src/ui_editor/commands/recognition.rs index 039679e31..c2f21bfe1 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/ui_editor/commands/recognition.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/ui_editor/commands/recognition.rs @@ -1,8 +1,8 @@ use crate::config::build_game_creator_llm_client_from_llm_config; use crate::config::load_game_creator_app_config; use crate::ui_editor::commands::utils::{ - read_ui_reference_image_data_url, request_ui_editor_llm, required_tool_arguments, - strict_json_schema, + parse_limited_llm_tool_arguments, read_ui_reference_image_data_url, request_ui_editor_llm, + required_tool_call_arguments, strict_json_schema, }; use crate::ui_editor::component::{Component, NodeComponent}; use crate::ui_editor::layout::children_display_mode::ChildrenDisplayMode; @@ -770,14 +770,24 @@ pub(crate) async fn recognize_ui_impl_with_provider( !response.text.trim().is_empty(), response.tool_calls.len() ); - let arguments = - required_tool_arguments(&response, "recognize_ui_structure").map_err(|error| { + let arguments = required_tool_call_arguments(&response, "recognize_ui_structure") + .map_err(|error| { app_log!( - "ui_recognition.error stage=parse_arguments root={} error={error}", + "ui_recognition.error stage=parse_tool_call reason=missing_tool_call root={} error={error}", root_id.as_str() ); - format!("根界面图 {} 的识别工具参数无效:{error}", root_id.as_str()) + format!( + "LLM 未返回 recognize_ui_structure 工具调用(根界面图 {})", + root_id.as_str() + ) })?; + let arguments = parse_limited_llm_tool_arguments(arguments).map_err(|error| { + app_log!( + "ui_recognition.error stage=parse_arguments root={} error={error}", + root_id.as_str() + ); + format!("根界面图 {} 的识别工具参数无效:{error}", root_id.as_str()) + })?; validate_recognition_response_shape(&arguments).map_err(|error| { app_log!( "ui_recognition.error stage=validate_arguments root={} error={error}",