From b3ce0b4f5273f958e96d1ff7005160c7ae3a3398 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Tue, 23 Jun 2026 12:25:13 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20LLM=20=E9=99=8D=E7=BA=A7=E7=AD=96?= =?UTF-8?q?=E7=95=A5=20=E2=80=94=20=E5=85=A8=E9=83=A8=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E4=B8=8D=E5=8F=AF=E7=94=A8=E6=97=B6=E8=BF=94=E5=9B=9E=E8=87=AA?= =?UTF-8?q?=E7=84=B6=E8=AF=AD=E8=A8=80=E9=A2=84=E8=AE=BE=E6=96=87=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - getFallbackMessage() 随机选择3条预设降级回复 - ProcessInput 失败和流式事件错误均使用降级回复 - 用户看到"开拓者…我现在好像有点恍惚…"而非错误信息 Co-Authored-By: Claude --- backend/ai-core/cmd/main.go | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/backend/ai-core/cmd/main.go b/backend/ai-core/cmd/main.go index 1b48625..34ed2fc 100644 --- a/backend/ai-core/cmd/main.go +++ b/backend/ai-core/cmd/main.go @@ -824,6 +824,17 @@ func getEnvInt(key string, fallback int) int { return n } +// getFallbackMessage returns a natural-sounding fallback when LLM is unavailable. +func getFallbackMessage() string { + messages := []string{ + "开拓者…我现在好像有点恍惚…稍等一下好吗?", + "唔…忆庭的投影好像出了点小问题。等我一下下♪", + "信号有点不太好呢…你稍等我一下哦?", + } + return messages[time.Now().UnixNano()%int64(len(messages))] +} + + // registerPluginTools 从插件实例注册其所有工具到注册中心 func registerPluginTools(registry *plgManager.ToolRegistry, plugin plgSDK.Plugin) { for _, t := range plugin.Tools() { @@ -1042,10 +1053,10 @@ func handleChat( BotUID: req.Source.BotUID, }) if err != nil { - errData, _ := json.Marshal(map[string]string{"delta": "", "error": fmt.Sprintf("处理失败: %v", err)}) - fmt.Fprintf(w, "data: %s\n\n", errData) - flusher.Flush() - fmt.Fprintf(w, "data: [DONE]\n\n") + fallback := getFallbackMessage() + log.Printf("[chat] ProcessInput 失败,使用降级回复: %v", err) + fallbackData, _ := json.Marshal(map[string]string{"delta": fallback, "status": "fallback"}) + fmt.Fprintf(w, "data: %s\n\n", fallbackData) flusher.Flush() return } @@ -1071,10 +1082,10 @@ func handleChat( case model.StreamError: log.Printf("[chat] 流式错误: %v", event.Error) - errData, _ := json.Marshal(map[string]string{"delta": "", "error": event.Error.Error()}) - fmt.Fprintf(w, "data: %s\n\n", errData) - flusher.Flush() - fmt.Fprintf(w, "data: [DONE]\n\n") + fallback := getFallbackMessage() + log.Printf("[chat] 流式事件错误,发送降级回复: %v", event.Error) + fallbackData, _ := json.Marshal(map[string]string{"delta": fallback, "status": "fallback"}) + fmt.Fprintf(w, "data: %s\n\n", fallbackData) flusher.Flush() return