记住、更正、忘掉
它记得你说过的事,也分得清哪些是以前、哪些是现在。你更正了,它按改过的记;过了时效的,它不再当成现在的事;你不想让它记的,可以删掉。
一条记忆不只是「记得 / 不记得」
每条记忆都带着它现在算不算数:
- 现在成立的;
- 以前成立、后来变了的:你说过喜欢喝咖啡,后来说不喝了,前一条变成「以前」,不删;
- 被更正的:本来就记错了,不再当成真的发生过;
- 过了时效的:「这周在考试」过了这周,就不再是现在的事;
- 还说不准的:来源不太可靠的,回复时它知道「记得不太准」;和另一条说法打架的,要用到的时候,它会自然地问一句现在是哪样,不自己挑一个当真。
你问「现在怎么样」,它只看现在成立的;你问「以前」,它也看得到以前的那些。
更正
你说「不是杭州,是上海」,旧的那条标成被更正,新的那条记下来。你来回改过主意(喜欢、不喜欢、又喜欢),最后那句是现在。
想得起来,想不起来
一件事重要不重要、此刻容不容易想起来、记得牢不牢,是三件事;它睡着的时候还会把记忆整理一遍。这些怎么算,见 2.12。
谁知道什么
私聊里告诉它的事,只在你们的私聊里想得起来;在群里听说的,只在那个群里。你告诉这个人格的事,另一个人格不知道:每个人格一个库,查都查不到。
删掉
网页后台「记忆管理」里可以一条一条改、一条一条删(1.14);删掉的连它派生出来的一起擦掉,只留一个「这里删过」的记号。
对应的代码
- 一条记忆的状态和来源:
src/aeria/hmc/model.py的Truth、Provenance。 - 整理:
src/aeria/hmc/consolidation.py;矛盾和更正:src/aeria/hmc/conflict.py。 - 想起来:
src/aeria/hmc/retrieval.py(隐私门在排序之前、按配额编排);强度:src/aeria/hmc/strength.py。 - 测试:
tests/test_4_0_hmc.py的「用户更正,旧的标成被更正,以前的查询也不把它当成真的发生过」「两个人格的记忆互不相通,同一个人告诉 A,问 B 不知道」;tests/test_4_0_r1_hmc.py的「喜欢又不喜欢又喜欢,最后一句是现状」。
没做到的
- 「想不起来」只是被想起的可能变小了,不会真的随时间慢慢消失:一条记忆不会自己被删掉。
- 矛盾复核要调用模型,没有模型、没有预算的时候,矛盾就一直挂着。