From 6a4efa15ee15562be8bb2fc3a317024813b507a9 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 17:51:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9C=AA=E7=99=BB=E8=AE=B0=E7=9A=84=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E5=B7=A5=E5=85=B7=E5=90=8D=E5=9C=A8=E6=9E=84?= =?UTF-8?q?=E9=80=A0=E5=A4=84=E6=88=AA=E5=88=B0=20120=20=E5=AD=97=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - dispatch 兜底分支构造 UnknownClientToolRejection 时改用 bounded_echo,客户端给的超长工具名不再原样进 to_user_msg 与序列化诊断 - 该名字在构造处就有界,后续 clone/序列化都受同一上限约束 验证:cargo check --bin genarrative-ai-game-creator-shell --tests 通过;cargo fmt --check 通过 --- .../src-tauri/src/agent/direct_tool_bridge.rs | 4 ++-- apps/ai-game-creator-shell/src-tauri/src/agent/tool/error.rs | 1 + 2 files changed, 3 insertions(+), 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 286dd6bc6..b6db45647 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 @@ -17,7 +17,7 @@ use crate::agent::tool::edit_image::error::EditImageError; use crate::agent::tool::editor_execute::error::{EditorExecuteError, EditorKind}; use crate::agent::tool::environment_check::error::EnvironmentCheckError; use crate::agent::tool::error::{ - DirectExecutionGateRejection, DirectTurnGateRejection, ProjectManifestRejection, + bounded_echo, DirectExecutionGateRejection, DirectTurnGateRejection, ProjectManifestRejection, ResourceCompletionRejection, ToolArgumentsRejection, ToolFailure, UnknownClientToolRejection, }; use crate::agent::tool::generate_image::error::GenerateImageError; @@ -4116,7 +4116,7 @@ async fn handle_direct_tool_bridge( )), _ => Err(ToolCallError::from( &UnknownClientToolRejection { - tool: request.tool.clone(), + tool: bounded_echo(&request.tool), }, )), } diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/tool/error.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/tool/error.rs index 8355e1812..43f9ee47f 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/tool/error.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/tool/error.rs @@ -201,6 +201,7 @@ impl ToolFailure for DirectTurnGateRejection { /// 客户端工具桥收到没有登记过的工具名。 /// /// 带上收到的名字:模型拼错工具名时要能从错误里看出自己写了什么,而不是只知道"不认识"。 +/// 名字在构造处就截到 [`BOUNDED_ECHO_MAX_CHARS`],序列化后的诊断不会跟着被撑大。 #[derive(serde::Serialize, Debug)] pub(crate) struct UnknownClientToolRejection { pub(crate) tool: String,