From 23a111985a552d4ab238fcc41ac768318f56d260 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:11:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=81=94=E7=BD=91=E6=90=9C=E7=B4=A2=20maxResul?= =?UTF-8?q?ts=20=E9=9D=9E=E6=95=B4=E6=95=B0=E7=9A=84=E8=AF=8A=E6=96=AD?= =?UTF-8?q?=E4=B8=8A=E9=99=90=E6=94=B9=E4=B8=BA=E9=9A=8F=E5=8F=98=E4=BD=93?= =?UTF-8?q?=E6=90=BA=E5=B8=A6=EF=BC=8C=E4=B8=8D=E5=86=8D=E5=86=99=E6=AD=BB?= =?UTF-8?q?=205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - WebSearchError::MaxResultsNotInteger 原文案把上限写死成「1 到 5」,同一份文件里 MaxResultsOutOfRange 却是从 DIRECT_TOOL_BRIDGE_MAX_SEARCH_RESULTS 取 {max};常量一改,两条诊断就会自相矛盾 - 变体加上 max: u64,构造点传 DIRECT_TOOL_BRIDGE_MAX_SEARCH_RESULTS as u64,文案改成「1 到 {max}」 - 只影响这一条诊断的取值来源,判定区间不变 验证:cargo test --bin genarrative-ai-game-creator-shell -- agent::direct_tool_bridge::tests::search_parser_accepts_only_bounded_public_https_results 通过 --- .../src-tauri/src/agent/direct_tool_bridge.rs | 1 + .../src-tauri/src/agent/tool/web_search/error.rs | 6 +++--- 2 files changed, 4 insertions(+), 3 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 7d5bacb99..f44904bd4 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 @@ -3417,6 +3417,7 @@ pub(in crate::agent) fn web_search_input( .as_u64() .ok_or_else(|| WebSearchError::MaxResultsNotInteger { got: value.to_string(), + max: DIRECT_TOOL_BRIDGE_MAX_SEARCH_RESULTS as u64, })?, }; if !(1..=DIRECT_TOOL_BRIDGE_MAX_SEARCH_RESULTS as u64).contains(&max_results) { diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/tool/web_search/error.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/tool/web_search/error.rs index ab1e4b533..894e60c48 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/tool/web_search/error.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/tool/web_search/error.rs @@ -13,7 +13,7 @@ pub(crate) enum WebSearchError { QueryEmpty, QueryTooLong { got_chars: usize, max_chars: usize }, QueryHasControlCharacters, - MaxResultsNotInteger { got: String }, + MaxResultsNotInteger { got: String, max: u64 }, MaxResultsOutOfRange { got: u64, max: u64 }, ClientUnavailable { cause: String }, RequestFailed { cause: String }, @@ -47,8 +47,8 @@ impl ToolFailure for WebSearchError { max_chars, } => format!("联网搜索失败:query 有 {got_chars} 个字符,超过上限 {max_chars}。"), Self::QueryHasControlCharacters => "联网搜索失败:query 含有控制字符。".to_string(), - Self::MaxResultsNotInteger { got } => { - format!("联网搜索失败:maxResults 必须是 1 到 5 的整数,当前是「{got}」。") + Self::MaxResultsNotInteger { got, max } => { + format!("联网搜索失败:maxResults 必须是 1 到 {max} 的整数,当前是「{got}」。") } Self::MaxResultsOutOfRange { got, max } => { format!("联网搜索失败:maxResults={got} 超出范围,必须在 1 到 {max} 之间。")