From b0de71bdf50c2149d542fa7ebbb1c901a7d60f43 Mon Sep 17 00:00:00 2001 From: Liu Xiang Qian Date: Mon, 3 Nov 2025 22:04:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E6=9B=B4=E6=96=B0=20?= =?UTF-8?q?Trader=20=E7=9A=84=E7=B3=BB=E7=BB=9F=E6=8F=90=E7=A4=BA=E8=AF=8D?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 允许在编辑 Trader 时更新系统提示词模板(SystemPromptTemplate)。 系统提示词模板用于控制 AI 交易决策的行为模式。目前创建 Trader 时可以指定模板,但编辑时无法修改。 1. **UpdateTraderRequest** 添加 `SystemPromptTemplate` 字段 ```go SystemPromptTemplate string `json:"system_prompt_template"` ``` 2. **handleUpdateTrader** 添加处理逻辑 - 如果请求中提供新模板,使用新值 - 如果为空字符串,保持数据库中的原有值 ```go systemPromptTemplate := req.SystemPromptTemplate if systemPromptTemplate == "" { systemPromptTemplate = existingTrader.SystemPromptTemplate } ``` 3. **TraderRecord** 设置 SystemPromptTemplate 字段 ```go SystemPromptTemplate: systemPromptTemplate, ``` - ✅ 支持在编辑 Trader 时更新系统提示词模板 - ✅ 空值时保持原有值不变(向后兼容) - ✅ 与创建 Trader 时的行为保持一致 - ✅ 无破坏性变更 1. 用户创建 Trader 时使用了默认模板 2. 后续想切换到自定义模板(如更激进或保守的策略) 3. 通过编辑功能修改 SystemPromptTemplate 字段 4. 保存后,AI 将使用新的提示词模板进行决策 1. 创建 Trader(使用默认模板 "default") 2. 编辑 Trader,修改 system_prompt_template 为 "aggressive" 3. 保存并验证修改成功 4. 再次编辑,不修改 system_prompt_template(传空字符串) 5. 验证保持 "aggressive" 不变 --- api/server.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/api/server.go b/api/server.go index 92c2f174..f3b6a543 100644 --- a/api/server.go +++ b/api/server.go @@ -393,10 +393,11 @@ type UpdateTraderRequest struct { ScanIntervalMinutes int `json:"scan_interval_minutes"` BTCETHLeverage int `json:"btc_eth_leverage"` AltcoinLeverage int `json:"altcoin_leverage"` - TradingSymbols string `json:"trading_symbols"` - CustomPrompt string `json:"custom_prompt"` - OverrideBasePrompt bool `json:"override_base_prompt"` - IsCrossMargin *bool `json:"is_cross_margin"` + TradingSymbols string `json:"trading_symbols"` + CustomPrompt string `json:"custom_prompt"` + OverrideBasePrompt bool `json:"override_base_prompt"` + SystemPromptTemplate string `json:"system_prompt_template"` + IsCrossMargin *bool `json:"is_cross_margin"` } // handleUpdateTrader 更新交易员配置 @@ -452,6 +453,12 @@ func (s *Server) handleUpdateTrader(c *gin.Context) { scanIntervalMinutes = existingTrader.ScanIntervalMinutes // 保持原值 } + // 设置系统提示词模板,允许更新 + systemPromptTemplate := req.SystemPromptTemplate + if systemPromptTemplate == "" { + systemPromptTemplate = existingTrader.SystemPromptTemplate // 保持原值 + } + // 更新交易员配置 trader := &config.TraderRecord{ ID: traderID, @@ -465,7 +472,7 @@ func (s *Server) handleUpdateTrader(c *gin.Context) { TradingSymbols: req.TradingSymbols, CustomPrompt: req.CustomPrompt, OverrideBasePrompt: req.OverrideBasePrompt, - SystemPromptTemplate: existingTrader.SystemPromptTemplate, // 保持原值 + SystemPromptTemplate: systemPromptTemplate, IsCrossMargin: isCrossMargin, ScanIntervalMinutes: scanIntervalMinutes, IsRunning: existingTrader.IsRunning, // 保持原值