feat(relation): 親近度會改變情緒的份量;提到 ≠ 接觸(v0.0.8 同批)
① 親近度 → 情緒的份量(`relationGain()`) 在這之前 `applyEmotion()` 完全沒吃關係圖:親近度只影響語氣層、羞恥度與主動關心, 情緒的 delta 從頭到尾是人格自己挑的,**跟對象是誰無關**。 但同一句「你最近怪怪的」,從親近 97 的人跟從生人嘴裡出來,衝擊不該一樣。 現在 `emotion --apply` 會依對象親近度把 delta 乘 0.7–1.35(親近 96 → ×1.28、 親近 8 → ×0.75),`--from <對象>` 指定是誰引起的,沒指定就用當前對話對象。 **只調幅度、不調方向**——誰講的都不會讓難過變成高興。 ② 提到 ≠ 接觸(`contactsFromRooms()`) 主動關心的依據是 `last_contact_at`,而睡眠以前是掃短期記憶的 `entities` 來蓋章。 那等於「我在日記裡寫到尤吉歐」就算「我跟尤吉歐接觸過」——沉默計時被無聲重置, 關心名單於是永遠是空的。實測就是這樣:所有人都停在 1.09 天,沒有人會被想起。 現在只認真的有來有往:同一個聊天室裡我發過言、他也發過言。 沒有聊天室的對象(真人節點)走 `relation node --contact` 明確蓋章。 測試:340 項全過(新增 7 項)。既有的「關係時間戳有蓋上」拆成兩條—— 只被提到的不蓋、真的接觸過才蓋,正好把新語意釘住。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -136,6 +136,11 @@ flowchart TB
|
||||
那是底色不是此刻的事。天然的斷路器是**惱羞成怒**:被逗到極限翻臉,`anger` 是負權重,
|
||||
羞恥自己就掉下來,而且會掉到比原本更低。
|
||||
|
||||
**親近度會改變情緒的份量**(`relationGain()`):同一句話,從枕邊人嘴裡跟從生人嘴裡出來,
|
||||
衝擊本來就不一樣。`emotion --apply` 會依對象的親近度把 delta 乘上 0.7–1.35
|
||||
(親近 96 → ×1.28、親近 8 → ×0.75),`--from <對象>` 可以指定是誰引起的。
|
||||
**只調幅度、不調方向**——誰講的都不會讓難過變成高興。
|
||||
|
||||
**情緒調節**:delta 不再是加完直接 `clamp`。**飽和**——越接近端點同方向漲得越慢
|
||||
(`headroom^K`,永遠逼近 100 但到不了;往 baseline 回的方向不壓);**單輪預算**——
|
||||
所有 `|delta|` 總和上限 60,超過等比例縮小。**偏差看得見**——`emotion --audit`
|
||||
@@ -179,6 +184,11 @@ flowchart TB
|
||||
| **R5** | 同一人物(entity)≥ 2 筆 | `relationship`(並更新關係圖) |
|
||||
| **R6** | 短期記憶 ≥ 40 筆(容量壓力) | 依顯著度清出空間。**真的會清**:超過軟上限 120 筆時從顯著度最低、最舊的開始裁,但顯著度 ≥ 80 或 `intent=commit`(承諾/界線)與 24 小時內的新紀錄一律不動;裁掉幾筆會寫進 `sleep` 的回報,不做無聲的裁切 |
|
||||
|
||||
**提到 ≠ 接觸**:主動關心的依據是 `last_contact_at`,睡眠只替**真的講到話的人**蓋章
|
||||
(`contactsFromRooms()`:同一個聊天室裡我發過言、他也發過言)。以前是掃短期記憶的
|
||||
`entities`——那等於「我在日記裡寫到他」就算「我跟他接觸過」,沉默計時被無聲重置,
|
||||
關心名單永遠是空的。沒有聊天室的對象(真人節點)走 `relation node --contact` 明確蓋章。
|
||||
|
||||
沒命中任何規則的就讓它被裁掉——**遺忘是功能**。達標時 `Stop` 與 `remember` 都會提醒去跑
|
||||
`/jsc-persona:persona-memory`。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user