From c9e4a7e3974bb937a3490d59e9b9b11cf5bcd2b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Thu, 1 Oct 2026 14:03:43 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BE=8E=E6=9C=AF=E5=87=86=E5=A4=87=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E7=BC=BA=E7=9C=81=E6=97=B6=E7=9B=B4=E6=8E=A5=E6=9E=84?= =?UTF-8?q?=E9=80=A0=20ReuseOrCreate=EF=BC=8C=E5=8E=BB=E6=8E=89=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E8=B7=AF=E5=BE=84=E7=9A=84=20expect?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - art_preparation_mode 在 mode 缺省时走 from_tool_value(None).expect("default art preparation mode"),依赖「None 必然映射为 ReuseOrCreate」这条隐式不变式 - 缺省值就是 ReuseOrCreate,直接返回该变体即可;显式传入 mode 的解析路径不变,少一条潜在 panic 分支 - bridge_argument_bounds_are_deterministic 断言缺省模式仍为 ReuseOrCreate,继续通过 验证:cargo check --bin genarrative-ai-game-creator-shell --tests;cargo test -- agent::direct_tool_bridge::tests::bridge_argument_bounds_are_deterministic 通过 --- .../src-tauri/src/agent/direct_tool_bridge.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tool_bridge.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tool_bridge.rs index b14d8eb13..d69dc5e20 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tool_bridge.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/direct_tool_bridge.rs @@ -2671,8 +2671,7 @@ fn art_preparation_mode( arguments: &Value, ) -> Result { match arguments.get("mode").filter(|value| !value.is_null()) { - None => Ok(DirectTaonierArtPreparationMode::from_tool_value(None) - .expect("default art preparation mode")), + None => Ok(DirectTaonierArtPreparationMode::ReuseOrCreate), Some(Value::String(value)) => DirectTaonierArtPreparationMode::from_tool_value(Some(value)) .map_err(|_| PrepareGameArtError::ModeUnsupported { got: value.clone() }), Some(value) => Err(PrepareGameArtError::ModeNotText {