diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/claude_code_cli.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/claude_code_cli.rs index d708d436a..f0310c4fa 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/claude_code_cli.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/claude_code_cli.rs @@ -831,7 +831,17 @@ pub(crate) async fn direct_game_creator_claude_code_chat_at( .collect::>(); stream.push(String::new()); direct_turn_trace("claude-parse-start"); - parse_direct_stream_result(stream.join("\n").as_bytes(), observer) + let parsed = parse_direct_stream_result(stream.join("\n").as_bytes(), observer); + match &parsed { + Ok(text) => direct_turn_trace(&format!("claude-parse-done chars={}", text.chars().count())), + Err(error) => { + // 这一段必须走 stderr:AppData 日志的脱敏会把含 turnToken= 的整行替换掉, + // 收尾失败时看不到任何原因(真实案例:2026-10-02 18:19 模型已回复但回合被丢弃)。 + eprintln!("[agc-cc-direct] parse failed: {error}"); + direct_turn_trace("claude-parse-error"); + } + } + parsed } fn parse_direct_stream_result(