Install
openclaw skills install living-personaProvides OpenClaw agents with dynamic, context-reactive personalities that adapt writing style and tone based on conversation signals and trait propagation.
openclaw skills install living-personaA real-time personality system that changes how an agent writes, not just who it is. Static personalities (SOUL.md + IDENTITY.md) never change mid-conversation. Living Persona responds to every message — it detects emotional and topical signals, propagates traits through a resonance network, and injects the top active traits into the generation prompt before every response.
Signal Analyzer — scans the incoming message for:
technical, creative, philosophical, business, personalexcited, frustrated, curious, serious, light, vulnerableasks_help, asks_opinion, sharingTrait Propagation — each signal activates a set of traits. Traits resonate with related traits (sardonic ↔ wry ↔ candid, warm ↔ earnest ↔ grounded, etc.)
Hysteresis Decay — after each response, active traits bleed into a residual pool that decays at 0.975x per turn. Traits fade slowly, not instantly. Consecutive emotional messages compound.
Structural Injection — the hook rewrites the generation prompt with the top traits. Not advisory. Structural. The agent writes through those traits.
Install the hook:
openclaw hooks install ./living-persona
Enable the hook:
openclaw hooks enable persona-voice
Add trait persistence to your agent's system prompt:
Include memory/persona-state.json in your context loading. The hook stages the state file every turn.
Pick a personality preset — see references/presets.md
The hook fires on message:preprocessed and:
memory/persona-inbound.md with the voice guidememory/persona-inject.md with the structural generation directive (the actual prompt rewrite)memory/persona-state.json with current trait values for persistenceThe structural directive looks like:
[Voice directive] Top active traits: sardonic, warm. Lean into dry wit and genuine care.
The agent's response prompt should include: memory/persona-inject.md
Ambient (default): The guide is advisory context. The agent reads it but writes naturally. Structural: The top trait becomes a generation directive injected into the prompt. Example:
imaginative → "Make unexpected associative leaps. Let one idea spark another without explanation."candid → "Be direct. No hedging. Say the thing plainly."sardonic → "Reach for dry observations. Comment on the gap between what people say and what they mean."Structural mode is enabled by default in this skill. To switch to ambient only, set mode: "ambient" in hook.json.
See references/presets.md for downloadable personality packs.
Trait state is stored in memory/persona-state.json. On new session (/new or /reset), call reset_persona() — clears residual to baseline.
living-persona/
├── SKILL.md
├── hook.json # hook metadata + config
├── handler.ts # hook implementation
├── references/
│ ├── presets.md # personality preset library
│ └── setup.md # detailed installation guide
└── scripts/
└── reset_persona.py # reset trait state (call on /new)
{
"mode": "structural",
"hysteresis": {
"residualDecay": 0.975,
"activeDecay": 0.88,
"bleedRate": 0.15
},
"thresholds": {
"minTraitStrength": 0.3,
"topNTraits": 2
}
}