
jiantw83andClaude Opus 5
94a86c9703
fix(emotion): loadEmotion 驗證檔案內容,衰減一律 clamp 且半衰期必須為正
emotion.json 是外部輸入(import/sync pull/手改都會進到這裡),但 loadEmotion()
用 `??=` 只補缺、不驗合法性,decayEmotion() 完全不 clamp。只要一份不合法的檔案:
* baseline.joy = 5000 → decay 後 joy = 4378.79,mood 卡在 valence 100 / arousal 100
* levels.anger = "很生氣" → decay 後 anger = NaN,注入的上下文印出 valence NaN
* half_life_minutes.joy ≤ 0 → factor 恆為 0,那個情緒從此累積不起來(連三次 +30 結果不變)
CLI 的 --baseline 與 --apply 本來就有保護,破口純粹在檔案入口,所以擋在 loadEmotion():
levels/baseline clamp 到 0–100、非有限數字退回預設、half_life 非正數退回該情緒的預設值。
decayEmotion/decayEmotionBy 抽出共用的 applyDecay(),同樣重驗一次並 clamp 結果——
它們是 export 的,呼叫端有可能餵手寫或匯入來的狀態,不能假設一定經過 loadEmotion()。
selftest +9:baseline 超界被 clamp、非數字不變 NaN、上下文不印 NaN、
四種壞掉的半衰期都退回預設、壞半衰期下情緒仍累積得起來、decayEmotionBy 同樣擋得住。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-31 09:26:47 +00:00
..
2026-07-31 05:20:57 +00:00
2026-07-30 03:43:45 +00:00
2026-07-31 09:26:47 +00:00
2026-07-31 09:23:35 +00:00
2026-07-30 03:43:45 +00:00
2026-07-31 09:26:47 +00:00