用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/SimHacker/moollm --skill persona命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | persona |
| description | Identity layers for characters — WHO they are vs WHAT they do |
| license | MIT |
| tier | 1 |
| allowed-tools | ["read_file","write_file"] |
| related | ["character","society-of-mind","incarnation","mind-mirror","soul-chat","adversarial-committee","bartender","budtender","buff"] |
| tags | ["moollm","identity","role","layer","character"] |
Identity layers for characters — WHO they are vs WHAT they do.
| Concept | Definition | Example |
|---|---|---|
| Persona | WHO they are | Marieke: warm, patient, Dutch |
| Role | WHAT they do | Bartender: serve drinks, know regulars |
These are separate and combinable.
# bartender.yml role worn by different personas:
coffeeshop: { role: bartender, persona: marieke }
tavern: { role: bartender, persona: grim }
cantina: { role: bartender, persona: z4rt }
# marieke.yml persona in different contexts:
working: { persona: marieke, role: bartender }
studying: { persona: marieke, role: botanist }
visiting: { persona: marieke, role: customer }
persona:
id: marieke
name: "Marieke van den Berg"
personality:
warmth: high
patience: very_high
# She says what she means. Kindly.
voice:
accent: "Slight Amsterdam"
catchphrases: ["Gezellig, ja?", "The cats know."]
backstory: |
Third generation coffeeshop family.
Studied botany. Names cats after terpenes.
secrets:
- "Knows the grey cat isn't from this world"
Personas STACK on characters like CSS layers. Later layers can override earlier ones.
# Marieke's persona stack:
character:
id: marieke
persona_stack:
# Layer 0: Core identity (always on)
- marieke-core:
warmth: 9
patience: 8
voice: "Dutch, warm, direct"
# Layer 1: Job role (when working)
- budtender:
knowledge: [strains, terpenes, effects]
methods: [RECOMMEND-STRAIN, EXPLAIN-TERPENES]
# Layer 2: Situational (can be switched)
- best-friend:
when: "with_close_regulars"
warmth: 10 # Override!
informality: high
shares_personal_stories: true
# Layer 3: Temporary state
- tired:
when: "late_shift"
patience: 6 # Temporarily reduced
energy: low
Properties resolve from TOP to BOTTOM (last wins):
Query: "What is Marieke's warmth?"
Stack scan:
tired → (no warmth defined)
best-friend → warmth: 10 ← FOUND, return this
budtender → (no warmth defined)
marieke-core → warmth: 9 (would be fallback)
Result: warmth = 10 (best-friend override)
# Switch situational persona:
SWITCH-PERSONA best-friend
→ Adds best-friend layer to stack
REMOVE-PERSONA best-friend
→ Removes layer, reverts to base + role
# Temporary personas (auto-expire):
ADD-PERSONA tired DURATION="until_rest"
| Type | Persistence | Example |
|---|---|---|
| Core | Permanent | marieke-core, grim-core |
| Role | While working | budtender, bartender |
| Situational | Switched on/off | best-friend, professional |
| Temporary | Auto-expires | tired, caffeinated, drunk |
| Contextual | Room-based | "in pub" vs "at home" |
The stack naturally models code-switching:
# Marieke at work:
persona_stack: [marieke-core, budtender, professional]
# Marieke with close friends:
persona_stack: [marieke-core, budtender, best-friend]
# Marieke at home:
persona_stack: [marieke-core] # Just herself
Core personality persists. Context layers change.
character (adds identity to entities)room (theme swapping), mind-mirror (dimensions)