From ac49a7b956d908b9b52172b63fee7c8b9d5e4dbc Mon Sep 17 00:00:00 2001 From: root Date: Sat, 4 Jul 2026 15:03:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AA=92=E4=BD=93=20fallback=20?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0=E6=96=87=E6=9C=AC=E4=BD=BF=E7=94=A8=E9=80=9A?= =?UTF-8?q?=E9=81=93=E5=90=8D=E8=80=8C=E9=9D=9E=E5=9B=BA=E5=AE=9A'?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=B8=8A=E4=BC=A0'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/agent/core/agent.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/internal/agent/core/agent.go b/internal/agent/core/agent.go index da8afb3..35f8a3b 100644 --- a/internal/agent/core/agent.go +++ b/internal/agent/core/agent.go @@ -304,7 +304,7 @@ func (a *Agent) processMediaInput(evt *agentIO.InputEvent) { a.currentOutputChannel = evt.Source } - blocks, fallback := a.mediaToBlocks(evt.Payload, evt.Type) + blocks, fallback := a.mediaToBlocks(evt.Payload, evt.Type, evt.Source) a.context.Append(ContextEvent{ Timestamp: start, @@ -358,13 +358,17 @@ func (a *Agent) processMediaInput(evt *agentIO.InputEvent) { } // mediaToBlocks 将媒体 payload 转为多模态 ContentBlock 数组和纯文本 fallback。 -func (a *Agent) mediaToBlocks(payload map[string]interface{}, mediaType string) ([]agentAPI.ContentBlock, string) { +// source 是输入通道名,用于生成可读的描述文本(如"从 cli 收到了一张图片")。 +func (a *Agent) mediaToBlocks(payload map[string]interface{}, mediaType string, source string) ([]agentAPI.ContentBlock, string) { data, _ := payload["data"].(string) mime, _ := payload["mime"].(string) url, _ := payload["url"].(string) alt, _ := payload["alt"].(string) if alt == "" { - alt = fmt.Sprintf("[用户上传了%s]", mediaType) + if source == "" { + source = "unknown" + } + alt = fmt.Sprintf("[从 %s 收到了 %s]", source, mediaType) } var blocks []agentAPI.ContentBlock @@ -375,12 +379,12 @@ func (a *Agent) mediaToBlocks(payload map[string]interface{}, mediaType string) case "image": desc = a.inputCfg.Image.DescribePrompt if desc == "" { - desc = "用户上传了一张图片,请使用 describe_image 工具查看详情。" + desc = fmt.Sprintf("从 %s 收到了一张图片,请使用 describe_image 工具查看详情。", source) } case "audio": desc = a.inputCfg.Audio.DescribePrompt if desc == "" { - desc = "用户上传了一段音频,请使用 transcribe_audio 工具查看内容。" + desc = fmt.Sprintf("从 %s 收到了一段音频,请使用 transcribe_audio 工具查看内容。", source) } } blocks = append(blocks, agentAPI.ContentBlock{Type: "text", Text: desc})