From 8faa2b349421092720b5abfc9b741c598295f077 Mon Sep 17 00:00:00 2001 From: ZhouYongyou <128128010+zhouyongyou@users.noreply.github.com> Date: Sun, 2 Nov 2025 01:27:44 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=81=A2=E5=BE=A9=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=8A=A0=E8=BC=89=E5=A4=B1=E6=95=97=E6=99=82=E7=9A=84?= =?UTF-8?q?=E7=B0=A1=E5=8C=96=E7=89=88=E6=9C=AC=20fallback?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 問題 之前修改將模板加載失敗時改為返回空字符串,但: - 上層函數沒有檢測空字符串的邏輯 - 空字符串會直接傳給 AI API,導致錯誤 - 極端情況下系統無法運行 ## 解決方案 恢復原始邏輯,保留內置簡化版本作為最後防線: ``` 用戶模板失敗 → default 失敗 → 使用內置簡化版本 "你是专业的加密货币交易AI。请根据市场数据做出交易决策。" ``` ## 差異對比 ### 之前(不安全) ```go if default 加載失敗 { return "" // ❌ 上層未檢測,會傳空字符串給 AI } ``` ### 現在(安全) ```go if default 加載失敗 { sb.WriteString("你是专业的加密货币交易AI。请根据市场数据做出交易决策。\n\n") // ✅ 有最後防線,極端情況下仍能運行 } ``` ## 測試驗證 - ✅ Go 編譯成功 - ✅ Docker build 成功 - ✅ 邏輯恢復到原始穩定版本 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- decision/engine.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/decision/engine.go b/decision/engine.go index 02c79fbf..fb4b7a52 100644 --- a/decision/engine.go +++ b/decision/engine.go @@ -248,18 +248,18 @@ func buildSystemPrompt(accountEquity float64, btcEthLeverage, altcoinLeverage in log.Printf("⚠️ 提示词模板 '%s' 不存在,使用 default: %v", templateName, err) template, err = GetPromptTemplate("default") if err != nil { - // 如果连 default 都不存在,说明文件系统有严重问题 - log.Printf("❌ 致命错误:无法加载任何提示词模板,系统无法安全运行") - return "" // 返回空字符串,上层应该检测并停止交易 + // 如果连 default 都不存在,使用内置的简化版本(最后防线) + log.Printf("❌ 无法加载任何提示词模板,使用内置简化版本") + sb.WriteString("你是专业的加密货币交易AI。请根据市场数据做出交易决策。\n\n") + } else { + sb.WriteString(template.Content) + sb.WriteString("\n\n") } - log.Printf("✓ 使用 default 模板(fallback)") } else { - log.Printf("✓ 使用 %s 模板", templateName) + sb.WriteString(template.Content) + sb.WriteString("\n\n") } - sb.WriteString(template.Content) - sb.WriteString("\n\n") - // 2. 硬约束(风险控制)- 动态生成(始终追加) sb.WriteString("# 硬约束(风险控制)\n\n") sb.WriteString("1. 风险回报比: 必须 ≥ 1:3(冒1%风险,赚3%+收益)\n")