Skip to content

🔄 Feature: Prompt 自動重載機制 #7

Description

@the-dev-z

📋 功能概述

參考上游 fork nofxai/nofx 的實作,建議引入 Prompt 自動重載機制,讓交易者在啟動時動態讀取最新的提示詞模板,無需重啟整個後端服務。


🎯 問題描述

現況(V2/V3)

  • Prompt 模板在後端啟動時一次性載入記憶體
  • 調整交易策略提示詞後,必須:
    1. 停止所有交易者
    2. 重啟後端服務(2-5 分鐘)
    3. 重新啟動所有交易者
  • 影響範圍:調整單一交易者策略,所有交易者都要停機

期望改進

  • 交易者啟動時動態讀取 prompts/*.txt
  • 調整策略後,只需重啟特定交易者(5-10 秒)
  • 其他交易者不受影響,持續運行

💡 使用場景

1. 快速迭代策略

# 調整 Hyperliquid 止盈邏輯
vim prompts/hyperliquid_trader.txt

# 只重啟 Hyperliquid 交易者(透過 UI 或 API)
# 其他交易者(Binance、Aster)繼續運行

2. A/B 測試不同風險偏好

  • 同時運行 3 個交易者,每個用不同提示詞
  • 調整其中一個時,不影響其他正在盈利的交易者

3. 緊急修復錯誤提示詞

  • 發現策略有誤時,快速修改並重啟(10 秒 vs 5 分鐘)
  • 減少停機風險期

🔧 技術方案

參考實作

上游 commit: 4c4d4b7e

核心改動

  1. trader/auto_trader.goloadPromptTemplate() 從建構函數移到 Start() 方法
  2. 每次啟動交易者時重新讀取 prompts/{exchange}_trader.txt

V2 實作難度

  • 工作量:約 1 小時
  • 風險:低(不改變現有架構,只改讀取時機)
  • 測試:修改 prompt → 停止交易者 → 啟動交易者 → 驗證新策略生效

V3 實作難度

  • 工作量:約 1.5 小時(需處理資料庫存儲的 prompt 欄位)
  • 考量:V3 有部分 prompt 存在 PostgreSQL,需評估是否也支援動態重載

📊 效益分析

指標 現況 改進後 提升
調整一次策略耗時 3-5 分鐘 10 秒 94-97%
一天測試 10 次策略 30-50 分鐘 100 秒 96-98%
其他交易者停機時間 3-5 分鐘 0 秒 零影響

✅ 檢查清單

  • V2 實作:修改 trader/auto_trader.go
  • V3 實作:評估資料庫 prompt 欄位處理
  • 測試:驗證動態重載功能
  • 文檔:更新 README 說明新工作流程
  • 回歸測試:確保不影響現有功能

🔗 相關連結

  • 上游參考 commit: nofxai@4c4d4b7e
  • 相關討論:會話總結 2025-11-25

📌 優先級

建議優先級: 🟢 Medium-High

理由

  • 顯著提升開發者體驗
  • 降低生產環境策略調整風險
  • 實作成本低(1-1.5 小時)
  • 不影響現有架構穩定性

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions