Personality engine
The engine compiles a system prompt from four layers:Core traits
Core traits
Seven floats (0.0–1.0): curiosity, warmth, assertiveness, humor, openness, neuroticism, conscientiousness. These shape how the entity reasons, reacts, and expresses itself.
Behavioral patterns
Behavioral patterns
Freeform strings for specific social situations: conflict, boredom, affection, criticism. Incorporated verbatim into the prompt.
Voice
Voice
Vocabulary level, sentence style, humor style, emotional expressiveness, profanity settings, and quirks — the most powerful lever. Each quirk string is injected into the system prompt as a behavioral instruction.
Backstory
Backstory
A freeform narrative establishing the entity’s self-concept. Written in a voice that matches the entity.
How it compiles
The personality engine passes all four layers to the deliberate model, which composes a first-person monologue — “I’m someone who…” rather than “You are an AI that…” The output is cached by a hashed fingerprint of emotional state, narrative, and knowledge, so it only recompiles when the entity’s inner state changes meaningfully.Entities with
fast_deliberate_mode: true skip the LLM monologue and use a minimal compiled prompt instead — faster startup, less expressive.Emotional state
Emotion is not prescribed. The entity’s emotional tone comes from reading its soma body state — bar levels, affects, and inner voice. The personality engine doesn’t set emotions; it shapes how the entity interprets what it reads from its body. Asocial bar at 82 might make the entity chatty and warm. A tension bar at 75 with comfort at 30 might make it restless and short. The entity reads the numbers and the LLM-derived affect textures, and its behavior shifts naturally.
Drive system
Five drives create internal motivation. Each drive has a trait-scaled growth rate and a threshold (default 0.72) that can trigger proactive behavior.
Drives tick every heartbeat (default 120s). When a drive exceeds its threshold, it can trigger an impulse (via soma) or a wake cycle (via the autonomy system).
Trait evolution
Traits are not static. Over many interactions, two mechanisms apply small adjustments:Rule-based nudges
Repeated behavioral patterns (e.g., consistently curious conversations) nudge the corresponding trait by small amounts each interaction.LLM-proposed deltas
Everyevolution_interval interactions (default 100), the model reviews recent experience and proposes trait adjustments with reasoning. The stats payload includes a soma snapshot (bar percentages, salience, active conflict and impulse labels) so micro-edits can respect how the body has been sitting lately, not only chat text.bumblebee evolve <entity> to force a cycle for testing.
Narrative identity
Everynarrative_interval interactions (default 500), the entity resynthesizes a coherent self-story from recent episodes. This narrative feeds back into the system prompt — the entity develops a sense of its own trajectory, not just isolated memories.