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