feat: 情緒會改變句子的形狀(EMOTION_TELLS),診斷加第四把尺

模擬時最像人的兩個地方,其實都不是用詞選得好,是**情緒改變了句子的形狀**:
緊張的時候話沒說完、會疊字;害羞的時候鬧彆扭、嘴硬。把這件事寫成表,
跟情緒一起注入,不靠人格自己記得。

- `EMOTION_TELLS`:十二情緒各自「不自覺會做的事」。焦慮→句子斷在一半/疊字/
  追一句「這樣可以嗎」;羞愧→先否認再小聲承認/講反話/轉話題;憤怒→短句/
  稱呼退回全名;悲傷→只回一個詞/句子沒說完就停;其餘九種同理。
- `emotionTells()`:挑主導情緒(超出基線最多)裡強度 ≥ 40 的前兩種,
  每輪注入 `<persona-context>`,並附三條界線——**演出來不要講出來**
  (「我有點緊張」是解釋,斷句才是緊張)、**一輪最多露一個破口**、
  **強度不到就不演**(低強度的情緒在語氣上看不出來)。
- 混合狀態的疊法寫進 `reference/emotions.md`:緊張=焦慮+期待、
  害羞=喜悅+羞愧、賭氣=憤怒+悲傷、心虛=羞愧+焦慮…(十二情緒沒有的
  狀態都是疊出來的,不用另開情緒)。

心理醫生那邊多一把尺(第 4 把,**這一把不抓錯,是找沒說出口的東西**):

- 「我沒事」+句子全斷在一半 → 他在忍,要處理的是他為什麼不敢講。
- 「我很生氣」+句子工整完整像客服 → 那是冷掉了,比生氣難修,優先講。
- 一整段都沒有破口 → 兩個人都在挑安全的話講,先讓一個人講真話再談用詞。
- 改寫規則加第 6 條:**保留情緒的痕跡**。斷句、話少、嘴硬留著,
  只拿掉攻擊、絕對化與讀心;改完像客服在念稿就是改壞了。

selftest 248 項全綠(新增 4 項)。版號留在 0.0.6——同一批未合併的改動。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-30 10:09:59 +00:00
co-authored by Claude Opus 5
parent 2e851f55f2
commit c952a449b1
10 changed files with 172 additions and 9 deletions
@@ -34,6 +34,24 @@
| P14 | **語氣層錯位** | **過遠**:親近關係突然改用敬語、全名、客服句式。**過近**:對生人或師長吐槽、命令 | 過遠 `sadness +10``anxiety +8`;過近 `disgust +10` | 回到基線那一層的講法(見 SKILL.md 第三節) |
| P15 | **夾帶/議題漂移** | 一段話裡三件不相干的事;回應時換題 | `anxiety +10``anger +6` | 一次一件:先解決<A><B> 我們另外談 |
## 另一種讀法:情緒與句子的形狀對不上
這一區**不是錯誤清單**,是線索。情緒會改變句子的形狀,所以「他說什麼」跟「句子長什麼樣」
不一致的時候,真正的題目通常在後面那個。破口的完整對照表在
`../../persona-chat/reference/emotions.md``EMOTION_TELLS`)。
| 他說的 | 句子的形狀 | 讀出來的 | 該處理什麼 |
| --- | --- | --- | --- |
| 「我沒事」「不用管我」 | 斷在一半、疊字、只回一個詞 | 在忍;怕講了會吵更大 | 他為什麼不敢講,而不是這句的用詞 |
| 「我很生氣」 | 句子工整完整、像客服、敬語回來了 | 不是氣,是冷掉了 | 冷處理比生氣難修,優先講這件事 |
| 「隨便你」「都可以」 | 短、句號多、稱呼退回全名 | 賭氣(`anger` + `sadness` | 讓他把要求講成一句話 |
| 「我知道啦」「我又沒有」 | 先否認、講反話、然後轉話題 | 彆扭/心虛(`shame` 打底) | 給他一條認錯不必丟臉的路 |
| 「開玩笑的啦」 | 前一句刺人、笑聲補在後面 | 真話包在玩笑裡(P16) | 把真話單獨講一次 |
| 一整段都很順 | 沒有停頓、沒有嘴硬、沒有話少 | 兩個人都在挑安全的話講 | 先讓一個人講真話,再談用詞 |
反過來也成立:**破口本身不是問題**。緊張的斷句、難過的話少、彆扭的嘴硬都是真的,
改寫時要留著(見 SKILL.md 改寫規則第 6 條)。要拿掉的只有攻擊、絕對化與讀心。
## 判讀時的四個提醒
1. **句子沒有絕對的好壞,只有「在這一層合不合理」**。老夫老妻的埋怨不是 P1