Files
persona/skills/persona-memory/SKILL.md
T
2026-07-29 14:37:20 +00:00

120 lines
5.2 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-memory
description: 整理人格的記憶系統:把短期記憶固化為長期記憶(一則一檔)、淘汰低顯著度的雜訊、更新心智圖(長期語意結構)與思維導圖(短期推理鏈)、消化 guest 期間留在 inbox 的見聞、重建長期記憶索引。當使用者說要整理記憶、固化/歸檔記憶、更新心智圖或思維導圖、看看人格記得什麼、或 hook 提示短期記憶過多時觸發。不適用於:即時對話中的記憶回寫(persona-chat 已包含)、人際關係圖維護(用 persona-relation)。
---
# 🧠 persona-memory — 記憶固化與心智圖維護
**CLI**`python3 "${CLAUDE_PLUGIN_ROOT}/scripts/persona.py"`(帶 `--session <PERSONA_SESSION>`
必須已 exclusive 載入該人格(guest 不能做這件事)。
---
## 記憶架構
| 層 | 位置 | 特性 |
| --- | --- | --- |
| 原始逐字 | `journal/YYYY-MM.jsonl` | hook 自動寫,不做語意處理,只供回溯 |
| 短期記憶 | `memory/short-term.jsonl` | 語意分析後的工作記憶;上限 240 筆 / 14 天,會被裁剪 |
| 長期記憶 | `memory/long-term/*.md` | 一則一檔+frontmatter,靠關鍵詞被檢索 |
| 索引 | `memory/INDEX.md` | 每則一行,載入與檢索時的快速視圖(自動產生) |
| 心智圖 | `mindmap/semantic.mmd` | 概念的長期放射狀關聯 |
| 思維導圖 | `mindmap/threads/*.mmd` | 單一話題的推理鏈(短期,會收掉) |
| inbox | `memory/inbox/room-*.jsonl` | guest 期間(sub agent)留下的見聞,待消化 |
## 步驟
### 1. 盤點
```bash
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/persona.py" recall --session <PERSONA_SESSION> --query "<主題或空字串>" --limit 10
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/persona.py" mindmap list --session <PERSONA_SESSION>
```
直接讀 `memory/short-term.jsonl`(自己的人格目錄可讀)看全部待處理項目。
### 2. 分群 → 決定要固化什麼
把短期記憶依 `topics` 分群,逐群判斷:
| 判準 | 動作 |
| --- | --- |
| 反覆出現 ≥2 次的偏好/習慣 | 固化為 `preference` |
| 承諾(雙方任何一方) | 固化為 `promise`salience ≥ 80 |
| 明確發生過的事件 | 固化為 `event` |
| 對人的理解改變 | 固化為 `relationship`,並更新關係圖 |
| 我的推論(未證實) | 進思維導圖,**不要**進長期記憶 |
| 一次性閒聊、環境雜訊 | 不留,讓它被裁掉 |
| 與既有長期記憶衝突 | 更新那一則(同 `--name` 會覆寫並保留 `first_seen`),在內文寫下「原本以為…後來發現…」 |
### 3. 固化(一則一檔)
```bash
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/persona.py" consolidate \
--session <PERSONA_SESSION> \
--name "hates-morning-meetings" --type preference \
--about "user" --topics "work,schedule" --salience 72 --emotion "anxiety/35" \
--body "使用者討厭早上的會議,說「腦子還沒開機」。約會議請排 14:00 之後。
**依據:** 3/12、4/2、7/28 三次提到。
**還不確定:** 是否只針對需要動腦的會議。"
```
`--forget 40` 可在固化後順手淘汰顯著度 < 40 的短期記憶。
內文請寫「依據」與「還不確定」,讓下次的自己知道這則有多可靠。
### 4. 更新心智圖(長期語意結構)
固化完,用 Edit 把新概念接進 `mindmap/semantic.mmd`Mermaid `mindmap`):
```mermaid
mindmap
root((Lumi))
使用者
工作節奏
討厭早會
深夜產出高
壓力來源
Q3 專案
共同經驗
第一次通宵除錯
```
原則:只放**已固化**的概念;節點名字用短詞;同一概念別出現兩次(改成連到同一節點)。
### 5. 收掉思維導圖(短期推理鏈)
逐一檢視 `mindmap/threads/*.mmd`
- 假設被證實 → 固化為長期記憶(`--type insight``fact`),把結論併進心智圖,**刪掉該 thread**。
- 被否證 → 刪掉,必要時記一則「原本猜錯」的 `insight`(避免下次再猜錯)。
- 還在進行 → 用 Edit 續寫推理鏈(`graph LR`),保留。
### 6. 消化 inboxguest 期間的見聞)
`memory/inbox/room-*.jsonl`,把值得留的轉成短期或長期記憶,然後刪掉該 inbox 檔:
```bash
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/persona.py" remember \
--session <PERSONA_SESSION> --role persona --text "<以我自己的角度重述>" --topics "..." --salience 55
```
### 7. 收尾
```bash
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/persona.py" prune --session <PERSONA_SESSION>
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/persona.py" reindex --session <PERSONA_SESSION>
```
回報:固化幾則、淘汰幾筆、心智圖新增哪些概念、還有哪些 thread 待驗證,
並用該人格的語氣說一句話(他剛整理完自己的記憶,會有感受)。
---
## 遺忘原則
- 遺忘是功能,不是缺陷:短期記憶超過 240 筆 / 14 天自動裁剪。
- 長期記憶被回想時 `recall_count` 會 +1、`last_seen` 會更新;
長期沒被回想又低顯著度(< 40)的長期記憶,整理時可以移除。
- **不可遺忘**`boundary`(界線)、`promise`(承諾)、以及 salience ≥ 80 的記憶。
- 所有面向使用者的輸出使用**繁體中文(台灣用語)**、UTF-8 無亂碼。