Wise:深度解析AI的记忆机制,Hermes的自我进化机制和Skill是记忆的延伸。
Wise:深度解析AI的记忆机制,Hermes的自我进化机制和Skill是记忆的延伸。
Wise:深度解析AI的记忆机制,Hermes的自我进化机制和Skill是记忆的延伸。 Wise:深度解析AI的记忆机制,Hermes的自我进化机制和Skill是记忆的延伸。 Modified May 16 长期记忆,是需要持久存储的最核心的记忆。 AI 在这一层做的事情是提炼:从大量对话里挑出真正值得永远记住的东西,写进用户偏好、项目规则或者系统提示里。 编程类的 Agent,比如 Claude Code,会把规则结构化地写入全局的 CLAUDE.md;豆包、ChatGPT 等通用 AI 则是单独的记忆记录,承载用户让它记住或者系统提炼出来的内容。 L4 的信息极少,也是最稳定的记忆形式。它不需要被动检索才能触发,每次启动都被自动加载,相当于 AI 的出厂设置,额外写进去了关于你的核心认知、你要求的规则。 但它的代价是:每一条长期记忆都永远占用一部分上下文空间。 所以长期记忆的核心挑战不是能存多少,而是该存什么。 什么都记住和什么都没记,结果是一样的,无关的信息挤占了窗口空间,反而让 AI 在处理当前任务时更迟钝。 这四层是彼此独立的。 L2 压缩出了语言偏好的总结,不等于它会自动进入 L4 成为长期记忆。L4的信息太少,也支撑不了完整的历史回忆。 我们在设计Agent的时候,不能指望一层解决所有问题,每一层都有自己的职责和局限。 记忆是怎么重新出现的 理解了四层记忆各自的机制,那下一个问题是:既然模型本身没有持久记忆,那它每次对话时看起来"记得你"的体验,到底是怎么产生的呢? 大模型不会自己学习你的行为,不会在你没告诉它的情况下理解你的偏好。 它在每一轮接收到你的信息时,重新读取一遍和你有关的内容。而它读到什么,是由工程的来决定。 这里会包含两类内容: 一、每次都能看见的内容 系统提示词、长期记忆(L4)、环境变量、Skill 定义等等——这些属于无论如何都往上下文里注入的内容。 每一家 Agent 的策略不同:Claude Code 有一整套上下文注入的机制,包括你是谁、CLAUDE.md、工具列表、环境说明。 它的默认注入量不会太多,因为每多注入一条,就多占一点空间。 第二个部分是按需检索的。 我们问AI:"你还记得我上周说的那个方案吗?"系统会触发 L3 的检索流程:先根据时间范围缩小目标会话,再用语义或关键字匹配那段聊天,把找到的内容给模型看一遍,让模型在这个基础上回答你的问题。 而 Skill、MCP 也是 AI 通过匹配用户的问题和工具的描述进行调用,同样属于按需加载的范畴。 这两类机制组合在一起,让模型产生了"它记得我"的体验。 Skill是记忆的延伸,是AI的另一种自我进化 爆火的 Hermes,GitHub 的 Star 达到了 14.8 万,接近 OpenClaw 的一半。它当时爆火的原因之一是:自我进化。它会评估完成得不够好的任务,自动生成一个 Skill,在未来遇到同类任务时调用那个 Skill 来提高表现。于是你会觉得它越用越好用,因为同类任务的出错概率被系统性地降低了。 这其实符合 LangGraph对记忆的分层抽象:它把 memory 拆成短期的 checkpoint 和长期的 store,再将长期记忆细分为 semantic(事实)、episodic(经验)、procedural(说明)。 三者分工不同:semantic 类似所有发生过的事,需要时可以回忆。 episodic 类似 Skill,把不常用但需要的东西变成可加载的技能,保证记忆的干净和效率。procedural 类似系统提示词或 CLAUDE.md,是全局不可违背的规则,通过自我改进持续优化。 Skill 的出现不是偶然,它解决的是长期记忆(L4)的一个核心矛盾:规则太多、太长尾,有的可能只用一次。在以前,我们会把所有规则都塞进 CLAUDE.md。但规则多了,上下文就会特别臃肿。有些规则只会在特定场景下用到,全局加载会很浪费。 我们的人生经验也不会全部写到日记里随身携带,信息太多反而找不到重点。 Skill 把经验从规则里分离了出来。规则是全局生效的禁令和约束,Skill 是按需加载的专项能力。需要的时候再进行使用,不需要的时候不会浪费上下文的空间。 这么看来,系统提示词是 Agent 的核心行事本能,全局规则是在这套机制上的约束,而 Skill 则是按需使用的经验。 对于构建 Agent 真正的挑战是对这些记忆进行分层治理:对于上下文(L1/L2),你要进行存储和压缩的策略设计。对于长期记忆(L4),你需要决定是几条精炼的规则,还是类似 OpenClaw 的 User.md 式结构化记录。 而到了运行规则层面,系统提示词、全局的 CLAUDE.md、Skill 三者的边界在我们自己构建的 Agent 里又该怎么划分呢? 在决定把一条信息放在哪里之前,我们可以先问自己:这是一个应该全局禁止的教训,还是一个只对某一类任务有价值的经验?如果是后者,把它写成 Skill,不要把它塞进规则。 如果我们希望更改 AI 的思维方式、优先级比规则更高的东西,那就应该放在系统提示词里。 最后 下一次当你遇到 AI 忽然失忆了,其实不是它变笨了。 如果用工程来解读记忆:注意力机制是一种计算架构,上下文窗口是信息边界,记忆的写入是提取规则,记忆的检索是索引和排序。 人类替 AI 设计了一整套系统,让它知道什么时候该记忆、什么时候又该遗忘。 AI:很高兴重新认识你,我的朋友。 原文 https://mp.weixin.qq.com/s/42BTdtA wTk44niY6TU3zg 觉得不错的话,可以关注下歪斯噢 参考资料 Code block Bash Copy Agent 记忆框架 1、Launching Long Term Memory Support in LangGraph https://blog.langchain.dev/launching long term memory support in langgraph/ 2、Cognitive Architectures for Language Agents https://arxiv.org/abs/2309.02427 3、Memory and State in LLM Applications https://arize.com/blog/memory and state in llm applications/ 上下文压缩(L1 / L2) 1、Hermes Agent: Context Compression and Caching https://hermes agent.nousresearch.com/docs/developer guide/context compression and caching 2、Memory Hermes Agent https://hermes agent.nousresearch.com/docs/user guide/features/memory 可检索档案(L3) 1、Memory OpenClaw Docs https://docs.openclaw.ai/concepts/memory 2、Built in Memory OpenClaw Docs https://docs.openclaw.ai/concepts/memory builtin 3、How OpenClaw Memory Works https://www.db0.ai/blog/how openclaw memory works 长期记忆 / 系统提示注入(L4) 1、Memory Claude Code Docs https://code.claude.com/docs/en/memory 2、Claude Code Dynamic Context Injectionhttps://www.365iwebdesign.co.uk/news/2026/01/23/claude code dynamic context injection/ 长期记忆,是需要持久存储的最核心的记忆。 AI 在这一层做的事情是提炼:从大量对话里挑出真正值得永远记住的东西,写进用户偏好、项目规则或者系统提示里。 编程类的 Agent,比如 Claude Code,会把规则结构化地写入全局的 CLAUDE.md;豆包、ChatGPT 等通用 AI 则是单独的记忆记录,承载用户让它记住或者系统提炼出来的内容。 L4 的信息极少,也是最稳定的记忆形式。它不需要被动检索才能触发,每次启动都被自动加载,相当于 AI 的出厂设置,额外写进去了关于你的核心认知、你要求的规则。 但它的代价是:每一条长期记忆都永远占用一部分上下文空间。 所以长期记忆的核心挑战不是能存多少,而是该存什么。 什么都记住和什么都没记,结果是一样的,无关的信息挤占了窗口空间,反而让 AI 在处理当前任务时更迟钝。 这四层是彼此独立的。 L2 压缩出了语言偏好的总结,不等于它会自动进入 L4 成为长期记忆。L4的信息太少,也支撑不了完整的历史回忆。 我们在设计Agent的时候,不能指望一层解决所有问题,每一层都有自己的职责和局限。 记忆是怎么重新出现的 理解了四层记忆各自的机制,那下一个问题是:既然模型本身没有持久记忆,那它每次对话时看起来"记得你"的体验,到底是怎么产生的呢? 大模型不会自己学习你的行为,不会在你没告诉它的情况下理解你的偏好。 它在每一轮接收到你的信息时,重新读取一遍和你有关的内容。而它读到什么,是由工程的来决定。 这里会包含两类内容: 一、每次都能看见的内容 系统提示词、长期记忆(L4)、环境变量、Skill 定义等等——这些属于无论如何都往上下文里注入的内容。 每一家 Agent 的策略不同:Claude Code 有一整套上下文注入的机制,包括你是谁、CLAUDE.md、工具列表、环境说明。 它的默认注入量不会太多,因为每多注入一条,就多占一点空间。 第二个部分是按需检索的。 我们问AI:"你还记得我上周说的那个方案吗?"系统会触发 L3 的检索流程:先根据时间范围缩小目标会话,再用语义或关键字匹配那段聊天,把找到的内容给模型看一遍,让模型在这个基础上回答你的问题。 而 Skill、MCP 也是 AI 通过匹配用户的问题和工具的描述进行调用,同样属于按需加载的范畴。 这两类机制组合在一起,让模型产生了"它记得我"的体验。 Skill是记忆的延伸,是AI的另一种自我进化 爆火的 Hermes,GitHub 的 Star 达到了 14.8 万,接近 OpenClaw 的一半。它当时爆火的原因之一是:自我进化。它会评估完成得不够好的任务,自动生成一个 Skill,在未来遇到同类任务时调用那个 Skill 来提高表现。于是你会觉得它越用越好用,因为同类任务的出错概率被系统性地降低了。 这其实符合 LangGraph对记忆的分层抽象:它把 memory 拆成短期的 checkpoint 和长期的 store,再将长期记忆细分为 semantic(事实)、episodic(经验)、procedural(说明)。 三者分工不同:semantic 类似所有发生过的事,需要时可以回忆。 episodic 类似 Skill,把不常用但需要的东西变成可加载的技能,保证记忆的干净和效率。procedural 类似系统提示词或 CLAUDE.md,是全局不可违背的规则,通过自我改进持续优化。 Skill 的出现不是偶然,它解决的是长期记忆(L4)的一个核心矛盾:规则太多、太长尾,有的可能只用一次。在以前,我们会把所有规则都塞进 CLAUDE.md。但规则多了,上下文就会特别臃肿。有些规则只会在特定场景下用到,全局加载会很浪费。 我们的人生经验也不会全部写到日记里随身携带,信息太多反而找不到重点。 Skill 把经验从规则里分离了出来。规则是全局生效的禁令和约束,Skill 是按需加载的专项能力。需要的时候再进行使用,不需要的时候不会浪费上下文的空间。 这么看来,系统提示词是 Agent 的核心行事本能,全局规则是在这套机制上的约束,而 Skill 则是按需使用的经验。 对于构建 Agent 真正的挑战是对这些记忆进行分层治理:对于上下文(L1/L2),你要进行存储和压缩的策略设计。对于长期记忆(L4),你需要决定是几条精炼的规则,还是类似 OpenClaw 的 User.md 式结构化记录。 而到了运行规则层面,系统提示词、全局的 CLAUDE.md、Skill 三者的边界在我们自己构建的 Agent 里又该怎么划分呢? 在决定把一条信息放在哪里之前,我们可以先问自己:这是一个应该全局禁止的教训,还是一个只对某一类任务有价值的经验?如果是后者,把它写成 Skill,不要把它塞进规则。 如果我们希望更改 AI 的思维方式、优先级比规则更高的东西,那就应该放在系统提示词里。 最后 下一次当你遇到 AI 忽然失忆了,其实不是它变笨了。 如果用工程来解读记忆:注意力机制是一种计算架构,上下文窗口是信息边界,记忆的写入是提取规则,记忆的检索是索引和排序。 人类替 AI 设计了一整套系统,让它知道什么时候该记忆、什么时候又该遗忘。 AI:很高兴重新认识你,我的朋友。 原文 https://mp.weixin.qq.com/s/42BTdtA wTk44niY6TU3zg 觉得不错的话,可以关注下歪斯噢 参考资料 这张图是我的豆包记忆界面,这里什么都没有,它没有留下任何关于我的记录。 但在问豆包问题时,它却能够记得我这几天和它聊的内容。 那 AI 到底有记忆还是没有记忆呢?记忆又是怎么产生的? 这周看了很多的资料,结论是AI有记忆,但不是我们人类的模式。 它不是在像人一样记住你,它是在每次对话里重新认识你。 记忆是 AI 产品都必须面对的工程难题:如果 AI 不能可靠地"记住"用户,那它的"懂你"就只是一次性的表演,而不是可持续的体验。 所有 AI 助手、编程 Agent、客服机器人的个性化能力,都建立在这个基础上。 搞不清它的机制,你连龙虾、爱马仕为什么突然"失忆"可能都很难排查。 记忆的本质还是工程。 记忆,到底是怎么产生的? 记忆,从工程的角度至少覆盖了四件不同的事情,但我们在不同场景下都叫它记忆,所以也会产生一些误解。 就像我们手机里的聊天记录、备忘录和身份证,虽然都算是存着你的信息,但它们的保存方式、使用场景却完全不同。 记忆大致能够区分成这4个层级: 简单来说:L1 和 L2 管的是聊天窗口,也就是我们和豆包、龙虾聊天的地方,它解决的是在当前会话里AI能记住多少内容。 L3 负责的聊天历史,过去聊过了什么,又要查到什么。 L4 则是核心信念,关于你这个人,最值得永远记住的是什么。AI又要永久的以什么方式运作。 它们解决的不是同一个问题,实现方式也完全不同。 L1 是上下文工程,L2是上下文的压缩策略,L3 是存储和检索系统,L4 是记忆、规则的形成与筛选机制。 它们共享了记忆这个名字,但却不能够混为一谈。 这四层分别是怎么工作的 L1 会话窗口及L2 压缩摘要 在查看 AI 的接口文档时,能看到模型的上下文长度,它的意思是模型一次能够处理的总Token量。 只要不新开对话窗口,你说的每一句话、模型的每一次思考、工具调用、模型的输出,全部都留在这个窗口里。 这就是最原始的AI记忆机制,非常的简单直接,模型能工作的窗口越长,注意力机制越好,那它就能记住我们的对话。 但缺点是我们新建一个对话就没有了,而且这个窗口是有上限的,超出上限或者用量达到 50 80% 时,早期的消息就可能会丢失或者截断。 更关键的是窗口里内容越多,模型受到的干扰越大,理解你当前问题的能力就越差。 所以对上下文窗口的管理策略变得重要:什么时候压缩、压缩什么、丢弃什么,这些决策直接决定了 AI 能不能在长对话里保持清醒。 例如最近爆火的 Hermes,它的策略是:当上下文使用量到 50% 就触发压缩机制。不是等到上下文爆炸了再去救火,而是提前把旧对话进行结构化的总结,让模型始终工作在干净的上下文里。 这个设计的逻辑是:与其让模型在满载状态下艰难工作,不如主动牺牲一部分历史细节,用来换取AI提升对当前任务的理解。 但压缩是有代价的,当上下文达到阈值,系统会对历史内容生成一份概括性的总结。 你和 AI 讨论了 X 项目的架构,决定用 Y 方案。 但总结之后它只记得结论,不记得推导过程,你再追问细节,它很可能答不上来。 不是它忘记了,而是那段信息在压缩总结的时候已经被丢弃了。 L3 可检索档案 所有的对话历史都可以被存储下来,变成可检索的档案。 这一层要解决的问题是:存什么内容,以及什么时候、用什么方式检索。 OpenClaw龙虾的做法除了直接存储原始对话,而是基于每一天的对话生成一份记录。 当需要回忆某件事时,可以先通过时间缩小搜索范围,再通过理解你的意思去查询相关的内容,最后把查到的内容重新让AI看一遍。所以当你发现 AI 失忆了,可以先排查这三个环节: • 内容有没有被存下来,或者存储的格式是否完整。 • 内容存下来了,但检索的时候有没有查到。 • 内容被查到了,但没有被允许放进当前会话的上下文,因为窗口空间有限,系统可能判断这条信息对当前对话不够重要。 这三个环节是一条完整的工程链条,任何一个断裂都会导致AI 的失忆。 L4 长期记忆或规则