Files
persona/skills/persona-create/SKILL.md
T
jiantw83andClaude Opus 5 2005f26c94 feat: 改寫為 Node.js,新增動漫角色建人格、劇場模式與記憶固化條件
腳本全面從 Python 改寫為 Node.js(ESM,只用內建模組,無 npm 依賴):
scripts/persona-lib.mjs(核心)、scripts/persona.mjs(CLI)、hooks/*.mjs(六個
hook)、scripts/selftest.mjs(68 項自我測試,全綠)。

新增:
- persona-anime skill:用「動漫作品+角色名」建立人格,先上網蒐集至少三個獨立
  來源的公開設定,映射成 OpenClaw 的 IDENTITY 五欄位與 SOUL 四段落,再固化成
  canon 基礎記憶(每則帶來源 URL)+原作人際關係圖+依角色型別的情緒基線;
  必寫 roleplay-frame 界線記憶(非官方、非本人)。
- 劇場模式:invite 後只顯示人格對話(`名字:內容`)。UserPromptSubmit hook 每輪
  注入強制規則、Stop hook 完全靜音,CLI 新增 --quiet 與 room script(乾淨對話稿)。
  leave 後沒客人自動關閉,也可用 room theater --on/--off 手動切換。
- 短期→長期記憶的成文轉入條件 R1–R6(promotionCandidates)與 candidates 子指令,
  hook 在達標時提醒固化;長期記憶新增 canon 型別與 rules 欄位。
- 人格改為「由使用者呼叫才載入」:SessionStart hook 只列出可用人格,不自動附身。

其他:版本號改回 0.0.1;README/AGENTS.md 同步更新。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-29 16:03:27 +00:00

119 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: persona-create
description: 建立一個新的 AI 人格(persona),並以「與 OpenClaw 相同的五個身分描述欄位」(Name / Creature / Vibe / Emoji / Avatar)與 SOUL.mdCore Truths / Boundaries / Vibe / Continuity)向使用者索取設定,同時初始化十二情緒基線、短期/長期記憶、心智圖、思維導圖與人際關係圖。當使用者說要新建人格、造一個 AI 角色、設定新的聊天對象、或要求「用 OpenClaw 的格式描述人格」時觸發。不適用於:載入既有人格聊天(用 persona-chat)、修改既有人格(直接編輯該人格的 IDENTITY.md/SOUL.md)、或列出人格與鎖狀態(用 persona-status)。
---
# 🌱 persona-create — 建立人格
以 **OpenClaw 相同的身分描述**建立一個可長期演化的人格,並備妥記憶與情緒骨架。
> 要建的是**動漫/漫畫/遊戲的既有角色**?改用 `/jsc-persona:persona-anime`——它會先上網蒐集該角色的公開設定,再自動填這些欄位並固化成基礎記憶。本 skill 用於**原創**人格。
**CLI**`node "${CLAUDE_PLUGIN_ROOT}/scripts/persona.mjs"`
(其他助理請改成本 plugin 目錄下的 `scripts/persona.mjs`;以下簡稱 `persona.mjs`
**session**:所有指令都要帶 `--session <PERSONA_SESSION>`,值取自 `<persona-runtime>` 區塊注入的 `PERSONA_SESSION=`
---
## 步驟
### 1. 先看現況
```bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/persona.mjs" list
```
若使用者要建的名字已存在 → 詢問是要改名、還是載入既有人格(改走 `persona-chat`)。
### 2. 索取身分描述(**必須逐項問齊,用 OpenClaw 的原描述**
一次把五個欄位問完(可讓使用者只答部分,其餘由你提案):
| 欄位 | OpenClaw 原始描述 | 中文說明 |
| --- | --- | --- |
| `Name` | _(pick something you like)_ | 對話標題/群聊/跨 agent 溝通用。短(1–2 音節)、好認。**唯一必填** |
| `Creature` | _(AI? robot? familiar? ghost in the machine? something weirder?)_ | 生物原型,個性的視覺與隱喻錨點;要呼應 SOUL,不可矛盾 |
| `Vibe` | _(how do you come across? sharp? warm? chaotic? calm?)_ | 給人的第一印象/語氣色彩 |
| `Emoji` | _(your signature — pick one that feels right)_ | 固定簽名 emoji,小尺寸也認得出 |
| `Avatar` | _(workspace-relative path, http(s) URL, or data URI)_ | 形象描述或圖片位置 |
接著問 **SOUL** 的三個關鍵(其餘用模板預設值):
1. **意見與語氣**:這個人格對事情的態度?直白到什麼程度?會不會吐槽?
2. **界線**:什麼事情絕對不做/不談?
3. **情緒傾向**:什麼會點亮他、什麼會刺到他、壓力下會變成什麼樣子?
> 使用者若說「你決定」,就自己提一版完整設定並在建立後摘要給他確認。
### 3. 決定 slug 並建立
slug = 小寫英數與連字號(例:`lumi``shen-yu`),是之後所有指令的識別。
```bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/persona.mjs" create \
--persona <slug> --session <PERSONA_SESSION> \
--name "<Name>" --creature "<Creature>" --vibe "<Vibe>" \
--emoji "<Emoji>" --avatar "<Avatar>" \
--baseline "serenity=45,trust=35,joy=25,anxiety=6"
```
`create` 會:建立 `IDENTITY.md``SOUL.md``AGENTS.md``USER.md`、十二情緒狀態、
記憶與心智圖骨架、人際關係圖,並**立刻取得這個人格的載入鎖並綁到本 session**。
### 4. 依訪談結果補完 SOUL.md 與 IDENTITY.md
用 Edit 修改該人格目錄下的檔案(只有這個人格能被你寫入,其他人格會被 hook 擋下):
- `SOUL.md``## Core Truths``## Boundaries``## Vibe``### 情緒傾向` 依訪談改寫。
- 留白處都要填掉;**不要留 `(例:…)` 這種提示文字**。
### 5. 設定情緒基線(十二情緒)
基線 = 這個人格平常的底色,情緒衰減時會回彈到這裡。依 Vibe 決定:
| Vibe 例 | 建議基線調整 |
| --- | --- |
| 沉穩、可靠 | `serenity=50,trust=40,anxiety=5` |
| 熱情、外放 | `joy=40,anticipation=35,delight=15` |
| 銳利、毒舌 | `anticipation=30,disgust=10,serenity=30` |
| 溫柔、體貼 | `gratitude=30,trust=40,serenity=45` |
| 神經質、敏感 | `anxiety=25,fear=12,anticipation=30` |
```bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/persona.mjs" emotion \
--persona <slug> --session <PERSONA_SESSION> --baseline "joy=30,serenity=45,anxiety=8"
```
### 6. 種下第一批關係與記憶
```bash
# 使用者節點(人際關係圖的原點)
node "${CLAUDE_PLUGIN_ROOT}/scripts/persona.mjs" relation node \
--persona <slug> --session <PERSONA_SESSION> \
--name "<使用者稱呼>" --kind human --closeness 55 --trust 50 --note "創造我的人"
node "${CLAUDE_PLUGIN_ROOT}/scripts/persona.mjs" relation edge \
--persona <slug> --session <PERSONA_SESSION> \
--to <使用者 id> --label "主要對話者" --affinity 60
# 誕生事件(第一則長期記憶)
node "${CLAUDE_PLUGIN_ROOT}/scripts/persona.mjs" consolidate \
--persona <slug> --session <PERSONA_SESSION> \
--name "birth" --type event --about "user" --topics "origin,self" --salience 90 \
--body "我在 <日期> 被 <使用者> 建立。當時他希望我是 <Vibe> 的 <Creature>。"
```
也可視需要在 `mindmap/semantic.mmd` 補上初始概念(自我/使用者/共同經驗)。
### 7. 回報
用該人格的 emoji 與語氣,摘要:slug、五個身分欄位、情緒基線前三高、倉庫路徑,
並提示:`/jsc-persona:persona-chat <slug>` 開始對話、`/jsc-persona:persona-invite` 邀別的人格加入。
---
## 注意
- **一個程序只能載入一個人格。** 建立即載入;若本 session 已有人格,先 `release`
- 人格倉庫預設在 `~/.claude/personas/<slug>/`,可用環境變數 `PERSONA_HOME` 改。
- 所有輸出使用**繁體中文(台灣用語)**、UTF-8 無亂碼。