Files
miku-discord/readmes/AUTONOMOUS_V2_DEBUG_GUIDE.md

6.2 KiB
Raw Permalink Blame History

Autonomous V2 Debug Guide

Quick reference for debugging the Autonomous V2 decision system.


🔧 Enable Debug Mode

Option 1: Environment Variable (Persistent)

Add to your .env file or docker-compose.yml:

AUTONOMOUS_DEBUG=true

Option 2: Terminal (Temporary)

export AUTONOMOUS_DEBUG=true
python bot.py

Option 3: Code (Development)

In bot/globals.py:

AUTONOMOUS_DEBUG = True  # Force enable

📊 What You'll See

Normal Mode (Debug Off)

🤖 [V2] Autonomous engine decided to: join_conversation for server 123456
✅ [V2] Autonomous tick queued for server 123456

Debug Mode (Debug On)

🔍 [V2 Debug] Decision Check for Guild 123456
   Mood: bubbly (energy=0.90, sociability=0.95, impulsiveness=0.80)
   Momentum: 0.75
   Messages (5min/1hr): 15/42
   Messages since appearance: 8
   Time since last action: 450s
   Active activities: 2
   
   [Join Conv] momentum=0.75 > 0.63? True
   [Join Conv] messages=8 >= 5? True
   [Join Conv] cooldown=450s > 300s? True
   [Join Conv] impulsive roll? True | Result: True
   
✅ [V2 Debug] DECISION: join_conversation

🤖 [V2] Autonomous engine decided to: join_conversation for server 123456
✅ [V2] Autonomous tick queued for server 123456

🎯 Understanding the Output

Decision Types Checked (in order)

  1. [Join Conv] - High momentum conversation

    • Shows: momentum threshold, message count, cooldown, impulsiveness roll
  2. [Engage] - User started new activity

    • Shows: active activities list, cooldown, sociability × impulsiveness threshold
  3. [FOMO] - Lots of messages without Miku

    • Shows: message count vs threshold, momentum, cooldown
  4. [Silence] - Break long silence

    • Shows: messages last hour, time threshold, energy roll
  5. [Share] - Share tweet/content

    • Shows: quiet check, cooldown, energy threshold, mood appropriateness

Context Signals

Mood: bubbly (energy=0.90, sociability=0.95, impulsiveness=0.80)
  • Current mood and personality profile values
Momentum: 0.75
  • Conversation momentum (0-1 scale)
  • Higher = more active chat
Messages (5min/1hr): 15/42
  • Recent activity levels
  • First number: last 5 minutes
  • Second number: last hour
Messages since appearance: 8
  • How many messages since Miku last spoke
  • Capped at 100 to prevent FOMO spam
Time since last action: 450s
  • Seconds since Miku's last autonomous action
  • Used for cooldown checks
Active activities: 2
  • Number of user activities being tracked
  • Max 5, auto-expire after 1 hour

🐛 Common Debugging Scenarios

"Why isn't Miku joining the conversation?"

Enable debug mode and look for:

[Join Conv] momentum=0.45 > 0.63? False
  • Momentum too low for current mood
  • Try waiting for more messages or changing to more social mood

"Why is Miku so chatty?"

Check the mood:

Mood: excited (energy=0.95, sociability=0.90, impulsiveness=0.90)
  • High sociability = lower thresholds = more likely to act
  • Change to "shy" or "serious" for less activity

"Why isn't Miku reacting to user activities?"

Look for:

Active activities: 0
  • No activities being tracked
  • Check that presence intents are enabled
  • Verify users are actually starting games/activities

"Miku isn't breaking silence"

Check:

[Silence] msgs_last_hour=42 < 5? False
  • Channel isn't quiet enough
  • Energy roll might have failed (random)

"No actions happening at all"

Check:

💤 [V2 Debug] Mood is 'asleep' - no action taken
  • Miku is asleep! Change mood to wake her up

📈 Monitoring Tips

Watch for Decay Task

Every 15 minutes you should see:

🧹 [V2] Decay task completed (iteration #4, uptime: 1.0h)
   └─ Processed 3 servers

If you don't see this, the decay task might not be running.

Track Activity Events

When users do things:

👤 [V2] Username status changed: online → idle
🎮 [V2] Username started activity: Genshin Impact

If you never see these, presence tracking isn't working.

Decision Frequency

In an active server, you should see decision checks:

  • Every time a message is sent (but most will be "None")
  • Every 10-15 minutes (scheduler tick)

🔍 Performance Impact

Debug Mode OFF (Production):

  • Minimal overhead
  • Only logs when actions are taken
  • ~99% of checks are silent

Debug Mode ON (Development):

  • Verbose logging on every decision check
  • Can generate lots of output in active servers
  • Useful for tuning but not for production

Recommendation: Only enable debug mode when actively troubleshooting.


🎛️ Tuning Thresholds

If you want to adjust behavior, edit bot/utils/autonomous_engine.py:

Make Miku More Active

# In _should_join_conversation
base_threshold = 0.5  # Lower from 0.6

Make Miku Less Active

# In _should_join_conversation
base_threshold = 0.7  # Raise from 0.6

Change FOMO Sensitivity

# In _should_respond_to_fomo
fomo_threshold = 30 * (2.0 - profile["sociability"])  # Raise from 25

Adjust Silence Breaking

# In _should_break_silence
min_silence = 2400 * (2.0 - profile["energy"])  # Raise from 1800 (30 min to 40 min)

Note: After tuning, monitor with debug mode to verify the changes work as expected.


📞 Quick Reference Commands

# Enable debug for current session
export AUTONOMOUS_DEBUG=true

# Disable debug
export AUTONOMOUS_DEBUG=false
unset AUTONOMOUS_DEBUG

# Check if debug is enabled
echo $AUTONOMOUS_DEBUG

# Watch logs in real-time
tail -f bot.log | grep "V2 Debug"

# Count decision checks in last hour
grep "Decision Check" bot.log | wc -l

# See all actions taken
grep "DECISION:" bot.log

Troubleshooting Checklist

  • Is AUTONOMOUS_DEBUG=true set?
  • Did you restart the bot after setting the env var?
  • Are presence intents enabled in globals.py?
  • Is the bot actually receiving messages?
  • Is the mood set to something other than "asleep"?
  • Is the decay task running (check logs every 15 min)?
  • Are there actually users in the server to track?

Happy debugging! With debug mode enabled, you'll have full visibility into every decision the autonomous system makes. 🔍