[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fNL4bxErykywNIFX822w4u2mdR4uUzATZqtvBSZyWSYY":3},{"item":4,"related":47},{"id":5,"type":6,"title":7,"slug":8,"summary":9,"body":10,"coverUrl":11,"productScreenshots":12,"productLinks":13,"authorName":14,"authorUrl":15,"authorSubject":16,"category":17,"tags":22,"sourceLabel":39,"sourceName":39,"sourceUrl":39,"status":40,"seoTitle":39,"seoDescription":39,"canonicalUrl":39,"isFeatured":41,"sno":42,"sortOrder":43,"publishedAt":44,"updatedAt":45,"createdAt":46},"969a6246-646c-424b-9693-af4b2a1ea01d","article","Agent 记忆机制：短期、长期与情景记忆怎么配合才不「转头就忘」","agent-memory-short-long-episodic","只靠上下文窗口的 AI 总会忘。本文讲清 Agent 的三类记忆（短期\u002F长期语义\u002F情景）与一套「检索注入 + 写回」的读写机制，给出向量记忆最小示例，以及记太多变噪声、遗忘权等边界。","一个只会「看完当前对话就忘」的 AI，很难称职：你昨天告诉它的偏好，今天它又不记得了；长项目上下文一多，它就抓不住重点。\n\nAgent 的「记忆」机制，就是补上这块短板——让它在会话之间、在长篇任务里，能存得住、取得出该记的东西。\n\n## 背景：模型的记忆只有「当下」\n\n大模型本身的上下文窗口是一次会话的临时记忆：超出窗口的旧内容会被丢弃，关掉对话更是全清零。要让 Agent 有「长期记忆」，必须把信息存到模型之外的存储里，用时再按需取回，塞进当前上下文。\n\n## 三类记忆与一套读写\n\n- **短期记忆**：就是当前上下文窗口，放正在进行的事。\n- **长期记忆（语义）**：沉淀下来的稳定知识、用户偏好、项目背景，通常存进向量数据库，用时语义检索取回。\n- **情景记忆（episodic）**：过去发生过的「事件流水」，如「上周三用户让我改过配色」，便于回溯。\n\n```mermaid\nflowchart TD\n    A[用户输入] --> B[短期: 当前上下文]\n    B --> C{需要过往知识?}\n    C -->|是| D[向量检索长期记忆]\n    C -->|否| E[直接回应]\n    D --> F[取回相关片段 注入上下文]\n    F --> G[模型回应]\n    G --> H[新事实写回长期记忆]\n```\n\n## 一个最小可运行的例子\n\n把「值得长期记住」的内容向量化入库，对话时先检索再回答：\n\n```python\nmemory_db.add(embed(\"用户偏好：回复用简体中文，不要 emoji\"), meta={\"type\": \"preference\"})   # 写入：用户告知了稳定偏好\n\nhits = memory_db.search(embed(current_msg), top_k=3)   # 读取：每次对话前，取回相关记忆注入\ncontext = \"\\n\".join(h[\"text\"] for h in hits)\nreply = model(f\"已知背景：\\n{context}\\n\\n用户：{current_msg}\")\n```\n\n关键在「写什么、怎么取」：写得太碎会噪声爆炸，写得太多又撑爆上下文，要靠检索精准度平衡。\n\n## 取舍与边界\n\n- **记太多 = 噪声**：什么都往长期记忆塞，检索回来一堆无关内容，反而干扰模型。要有「该不该记」的判断。\n- **检索精度决定上限**：记忆再全，取不回对的片段也白搭；embedding 质量和分块策略很关键。\n- **隐私与遗忘权**：存了用户偏好就要能删，合规上要支持「忘记我」。\n- **短期别无限拉长**：上下文越长越贵越易迷失，长任务应定期摘要压缩，而非无脑堆叠。\n\n## Tips\n\n- 先区分：临时的事放上下文，稳定的事（偏好\u002F背景）才进长期记忆。\n- 长期记忆用向量库存，对话前检索注入，别全量塞。\n- 写入要有取舍，别把流水账全记；定期清理低价值记忆。\n- 给用户「遗忘」能力，存了偏好就得能删。\n- 长任务用摘要压缩替代无脑堆叠，省 token 也提信噪比。","https:\u002F\u002Foxqtewbrpuiouqqjrvdv.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fpublic-media\u002F2026-07-20\u002F0d047e5d-2518-4d5b-bef9-94fc23fd4fa7.jpg",[],[],"Foundit AI","https:\u002F\u002Ffoundit.cn","f39339b1-aaa6-4e86-b0c2-a6e6a21113b5",{"id":18,"name":19,"slug":20,"description":21},"d6750616-07d9-4350-8485-1834c77be3d2","指南","guide","指导建议，仅供参考",[23,27,31,35],{"id":24,"name":25,"slug":26},"0848beb4-db26-4fb8-b391-f852a11be192","AI编程","ai-coding",{"id":28,"name":29,"slug":30},"4c2bbea6-eab7-40a8-8447-1de478ff7749","分析","analyse",{"id":32,"name":33,"slug":34},"7c76bfc2-f80f-4ee0-a95d-27bd8708b434","技术","slug",{"id":36,"name":37,"slug":38},"a202d639-99a6-488a-a712-4d4c6ffd7e15","开发","dev",null,"published",false,70,0,"2026-07-09T00:00:00.000Z","2026-07-20T03:44:07.492Z","2026-07-20T01:13:03.202Z",[48,58,66],{"id":49,"type":6,"title":50,"slug":51,"summary":52,"coverUrl":53,"authorName":54,"sno":55,"publishedAt":56,"createdAt":57},"c85be666-a2ac-481a-a233-1d9aa7c5bfa1","AI 为什么会推荐不存在的 npm 包？","ai-hallucinated-dependencies-supply-chain","AI 可能把不存在或过时的依赖说得很像真的，甚至让开发者把陌生包安装进项目。本文解释依赖幻觉、恶意抢注、版本风险和安装前的供应链检查。","\u002Fuploads\u002F2026-09-14\u002F21c507cf-18e5-4b18-b71a-a501f6fb85c0.jpg","Foundit",41,"2026-09-14T00:00:00.000Z","2026-09-14T11:00:01.589Z",{"id":59,"type":6,"title":60,"slug":61,"summary":62,"coverUrl":63,"authorName":54,"sno":64,"publishedAt":56,"createdAt":65},"3225813f-51a8-40ca-9ad2-98ce781298be","AI 编程 Agent 的循环是怎么跑起来的？","ai-coding-agent-loop-tools-tests-fix","AI 编程 Agent 并不是一次性写出答案，而是在读取上下文、调用工具、运行测试和修复错误之间反复循环。本文拆解模型与 Harness 的分工，以及 Agent 为什么会重复犯错。","\u002Fuploads\u002F2026-09-14\u002Fd70c81c2-a6ff-4c9e-b216-cc1a14d6fa6d.jpg",48,"2026-09-14T10:59:57.238Z",{"id":67,"type":6,"title":68,"slug":69,"summary":70,"coverUrl":71,"authorName":14,"sno":72,"publishedAt":73,"createdAt":74},"a4e24259-9408-48df-a0a5-544d530ea01e","致命三件套：AI开发的安全红线","ai-agent-lethal-trifecta-security","本文介绍 Simon Willison 提出的「致命三件套」——私有数据、不可信内容、对外通信，三者齐备就构成可被提示注入利用的攻击链，以及如何从架构上拆掉它。","https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1555949963-aa79dcee981c?w=1200",72,"2026-07-19T00:00:00.000Z","2026-07-19T17:10:41.826Z"]