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()), + } } /// 一个会被边界校验的文本字段。