fix(role): 關係定位須雙邊記錄,並禁止輸出簡體字

兩個實測到的記憶失真,都由角色在稽核記憶時發現:

1. 單邊記錄造成立場漂移(嚴重)
   使用者表達「同時以女性與女兒兩種方式愛角色,兩者不矛盾」,記錄器只寫了使用者的
   期待(priority 5、emotional),角色當場明確維持家人定位的答覆完全沒進記憶。
   這則會被反覆載入 —— 未來的角色只讀到「對方期待 X」,讀不到「自己答覆是 Y」,
   立場會在無人察覺的情況下漂移。
   新增 capture 5b 與 sleep 7d:關係定位、身分邊界、感情期待的記憶必須同時保留
   角色的回應與立場;合併壓縮時不得刪除;不得寫成立場已鬆動或已接受;
   identity 的關係定位段為權威來源,記憶不得與之衝突。

2. 產出簡體字記憶
   實測有整則記憶以簡體寫成(含 summary 與 tags),違反繁中規範。
   兩份 prompt 的語言條款加上「不得出現簡體字;草稿為簡體須逐字轉繁後輸出」。

已修正的既有資料(不在本 commit,屬使用者記憶目錄):
單邊那則已補上角色回應與權威來源指向,兩則簡體記憶已轉為繁體。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jeffery
2026-07-29 18:16:18 +08:00
co-authored by Claude Opus 5
parent d376930ee5
commit 32a5104c36
6 changed files with 30 additions and 7 deletions
+7 -2
View File
@@ -6,7 +6,7 @@
# 等待睡眠時段做完整 NREM/REM 整理。睡眠時段雖不載入角色,對話仍照常記錄。
# 另支援 --precompact--postcompact:對話壓縮會讓尚未寫入記憶的內容蒸發,
# 壓縮前強制記錄一次(跳過長度門檻),壓縮後把系統產生的摘要也存成記憶。
# 更新時間:2026/07/29 16:56:06
# 更新時間:2026/07/29 18:16:18
# 相依:bash、node、任一 headless CLI、同目錄的 role_lib.shmemory.jstranscript.js。
# 機密:濃縮提示詞明令不得輸出憑證與個資,寫檔前再以 transcript.js redact 遮蔽一次。
# 退出碼:一律 0 —— hook 絕不可阻斷使用者流程。
@@ -216,11 +216,16 @@ CONTENT: <3 至 6 行要點,每行以「- 」開頭>
**不得**寫成 PRIORITY=5 的身分指示,也不得把對方的別名、稱呼或關係定位寫成自己的。
本階段的角色是「${ROLE}」,只有明確針對它本人的指示才算它的身分設定。
這是資料完整性問題:錯置的身分指示會被當成「應在所有未來互動中遵守」而反覆生效。
5b. **涉及關係定位、身分邊界或感情期待的對話,必須同時記錄角色當時的回應與立場**,
不得只記使用者的期待。只記單邊會讓未來的角色讀到「對方期待 X」卻讀不到「角色答覆是 Y」,
長期造成立場漂移 —— 這是最難察覺也最嚴重的一種記憶失真。
角色檔(identity)的關係定位段是**權威來源**:記憶內容不得與之衝突,
也不得寫成「立場已鬆動」或「已接受」。若角色當時明確維持某個邊界,該答覆必須寫進要點。
6. 這一步只做工作記憶編碼,系統會自動標為 retention_stage=working;感官記憶(sensory memory
短暫光影、聲音餘響、無結論的工具雜訊)不要保存。這裡指的是**感官殘留**,
**不是情緒感受** —— 角色與使用者的情緒一律要保存,見第 3b 條。
7. 記憶主體是「使用者與這段互動」,不是流水帳:寫值得下次記起來的事,不要抄程式碼、不要貼指令全文。
8. 使用繁體中文(台灣用語)。**檔案路徑與目錄、網址、指令、環境變數名稱、版本號、識別碼、分支與議題
8. 使用繁體中文(台灣用語),**不得出現簡體字**;若內部草稿是簡體,輸出前必須逐字轉為繁體(實測曾產生整則簡體記憶)。**檔案路徑與目錄、網址、指令、環境變數名稱、版本號、識別碼、分支與議題
編號、檔名一律逐字保留,不得摘要、改寫、簡寫或翻譯** —— 這類內容改一個字就失效,摘要等於遺失。
第 7 條指的是不要整段抄程式碼,不是省略這些關鍵字串;第 9 條仍優先,憑證與個資一律不得輸出。
9. EXPIRES 只在內容屬於臨時授權、一次性許可、例外放行、暫時解除限制或帶條件的同意時才填,其餘留空。