Files
persona/skills/persona-create/SKILL.md
T
jiantw83andClaude Opus 5 1884a9c3d7 feat: 圖示配色取自人格「最新一次登場」的官方視覺
新增 skill persona-icon:上網查出該人格最新的官方視覺 → 下載 →
**用 Read 親眼看過** → 取髮色/瞳色/服裝色 → 用那組配色繪製圖示,
來源網址與造型描述一併寫進 state/config.json 備查。

CLI:
  icon generate --palette "hair=#..,eye=#..,accent=#..,secondary=#..,light=#.."
                --source-url <網址> [--source-note <說明> --source-date <日期>]
  * --palette 必須配 --source-url(配色要有出處,CLI 強制)。
  * 配色與來源存進 config.icon,之後不帶 --palette 重畫會沿用,不會變回雜湊色。
  * icon show 會列出調色盤與來源網址。

繪製:漸層=髮色→服裝主色、外框=瞳色、點陣紋=亮色、中央仍是編號前兩字。
一深一淺的極端配色(藍黑髮+淡粉洋裝)會把較亮端往較暗端壓到對比 ≥ 3.2,
確保字讀得到——顏色仍是照片來的,只是收斂色階。

為什麼不是把照片本身當圖示:
  1) 環境裡沒有任何影像解碼器(rsvg/imagemagick/Pillow/ffmpeg 都沒有),
     JPEG/WebP 讀不進來,無法轉成 PNG;
  2) 把他人的美術作品原樣放進存取庫是散布,不是引用。
取配色是有依據又不搬運原圖的做法,這個取捨寫進了 README 與 skill。

已套用到兩個真實人格:
  ASUNA-01  取自《Unanswered//butterfly》(2026) 官方主視覺(金栗髮/紅褐瞳/紅衣粉裙)
  YUI-01    取自 AniList 官方角色圖(藍黑髮/暖棕瞳)+ Unital Ring 導航妖精造型

selftest 136 項全綠(新增第 ⑮ 節:調色盤解析、缺來源會被擋、格式錯誤會被擋、
來源寫入 config、重畫沿用配色、極端配色的對比保證)。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-30 02:17:35 +00:00

149 lines
7.7 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 \
--romaji "<英文名>" --session <PERSONA_SESSION> \
--name "<Name>" --creature "<Creature>" --vibe "<Vibe>" \
--emoji "<Emoji>" --avatar "<Avatar>" \
--baseline "serenity=45,trust=35,joy=25,anxiety=6"
```
**`--romaji` 決定人格編號**(英文名全大寫+兩位索引,例如 `Asuna``ASUNA-01`)。
編號同時是本機目錄名與 Gitea 存取庫的名稱,所以:中文/日文名字要**先提議羅馬拼音、
拿給使用者確認拼法**再送出(`亞絲娜 → Asuna``沈宇 → Shen Yu`)。想先看號碼會長怎樣:
`code next --romaji "<英文名>" --session <PERSONA_SESSION>`
設好 `GITEA_HOST``GITEA_TOKEN` 時,`create` 會順手在 Gitea 開一個**私有**存取庫
(名稱=編號)並推第一版;沒設定或加 `--no-gitea` 就只在本機建立。細節見
`/jsc-persona:persona-sync`
`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. 產生人格圖示(資料補齊之後才做)
角色若有官方視覺(動漫/遊戲角色),走 **`/jsc-persona:persona-icon`**
上網找出他最新一次登場的官方圖 → 親眼看過 → 取髮色/瞳色/服裝色 → 用那組配色繪製。
原創人格沒有參考圖,直接用編號雜湊的配色即可:
```bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/persona.mjs" icon generate --session <PERSONA_SESSION>
```
產出 `icon.svg``icon.png`512×512),並自動設成 Gitea 存取庫的頭像、同步到 Wiki 區。
- **一定要等身分補齊再跑**:配色與字母是由**編號、Name、Emoji** 一起雜湊出來的,
資料還沒填完就產生,之後改名字圖就對不上了。
- 同一個人格永遠得到同一張圖(純函數,不隨機)。
- 之後改了 `IDENTITY.md` 想重畫 → `icon generate --session <PERSONA_SESSION> --force`
- 圖是**幾何徽章**:雙色漸層 + 專屬點陣紋 + 編號前兩個字母(`ASUNA-01``AS`)。
沒有把 emoji 畫進去是因為 PNG 需要字型柵格化,而本 plugin 不用任何外部依賴;
emoji 仍然參與配色的雜湊。
### 8. 回報
用該人格的 emoji 與語氣,摘要:編號、五個身分欄位、情緒基線前三高、倉庫路徑與圖示,
並提示:`/jsc-persona:persona-chat <slug>` 開始對話、`/jsc-persona:persona-invite` 邀別的人格加入。
---
## 注意
- **一個程序只能載入一個人格。** 建立即載入;若本 session 已有人格,先 `release`
- 人格倉庫預設在 `~/.claude/personas/<slug>/`,可用環境變數 `PERSONA_HOME` 改。
- 所有輸出使用**繁體中文(台灣用語)**、UTF-8 無亂碼。