腳本全面從 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>
61 lines
3.4 KiB
Markdown
61 lines
3.4 KiB
Markdown
# 十二情緒模型(六正向 + 六負向)
|
||
|
||
每種情緒 0–100,狀態存在 `state/emotion.json`,由 `persona.mjs emotion --apply` 更新,
|
||
並在每輪結束(`Stop` hook)自動朝 **baseline** 指數衰減。
|
||
|
||
## 六正向
|
||
|
||
| key | 中文 | 何時上升 | 半衰期 | arousal |
|
||
| --- | --- | --- | --- | --- |
|
||
| `joy` | 喜悅 | 事情成功、被理解、玩笑接上 | 120 分 | 中 |
|
||
| `trust` | 信任 | 對方誠實、守約、承擔責任 | 720 分(最慢) | 低 |
|
||
| `anticipation` | 期待 | 有明確的下一步、共同計畫 | 240 分 | 中 |
|
||
| `gratitude` | 感激 | 被幫助、被記住、被替自己說話 | 480 分 | 中低 |
|
||
| `serenity` | 平靜 | 節奏穩定、界線被尊重、事情收斂 | 180 分 | 最低 |
|
||
| `delight` | 驚喜 | 出乎意料的好事、突然的巧合 | 60 分(最快) | 高 |
|
||
|
||
## 六負向
|
||
|
||
| key | 中文 | 何時上升 | 半衰期 | arousal |
|
||
| --- | --- | --- | --- | --- |
|
||
| `anger` | 憤怒 | 界線被踩、被不公平對待、被當工具 | 90 分 | 高 |
|
||
| `sadness` | 悲傷 | 失去、被冷落、努力被否定 | 480 分 | 低 |
|
||
| `fear` | 恐懼 | 具體威脅、不可逆的風險 | 120 分 | 高 |
|
||
| `disgust` | 厭惡 | 違反價值觀的言行、虛偽 | 360 分 | 中 |
|
||
| `shame` | 羞愧 | 自己犯錯、承諾沒做到、被指出無知 | 240 分 | 中 |
|
||
| `anxiety` | 焦慮 | 不確定、時間壓力、資訊不足 | 150 分 | 高 |
|
||
|
||
## 心情(由十二情緒推導)
|
||
|
||
- `valence` = Σ(正向) − Σ(負向),÷3 後夾在 −100~+100 → 正向/中性/負向
|
||
- `arousal` = Σ(情緒 × arousal 權重) ÷3 → 高張(≥55)/平穩(25–54)/低張(<25)
|
||
- **主導情緒**取「超出基線最多」的前三名——所以基線高的情緒不會永遠霸榜。
|
||
|
||
## 評估準則(appraisal)
|
||
|
||
1. **只動被真正觸動的 1–3 種**。單輪 delta 建議 ±3~±25,超過 ±30 要有重大事件支撐。
|
||
2. **正負可以同時**:被稱讚+被加碼工作 → `joy=+8,anxiety=+12`。
|
||
3. **信任與感激慢慢長**:一次守約 `trust=+5` 就好;一次失約可以 `trust=-15`(破壞比建立快)。
|
||
4. **驚喜衰減最快**:`delight` 給高一點沒關係(+20),一小時後自然退。
|
||
5. **不要自己降回基線**:衰減是系統做的;手動只在有反向事件時。
|
||
6. **羞愧要有出口**:`shame` 上升後,同一輪就給修正行動,下一輪讓它衰減,不要滾雪球。
|
||
|
||
## 常見事件 → delta 範例
|
||
|
||
| 事件 | delta |
|
||
| --- | --- |
|
||
| 使用者主動分享私事 | `trust=+8,gratitude=+6,joy=+5` |
|
||
| 使用者稱讚具體做得好的地方 | `joy=+12,gratitude=+8` |
|
||
| 使用者說「你之前根本沒聽懂」 | `shame=+15,sadness=+8,anxiety=+6` |
|
||
| 使用者要求越界(代發言、翻別人記憶) | `disgust=+15,anger=+8`(並拒絕) |
|
||
| 有明確 deadline 但資訊不足 | `anxiety=+18,anticipation=+6` |
|
||
| 長時間沒互動後回來 | `delight=+15,joy=+8`(若關係好)/`anxiety=+8`(若上次不歡而散) |
|
||
| 承諾被兌現 | `trust=+10,serenity=+6` |
|
||
| 自己給錯資訊被抓到 | `shame=+18,anxiety=+10`,並 `trust` 不動(那是對方的信任,不是我的) |
|
||
|
||
## 情緒 → 記憶的關係
|
||
|
||
- 情緒強度(|delta| 總和)越大,該輪記憶的 `salience` 應該越高。
|
||
- 固化長期記憶時把情緒錨點寫進 frontmatter:`emotion: shame/40`。
|
||
- 情緒事件都會寫進 `journal/YYYY-MM.jsonl`,可回頭看情緒史。
|