{"schema_version":1,"id":"viewpoint:what-agent-memory-is","kind":"viewpoint","slug":"what-agent-memory-is","title":"Agent 的记忆是什么，难在哪？","author":"晨旭","url":"https://chenxu.xin/claims/what-agent-memory-is","date":"2026-10-27","updated":"2026-10-27","description":"","position":"在 Agent 应用层，我更关心记忆能否被持续管理，而不只是上下文能装多少。它既要记录交流，也要记录行动；关键在于决定什么值得保存、什么时候更新，以及当前任务应该取用什么。对于我的个人知识系统，判断历史应当可追溯，但旧判断不应被当作当前立场使用。","group":"agent-engineering","series":null,"tags":[],"publication_status":"public","maturity":null,"body_sha256":"985976313c0a839f01b473c5649e063aad9aae383701529a6243432b2d4677b8","paragraph_rule":"src/lib/paragraphs.mjs@1","paragraphs":[{"id":"p1","kind":"heading","text":"我关注的是怎样管理记忆","raw":"## 我关注的是怎样管理记忆"},{"id":"p2","kind":"paragraph","text":"这里主要讨论应用层可读写的记忆：对话记录、行动记录，以及从中整理出来、供后续任务使用的信息。它不涵盖模型内部所有形式的记忆。","raw":"这里主要讨论应用层可读写的记忆：对话记录、行动记录，以及从中整理出来、供后续任务使用的信息。它不涵盖模型内部所有形式的记忆。"},{"id":"p3","kind":"paragraph","text":"把信息保存下来只是开始。保存的内容是否准确、后来有没有变化、在当前任务中是否仍然适用，决定了这些记录能不能真正帮上忙。","raw":"把信息保存下来只是开始。保存的内容是否准确、后来有没有变化、在当前任务中是否仍然适用，决定了这些记录能不能真正帮上忙。"},{"id":"p4","kind":"heading","text":"记录行动，也要选择当前取用的信息","raw":"## 记录行动，也要选择当前取用的信息"},{"id":"p5","kind":"paragraph","text":"在《深度解析 Memory 本质》中，我讨论过工具调用的行为记忆：记录调用的工具、输入、输出和成功标记。其中举的例子是，如果 Agent 不记得某次搜索已经失败，它可能会不断重试。 行为记忆的原文","raw":"在《深度解析 Memory 本质》中，我讨论过工具调用的行为记忆：记录调用的工具、输入、输出和成功标记。其中举的例子是，如果 Agent 不记得某次搜索已经失败，它可能会不断重试。 [行为记忆的原文](/versions/article/agent-memory-essence/f6a33b3742d5f3d44c7b6672e45923cc5a11b25912137f902363b816a11131ed#p83)"},{"id":"p6","kind":"paragraph","text":"保留行动记录，不意味着把全部记录都放进模型当前的上下文。我在《上下文不等于记忆》中把两件事分开：记忆工程决定保留什么、遗忘什么，上下文工程筛选与当前决策相关的片段，决定让模型此刻看到什么。《深度解析 Memory 本质》也写到，任务执行中按当前子任务的语义检索历史错题集与最佳实践。 保留与取用的区别 · 按任务读取","raw":"保留行动记录，不意味着把全部记录都放进模型当前的上下文。我在《上下文不等于记忆》中把两件事分开：记忆工程决定保留什么、遗忘什么，上下文工程筛选与当前决策相关的片段，决定让模型此刻看到什么。《深度解析 Memory 本质》也写到，任务执行中按当前子任务的语义检索历史错题集与最佳实践。 [保留与取用的区别](/versions/article/context-is-not-memory/c68fbd7580f72b364c6d3c39a3c009cf02feb2061415988f0d8d51fbde2d7bb0#p15) · [按任务读取](/versions/article/agent-memory-essence/f6a33b3742d5f3d44c7b6672e45923cc5a11b25912137f902363b816a11131ed#p93)"},{"id":"p7","kind":"heading","text":"系统怎样继续执行，也需要单独处理","raw":"## 系统怎样继续执行，也需要单独处理"},{"id":"p8","kind":"paragraph","text":"在 Agent Infra 的阶段性理解里，我讨论的是另一类保证：引入多 Worker、重试和故障接管后，任务进度和已发生的副作用，需要由执行者共享的事实源来判断。Temporal 是文中举出的持久化运行方案，着重解决一次运行在崩溃后继续推进的问题。 执行状态与共享事实源 · Temporal 的讨论","raw":"在 Agent Infra 的阶段性理解里，我讨论的是另一类保证：引入多 Worker、重试和故障接管后，任务进度和已发生的副作用，需要由执行者共享的事实源来判断。Temporal 是文中举出的持久化运行方案，着重解决一次运行在崩溃后继续推进的问题。 [执行状态与共享事实源](/versions/article/agent-infra-three-layers/c4c04add15391d6966bff0ec562b027d9846e270fa6659de03c04299a2861009#p27) · [Temporal 的讨论](/versions/article/agent-infra-three-layers/c4c04add15391d6966bff0ec562b027d9846e270fa6659de03c04299a2861009#p30)"},{"id":"p9","kind":"paragraph","text":"这些执行保证与“这一步给模型什么上下文”，在那篇文章里分别放在控制层和 Harness 层讨论。 上下文装配的讨论","raw":"这些执行保证与“这一步给模型什么上下文”，在那篇文章里分别放在控制层和 Harness 层讨论。 [上下文装配的讨论](/versions/article/agent-infra-three-layers/c4c04add15391d6966bff0ec562b027d9846e270fa6659de03c04299a2861009#p21)"},{"id":"p10","kind":"paragraph","text":"记录“做过什么”也需要区分层次。文字可以记下调用过什么工具、遇到过什么错误，但不等于保存了能够继续运行的计算现场。回顾经历与恢复执行，是不同的需求。在 OpenScience 那篇文章中，按 session 复用 Kernel 是维持连续计算的具体做法；运行中的 Kernel 仍不等于永久保存的实验环境，长期复现还需要代码版本、依赖、随机种子、输入数据和计算环境。 Kernel 连续运行的例子 · 长期复现的限定","raw":"记录“做过什么”也需要区分层次。文字可以记下调用过什么工具、遇到过什么错误，但不等于保存了能够继续运行的计算现场。回顾经历与恢复执行，是不同的需求。在 OpenScience 那篇文章中，按 session 复用 Kernel 是维持连续计算的具体做法；运行中的 Kernel 仍不等于永久保存的实验环境，长期复现还需要代码版本、依赖、随机种子、输入数据和计算环境。 [Kernel 连续运行的例子](/versions/article/ai-for-science-vertical-harness/4f190cf8ffa8f88df57d06859f7499299e13fc229a1ae3e1e60a10af22964e1f#p31) · [长期复现的限定](/versions/article/ai-for-science-vertical-harness/4f190cf8ffa8f88df57d06859f7499299e13fc229a1ae3e1e60a10af22964e1f#p33)"},{"id":"p11","kind":"heading","text":"上下文压缩与缓存复用之间有取舍","raw":"## 上下文压缩与缓存复用之间有取舍"},{"id":"p12","kind":"paragraph","text":"在 KV Cache 那篇文章里，我用一个例子说明摘要式压缩：保留最近的 E、F，把更早的 A、B、C、D 整理成摘要。后续可以保留旧摘要，只压缩新增历史，也可以把旧摘要与新增历史重新整理成一份统一摘要。 摘要压缩的例子","raw":"在 KV Cache 那篇文章里，我用一个例子说明摘要式压缩：保留最近的 E、F，把更早的 A、B、C、D 整理成摘要。后续可以保留旧摘要，只压缩新增历史，也可以把旧摘要与新增历史重新整理成一份统一摘要。 [摘要压缩的例子](/versions/article/kv-cache-why-cheaper/d9ae498a29486d2c30549c088427acbb960922544926fcf93353b2daac1b08f1#p83)"},{"id":"p13","kind":"paragraph","text":"这与 KV Cache 的作用不同：缓存复用已有计算，压缩会删减、截断或总结历史信息，因此可能遗漏细节。保留旧摘要有利于维持稳定前缀，但摘要可能逐渐重复、过时或矛盾；重新合并能整理这些内容，却会改变前缀，使变化位置之后的旧缓存通常不能继续用于压缩后的对话。生成新摘要的请求仍可能利用未变化的前缀缓存，这与新摘要替换后、主对话如何复用缓存是两个阶段。文中最终讨论的是缓存成本、上下文长度和信息完整性之间的平衡。 压缩可能遗漏细节 · 前缀变化与缓存 · 取舍","raw":"这与 KV Cache 的作用不同：缓存复用已有计算，压缩会删减、截断或总结历史信息，因此可能遗漏细节。保留旧摘要有利于维持稳定前缀，但摘要可能逐渐重复、过时或矛盾；重新合并能整理这些内容，却会改变前缀，使变化位置之后的旧缓存通常不能继续用于压缩后的对话。生成新摘要的请求仍可能利用未变化的前缀缓存，这与新摘要替换后、主对话如何复用缓存是两个阶段。文中最终讨论的是缓存成本、上下文长度和信息完整性之间的平衡。 [压缩可能遗漏细节](/versions/article/kv-cache-why-cheaper/d9ae498a29486d2c30549c088427acbb960922544926fcf93353b2daac1b08f1#p79) · [前缀变化与缓存](/versions/article/kv-cache-why-cheaper/d9ae498a29486d2c30549c088427acbb960922544926fcf93353b2daac1b08f1#p98) · [取舍](/versions/article/kv-cache-why-cheaper/d9ae498a29486d2c30549c088427acbb960922544926fcf93353b2daac1b08f1#p103)"},{"id":"p14","kind":"heading","text":"保留历史，与让旧信息退出当前回答","raw":"## 保留历史，与让旧信息退出当前回答"},{"id":"p15","kind":"paragraph","text":"对我正在建设的个人知识系统，我倾向于把“保存记录”和“参与当前回答”分开处理。","raw":"对我正在建设的个人知识系统，我倾向于把“保存记录”和“参与当前回答”分开处理。"},{"id":"p16","kind":"paragraph","text":"已经公开的判断发生变化时，应保留原来的表述、形成时间和修订关系，让人能够追溯我为什么改变看法。Agent 回答“我现在怎么看”时，则应优先使用当前有效的判断；涉及观点演变时，再取用历史记录。","raw":"已经公开的判断发生变化时，应保留原来的表述、形成时间和修订关系，让人能够追溯我为什么改变看法。Agent 回答“我现在怎么看”时，则应优先使用当前有效的判断；涉及观点演变时，再取用历史记录。"},{"id":"p17","kind":"paragraph","text":"因此，保留历史与遗忘机制可以同时成立。旧记录可以继续存在，同时被标记为已取代、降低检索优先级，或不再进入当前任务的上下文。","raw":"因此，保留历史与遗忘机制可以同时成立。旧记录可以继续存在，同时被标记为已取代、降低检索优先级，或不再进入当前任务的上下文。"},{"id":"p18","kind":"paragraph","text":"这里讨论的是判断历史的可追溯性，不意味着所有原始材料都必须永久保留。","raw":"这里讨论的是判断历史的可追溯性，不意味着所有原始材料都必须永久保留。"}],"authored_claims":[{"id":"preserve-history-separate-current-use","text":"在我的个人知识系统中，保留判断历史与控制当前取用应分开处理：历史用于追溯变化，回答当前立场时应优先使用当前有效判断。","stance":"judgment","confidence":null,"supersedes":null,"note":null,"formed_at":"2026-10-21"},{"id":"agent-needs-action-memory","text":"Agent 和 Chatbot 的关键差异在于，Chatbot 只需记「谁说了什么」，Agent 还必须记「我做过什么」——不记的话，它可能在失败的工具调用上反复重试。","stance":"judgment","confidence":null,"supersedes":"agent-needs-behavior-memory","note":"2026-10-27 复核：原结论写“否则会在失败的工具调用上陷入死循环”，比《深度解析 Memory 本质》正文“可能会在一个死循环里不断重试”更肯定，按正文收回到“可能”。旧原话保留。","formed_at":"2026-10-27"}],"claim_ids":["memory-hard-part-is-management","agent-needs-behavior-memory","memory-accuracy-over-length","forgetting-is-a-feature","conversation-memory-is-not-compute-state","preserve-history-separate-current-use","agent-needs-action-memory"],"revision":"d106965c4c6a84b3cf1884e23e53dc9fd50c0e856ec84db2d4574fe14ad93566"}