From 8834f844e6f36fd73ed76d41c09c999f157a1ccb 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 16:47:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E9=A1=B5=E5=8A=A9=E6=89=8B=E5=8A=A0?= =?UTF-8?q?=20debug=5Fassert=EF=BC=8C=E9=BB=98=E8=AE=A4=20limit=20?= =?UTF-8?q?=E9=85=8D=E5=88=B0=E4=B8=8A=E9=99=90=E4=B9=8B=E4=B8=8A=E4=BC=9A?= =?UTF-8?q?=E5=9C=A8=E6=B5=8B=E8=AF=95=E6=9C=9F=E7=82=B8=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - arguments::page 增加 debug_assert!(default_limit <= max_limit):默认值本身越界时不再让省略 limit 的请求静默地每次都报 LimitOutOfRange - 文档注释写清这条调用点契约;三个列表工具当前都满足(50/100 对 100) 验证:cargo test --bin genarrative-ai-game-creator-shell -- agent::direct_tool_bridge:: agent::direct_tools_mcp:: 72 passed / 0 failed;cargo fmt --check 通过 --- .../src-tauri/src/agent/tool/arguments.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/tool/arguments.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/tool/arguments.rs index 2ab9fdf38..961fee811 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/tool/arguments.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/tool/arguments.rs @@ -58,12 +58,16 @@ pub(crate) struct ToolPage { } /// 解析 `offset`/`limit`。分页规则在三个列表工具之间一致,只有默认值与上限不同。 +/// +/// 调用点必须保证 `default_limit <= max_limit`:否则省略 `limit` 的请求会拿一个本身就越界的 +/// 默认值去撞上限、每次都失败。这里用 `debug_assert` 让配错在测试期就炸出来。 pub(crate) fn page( arguments: &Value, default_limit: usize, max_limit: usize, max_offset: Option, ) -> Result { + debug_assert!(default_limit <= max_limit); let offset = arguments .get("offset") .filter(|value| !value.is_null())