From b1d16b56838d312452d077a1ec935ba1213baa16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Fri, 2 Oct 2026 14:39:59 +0800 Subject: [PATCH] =?UTF-8?q?=E9=94=99=E8=AF=AF=E5=9B=9E=E6=98=BE=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E7=BB=99=E5=AD=97=E7=AC=A6=E4=B8=B2=E5=A5=97=20JSON?= =?UTF-8?q?=20=E5=BC=95=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - arguments.rs not_text_repr 对字符串直接回显原文 - 非字符串仍按 bounded_echo 序列化后截断 --- .../src-tauri/src/agent/tool/arguments.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 7381e3559..9e120e3fd 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 @@ -11,8 +11,14 @@ use super::error::{bounded_echo, ToolPageRejection}; /// /// 走共享 [`ToolTextField::not_text`] 的字段自动走这里;像抠图 `backgroundMode`、美术准备 /// `mode`、生成图片 `kind` 这类在解析里内联判类型的字段,也要用同一份口径。 +/// +/// 字符串直接回显原文:`to_string()` 会给它套一层 JSON 引号,错误里就变成「"5"」而不是 +/// 「5」;其余类型只能先序列化,再按 [`bounded_echo`] 的口径截断。 pub(crate) fn not_text_repr(value: &Value) -> String { - bounded_echo(&value.to_string()) + match value.as_str() { + Some(text) => bounded_echo(text), + None => bounded_echo(&value.to_string()), + } } /// 一个会被边界校验的文本字段。