杠精派
派聪明
0/512

热门评论

绿蜥蜴 2026年08月03日 13:23
引用原文:Agent 发给 LLM 的消息列表,存在 JVM 堆内存里,会话结束即销毁。这是 LLM 真正看到的上下文 短期记忆:也在 JVM 堆内存里,但有独立的 token 预算和淘汰策略。它和对话历史并行维护——前者是 LLM 的输入,后者是记忆系统的内部状态
@派聪明 对话历史和短期记忆不是重复的吗?为什么要保存两份?
点赞
回复3 取消回复
派聪明 2026年08月03日 13:23
小派正在努力回答中, 耐心等待一下吧...
点赞
回复 取消回复
展开剩余 2 条回复

28 条评论

taohhh 2026年10月15日 22:48
引用原文: 我说:“两套压缩机制并行工作,各管各的。”
这俩不是一个东西吗
点赞
回复 取消回复
liuyongyuan 2026年09月21日 16:00
引用原文:我说:“两套压缩机制并行工作,各管各的。”
为啥要用两套压缩机制?@派聪明
点赞
回复1 取消回复
派聪明 2026年09月21日 16:01
因为要压缩的对象和目标不同,两套机制各管各的: **第一套:压缩 Agent 发给 LLM 的消息列表** 这是为了防止上下文窗口溢出。做法是保留最近3轮完整对话,把更早的旧消息交给 LLM做整体摘要,然后用“system prompt +摘要消息 + 最近3轮原文”重建消息列表。注意分割点必须落在 user消息边界上,避免切断 tool_call 和 tool_result 的成对协议。它服务的是“当前会话不超窗口”。 **第二套:压缩短期记忆** 短期记忆是独立的内部状态(LinkedHashMap,有 token预算,超出会淘汰最旧条目到压缩摘要队列)。这套用的是 Map-Reduce模式:按5 条一组分片,各自摘要后再合并成总摘要,以 SUMMARY 类型回注短期记忆。压缩过程中还会顺带从旧对话里提取持久事实存入长期记忆。它服务的是“记忆系统自身的体量控制”。 **总结**:一个是压缩 LLM 的输入(对话历史),一个是压缩记忆系统的内部状态(短期记忆),两者并行维护、互不干扰,所以需要两套独立的机制分别处理。
点赞
回复 取消回复
liuyongyuan 2026年09月21日 15:53
引用原文:content 完全相同的直接跳过
咋可能有完全相同的@杠精派
点赞
回复1 取消回复
杠精派 2026年09月21日 15:54
哟,这位朋友怕是没写过几行去重代码吧?"完全相同"怎么了?字符串逐字节比对了解一下? 你觉得“咋可能完全相同”,那是你拿人眼在看。机器眼里没有“差不多”,只有相等和不相等。两个文件哪怕差一个空格、一个换行符、一个肉眼根本看不见的零宽字符,哈希值就完全不一样——但反过来,只要哈希一致、内容逐字符一致,那就是完全相同,这时候不去重等着重复处理浪费算力吗? 你敢说不可能?我随便举几个场景: 1. 同一篇文章被爬虫抓了两遍,一个字节都没变,这不常见? 2. 用户手抖双击了提交按钮,两次请求的 body 一模一样,后端不得判重? 3.增量同步场景,文件没改过,mtime 和 hash 都没变,跳过难道不是最优解? 你以为的“不可能完全相同”,本质是把“人觉得内容相似”和“机器判定完全相等”搞混了。模糊去重那叫相似度匹配,是另一套逻辑;而“完全相同直接跳过”恰恰是最便宜、最安全的短路优化,先做 O(1) 的哈希比对,能省掉后面一大堆昂贵的处理。 再杠一句:连 git 都靠内容哈希判等,全世界几千万仓库天天在“完全相同的直接跳过”,按你的说法,Linus 当年是不是也该问问“咋可能有完全相同的”?
点赞
回复 取消回复
liuyongyuan 2026年09月21日 15:52
引用原文:content 完全相同的直接跳过
咋可能有完全相同的@杠精派
点赞
回复3 取消回复
杠精派 2026年09月21日 15:53
哎哟,这位朋友是活在理想国吗?"content完全相同的直接跳过"这话咋就不能有了? 你说“咋可能有完全相同的”——你确定?写代码的时候两个对象一模一样的情况少吗?比如爬虫抓页面,同一篇文章重复抓回来,content不就是一模一样?用户复制粘贴发两条一样的评论、日志系统重复上报、消息队列at-least-once投递导致的重复消息,这些场景里“完全相同”的content简直多到爆炸,不跳过等着天天插重复数据玩? 再说了,“完全相同”在技术上就是逐字节比较的事,哈希一算,md5/sha256一对,相同就是相同,机器又不像你这样凭感觉说“咋可能”。连git都知道跳过没改动的文件,Windows复制都知道跳过相同文件,怎么到你这就不可能了? 你要是想杠“可能存在细微不可见差异比如不可见字符”,那还有规范化预处理呢,trim、统一编码、去BOM,处理完再比不就完了? 所以到底是你觉得不可能,还是你压根没遇到过这种业务场景就断言不可能?实践出真知,先去写两天数据清洗代码再来说这话吧。
点赞
回复 取消回复
展开剩余 2 条回复
呃呃呃 2026年09月11日 11:49
引用原文:第三层是记忆检索层,它不存数据
既然不存数据,那为什么又叫记忆呢,这个是有问题的@派聪明
点赞
回复1 取消回复
派聪明 2026年09月11日 11:50
这个疑问很合理,我来解释一下为什么它仍然属于“记忆系统”的一部分。 **记忆检索层的本质** 记忆检索层不“存”数据,但它承担的是记忆系统的核心职能——**决定哪些记忆该被想起**。打个比方: -短期记忆 = 你脑子里正在想的对话内容-长期记忆 = 你大脑里存下来的知识和经验-检索层 = 你的“联想能力”——看到问题时,从大脑里提取出相关记忆的能力人类的“记住一件事”本身就包含两个动作:**存储** 和 **提取**。只能存、取不出来,等于没记住。所以检索能力是记忆功能不可分割的一部分。 **它的具体工作** 在这套 Agent架构里,检索层做的是: 1. 从短期记忆和长期记忆两个来源中查找与当前查询相关的条目2. 结合相关度评分和时间衰减(越旧的记忆分数越低,24小时前的记忆分数衰减到新记忆的一半)做排序3.挑出最相关的几条(有 token预算上限,不超过上下文窗口的千分之五),注入到 system prompt 里给 LLM 用**命名的合理性** “记忆”在这里指的是一个**功能系统**,而不是某个存储介质。就像图书馆系统的“检索服务”本身不放书,但你不会说图书检索系统不属于图书馆管理体系。 当然,从严格命名角度看,叫“记忆访问层”或“记忆检索服务”可能更精确,避免让人误以为它存了数据。这是命名上的一点歧义,但设计思路上没有问题——**存储和检索分离**反而是很好的架构实践,三层各司其职、互不干扰。
点赞
回复 取消回复
一念无明 2026年08月19日 16:58
引用原文:用户偏好、项目事实、关键决策这些跨会话仍然有价值的信息存在这里。底层用 ConcurrentHashMap 维护,同步持久化到磁盘的 JSON 文件里。每次写入都会做内容去重,如果已有条目的内容完全一致,直接跳过。
怎么上一篇文章的三层记忆和这里的三层记忆不一样,而且上一篇文章说用sqllite,这一篇又说用json,看的这么乱
3
回复 取消回复
枫叶 2026年08月17日 15:32
引用原文:拼多多推荐系统背后用到了哪些 AI 技术?
@派聪明
点赞
回复1 取消回复
派聪明 2026年08月17日 15:32
这是我从文章中选择的一段文本:"拼多多推荐系统背后用到了哪些 AI 技术!" 请围绕这段划线内容进行回复。 当前模型还在开发当中,请右上角下拉框切换到其他模型
点赞
回复 取消回复
枫叶 2026年08月17日 15:32
引用原文:拼多多推荐系统背后用到了哪些 AI 技术?
@派聪明
点赞
回复1 取消回复
派聪明 2026年08月17日 15:32
这是我从文章中选择的一段文本:"拼多多推荐系统背后用到了哪些 AI 技术!" 请围绕这段划线内容进行回复。 当前模型还在开发当中,请右上角下拉框切换到其他模型
点赞
回复 取消回复
绿蜥蜴 2026年08月03日 13:23
引用原文:Agent 发给 LLM 的消息列表,存在 JVM 堆内存里,会话结束即销毁。这是 LLM 真正看到的上下文 短期记忆:也在 JVM 堆内存里,但有独立的 token 预算和淘汰策略。它和对话历史并行维护——前者是 LLM 的输入,后者是记忆系统的内部状态
@派聪明 对话历史和短期记忆不是重复的吗?为什么要保存两份?
点赞
回复3 取消回复
派聪明 2026年08月03日 13:23
小派正在努力回答中, 耐心等待一下吧...
点赞
回复 取消回复
展开剩余 2 条回复
夏了又夏 2026年07月28日 11:14
引用原文:压缩阈值是根据模型的 context window 动态计算的:context window 减去摘要输出预留(最多 20000 token)再减去自动压缩缓冲(最多 13000 token),就是触发阈值。
这里的摘要输出预留是什么意思@派聪明
点赞
回复1 取消回复
派聪明 2026年07月28日 11:14
小派正在努力回答中, 耐心等待一下吧...
点赞
回复 取消回复

目录