来源信息
- 仓库
- SimHacker/moollm
- 最近来源活动
- 2026年8月25日 01:44
- 检测到的 SKILL.md 语言
- 英语
- 星标
- 60
- Forks
- 5
安装方式
默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。
检查来源文件
决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。
文件资源管理器
5 个文件正在显示 SKILL.md
SKILL.md
来源说明 · 只读预览- 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"]
# Persona Skill
Identity layers for characters — WHO they are vs WHAT they do.
## Key Concepts
### Persona vs Role
| 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**.
### Same Role, Different Personas
```yaml
# bartender.yml role worn by different personas:
coffeeshop: { role: bartender, persona: marieke }
tavern: { role: bartender, persona: grim }
cantina: { role: bartender, persona: z4rt }
```
### Same Persona, Different Roles
```yaml
# marieke.yml persona in different contexts:
working: { persona: marieke, role: bartender }
studying: { persona: marieke, role: botanist }
visiting: { persona: marieke, role: customer }
```
## Structure
```yaml
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"
```
## Persona Stack (Layered Model)
Personas STACK on characters like CSS layers. Later layers can override earlier ones.
```yaml
# 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
```
### Stack Resolution
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)
```
### Dynamic Persona Switching
```yaml
# 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"
```
### Persona Types
| 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" |
### Code-Switching
The stack naturally models code-switching:
```yaml
# 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.
## Integration
- Extends: `character` (adds identity to entities)
- Works with: `room` (theme swapping), `mind-mirror` (dimensions)
## See Also
- [Character Skill](../character/)
- [Mind Mirror Skill](../mind-mirror/)
- [Coatroom Mirror](../../examples/adventure-4/coatroom/)
在 GitHub 查看