feat: Add smart trading assistant with context awareness

- Add SmartAgent with automatic context injection
  - Real-time portfolio/position data in every prompt
  - AI knows current state before responding

- Add TradingContext builder
  - Aggregates balance, positions, P&L across all traders
  - Auto-generates alerts (liquidation risk, large loss, etc.)

- Add background Monitor
  - Proactive position monitoring every 30s
  - Detects new positions, closed positions
  - Forwards alerts to Telegram

- Enhanced system prompts
  - Professional trading assistant persona
  - Risk assessment guidelines
  - Clear response formatting rules

Features:
 Context-aware responses
 Proactive risk alerts
 Background monitoring
 Alert broadcasting to Telegram
This commit is contained in:
tinklefund
2026-01-30 03:40:14 +08:00
parent 01ba348841
commit f9d8318869
6 changed files with 891 additions and 22 deletions

51
main.go
View File

@@ -142,32 +142,39 @@ func main() {
var telegramBot *telegram.Bot
telegramConfig := telegram.LoadConfigFromEnv()
if telegramConfig.Token != "" {
logger.Info("🤖 Initializing Telegram AI Assistant...")
logger.Info("🤖 Initializing Smart Trading Assistant...")
// Create AI client for the assistant
aiClient := createAssistantAIClient()
// Create AI Agent with trading tools
agentConfig := assistant.DefaultAgentConfig()
agent := assistant.NewAgent(aiClient, agentConfig)
// Register trading tools
tradingTools := assistant.NewTradingTools(traderManager, st)
agent.RegisterTools(tradingTools.GetAllTools()...)
// Set system prompt based on language
if telegramConfig.DefaultLanguage == "zh" {
agent.SetSystemPrompt(assistant.ChineseSystemPrompt())
}
// Create and start Telegram bot
var err error
telegramBot, err = telegram.NewBot(telegramConfig, agent)
if err != nil {
logger.Errorf("❌ Failed to create Telegram bot: %v", err)
if aiClient == nil {
logger.Error("❌ No AI API key configured, Telegram bot disabled")
} else {
go telegramBot.Start()
logger.Info("✅ Telegram AI Assistant started successfully")
// Create Smart AI Agent with trading context awareness
agentConfig := assistant.DefaultAgentConfig()
smartAgent := assistant.NewSmartAgent(aiClient, agentConfig, traderManager, st)
// Register trading tools
tradingTools := assistant.NewTradingTools(traderManager, st)
smartAgent.RegisterTools(tradingTools.GetAllTools()...)
// Create and start Telegram bot
var err error
telegramBot, err = telegram.NewBot(telegramConfig, smartAgent.Agent)
if err != nil {
logger.Errorf("❌ Failed to create Telegram bot: %v", err)
} else {
// Start background monitor with alert forwarding to Telegram
smartAgent.OnAlert(func(alert assistant.Alert) {
telegramBot.BroadcastAlert(alert.Message)
})
smartAgent.StartMonitor()
go telegramBot.Start()
logger.Info("✅ Smart Trading Assistant started successfully")
logger.Info(" 📊 Real-time context injection: enabled")
logger.Info(" 🔍 Background monitoring: enabled")
logger.Info(" ⚠️ Proactive alerts: enabled")
}
}
} else {
logger.Info(" Telegram bot not configured (set TELEGRAM_BOT_TOKEN to enable)")