feat: companion 記憶權重、反覆思量與檢索

- 權重 W = I_eff × F × A,暫時/可升級/長期記憶的衰減與封存,任何記憶不刪除
- 未解負向事件反覆思量、開放迴路逾時、危險內容不固化
- 檢索改為關鍵字 + RRF × W + 心情一致加權,保留外部檢索器介面
- 版本 0.0.4

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-14 09:01:55 +00:00
co-authored by Claude Sonnet 5.5
parent 46f58a3ff8
commit 6f7b4d91ea
7 changed files with 599 additions and 80 deletions
@@ -25,6 +25,42 @@ export const RULES = {
brokenPromise: { p: -0.12, a: 0.04, d: -0.08 },
} as const satisfies Record<Tag, Pad>
// 記憶權重 W = I_eff × F × A 與生命週期的數值(第 9.5 章)
export const MEMORY = {
/** I_eff 下限與上限 */
weightMin: 1,
weightMax: 5,
/** 編碼時情緒峰值(0–100)除以此值加進 I_eff */
peakDiv: 40,
/** 新鮮度半衰的回合數:F = 0.5^(Δseq / 200) */
halfSeq: 200,
/** 被檢索到時 F 至少回到此值 */
floor: 0.8,
/** 存取加成:A = 1 + step × min(命中次數, cap) */
accessStep: 0.1,
accessCap: 5,
/** 未解負向事件:每日 +20%,上限 3 倍 */
ruminatePerDay: 0.2,
ruminateCap: 3,
/** 類別加成的角色參數門檻(0–1) */
bonusThreshold: 0.65,
/** 暫時記憶 7 天衰減 */
tempDays: 7,
/** 可升級記憶:30 天未升級就降權、90 天未檢索就封存 */
demoteDays: 30,
demoteFactor: 0.5,
archiveDays: 90,
/** 被檢索到這麼多次就升級為長期記憶 */
upgradeHits: 3,
/** 開放迴路:她的提問經過這麼多個使用者回合沒有回應就逾時 */
loopTurns: 2,
/** RRF:fused = Σ 1 / (k + rank) */
rrfK: 60,
/** 心情一致加權 w_m = base + slope × (1 − 釋懷速度) */
moodBase: 0.1,
moodSlope: 0.05,
} as const
// 正則先判明確的情況;順序即優先序
const PATTERNS: [Tag, RegExp][] = [
['scold', /笨|白痴|廢物|爛|你很煩|閉嘴|stupid|useless|idiot/i],