docs(skills): 規則跟上關係圖對接,新增親密度判斷參考

persona-chat:人名要對得上關係圖(--entities/--about);新人物當場進關係圖
改成硬規則,但屬於第 ⑥ 步記憶回寫,不佔第 ⑤ 步的回話句數,也不要宣告。

persona-relation:補「記憶怎麼指回節點」與 relation doctor 的四類報告
(同名歧義、解析不到的 id、孤兒節點、對不上的人名),並說明壞檔會以非零
exit 結束而不是裝成空圖。

新增 reference/closeness.md:初次建節點時 bond/closeness/trust 怎麼從
對話判斷——一輪之內查完就填,不要憑感覺,也不要為了安全全部填 15。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-03 03:17:29 +00:00
co-authored by Claude Opus 5
parent dd16411d2e
commit 7b20dba6db
5 changed files with 264 additions and 5 deletions
@@ -0,0 +1,144 @@
# 從對話判斷親密度(初次建節點用)
**用在哪**:對話中出現一個關係圖裡還沒有、而且**人格確實知道他是誰**的人,
你要當場 `relation node`,但不知道 `bond``closeness``trust` 該填多少的時候。
**一輪之內查完就填**,不要憑感覺,也不要為了安全全部填 15。
**前提**:只是被提到、人格不知道那是誰的名字 → **不建節點**,留在短期記憶的 `entities`
(見 persona-chat 第 ⑥ 步的硬規則)。這張表不是「該不該建節點」的判斷表,是**建了之後填幾分**的表。
**不用在哪**:節點**已經存在**時不要拿這張表重算。已存在的節點只靠互動累積微調
(見 SKILL.md 的「調整幅度(單次)」),每輪重算會讓語氣忽遠忽近。
> ⚠️ `bond` 填錯比 `closeness` 填錯嚴重得多:語氣層是 `bond` × `closeness` 查表算的,
> `bond` 一歪,整輪的距離感就歪(至親掉進「禮貌」層,講話像對戰友報告)。
> 數字可以之後慢慢修,`bond` 要一次填對。
---
## 0. 先確認一件事:這是「誰的」關係
`bond` 的主語永遠是**人格自己**`self`),不是說話的人。
| 對話裡出現 | 節點的 `bond` | 為什麼 |
| --- | --- | --- |
| 使用者說「我老婆美咲」 | **不是** `partner` | 那是使用者的伴侶。對人格來說多半是 `stranger``friend` |
| 人格設定裡「我的妻子美咲」 | `partner` | 主語是人格自己 |
第三人的關係要記在**連線**上,不是節點上:
`relation edge --from user --to misaki --label "夫妻" --affinity 95`
節點的 `closeness` 只回答「**我**跟他多近」。
## 1. 三軸訊號與裁決順序
同一輪讀到互相矛盾的訊號時,**上面的贏下面的**:
1. **關係詞**(句子直接定位關係)→ 決定 `bond` 與距離帶,最強
2. **稱呼**(怎麼叫他)→ 沒有關係詞時用它定距離帶
3. **語氣**(怎麼對他講話)→ 只在帶內微調 ±5~10,**不跨帶**
同一軸有多個訊號 → 取**最近一次**出現的那個(人會改口,最新的才是現況)。
## 2. 關係詞(最強訊號)
| 句子裡的詞 | `bond` | 距離帶 |
| --- | --- | --- |
| 我老婆/我先生/我伴侶/我男(女)朋友 | `partner` | 家人帶 |
| 我兒子/我女兒/我孩子 | `child` | 家人帶 |
| 我爸/我媽/我父親/我母親 | `parent` | 家人帶 |
| 我哥/我姐/我弟/我妹/我兄弟(有血緣) | `sibling` | 家人帶 |
| 我朋友/我兄弟(沒血緣)/我死黨 | `friend` | 朋友帶(說「最好的朋友」「認識十年」→ 摯友帶) |
| 我同事/同一組的/我下屬 | `ally` | 朋友帶 |
| 我主管/我老闆/我隊長 | `ally`(敬重且從他身上學東西 → `mentor` | 朋友帶偏低 |
| 我老師/我師父/帶我的人 | `mentor` | 認識帶~摯友帶(看有沒有並肩過) |
| 我對手/我競爭對手/死對頭 | `rival` | **看有沒有交手**:只是敵人 → 認識帶;長期互相認可 → 摯友帶 |
| 他朋友/他們那邊的人/某某的同事 | `stranger` | 生人帶(那是別人的關係,不是我的) |
`rival` 不等於疏遠——長年互相認定的對手可以 `closeness 85`
恨與親近是兩件事,那筆恨要寫在 `note``trust`,不要用 `closeness` 表達。
## 3. 稱呼軸(沒有關係詞時用這個定帶)
| 怎麼叫他 | 例 | 距離帶 |
| --- | --- | --- |
| 綽號/暱稱/疊字/略稱 | 阿明、小結、絅(單字暱稱) | 摯友帶~家人帶 |
| 直呼名字(去姓、不加敬語) | 明日奈、俊彥 | 朋友帶~摯友帶 |
| 全名 | 結城明日奈 | 認識帶(正式,但已經知道他是誰) |
| 姓+敬語 | 結城先生、林小姐、桐谷桑 | 認識帶(禮貌距離) |
| 頭銜職稱 | 老師、社長、隊長 | 認識帶~朋友帶。**歧義**:職稱在並肩久了的關係裡也會留著(叫「隊長」的戰友可以很親)→ 交給語氣軸裁決 |
| 第三人稱代稱、不指名 | 那個人、他們那邊的人、某某的朋友 | 生人帶 |
同一個人被用兩種稱呼(正式場合叫全名、私下叫暱稱)→ 取**私下那個**,那才是真距離。
## 4. 語氣軸(帶內微調,最多 ±10)
| 語氣 | 例 | 調整 |
| --- | --- | --- |
| 命令、指派 | 「這個你去處理」 | +5~+10(**歧義**:也可能只是上下關係。搭配敬語就是階級不是親近 → 不加) |
| 直接請求(沒鋪陳、沒道歉) | 「幫我看一下」 | +5 |
| 玩笑、吐槽、當面抱怨對方 | 「你又遲到」 | +10(能開玩笑是最可靠的親近訊號之一) |
| 客套、鋪陳、過度致謝 | 「不好意思麻煩您」 | −5~−10 |
| 迴避、轉移話題、只給最短回答 | 「就那樣」「沒什麼」 | −10,且 `trust` 再往下壓 5 |
## 5. 距離帶 → 數值
| 距離帶 | 判斷依據 | `closeness` | 常見 `bond` |
| --- | --- | --- | --- |
| **生人帶** | 知道他是誰(誰的什麼人),但跟人格沒有互動描述 | 10–25 | `stranger` |
| **認識帶** | 認識但不熟,有禮貌距離 | 25–40 | `stranger``ally` |
| **朋友帶** | 朋友、同事,會一起做事 | 45–65 | `friend``ally` |
| **摯友帶** | 摯友、長期並肩、共同經歷 | 75–90 | `friend``mentor``rival` |
| **家人帶** | 家人、伴侶、子女 | 85–97 | `partner``child``parent``sibling` |
帶內取值:訊號只有一個 → 取**下緣**;三軸互相印證 → 往上緣走。
`100` 留白不要用,關係還有成長空間。
## 6. `trust` 怎麼填
**預設 `trust` = `closeness` 10**(範圍 −5~−15,訊號少就扣多一點)。
理由要記住:**親近不等於信得過。** 天天見面的同事、吵得很熟的家人,
都可能是「很熟但不會把重要的事交給他」。兩個數字獨立,不要圖方便填一樣。
例外 —— 對話裡出現**明確託付**,才把 `trust` 拉到跟 `closeness` 齊平或 +5
- 交代事情(「這件事交給你」「你幫我盯著」)
- 講秘密、講還沒對別人講的事
- 把決定權交出去(「你決定就好」)
反向訊號 → 再往下壓:講過話不算、有隱瞞、對他的說法要再查一次 → `trust``closeness` 低 25 以上,
並在 `note` 寫下是哪件事。
## 7. 已經確認認識他,但親密度判斷不出來
**適用範圍只有一種情況**:已經確認「人格認識這個人」(設定/`canon` 裡有他,或這輪已講清楚他是誰),
但三軸訊號太少,`bond``closeness``trust` 填不出來。這時候**照樣建節點**,填低值並在 `note` 註明依據不足。
**反面(更常見):不知道那是誰就不要建節點。** 只是句子裡被提到一個名字、
人格根本不知道他是誰的什麼人 → 只寫進短期記憶的 `entities`,**不建節點**,等他再出現、講清楚了再建。
這不是潔癖:短名與稱謂節點一多,名字解析就會誤配(「我先生」被寫成同事節點的 id 這種事發生過),
寧可少一個節點,也不要多一個對錯人的節點。
```bash
node "${CLAUDE_PLUGIN_ROOT}/scripts/persona.mjs" relation node \
--session <PERSONA_SESSION> --name "小林" --kind human \
--bond stranger --closeness 15 --trust 10 \
--note "依據不足:使用者的同事(2026-08-03 講到 Q3 專案時提過),但沒有稱呼與語氣訊號可判斷距離"
```
規則:
- 先過一次「認識嗎」這關,**再**談數字填多少;不認識就不會走到這一節。
- `bond` 拿不準 → 填 `stranger`(語氣層退到「禮貌」,那是**可以修正**的錯;填成 `partner`
卻其實是陌生人,是**當場失禮**的錯)。
- `note` 一定要寫「依據不足」四個字,加上**他是誰的依據**與出處那句話,
下次互動時你才知道這組數字不可信、要重估。
- `name` 用會被說出口的完整稱呼,不要拿「明」「先生」這種單字或稱謂當節點名(會誤配)。
- 之後每次互動用 SKILL.md 的「調整幅度(單次)」慢慢調,**不要**回頭重跑這張表。
## 8. 一輪之內的四步
1. 這輪有**關係詞**嗎?有 → `bond` 與距離帶都定了,跳到第 3 步。
2. 沒有 → 用**稱呼軸**定距離帶,`bond` 從該帶的「常見 `bond`」裡挑最貼近的。
3. 用**語氣軸**在帶內 ±5~10 定出 `closeness`(不跨帶)。
4. `trust` = `closeness` 10;有明確託付才拉平。寫 `note`(依據哪一句、日期)。