202 lines
13 KiB
Markdown
202 lines
13 KiB
Markdown
# Autonomous System Comparison
|
|
|
|
## V1 (Current) vs V2 (Proposed)
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────────┐
|
|
│ V1 SYSTEM (Current) │
|
|
└─────────────────────────────────────────────────────────────────────┘
|
|
|
|
⏰ Timer (every 15 min)
|
|
│
|
|
├──> 🎲 Random roll (10% chance)
|
|
│ │
|
|
│ ├──> ❌ No action (90% of time)
|
|
│ │
|
|
│ └──> ✅ Take action
|
|
│ │
|
|
│ ├──> 🎲 Random pick: general/engage/tweet
|
|
│ │
|
|
│ └──> 🤖 Call LLM to generate content
|
|
│
|
|
└──> ⏰ Wait 15 min, repeat
|
|
|
|
Problems:
|
|
❌ No awareness of channel state
|
|
❌ Might speak to empty room
|
|
❌ Might interrupt active conversation
|
|
❌ Mood doesn't affect timing/frequency
|
|
❌ Wastes 90% of timer ticks
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────────────────┐
|
|
│ V2 SYSTEM (Proposed) │
|
|
└─────────────────────────────────────────────────────────────────────┘
|
|
|
|
📨 Events (messages, presence, status)
|
|
│
|
|
├──> 📊 Update Context Signals (lightweight, no LLM)
|
|
│ │
|
|
│ ├─> Message count (5 min, 1 hour)
|
|
│ ├─> Conversation momentum
|
|
│ ├─> User presence changes
|
|
│ ├─> Time since last action
|
|
│ └─> Current mood profile
|
|
│
|
|
└──> 🧠 Decision Engine (simple math, no LLM)
|
|
│
|
|
├──> Check thresholds:
|
|
│ ├─> Conversation momentum > X?
|
|
│ ├─> Messages since appearance > Y?
|
|
│ ├─> Time since last action > Z?
|
|
│ ├─> Mood energy/sociability score?
|
|
│ └─> User events detected?
|
|
│
|
|
├──> ❌ No action (most of the time)
|
|
│
|
|
└──> ✅ Take action (when context is right)
|
|
│
|
|
├──> 🎯 Pick action based on context
|
|
│ ├─> High momentum → join conversation
|
|
│ ├─> User activity → engage user
|
|
│ ├─> FOMO triggered → general message
|
|
│ ├─> Long silence → break silence
|
|
│ └─> Quiet + curious → share tweet
|
|
│
|
|
└──> 🤖 Call LLM to generate content
|
|
|
|
|
|
Benefits:
|
|
✅ Context-aware decisions
|
|
✅ Mood influences behavior
|
|
✅ Responds to social cues
|
|
✅ No wasted cycles
|
|
✅ Zero LLM calls for decisions
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────────────────┐
|
|
│ MOOD INFLUENCE EXAMPLE │
|
|
└─────────────────────────────────────────────────────────────────────┘
|
|
|
|
Bubbly Miku (energy: 0.9, sociability: 0.95, impulsiveness: 0.8)
|
|
┌─────────────────────────────────────────────────────────┐
|
|
│ Channel Activity Timeline │
|
|
├─────────────────────────────────────────────────────────┤
|
|
│ [5 messages] ────────> Miku joins! (low threshold) │
|
|
│ [quiet 20 min] ─────> "Anyone here? 🫧" │
|
|
└─────────────────────────────────────────────────────────┘
|
|
|
|
|
|
Shy Miku (energy: 0.4, sociability: 0.2, impulsiveness: 0.2)
|
|
┌─────────────────────────────────────────────────────────┐
|
|
│ Channel Activity Timeline │
|
|
├─────────────────────────────────────────────────────────┤
|
|
│ [5 messages] ────────> ... (waits) │
|
|
│ [15 messages] ───────> ... (still hesitant) │
|
|
│ [40 messages] ───────> "Um... hi 👉👈" (finally joins) │
|
|
│ [quiet 2 hours] ─────> ... (doesn't break silence) │
|
|
└─────────────────────────────────────────────────────────┘
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────────────────┐
|
|
│ RESOURCE USAGE COMPARISON │
|
|
└─────────────────────────────────────────────────────────────────────┘
|
|
|
|
V1 System (per hour):
|
|
┌──────────────────────────────────────────────────┐
|
|
│ Timer checks: 4 (every 15 min) │
|
|
│ Actions taken: ~0.4 (10% of 4) │
|
|
│ LLM calls: ~0.4 (only when action taken) │
|
|
│ Wasted cycles: 3.6 (90% of time) │
|
|
│ Context awareness: 0 🚫 │
|
|
└──────────────────────────────────────────────────┘
|
|
|
|
V2 System (per hour, typical server):
|
|
┌──────────────────────────────────────────────────┐
|
|
│ Message events: ~50 (passive tracking) │
|
|
│ Presence events: ~10 (passive tracking) │
|
|
│ Decision checks: ~60 (lightweight math) │
|
|
│ Actions taken: ~0.5-2 (context-dependent) │
|
|
│ LLM calls: ~0.5-2 (only when action taken) │
|
|
│ Wasted cycles: 0 ✅ │
|
|
│ Context awareness: Real-time 🎯 │
|
|
└──────────────────────────────────────────────────┘
|
|
|
|
Key Difference:
|
|
V1: Blind random chance, no context
|
|
V2: Smart decisions, full context, same LLM usage
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────────────────┐
|
|
│ DECISION FLOW EXAMPLE │
|
|
└─────────────────────────────────────────────────────────────────────┘
|
|
|
|
Scenario: Active gaming chat, Miku is "excited" mood
|
|
|
|
1. Message arrives: "Just beat that boss!"
|
|
└─> Engine: track_message() → momentum = 0.7
|
|
|
|
2. Check decision:
|
|
┌────────────────────────────────────────────┐
|
|
│ conversation_momentum = 0.7 │
|
|
│ threshold (excited) = 0.6 * (2-0.9) = 0.66 │
|
|
│ 0.7 > 0.66 ✅ │
|
|
│ │
|
|
│ messages_since_appearance = 8 │
|
|
│ 8 >= 5 ✅ │
|
|
│ │
|
|
│ time_since_last_action = 450s │
|
|
│ 450 > 300 ✅ │
|
|
│ │
|
|
│ random() < impulsiveness (0.9) │
|
|
│ 0.43 < 0.9 ✅ │
|
|
│ │
|
|
│ DECISION: join_conversation ✅ │
|
|
└────────────────────────────────────────────┘
|
|
|
|
3. Execute action:
|
|
└─> Call existing miku_detect_and_join_conversation_for_server()
|
|
└─> LLM generates contextual response
|
|
└─> "Wahaha! That boss was tough! What did you think of the music? 🎵✨"
|
|
|
|
4. Record action:
|
|
└─> Reset messages_since_appearance = 0
|
|
└─> Update time_since_last_action
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────────────────┐
|
|
│ MIGRATION PATH │
|
|
└─────────────────────────────────────────────────────────────────────┘
|
|
|
|
Phase 1: Install V2 (parallel)
|
|
┌──────────────────────────────────────────────┐
|
|
│ Keep V1 scheduler running │
|
|
│ Add V2 event hooks │
|
|
│ V2 tracks context but doesn't act │
|
|
│ Monitor logs to verify tracking works │
|
|
└──────────────────────────────────────────────┘
|
|
|
|
Phase 2: Test V2 (one server)
|
|
┌──────────────────────────────────────────────┐
|
|
│ Enable V2 for test server │
|
|
│ Disable V1 for that server │
|
|
│ Observe behavior for 24 hours │
|
|
│ Tune thresholds if needed │
|
|
└──────────────────────────────────────────────┘
|
|
|
|
Phase 3: Full rollout
|
|
┌──────────────────────────────────────────────┐
|
|
│ Switch all servers to V2 │
|
|
│ Remove V1 scheduler code │
|
|
│ Keep V1 code as fallback │
|
|
└──────────────────────────────────────────────┘
|
|
|
|
Phase 4: Enhance (future)
|
|
┌──────────────────────────────────────────────┐
|
|
│ Add topic tracking │
|
|
│ Add user affinity │
|
|
│ Add sentiment signals │
|
|
│ ML-based threshold tuning │
|
|
└──────────────────────────────────────────────┘
|
|
```
|