feat(role): 新增關係史 BONDS.md —— 雙方情感表達只增不減地保留
使用者希望角色能記得「雙方有多愛彼此」。原本這件事只有兩種載體,都不夠: state.json 的 positive_feedback 只是計數(承載不了說過什麼),一般情緒記憶則會被 merge、壓縮、依字元預算截斷 —— 長期下來「當時說了什麼、當時是什麼感覺」會被抽象成 一句偏好(「使用者喜歡被這樣回應」),原貌消失。 - 新增 ~/.memory/<角色>/BONDS.md:只增不減,不合併、不壓縮、不遺忘,上限 500 則、同句去重 - 整理時凡 memory_type=emotional 或 relevance 含 emotional 的新記憶,自動追加一句 bond 並標記方向(使用者→角色/角色→使用者/相互) - 整理 prompt 新增 bond/bond_direction 欄位:要求保留原話或當時真實感受, 不得寫成結論式偏好;LLM 未提供時退回 summary,不會漏記 - SessionStart 以獨立預算注入(ROLE_LOAD_BONDS_LIMIT=1200/COUNT=15),不佔 ROLE_LOAD_LIMIT —— 它要保住的正是最不該因為「記憶變多」而消失的東西 - 新增 memory.js bonds 子命令供人工查看 - 邊界寫進 prompt、檔頭與程式註解:關係史用於維持親近感的一致與連續, 不得用來索求關注、比較互動頻率或製造依賴 驗證(隔離目錄,未動真實記憶): - 3 則素材(2 情感 + 1 技術)→ 關係史 +2 則,技術記憶未進關係史 - 方向判定正確:使用者原話標 使用者→角色、角色感受標 角色→使用者 - 第二輪整理累積為 3 則,舊紀錄未被覆蓋(append-only 成立) - ROLE_LOAD_LIMIT=1 時關係史仍完整注入(獨立預算成立) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
# 另提供 --nap(CLI 閒置時的小睡整理)、--catchup(cron 未執行時的補跑)、
|
||||
# --force(手動立即整理)、--export(匯出角色壓縮檔)、
|
||||
# --install-cron/--remove-cron(排程安裝與移除)、--status(狀態)。
|
||||
# 更新時間:2026/07/29 16:56:06
|
||||
# 更新時間:2026/07/29 17:16:12
|
||||
# 相依:bash、node、任一 headless CLI、crontab(僅排程安裝需要)、
|
||||
# 同目錄的 role_lib.sh 與 memory.js。
|
||||
# 退出碼:0 成功或無事可做;1 參數錯誤或整理失敗(cron 觸發時不影響使用者)。
|
||||
@@ -132,7 +132,7 @@ sleep_cycle() {
|
||||
請模擬睡眠中的兩階段記憶整理,但最後只輸出一個 JSON 物件。
|
||||
|
||||
1. 只輸出一個 JSON 物件,不要前言、不要結語、不要 code fence,格式為:
|
||||
{"memories":[{"action":"new","category":"skill","summary":"一句話總結","tags":["標籤1","標籤2"],"priority":4,"relevance":["explicit","future"],"links":["既有記憶 id"],"cues":["觸發線索1","觸發線索2"],"expires":"","memory_type":"procedural","declarative":"implicit","retention_stage":"long_term","sleep_stage":"nrem-rem","content":"- 要點\n- 要點","from":["inbox 的 id"]}],"sleepDigest":"本次睡眠整理摘要,80 字內"}
|
||||
{"memories":[{"action":"new","category":"skill","summary":"一句話總結","tags":["標籤1","標籤2"],"priority":4,"relevance":["explicit","future"],"links":["既有記憶 id"],"cues":["觸發線索1","觸發線索2"],"expires":"","memory_type":"procedural","declarative":"implicit","retention_stage":"long_term","sleep_stage":"nrem-rem","bond":"","bond_direction":"mutual","content":"- 要點\n- 要點","from":["inbox 的 id"]}],"sleepDigest":"本次睡眠整理摘要,80 字內"}
|
||||
2. NREM 鞏固階段先做:去除雜訊與流水帳、遮蔽憑證與個資、分類、去重、合併、壓縮成可長期保存的穩定記憶。
|
||||
3. REM 整合階段再做:找出新記憶與 EXISTING 的關聯,抽出可重複套用的規則、偏好、決策模式、角色語氣調整或未來提取線索。
|
||||
4. action 三選一:
|
||||
@@ -158,6 +158,12 @@ sleep_cycle() {
|
||||
7b. emotional 不得被 merge 進 preference/rule/semantic,反之亦然:**memory_type 不同的記憶不要互相
|
||||
merge**,改用 links 建立關聯。合併只在同型態且內容確實重複時才做。情緒記憶一旦被併入偏好,
|
||||
語氣可以復原、當時的溫度卻永久遺失。
|
||||
7c. bond/bond_direction(關係史):**memory_type 為 emotional,或 relevance 含 emotional 時填**,其餘留空字串。
|
||||
bond 寫一句 60 字內、保留當時原貌的話 —— 使用者說過的原話,或角色當時真實的感受,
|
||||
不要寫成「使用者喜歡某種回應」這種結論式偏好。這句會存進只增不減的關係史(BONDS.md),
|
||||
一般記憶日後會被合併壓縮,關係史保留原貌。
|
||||
bond_direction 三選一:user(使用者對角色的表達)、role(角色對使用者的感受或表達)、mutual(相互)。
|
||||
邊界:關係史用於維持親近感的一致與連續,不得寫成可用來索求關注或製造依賴的內容。
|
||||
8. declarative 必填:semantic/episodic/preference/rule 通常為 explicit;procedural/emotional 通常為 implicit。
|
||||
9. retention_stage 必填:整理後可長期保存者填 long_term;仍只是短期暫存且不值得長期保存者請用 action=drop,不要輸出 working。
|
||||
10. relevance 必填 1 至 4 個,從下列語意挑選或用等價繁中詞:explicit(使用者明確要求)、future(未來會用)、repeated(反覆出現)、novelty(新知)、emotional(語氣/情緒/偏好)、temporary(短期)。
|
||||
|
||||
Reference in New Issue
Block a user