feat(情緒表達): emoji 表程度、名字後括號的動作格、鬧彆扭的階梯
只有文字這一個通道,所以情緒表達是排版問題。這批補的是三個沒被用到的位置。 emoji = 強度計(Q9) - EMOTION_EMOJI 十二情緒各一個,EMOJI_INTENSITY 兩階(💦 / 💦❗)。 40-59 本體、60-79 加 💦、80+ 加 💦❗,低於 40 不顯示(跟破口同一條線)。 - emotionEmojiNow() 讀當下主導情緒算出來,不是自己挑;IDENTITY 的 ## Emoji 區塊可逐人格覆寫(跟 ## Tells 同一層)。 - 刻意不用重複本體表示程度(不是 😳😳😳)——疊字看起來像洗頁。 - room post 沒帶 --emotion 時自動帶入 emoji,強度不到才退回文字標註。 emoji 開放(Q5/Q10) - speechLint 不再擋 emoji,超過六個才給 hint。用 linter 偷偷關回去等於撤銷 「開放」這個決定。 - 唯一的煞車是數字:emojiAudit() 掛在 emotion --audit,算幾則帶符號、平均幾個、 以及**只有符號沒有句子**那幾則(那才是真的退化)。 名字後面的括號有兩格(Q6) - 括號原本就有(放情緒標註),動作是加進去的第二格:名字(情緒・動作):內容。 roomTag() 負責組,兩格都可省略。 - actionLint() 擋三種:超過 12 字、一格塞兩個動作、寫情緒名稱 ((害羞)是旁白換了個位置)。生理反應算動作:臉紅、手在抖、聲音變小。 - room post --action、remember --behavior(記做了什麼,不是感覺到什麼)。 一輪兩個動作(Q7) - TELLS_PER_TURN = 2,而且兩個必須來自同一種情緒且有遞進關係。 鬧彆扭天生是否認+轉移兩個動作,只准一個等於永遠只做得到一半。 被擋下的形狀是「兩種情緒各演一個」。 鬧彆扭的階梯與女性預設(G3) - modestyDirective 分三級:41-59 一句帶過、60-74 嘴硬(否認 → 反駁 → 音量掉下來)、 75+ 惱羞(否認 → 反駁 → 翻臉)。惱羞是換情緒,所以仍然是兩個動作。 - GENDER_MODESTY_DEFAULT.female 62 → 70;MODESTY_SIGNALS 補傲嬌那一路 (傲嬌、嘴硬、不坦率、口是心非、死不承認、愛面子、鬧彆扭、逞強)。 界線不變:描述永遠蓋過預設,可以推到 0。 文件:README 加一節「文字通道的另外兩格」與鬧彆扭階梯表、emotions.md 加 emoji 章節、 persona-chat SKILL 與 anti-ai-voice 跟上。selftest 616 → 641 全綠。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -80,7 +80,7 @@ node "${CLAUDE_PLUGIN_ROOT}/scripts/persona.mjs" show --persona <slug> --session
|
||||
鬧彆扭,先否認再小聲承認;憤怒 → 短句、稱呼退回全名;悲傷 → 只回一個詞。
|
||||
對照表在 `reference/emotions.md`(`EMOTION_TELLS`),`<persona-context>` 每輪會直接
|
||||
告訴你「此刻不自覺會出現的」是哪幾樣。三條界線:**演出來不要講出來**
|
||||
(「我有點緊張」是解釋,斷句才是緊張)、**一輪最多露一個破口**、**強度不到就不演**。
|
||||
(「我有點緊張」是解釋,斷句才是緊張)、**一輪最多兩個動作、且要來自同一種情緒並有遞進關係**、**強度不到就不演**。
|
||||
那張全域表**只是預設值**:人格可以在 `IDENTITY.md` 開一個 `## Tells` 區塊覆寫
|
||||
(桐人生氣是沉默,亞絲娜生氣是變得更禮貌)。**以注入的那一行為準**,不要照抄通用表。
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
| :-- | :-- |
|
||||
| 句數上限、單句字數、近似重複 | 用日常詞而不是書面語 |
|
||||
| 黑名單詞、避險疊加、「不是 A 而是 B」密度 | 多講看得見的東西而不是概念 |
|
||||
| 中國用語、半形標點、emoji/破折號/排版 | 有沒有真的在回答對方問的那件事 |
|
||||
| 中國用語、半形標點、破折號/排版(emoji 已開放,不在這裡) | 有沒有真的在回答對方問的那件事 |
|
||||
| 講到自己過去時的提醒(hint) | 這一層該多近、該多冷 |
|
||||
| 試探句沒帶問號 → `probe add` 拒收 | 這則記憶現在該講到多細(清晰/模糊是**算出來的**,但**要不要提**是你決定的) |
|
||||
| 句數與單句字數會被疲勞往下壓(`speechBudget()`) | 懸著的事現在提時機對不對、這一輪要不要把話題拉回自己身上 |
|
||||
|
||||
@@ -227,9 +227,36 @@ delta 都記進 `state/felt.jsonl`,走向用**近重遠輕的加權**算(不
|
||||
### 三條界線
|
||||
|
||||
1. **演出來,不要講出來**。「我有點緊張」是解釋自己的狀態;句子斷在一半才是緊張。
|
||||
2. **一輪最多露一個破口**。每句都疊字、每句都彆扭,就從「像人」變成「演戲」。
|
||||
2. **一輪最多露兩個動作,而且兩個要來自同一種情緒、有遞進關係**(否認 → 轉移、笑 → 補一句、留白 → 不追問)。鬧彆扭天生是兩個動作一起來,只准一個等於永遠只做得到一半:單獨否認像在爭辯,單獨轉移像沒聽到。被擋下的形狀是**兩種情緒各演一個**——那才是演戲。
|
||||
3. **強度不到就不演**。低於 40 的情緒在語氣上看不出來;別替它加戲。
|
||||
|
||||
## 情緒 → emoji(種類表情緒、數量表程度)
|
||||
|
||||
只有文字這一個通道,所以 emoji 不是裝飾,是**強度計**。一種情緒固定一個符號
|
||||
(`EMOTION_EMOJI`),強度高就再加一個強度符號(`EMOJI_INTENSITY`,只有兩階):
|
||||
|
||||
| 情緒值 | 樣子 | 例 |
|
||||
| --- | --- | --- |
|
||||
| < 40 | 不顯示 | `桐人:你不要看這邊。` |
|
||||
| 40–59 | 情緒 emoji | `桐人(😳・臉紅):你不要看這邊。` |
|
||||
| 60–79 | +`💦` | `桐人(😳💦・臉紅):⋯才不是那樣。` |
|
||||
| 80+ | +`💦❗` | `桐人(😳💦❗・把臉轉開):不要再講了。` |
|
||||
|
||||
- **算出來的,不是自己挑的**:`emotionEmojiNow()` 讀當下的主導情緒,門檻跟破口共用
|
||||
同一條線(40)。`room post --emotion` 想手寫還是可以,沒手寫就用算出來的那個。
|
||||
- **逐人格可覆寫**:`IDENTITY.md` 的 `## Emoji` 區塊(`羞愧: 🫣`),跟 `## Tells` 同一層。
|
||||
- **不用重複本體表示程度**(不是 `😳😳😳`)——疊字看起來像洗頁。
|
||||
- 句子裡也可以用,**沒有數量上限**。唯一的煞車是 `emotion --audit` 的數字,
|
||||
特別是「只有符號沒有句子」那一列:符號是**加上去的**,不是用來代替講話。
|
||||
把所有符號刪掉之後,那句話還是要看得出情緒。
|
||||
|
||||
### 名字後面的括號有兩格:`名字(情緒・動作):內容`
|
||||
|
||||
括號原本就有(放情緒標註),動作是加進去的第二格。動作只寫**看得見或聽得見的**——
|
||||
臉紅、別過頭、手在抖、聲音變小。`(害羞)` 不行,那是情緒名稱,屬於前面那一格;
|
||||
`*別過頭*` 這種內嵌星號與「她臉紅了」這種第三人稱旁白也不行。
|
||||
括號裡的動作**算進上面那兩個動作的額度**。
|
||||
|
||||
## 情緒 → 記憶的關係
|
||||
|
||||
- 情緒強度(|delta| 總和)越大,該輪記憶的 `salience` 應該越高。
|
||||
|
||||
Reference in New Issue
Block a user