Files
miku-discord/readmes/AUTONOMOUS_V2_IMPLEMENTED.md

5.5 KiB

Autonomous V2 Implementation Complete!

What Changed

Files Modified

  1. utils/autonomous.py (previously utils/autonomous_v2.py)

    • Now the main autonomous system
    • Uses context-aware decision engine
    • Imports legacy functions from autonomous_v1_legacy.py
  2. utils/autonomous_v1_legacy.py (previously utils/autonomous.py)

    • Old autonomous system preserved as backup
    • Contains all the implementation functions (still used by V2)
  3. utils/autonomous_engine.py (NEW)

    • Core decision engine
    • Tracks context signals (messages, presence, activities)
    • Makes intelligent decisions without LLM calls
    • Mood-aware personality profiles
  4. bot.py

    • Added initialize_v2_system() call in on_ready()
    • Added on_message_event() hook to track every message
    • Added on_presence_update() event handler
    • Added on_member_join() event handler
    • Removed old autonomous reaction code (now handled by V2)
  5. server_manager.py

    • Updated _run_autonomous_for_server() to use V2 tick
    • Updated _run_autonomous_reaction_for_server() to use V2 tick
    • Removed conversation detection scheduler (now event-driven)
  6. utils/moods.py

    • Added on_mood_change() notifications in rotate_server_mood()
    • Added mood change notification in wake-up handler
  7. api.py

    • Added mood change notifications to all mood-setting endpoints
    • Updated /servers/{guild_id}/mood, /servers/{guild_id}/mood/reset, /test/mood/{guild_id}

How It Works Now

Event-Driven Architecture

Before V1:

Timer (every 15 min) → 10% random chance → Action

After V2:

Message arrives → Track context → Check thresholds → Intelligent decision → Action

Context Tracking (No LLM!)

Every message/event updates lightweight signals:

  • Message count (last 5 min, last hour)
  • Conversation momentum (0-1 scale)
  • User presence events (status changes, activities)
  • Time since last action
  • Current mood profile

Decision Logic

Checks in priority order:

  1. Join Conversation - High momentum + social mood
  2. Engage User - Someone started interesting activity
  3. FOMO Response - Lots of messages without Miku
  4. Break Silence - Channel quiet + energetic mood
  5. Share Tweet - Quiet period + appropriate mood
  6. React to Message - Mood-based probability

Mood Influence

Each mood has personality traits that affect decisions:

  • Energy: How quickly Miku breaks silence
  • Sociability: How easily she joins conversations
  • Impulsiveness: How quickly she reacts to events

Examples:

  • Bubbly (0.9 energy, 0.95 sociability): Joins after 5 messages, breaks 30 min silence
  • Shy (0.4 energy, 0.2 sociability): Waits for 40+ messages, tolerates 50 min silence
  • Asleep (0.0 all): Does nothing at all

Testing Checklist

Syntax Checks Passed

  • autonomous_engine.py
  • autonomous.py
  • bot.py
  • server_manager.py

🔄 Runtime Testing Needed

  1. Start the bot - Check for initialization messages:

    🚀 Initializing Autonomous V2 System...
    ✅ Autonomous V2 System initialized
    
  2. Send some messages - Watch for context tracking:

    (No output expected - tracking is silent)
    
  3. Wait for autonomous action - Look for V2 decisions:

    🤖 [V2] Autonomous engine decided to: join_conversation for server 123456
    ✅ [V2] Autonomous tick queued for server 123456
    
  4. Change mood via API - Verify mood change notification:

    🎭 API: Server mood set result: True
    (Should see mood notification to autonomous engine)
    
  5. Monitor reactions - New messages should trigger real-time reaction checks:

    🎯 [V2] Real-time reaction triggered for message from User
    

Rollback Plan (If Needed)

If V2 causes issues:

  1. Rename files back:

    cd /home/koko210Serve/docker/ollama-discord/bot/utils
    mv autonomous.py autonomous_v2_broken.py
    mv autonomous_v1_legacy.py autonomous.py
    
  2. Revert bot.py changes:

    • Remove V2 imports and event handlers
    • Restore old autonomous reaction code
  3. Revert server_manager.py:

    • Change back to miku_autonomous_tick_for_server
    • Restore conversation detection scheduler
  4. Restart bot


Performance Notes

Resource Usage

  • Zero LLM calls for decisions - Only simple math on tracked metrics
  • Lightweight tracking - No message content stored, just counts and timestamps
  • Efficient - Event-driven, only acts when contextually appropriate

Expected Behavior Changes

  • More natural timing - Won't interrupt active conversations
  • Mood-consistent - Bubbly Miku is chatty, shy Miku is reserved
  • Better engagement - Responds to user activities, not just timers
  • Context-aware reactions - More likely to react in active chats

Next Steps

  1. Monitor logs for first 24 hours
  2. Tune thresholds if needed (in autonomous_engine.py)
  3. Collect feedback on behavior naturalness
  4. Consider future enhancements:
    • Topic detection
    • User affinity tracking
    • Time-of-day learning
    • Sentiment signals

Documentation

  • Decision Logic: See AUTONOMOUS_V2_DECISION_LOGIC.md for detailed examples
  • Comparison: See AUTONOMOUS_V2_COMPARISON.md for V1 vs V2 diagrams
  • Migration Guide: See AUTONOMOUS_V2_MIGRATION.md for implementation details

🎉 The V2 system is ready to roll! Start the bot and watch Miku become truly autonomous!