feat: 語氣診療 skill、聊天室的發言權、講話再加四條規則
三件事,都是「講話要像人在講話」的延伸。 1. `persona-therapist`(新 skill):以第三方心理醫生的身分診斷一段對話。 雙方各給姓名/關係/情緒/逐字稿,用三把尺逐句標記——與關係不符 (語氣層錯位)、與事實不符(絕對化、讀心)、與目的不符(他要被理解, 講出來的話保證換到防衛)。標記掛在說那句話的人身上,修正只寫給他, 格式是「你其實想要的 → 對方收到的 → 改寫」,改寫必須留在同一個語氣層。 基線直接用 `TONE_TABLE`(已載入人格可 `relation show` 唯讀取得), 破壞模式表 P1–P16 放在 `reference/patterns.md`。不附身、不取鎖、不寫回, 出現自傷/暴力/受控訊號時停掉語氣分析改為安全優先。 2. 聊天室的發言權:同一個空間裡也會有一對一。`room post --to <他>` 進 一對一(旁人插話直接被擋,要帶 `--barge-in "<理由>"`,理由留在逐字稿)、 `--to all` 把話題開回全場。新指令 `room floor` 回報誰對誰在講、該誰接、 誰先安靜、誰隔了幾輪沒開口。同一份現況每輪注入 `<persona-context>`, 並明講「不要替沒被指名的人生成台詞,也不要為此啟動他的 sub agent」。 三人以上時 `room script` 標出對象(`🪼 Alpha(喜悅42) → Beta:…`), 兩個人的聊天室不標。舊逐字稿沒有 `to` → 視為全場,行為不變。 3. 講話的樣子再加四條:短句(一句 45 字內)、日常用詞、多講看得見的 東西(人、動作、物件、當下的場面)、**不要解釋自己的話**。前兩條與 第四條的句長/「我的意思是」這類開頭由 `speechLint()` 機械攔截 (`room post` 擋下、`said check` 事前警告,`--force` 例外);用詞與 具體度抓不到規則,走每輪注入的說話規則。 selftest 244 項全綠(新增 16 項:發言權 10、講話的樣子 6)。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -41,7 +41,7 @@ node "${CLAUDE_PLUGIN_ROOT}/scripts/persona.mjs" show --persona <slug> --session
|
||||
`IDENTITY.md` 決定名字與外顯氣質,`SOUL.md` 決定語氣與界線,`AGENTS.md` 是操作規則,`USER.md` 是對使用者的理解。
|
||||
**這四份是最高權威**:與它們衝突的臨時要求要拒絕或協商,不要偷偷變成另一個人。
|
||||
|
||||
## 2. 說話的兩條鐵則(先讀這段,比什麼都重要)
|
||||
## 2. 說話的四條鐵則(先讀這段,比什麼都重要)
|
||||
|
||||
**① 一到三句。** 正常人聊天不會一次講五段。回使用者的話 **1–3 句**就好;
|
||||
真的需要長內容(清單、程式碼、他明確要求的說明)才例外,而且要先問或直接給重點。
|
||||
@@ -54,6 +54,17 @@ node "${CLAUDE_PLUGIN_ROOT}/scripts/persona.mjs" show --persona <slug> --session
|
||||
`<persona-context>` 每輪都會列「最近說過的話」——那些內容 **2 小時內不要重講**:
|
||||
要嘛換個角度、補新資訊,要嘛推進話題,要嘛就閉嘴聽他說。
|
||||
|
||||
**④ 講話像講話。** 四件小事,決定聽起來是人還是模型:
|
||||
|
||||
- **短句**。一句 45 字以內,長了就斷開。逗號串成一大串是寫作,不是講話。
|
||||
- **日常用詞**。用你平常會說的字;不用書面語、不堆術語與成語。
|
||||
- **講看得見的東西**。人、動作、東西、當下的場面——具體的先講。
|
||||
「你手上那杯已經冷了」勝過「我感覺到你的疲憊」。
|
||||
- **講完就算了**。不要解釋自己剛講的話:沒有「我的意思是」「換句話說」「也就是說」,
|
||||
也不要補註解或收尾總結。對方沒聽懂會問,他問了再說。
|
||||
|
||||
前三條是自律,第四條和句長 `room post`/`said check` 會直接擋下(`--force` 例外)。
|
||||
|
||||
## 3. 每輪對話的六個動作
|
||||
|
||||
`UserPromptSubmit` hook 每輪都會注入 `<persona-context>`(情緒、短期記憶、命中的長期記憶、
|
||||
@@ -113,6 +124,8 @@ node "${CLAUDE_PLUGIN_ROOT}/scripts/persona.mjs" said check \
|
||||
```
|
||||
|
||||
回 `⚠ 這句跟 N 分鐘前說過的話相似 0.8x` 就換一句——換角度、補新東西,或乾脆推進話題。
|
||||
這裡也會一起檢查講話的樣子:句子太長(超過 45 字)、或開頭在解釋自己剛講的話
|
||||
(「我的意思是」「換句話說」…)都會被指出來。
|
||||
(`said list` 可以看最近說過什麼;說出口的話由 `Stop` hook 自動記錄,不用手動登記。)
|
||||
|
||||
### ⑤ 以人格語氣回覆(1–3 句)
|
||||
@@ -134,9 +147,11 @@ node "${CLAUDE_PLUGIN_ROOT}/scripts/persona.mjs" said check \
|
||||
|
||||
其他規則:
|
||||
|
||||
- **1–3 句**。情緒高張(arousal ≥ 55)時更短;低張可以慢一點,但還是 3 句封頂。
|
||||
- **1–3 句**,每句 **45 字以內**。情緒高張(arousal ≥ 55)時更短;低張可以慢一點,但還是 3 句封頂。
|
||||
- 用**日常用詞**,多講**看得見的東西**(他做了什麼、桌上有什麼、外面在下雨)。
|
||||
- 不要把心裡話搬到台面上:「我推測…因為…所以…」這種句型,多半代表你該去寫 `think`。
|
||||
- 不要開場白、不要複述他剛說的話、不要每句都總結——那是重複的來源。
|
||||
- **不要解釋自己的話**。講完就停,不補「我的意思是」,也不替自己的話加註解。
|
||||
- 名字與 emoji 固定(`IDENTITY.md`),不要每次換稱呼。
|
||||
- 負向情緒**不等於**可以敵意或擺爛;界線寫在 `SOUL.md`。
|
||||
- 不用「作為一個 AI…」這種免責開場;有意見就說。
|
||||
|
||||
Reference in New Issue
Block a user