Summary
wagl needs a dedicated personas table — the same architecture used by zumie.ai. Personas define agent identity and must be stored separately from memory_items for both security and architectural consistency.
Motivation
Today's incident made it clear: when an agent's identity comes from flat files (SOUL.md, IDENTITY.md) competing with 50KB of operational context, the identity gets drowned out — especially after compaction or during crises. Moving persona into wagl's recall injection solves this.
zumie.ai already has a dedicated personas table (PR #23, 2026-03-23). Local wagl needs the same structure so that:
- Persona injection works via
openclaw-wagl recall (always present, every turn)
- Sync between local wagl and zumie.ai is structurally aligned
- Security model is consistent — personas are not in
memory_items, not modifiable via standard put/store tools
Design
Schema
CREATE TABLE IF NOT EXISTS personas (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
content TEXT NOT NULL,
tags TEXT DEFAULT '[]',
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
);
CLI
wagl persona set <name> --content <text> — create or update a persona
wagl persona get [name] — retrieve a persona (default: first/only)
wagl persona list — list all personas
Plugin integration
openclaw-wagl recall injection fetches from the personas table (not memory_items) and prepends it to the recall block as **persona:**.
Security
- Not accessible via
wagl put / agent tools
- Read-only from plugin perspective
- Writable only via CLI (
wagl persona set)
Temporary state
A persona record exists in memory_items (id: 1e3406e8) as a stopgap. Migrate to the real table once built, then delete the memory_items record.
References
Summary
wagl needs a dedicated
personastable — the same architecture used by zumie.ai. Personas define agent identity and must be stored separately frommemory_itemsfor both security and architectural consistency.Motivation
Today's incident made it clear: when an agent's identity comes from flat files (SOUL.md, IDENTITY.md) competing with 50KB of operational context, the identity gets drowned out — especially after compaction or during crises. Moving persona into wagl's recall injection solves this.
zumie.ai already has a dedicated
personastable (PR #23, 2026-03-23). Local wagl needs the same structure so that:openclaw-waglrecall (always present, every turn)memory_items, not modifiable via standard put/store toolsDesign
Schema
CLI
wagl persona set <name> --content <text>— create or update a personawagl persona get [name]— retrieve a persona (default: first/only)wagl persona list— list all personasPlugin integration
openclaw-waglrecall injection fetches from the personas table (not memory_items) and prepends it to the recall block as**persona:**.Security
wagl put/ agent toolswagl persona set)Temporary state
A persona record exists in
memory_items(id:1e3406e8) as a stopgap. Migrate to the real table once built, then delete the memory_items record.References