diff --git a/src/agent/context.rs b/src/agent/context.rs index 68ebc63..17ebba0 100644 --- a/src/agent/context.rs +++ b/src/agent/context.rs @@ -449,7 +449,9 @@ fn parse_xml_tool_call(body: &str) -> Option<(String, String)> { let mut args = serde_json::Map::new(); let mut rest = func_body; while let Some((key, val, remainder)) = parse_qwen_tag(rest, "parameter") { - args.insert(key.to_string(), serde_json::Value::String(val.to_string())); + let value = serde_json::from_str(val) + .unwrap_or(serde_json::Value::String(val.to_string())); + args.insert(key.to_string(), value); rest = remainder; } Some((func_name.to_string(), serde_json::to_string(&args).unwrap_or_default()))