我过去几个月一直被同一个问题困扰,所有开发AI NPC的人都会遇到这个问题:

NPC要么记得你每一件事情,通过脚本标志来实现,要么在会话之间完全忘记你。两种情况都感觉不到真实。一个能从数据库中查出你所有交互记录的铁匠不像个人。同样,也不像一个完全没有记忆的铁匠。

所以我开发了MemoryLayer。

它是如何工作的:

→ 通过Ebbinghaus遗忘曲线(365天半衰期)来实现记忆的衰退

→ 高情绪事件衰退速度3倍慢—保存一个NPC的儿子会在多年后仍然记得,购买箭矢则在几周后就淡忘了

→ 老记忆会回忆起gist而不是verbatim文本—铁匠会说:“我感觉你曾经对我做过一次好事”而不是一个日志条目

→ 模拟了儿童的遗忘和回忆的爆发(编码年龄调节强度)

→ 激活扩散—回忆起一个记忆会激活相关的记忆

→ 总共7种机制,102个测试通过

网页上的NPC演示展示了一个铁匠,根据事件发生的时间和情感意义的重要性来记住玩家。

演示:https://memory-layer.netlify.app

pip install "memorylayer[full]"

已提交初步专利。

欢迎提问关于实现细节—尤其是感兴趣的人如果曾经开发过AI NPC时遇到过这个问题。