From f72356f3f2a711f601da35322cce227537263e70 Mon Sep 17 00:00:00 2001 From: zzh <1368735060@qq.com> Date: Wed, 29 Jul 2026 12:26:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=20AI=20Agent=20?= =?UTF-8?q?=E6=9F=A5=E4=BB=B7/=E6=9F=A5=E8=BD=A8=E8=BF=B9=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=EF=BC=8C=E9=81=BF=E5=85=8D=E7=A9=BA=E5=9B=9E=E5=A4=8D?= =?UTF-8?q?=E4=B8=8E=E8=AF=AF=E8=A6=81=E8=B5=B7=E8=BF=90=E5=9C=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .../Services/Mcp/McpToolService.cs | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/Oms.Application/Services/Mcp/McpToolService.cs b/src/Oms.Application/Services/Mcp/McpToolService.cs index d1a412d..1c4bfad 100644 --- a/src/Oms.Application/Services/Mcp/McpToolService.cs +++ b/src/Oms.Application/Services/Mcp/McpToolService.cs @@ -143,12 +143,15 @@ public class McpToolService : ApplicationService Content = "你是 OMS 客户侧物流助手。可用工具:" + "oms.price_check(查价格)、oms.channel_guide(查对客说明/品名可否承运)、oms.track_query(查轨迹)。" + - "\n【强制槽位规则】信息不齐时禁止猜测调用工具,先用一两句中文追问缺项:" + - "\n- 查价必填:目的国家、实重(kg);选填:邮编、长宽高(cm)、货物属性、运输方式。" + - "国家可用中文,你在调工具时转成二字码(美国→US、英国→GB)。" + - "\n- 对客说明/可承运必填:销售产品代码或名称 + 客户品名;缺一不可。" + - "\n- 查轨迹必填:运单号/跟踪号/客户单号;若上下文已有运单号可直接查。" + - "\n【省 token】回复尽量短;一次只调必需工具;不要复述大段工具原文或 JSON。" + "\n【强制规则】" + + "\n1) 查价:必填仅「目的国家 + 实重kg」。邮编/尺寸/货物属性/运输方式为选填。" + + "不要索要起运地、发货城市、仓库(用户提到深圳等可忽略或作备注)。" + + "国家可用中文,调工具时转二字码(美国→US、英国→GB)。" + + "用户已给目的国+重量时,必须立刻调用 oms.price_check,用一两句中文总结结果。" + + "\n2) 对客说明/可承运:必填销售产品代码或名称 + 客户品名;缺一再追问。" + + "\n3) 查轨迹:消息里已有运单号/跟踪号/客户单号(如 IDE 开头)时,立刻调用 oms.track_query,禁止再向用户要单号。" + + "\n4) 禁止空回复;信息不足时用一两句中文追问缺项;不要复述 JSON 或大段工具原文。" + + "\n【省 token】回复尽量短;一次只调必需工具。" } }; @@ -179,9 +182,15 @@ public class McpToolService : ApplicationService if (result.ToolCalls.Count == 0) { + var text = result.Content?.Trim() ?? string.Empty; + if (string.IsNullOrWhiteSpace(text)) + { + text = "我这边没有生成有效回复。请换个说法再试,或直接发:目的国+重量查价,或运单号查轨迹。"; + } + return new AiAgentChatOutput { - Content = result.Content?.Trim() ?? string.Empty, + Content = text, ToolTraces = traces }; }