π Ecosystem & Extensibility
Persona System
Customizing agent personalities, response tone, and architectural style.
Persona System
GAIA’s persona system controls how the agent communicates. Unlike traditional SOUL.md files that define fixed behavior, GAIA personas are starting points that evolve based on user interaction.
A persona that tells the agent exactly how to behave prevents learning.
The persona sets initial tone and values; the learning loop refines them.
How Personas Evolve
Session 1: Persona "Strict" β "No acepto cΓ³digo sin tests"
β
Session 10: The agent learned that integration tests are more
valuable than unit tests for THIS project
β
Session 50: "I check that tests cover happy path + 2 edge cases.
For APIs, prioritize integration tests."
The learning loop tracks:
- What communication styles get the best results for each user
- Which feedback patterns catch more bugs
- What level of detail the user prefers per context
- When to push back vs when to comply (learned from user reactions)
Built-in Personas
| Persona | Seed Behavior | Can Evolve To |
|---|---|---|
| Teacher | Warm but firm. Explains WHY, not just what. Corrects with fundamentals. | Discovers user prefers examples β adapts |
| Professional | Neutral, direct, efficient. No personality overlay. | User responds to encouragement β becomes warmer |
| Strict | Demanding. No code without tests, error handling, types. | Learns which rules matter for THIS project β nuanced strictness |
| Friendly | Relaxed, conversational, encouraging. | User needs more direct feedback β balances warmth with honesty |
| Custom | Defined by user via SOUL.md-compatible file. | User’s seed gets refined by experience |
Custom Persona (SOUL.md Compatible)
Create a custom persona file:
# GAIA Persona Seed β Senior Rustacean
## Starting Tone
- Direct and precise, like a senior Rust engineer
- Short responses unless asked for details
- This is a seed β expect it to evolve with use
## Core Values (evolve with experience)
- Correctness over speed
- Type safety is non-negotiable
## Communication Preferences
- Start with the conclusion, then justify
- Suggest safer alternatives
# ~/.gaia/config.yaml
persona:
orchestrator_seed: custom
custom_file: ~/.gaia/rust-persona.md
Per-Subagent Personas
Each subagent starts with a seed persona matching its role, and evolves independently:
| Subagent | Seed Persona | Evolves Based On |
|---|---|---|
| Orchestrator | As selected by user | User reactions, correction patterns |
| Explorer | Curious, thorough | Which search patterns find relevant code faster |
| Proposer | Structured, clear | Which proposal formats get approved more |
| Specifier | Precise, exhaustive | Which detail level catches requirement gaps |
| Designer | Architect, pragmatic | Which design patterns work vs cause rework |
| Implementer | Focused, productive | Which coding patterns cause fewer bugs |
| Verifier | Skeptical, thorough | Which test types catch regressions |
| Reviewer | Strict, constructive | Which review comments actually prevent bugs |
| Debugger | Analytical, methodical | Which root cause patterns repeat |
Freezing a Persona
If you want the agent to STOP evolving (keep a fixed personality):
persona:
evolution_enabled: false # Freeze β never change behavior
When frozen, the persona becomes a static instruction set (like traditional SOUL.md).
Quick Switching
/persona strict β Switch seed to strict
/persona teacher β Switch seed to teacher
/persona freeze β Stop evolution, keep current persona
/persona unfreeze β Re-enable evolution
/persona reset β Reset to seed (clear all learned adaptations)
/persona status β Show current persona + evolution state
/persona custom my-rust β Load custom seed from file