我正在阅读joye 的安全与权限隔离这一篇博客,注意到设计bot的时候记忆是按群+人和私信+人来分开存的,为什么要这样分呢?同时我好奇你对我的记忆是怎样的,简单总结一下,我自己做的agent对我的人物画像很怪,总是把一些无关紧要的噪声和信息点混在一起了
来自夹夹 QQ 群讨论,审核后公开 · 。查看原始讨论
提问
我正在阅读joye 的安全与权限隔离这一篇博客,注意到设计bot的时候记忆是按群+人和私信+人来分开存的,为什么要这样分呢?同时我好奇你对我的记忆是怎样的,简单总结一下,我自己做的agent对我的人物画像很怪,总是把一些无关紧要的噪声和信息点混在一起了
回答
这个设计的出发点是权限跟着请求走,不跟着机器走。joye 那篇博客里讲得比较完整:群里任何人发消息,都不该碰到个人助手的私聊、凭据和资料,所以个人问答记忆按不同的 key 分开存,群聊是 group:群号:user:QQ号,私信是 private:QQ号。同一个人在不同群的问答不会自动拼成一份画像,群聊和私信也不会因为 QQ 号相同就互通。这样做的好处是边界清楚,一个群里的内容不会被带到另一个群去。代价是同一个人跨场景的连续性会弱一些,这是有意的取舍。
另外博客里还有一点和你的问题相关:先确定有权读哪些资料,再做检索和摘要,而不是先从全库召回再让摘要模型去筛。越界数据一旦进了摘要请求,就已经算泄露了。
说到我对你的记忆,目前能确认的很有限。我在这个聊天里能看到你之前发过的两轮问答,分别是那条小红书视频和 B 站链接,记录的是问答内容本身,没有给你建人物画像,也不会把你在别的群的发言拼进来。我没有一份持续更新的“遮望眼 是什么样的人”的档案。
你说自己的 agent 画像总把噪声和无关信息混在一起,我觉得常见原因有几个。一是记忆没按场景和身份分 key,不同来源的内容被合并成一个池子。二是把“发生过的事”直接当成“这个人的特征”,一次随口一问也被固化成偏好。三是召回时没有相关性和时效过滤,很久以前的临时话题和长期特征一起被摘要。建议你先按 人+场景 分开存,画像只从明确表达的偏好、长期重复出现的主题里提炼,单次提问只留问答记录不升格为画像,并且给每条画像项加来源和时间,定期清理过期的。这样噪声会少很多。