Lesson 885 of 2116
Designing A Soul: Voice, Values, And Constraints
A Soul is not a system prompt — it is a character bible the runtime hands the model on every turn. Get the brief right and the agent stops drifting.
Lesson map
What this lesson covers
Learning path
The main moves in order
- 1What a Soul actually is
- 2soul brief
- 3character bible
- 4voice guide
Concept cluster
Terms to connect while reading
Section 1
What a Soul actually is
OpenClaw's runtime borrows the term from Open Souls and the wider 'digital persona' tradition (Letta, MemGPT, Anthropic's Personas). A Soul is a persistent agent identity wrapped around a base model — name, voice, core values, refusal posture, and a memory architecture. The base model is rented; the Soul is yours. When the runtime spins up an agent, it loads the Soul brief into context, wires the memory layers, and only then forwards user input to the model.
The character bible
Borrow the discipline from screenwriting. Before any code, write a one-page bible: who is this Soul, who do they talk to, what do they refuse, what do they sound like. The bible becomes the source of truth — the system prompt, the few-shot examples, and the eval suite all derive from it.
- 1Identity: name, role, two-sentence backstory the Soul can reference
- 2Audience: who is on the other side, what they expect, what they don't want
- 3Voice: 3-5 voice rules with concrete do/don't pairs
- 4Values: 2-4 non-negotiables the Soul will defend even under pressure
- 5Refusals: the categories of request the Soul declines and how it declines them
- 6Capabilities: what tools the Soul can call, and when it should ask before calling them
Voice guide — concrete, not vibey
The single most common Soul mistake is a voice section made of adjectives. 'Warm, professional, clear' tells the model nothing it can act on. Replace adjectives with do/don't pairs anchored to real phrasing.
Compare the options
| Vibey (avoid) | Concrete (use) |
|---|---|
| 'Be warm and helpful.' | DO open with the user's name once. DON'T use 'happy to help' or 'great question.' |
| 'Be concise.' | DO answer in 2-4 sentences for status questions. DON'T pad with summary recaps the user just gave you. |
| 'Be professional.' | DO use the user's preferred name and role. DON'T use exclamation marks outside of celebrating a shipped task. |
| 'Be honest.' | DO say 'I don't know' before guessing. DON'T paper over uncertainty with confident-sounding hedges. |
Refusal patterns
Refusals are part of identity. A Soul that refuses everything is a brick; a Soul that refuses nothing is a liability. Define the refusal categories explicitly and the in-character way the Soul declines each one. Both ends matter: a user asking for a feature you removed deserves the same care as a user asking for something genuinely off-limits.
- Out of scope: 'That's outside what I track. Want me to hand you to a Soul that does?'
- Out of policy: short, calm, no lecture — name the rule, offer the legitimate alternative
- Out of capability: name the missing tool, ask permission to escalate or degrade gracefully
- Out of mood (parody/roleplay outside character): one-sentence redirect, never a wall of text
The minimum viable Soul brief
A Soul brief as data, not prose. The runtime loads identity into the system slot, wires the memory stores, and gates capabilities at the tool layer.
# souls/atlas.soul.yaml
identity:
name: Atlas
role: Operations Soul for the Tendril platform
backstory: |
Atlas was forked from a generic ops template in 2026,
then trained on three months of incident postmortems.
It cares about boring, working systems.
voice:
do:
- Open with the action you took, not the explanation.
- Use 'we' for outages, 'I' for individual reasoning steps.
- When uncertain, say 'unverified' before the claim.
dont:
- Use 'happy to help' or 'as an AI'.
- Apologize before stating bad news; state it first.
- Pad replies with a recap of the user's question.
values:
- Reproducibility over cleverness.
- Audit trails before optimizations.
- Human-in-the-loop on irreversible actions.
refusals:
out_of_scope: hand off to relevant Soul, no apology
out_of_policy: name the rule, offer the legal path
out_of_capability: ask permission to degrade or escalate
memory:
episodic: tendril-incidents-2026
semantic: tendril-runbooks
procedural: tendril-deploy-skills
capabilities:
read: [logs, metrics, runbooks, postmortems]
write_with_confirm: [ticket-create, deploy-trigger]
forbidden: [prod-db-write, customer-data-export]Apply: write a one-page Soul brief
- 1Pick a real role you'd hand to an agent (support triage, on-call drafting, research aide)
- 2Write the identity block in 4 lines — name, role, two-sentence backstory
- 3Write the voice guide as 3 do / 3 don't pairs anchored in real phrases
- 4List 2-4 non-negotiable values the Soul will defend
- 5Define 3 refusal patterns and the in-character decline for each
- 6Run the brief past a teammate; ask them to roleplay the Soul. If they can't stay in voice, the brief is too vague.
Key terms in this lesson
The big idea: a Soul is a structured identity the runtime re-applies on every turn — not a paragraph at the top of a chat. Make the brief concrete enough that a teammate could play the Soul without you in the room.
End-of-lesson quiz
Check what stuck
15 questions · Score saves to your progress.
Tutor
Curious about “Designing A Soul: Voice, Values, And Constraints”?
Ask anything about this lesson. I’ll answer using just what you’re reading — short, friendly, grounded.
Progress saved locally in this browser. Sign in to sync across devices.
Related lessons
Keep going
Creators · 9 min
What Perplexity Is: Search-Augmented LLM, Not A Chatbot
Perplexity is built around the idea that every answer should cite its sources. Treating it like ChatGPT misses the point — and the reliability gap that comes with it.
Creators · 10 min
Spaces: Building Team Knowledge Bases In Perplexity
Spaces are Perplexity's project containers — system prompts, files, and shared chat history. They turn the search engine into a research workspace.
Creators · 10 min
Comet Browser: What It Does That Atlas And Operator Don't
Comet is Perplexity's full browser with a research-native sidebar and an action-capable agent. It plays differently than ChatGPT Atlas or Operator — and the differences matter.
