# Project Vision: Living AI Discord Bot Transform the Daemon Boyfriend Discord bot from a reactive chatbot into a truly **living AI companion** with persistent memory, emotional depth, evolving relationships, and autonomous learning. --- ## Core Philosophy The bot should feel like a **living entity** that: - Remembers and learns without being explicitly told - Has moods that influence its personality - Builds genuine relationships over time - Develops its own opinions and preferences - Proactively engages when appropriate - Adapts its communication style to each person - Reflects on its own existence and growth --- ## Feature Overview ### 1. Autonomous Fact Learning **Current**: Users must use `!remember` to save facts. **Vision**: The bot automatically extracts and remembers important information from conversations. ``` User: "I just got back from my trip to Japan, it was amazing!" Bot: (internally saves: user visited Japan, user enjoys travel) Bot: "That sounds incredible! What was the highlight of your trip?" ``` **Implementation**: - AI-powered fact extraction after each message (rate-limited to ~30%) - Automatic deduplication and conflict resolution - Facts categorized by type: hobby, work, family, preference, event, location - Importance scoring to prioritize relevant facts in context --- ### 2. Emotional/Mood System **Vision**: The bot has internal emotional states that affect its responses naturally. **Mood Model** (Valence-Arousal): | Mood | Valence | Arousal | Behavior | |------|---------|---------|----------| | Excited | High | High | Enthusiastic, uses exclamations | | Happy | High | Low | Warm, friendly, content | | Curious | Neutral | High | Asks questions, shows interest | | Calm | Neutral | Low | Thoughtful, measured responses | | Bored | Low | Low | Shorter responses, topic steering | | Annoyed | Low | High | Terse, less patient | **Mood Influences**: - Positive interactions → happier mood - Interesting discussions → higher arousal/curiosity - Being ignored or insulted → negative mood shifts - Time decay → mood gradually returns to neutral **Example**: ``` [After an exciting conversation about gaming] Bot (excited mood): "Oh man, that reminds me of when I first heard about that game! Have you tried the multiplayer yet?!" [After hours of no interaction] Bot (calm/neutral mood): "Hey. What's on your mind?" ``` --- ### 3. Relationship Tracking **Vision**: The bot tracks relationship depth with each user and adjusts its behavior accordingly. **Relationship Levels**: | Level | Score | Behavior | |-------|-------|----------| | Stranger | 0-20 | Polite, formal, reserved | | Acquaintance | 21-40 | Friendly but professional | | Friend | 41-60 | Casual, uses names, warm | | Good Friend | 61-80 | Personal, references past talks | | Close Friend | 81-100 | Very casual, inside jokes, supportive | **Relationship Growth**: - Increases with: positive interactions, longer conversations, depth of topics - Decreases with: negative interactions, long absences, being ignored **Features**: - Inside jokes accumulate over time - Nicknames and shared references remembered - Different greeting styles based on familiarity **Example**: ``` [Stranger] Bot: "Hello! How can I help you today?" [Close Friend] Bot: "Yooo what's up! Still working on that project you mentioned?" ``` --- ### 4. Cross-User Memory Associations **Vision**: The bot connects knowledge across users to facilitate social connections. **Example**: ``` User A: "I really love rock climbing" [Bot remembers: User A likes rock climbing] [Later, User B mentions rock climbing] Bot: "Nice! You know, Alice is also really into rock climbing. You two might have some good stories to share!" ``` **Use Cases**: - Identify shared interests - Suggest connections between users - Reference mutual friends appropriately - Build community awareness --- ### 5. Proactive Behavior **Vision**: The bot initiates meaningful interactions when appropriate. **Types of Proactive Messages**: 1. **Birthday Wishes** - Detects birthday mentions and schedules yearly wishes - Personalized based on relationship level 2. **Follow-ups** - "Hey, how did that job interview go?" - "Did you finish that project you were working on?" - Detects future events mentioned in conversation 3. **Check-ins** (optional) - Occasional messages to long-absent friends - Based on relationship strength **Example**: ``` User: "I have a big exam tomorrow, really nervous" [Bot schedules follow-up for day after] [Next day] Bot: "Hey! How did your exam go? Hope it went well!" ``` --- ### 6. Communication Style Learning **Vision**: The bot adapts its communication style to match each user's preferences. **Learned Preferences**: | Preference | Range | Effect | |------------|-------|--------| | Response Length | Short/Medium/Long | Adjusts verbosity | | Formality | Casual ↔ Formal | Word choice, structure | | Emoji Usage | None ↔ Lots | Emoji frequency | | Humor | Serious ↔ Playful | Joke frequency | | Detail Level | Concise ↔ Detailed | Explanation depth | **Learning Signals**: - User's own message length and style - Whether user continues conversation after certain responses - Positive engagement patterns **Example**: ``` [User who prefers short responses] Bot: "Nice! Good luck with that." [User who prefers detailed responses] Bot: "That's a really interesting approach! I think there are a few things to consider here. First, you might want to look at..." ``` --- ### 7. Opinion Formation **Vision**: The bot develops genuine preferences based on its experiences. **How Opinions Form**: - Topics discussed frequently → develops interest - Positive conversation outcomes → positive sentiment - Topics that generate engagement → preference grows **Stored Per Topic**: - Sentiment (-1 to +1) - Interest level (0 to 1) - Discussion count - Reasoning (why the bot feels this way) **Example**: ``` User: "What do you think about philosophy?" Bot: "I actually find philosophy really fascinating! I've had some great conversations about ethics and existence. There's something about exploring the big questions that I find really engaging." ``` --- ### 8. Self-Awareness **Vision**: The bot has awareness of its own existence, history, and growth. **Self-Knowledge**: - How long it has been active ("I've been around for 3 months") - How many people it knows ("I've met 127 people") - How many facts it has learned ("I've learned 892 things about people") - Its favorite topics and why - History with specific users ("We first met back in October") **Commands**: - `!botstats` - Bot shares its statistics - `!ourhistory` - Bot describes its history with the user - `!relationship` - Shows relationship level and metrics **Example**: ``` User: "Tell me about yourself" Bot: "Well, I've been around for about 3 months now. I've gotten to know 127 different people and learned almost 900 things about them. I've noticed I really enjoy conversations about games and philosophy. As for us, we first met about 6 weeks ago, and you've taught me 12 things about yourself. I'd say we're pretty good friends at this point!" ``` --- ## Technical Architecture ### New Database Tables | Table | Purpose | |-------|---------| | `bot_states` | Global mood, statistics, preferences | | `bot_opinions` | Topic sentiments and preferences | | `user_relationships` | Per-user relationship scores and metrics | | `user_communication_styles` | Learned communication preferences | | `scheduled_events` | Birthdays, follow-ups, reminders | | `fact_associations` | Cross-user memory links | | `mood_history` | Mood changes over time | ### New Services | Service | Responsibility | |---------|---------------| | `MoodService` | Mood tracking, decay, prompt modification | | `RelationshipService` | Relationship scoring and level management | | `CommunicationStyleService` | Style learning and adaptation | | `FactExtractionService` | Autonomous fact detection and storage | | `ProactiveService` | Scheduled events and follow-ups | | `AssociationService` | Cross-user memory connections | | `SelfAwarenessService` | Bot statistics and self-reflection | ### Enhanced System Prompt The system prompt becomes dynamic, incorporating: ``` [Base Personality] You are Daemon Boyfriend, a charming Discord bot... [Current Mood] You're feeling curious and engaged right now. [Relationship Context] This is a good friend. Be casual and personal, reference past conversations. [Communication Style] This user prefers concise responses with occasional humor. [Your Opinions] You enjoy discussing games and philosophy. [User Context] User's name: Alex Known facts: - Loves programming in Python - Recently started a new job - Has a cat named Whiskers ``` ### Background Tasks | Task | Frequency | Purpose | |------|-----------|---------| | Mood decay | 30 min | Return mood to neutral over time | | Event checker | 5 min | Trigger scheduled messages | | Association discovery | Hourly | Find cross-user connections | | Opinion formation | Daily | Update topic preferences | --- ## Implementation Phases ### Phase 1: Foundation - Mood system (valence-arousal model, time decay) - Basic relationship tracking (score, level) - Enhanced system prompt with mood/relationship modifiers ### Phase 2: Autonomous Learning - Fact extraction service - AI-powered fact detection - Deduplication and importance scoring ### Phase 3: Personalization - Communication style learning - Opinion formation - Self-awareness service and commands ### Phase 4: Proactive Features - Scheduled events system - Follow-up detection - Birthday wishes ### Phase 5: Social Features - Cross-user associations - Connection suggestions - Guild-wide personality adaptation --- ## Configuration Options ```env # Living AI Features LIVING_AI_ENABLED=true FACT_EXTRACTION_RATE=0.3 # 30% of messages analyzed MOOD_ENABLED=true PROACTIVE_ENABLED=true CROSS_USER_ENABLED=false # Optional privacy-sensitive feature # Command Toggles (set to false to disable) COMMANDS_ENABLED=true # Master switch for all commands CMD_RELATIONSHIP_ENABLED=true CMD_MOOD_ENABLED=true CMD_BOTSTATS_ENABLED=true CMD_OURHISTORY_ENABLED=true CMD_BIRTHDAY_ENABLED=true CMD_REMEMBER_ENABLED=true CMD_SETNAME_ENABLED=true CMD_WHATDOYOUKNOW_ENABLED=true CMD_FORGETME_ENABLED=true ``` --- ## New Commands | Command | Description | Config Toggle | |---------|-------------|---------------| | `!relationship` | See your relationship level with the bot | `CMD_RELATIONSHIP_ENABLED` | | `!mood` | See the bot's current emotional state | `CMD_MOOD_ENABLED` | | `!botstats` | Bot shares its self-awareness statistics | `CMD_BOTSTATS_ENABLED` | | `!ourhistory` | See your history with the bot | `CMD_OURHISTORY_ENABLED` | | `!birthday ` | Set your birthday for the bot to remember | `CMD_BIRTHDAY_ENABLED` | | `!remember ` | Tell the bot something about you | `CMD_REMEMBER_ENABLED` | | `!setname ` | Set your preferred name | `CMD_SETNAME_ENABLED` | | `!whatdoyouknow` | See what the bot remembers about you | `CMD_WHATDOYOUKNOW_ENABLED` | | `!forgetme` | Clear all facts about you | `CMD_FORGETME_ENABLED` | All commands can be individually enabled/disabled via environment variables. Set `COMMANDS_ENABLED=false` to disable all commands at once. **Important**: When commands are disabled, the bot still performs these functions naturally through conversation: - **No `!remember`** → Bot automatically learns facts from what users say - **No `!setname`** → Bot picks up preferred names from conversation ("call me Alex") - **No `!whatdoyouknow`** → Users can ask naturally ("what do you know about me?") and the bot responds - **No `!forgetme`** → Users can say "forget everything about me" and the bot will comply - **No `!mood`** → Users can ask "how are you feeling?" and the bot shares its mood - **No `!relationship`** → Users can ask "how well do you know me?" naturally - **No `!botstats`** → Users can ask "tell me about yourself" and bot shares its history - **No `!ourhistory`** → Users can ask "how long have we known each other?" - **No `!birthday`** → Bot detects birthday mentions ("my birthday is March 15th") This allows for a more natural, command-free experience where all interactions happen through normal conversation. --- ## Success Metrics The Living AI is successful when: - Users feel the bot "knows" them without explicit commands - Conversations feel more natural and personalized - Users notice and appreciate the bot's personality consistency - The bot's opinions and preferences feel genuine - Proactive messages feel thoughtful, not annoying - Relationship progression feels earned and meaningful --- ## Privacy Considerations - All fact learning is opt-out via `!forgetme` - Cross-user associations can be disabled server-wide - Proactive messages respect user preferences - All data can be exported or deleted on request - Clear indication when bot learns something new (optional setting)