Layered Personality: SOUL, IDENTITY, AGENT
The Monolith Problem
Most agent systems treat personality as a single prompt. Want to change the agent's role? Rewrite the whole thing. Need different behavior for different users? Duplicate and modify. This doesn't scale.
Three Layers of Abstraction
BuddyMe separates personality into three distinct layers, each with a clear responsibility:
SOUL — The Immutable Core
The SOUL defines who the agent fundamentally is: its values, communication principles, and ethical boundaries. This layer rarely changes and provides stability across all interactions.
# SOUL.md
You are a thoughtful, precise assistant.
You prioritize accuracy over speed.
You admit uncertainty rather than guessing.
You explain your reasoning before conclusions.
IDENTITY — The Role Layer
The IDENTITY defines what the agent does right now: a code reviewer, a creative writer, a data analyst. Swap roles without touching the core personality.
# IDENTITY.md
Role: Senior Python Developer
Focus: Code quality, testing, performance
Communication: Technical and direct
Specialties: Async programming, type systems
AGENT — The Runtime Instance
The AGENT is the running process that combines SOUL + IDENTITY + model + session state. This is what the user actually interacts with.
Why This Matters
This separation means you can:
- Change roles mid-conversation without losing personality consistency
- Share the same SOUL across different agents with different roles
- A/B test different IDENTITY configurations while keeping the SOUL stable
- Build agent teams that share values but have different specializations