[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-agent-memory-framework-analysis-zh":3,"tags-agent-memory-framework-analysis-zh":35,"related-lang-agent-memory-framework-analysis-zh":49,"related-posts-agent-memory-framework-analysis-zh":53,"series-ai-agent-367128a2-5c5f-4d39-a51f-9cedd4d538a5":90},{"id":4,"title":5,"content":6,"summary":7,"source":8,"source_url":9,"author":10,"image_url":11,"keywords":12,"language":23,"translated_content":10,"views":24,"is_premium":25,"created_at":26,"updated_at":26,"cover_image":11,"published_at":27,"rewrite_status":28,"rewrite_error":10,"rewritten_from_id":29,"slug":30,"category":31,"related_article_id":32,"status":33,"google_indexed_at":34,"x_posted_at":10,"tweet_text":10,"title_rewritten_at":10,"title_original":10,"key_takeaways":10,"topic_cluster_id":10,"embedding":10,"is_canonical_seed":25},"367128a2-5c5f-4d39-a51f-9cedd4d538a5","AI Agent 記憶怎麼設計","\u003Cp>說真的，AI a\u003Ca href=\"\u002Fnews\u002Fagent-harness-ai-engineering-2026-zh\">gent\u003C\u002Fa> 不是只會聊天就夠。\u003Ca href=\"https:\u002F\u002Fopenai.com\" target=\"_blank\" rel=\"noopener\">OpenAI\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fwww.anthropic.com\" target=\"_blank\" rel=\"noopener\">Anthropic\u003C\u002Fa>、\u003Ca href=\"https:\u002F\u002Fai.google\" target=\"_blank\" rel=\"noopener\">Google\u003C\u002Fa> 都在推 agent 工作流。問題也很\u003Ca href=\"\u002Fnews\u002Ffeishu-open-source-cli-ai-agent-office-zh\">直接\u003C\u002Fa>：模型能答一次，不代表它能記住上一次做了什麼。\u003C\u002Fp>\u003Cp>這件事很現實。LLM 可以很會講，但一旦要跨工具、跨步驟、跨時間維持狀態，記憶就變成核心能力。沒有記憶，agent 每次都像重開機。你叫它接著做，它卻像失憶一樣。\u003C\u002Fp>\u003Cp>講白了，agent memory 就是讓系統記住任務。它要記使用者偏好，也要記工具輸出，還要記中間狀態。這不是花俏功能。這是 agent 能不能真的幹活的分水嶺。\u003C\u002Fp>\u003Ch2>為什麼 agent 記憶這麼重要\u003C\u002Fh2>\u003Cp>單輪聊天和多步驟 agent，需求完全不同。前者只要回一句像樣的答案。後者要記得前面查了什麼、失敗過什麼、還剩哪些步驟沒做完。這種差異，直接改變架構設計。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775058021870-r6l5.png\" alt=\"AI Agent 記憶怎麼設計\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>如果沒有記憶，agent 每次都從零開始。它可能剛剛才讀過文件，下一輪又問一次。它可能已經抓到 API 回應，下一步卻把資料忘光。這種行為在 demo 很可愛，在正式產品就很煩。\u003C\u002Fp>\u003Cp>所以現在很多團隊都把記憶當成系統設計的一部分。不是加個聊天紀錄就算數。你要想清楚，哪些資料只活 30 秒，哪些要留 30 天，哪些甚至要永久保存。這才像真的在做產品。\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cstrong>短期上下文\u003C\u002Fstrong>：目前對話與最近工具呼叫\u003C\u002Fli>\u003Cli>\u003Cstrong>工作狀態\u003C\u002Fstrong>：目標、子任務、暫存變數\u003C\u002Fli>\u003Cli>\u003Cstrong>長期記憶\u003C\u002Fstrong>：偏好、歷史決策、穩定事實\u003C\u002Fli>\u003Cli>\u003Cstrong>外部記憶\u003C\u002Fstrong>：資料庫、向量庫、檔案、log\u003C\u002Fli>\u003C\u002Ful>\u003Cp>這四層很重要，因為它們用途不同。你不會把所有東西都塞進 prompt。那樣 Token 很快爆掉。你也不會把所有東西都丟進向量庫。那樣你很難保證精準狀態。\u003C\u002Fp>\u003Cp>我覺得，真正成熟的 agent，第一個能力不是會推理。是會管理記憶。它知道什麼該留，什麼該丟，什麼該查。這比單純把模型換大，還更接近實戰。\u003C\u002Fp>\u003Ch2>記憶層怎麼分工\u003C\u002Fh2>\u003Cp>大多數 agent 架構都會拆成多層記憶。原因很簡單。沒有一種儲存方式可以同時處理即時上下文、精準狀態、語意回憶，還有跨 session 持久化。想一次全包，通常只會做得很痛苦。\u003C\u002Fp>\u003Cp>短期上下文最直接。它就是 prompt window，速度快，實作也簡單。缺點也很明顯，Token 有上限。你如果一直塞工具輸出，最後不是成本爆，就是模型開始漏看重點。\u003C\u002Fp>\u003Cp>長期記憶則比較像資料層。它可以存使用者偏好、任務結果、歷史紀錄。這類資訊通常要結構化，不然之後很難查，也很難除錯。說白了，能查才有救。\u003C\u002Fp>\u003Cblockquote>“The future of AI does not belong to those who build the biggest models, but to those who learn how to make them useful.” — Fei-Fei Li\u003C\u002Fblockquote>\u003Cp>這句話很貼切。模型再大，忘東忘西還是沒用。真正有價值的是它能把事情做完。記憶就是把「會講」變成「會做」的那條線。\u003C\u002Fp>\u003Cp>另一個常見做法是把記憶按時間切。秒級記憶放在上下文。分鐘級記憶放在工作狀態。天級或月級記憶放到資料庫。這種分層很土，但很實用。工程上常常就是土法最穩。\u003C\u002Fp>\u003Ch2>現在主流框架怎麼做\u003C\u002Fh2>\u003Cp>現在很多框架都開始把記憶做成一等公民。\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flangchain\" target=\"_blank\" rel=\"noopener\">LangChain\u003C\u002Fa> 有記憶相關抽象，\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fautogen\" target=\"_blank\" rel=\"noopener\">Microsoft AutoGen\u003C\u002Fa> 走多 agent 協作，\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Frun-llama\u002Fllama_index\" target=\"_blank\" rel=\"noopener\">LlamaIndex\u003C\u002Fa> 則偏向外部知識檢索。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775058050790-67o5.png\" alt=\"AI Agent 記憶怎麼設計\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>它們都在解同一題，但解法不同。有的保留聊天紀錄後再摘要。有的把狀態寫進結構化儲存。有的只在需要時才抓回舊資料。差別在於，你要的是連貫感，還是可追蹤性，或是低延遲。\u003C\u002Fp>\u003Cp>實務上，框架常見的不是單一記憶，而是混搭。這很正常。因為 agent 的任務本來就混雜。它既要即時反應，也要記住長期偏好，還要能回頭查歷史事件。單一方法很難全扛。\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cstrong>Prompt memory\u003C\u002Fstrong>：快，但受 context window 限制\u003C\u002Fli>\u003Cli>\u003Cstrong>Summary memory\u003C\u002Fstrong>：省 Token，但容易丟細節\u003C\u002Fli>\u003Cli>\u003Cstrong>Vector memory\u003C\u002Fstrong>：適合語意回憶，但不保證順序\u003C\u002Fli>\u003Cli>\u003Cstrong>Structured memory\u003C\u002Fstrong>：精準可查，但要先設 schema\u003C\u002Fli>\u003C\u002Ful>\u003Cp>這裡的取捨很像選資料庫。你要查詢快，還是要寫入簡單。你要可追溯，還是要語意相似。沒有免費午餐。每種方案都在不同地方付錢。\u003C\u002Fp>\u003Cp>還有一個現實問題是延遲。每多一次檢索，就多一段等待。每多一層儲存，就多一點維護成本。產品團隊最常犯的錯，就是把記憶想得太浪漫，最後把伺服器搞得很累。\u003C\u002Fp>\u003Ch2>用數字看記憶取捨\u003C\u002Fh2>\u003Cp>先看模型本身的限制。\u003Ca href=\"https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fmodels\" target=\"_blank\" rel=\"noopener\">GPT-4.1\u003C\u002Fa> 文件提到，部分版本支援 100 萬 token c\u003Ca href=\"\u002Fnews\u002Fcontext-is-the-new-os-zettlab-agent-computer-zh\">onte\u003C\u002Fa>xt window。這數字很大，但你一旦把工具輸出、文件、歷史對話都放進去，空間還是會被吃掉。\u003C\u002Fp>\u003Cp>再看 \u003Ca href=\"https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fbuild-with-claude\u002Fcontext-windows\" target=\"_blank\" rel=\"noopener\">Claude\u003C\u002Fa>。它也有很大的 context window。可是一個 session 結束後，狀態還是會消失。你如果沒把資料寫到外部記憶，下一次進來還是得重來。\u003C\u002Fp>\u003Cp>這就是外部記憶的價值。資料庫可以永久保存。向量庫可以做相似檢索。log 可以保留完整操作序列。這三種東西看起來老派，但在 agent 系統裡很管用。\u003C\u002Fp>\u003Cul>\u003Cli>\u003Cstrong>Context window\u003C\u002Fstrong>：適合即時推理，但受 Token 上限約束\u003C\u002Fli>\u003Cli>\u003Cstrong>Summary store\u003C\u002Fstrong>：跨 session 省空間，但會壓縮細節\u003C\u002Fli>\u003Cli>\u003Cstrong>Vector database\u003C\u002Fstrong>：適合模糊回憶，依賴 embedding 品質\u003C\u002Fli>\u003Cli>\u003Cstrong>SQL 或文件庫\u003C\u002Fstrong>：適合精準狀態與稽核\u003C\u002Fli>\u003C\u002Ful>\u003Cp>如果你做客服 agent，這個差異更明顯。最近幾輪對話放 prompt。帳號資訊放資料庫。相似案件放向量庫。這樣做不華麗，但很好 debug。工程團隊最愛這種東西，因為出事時知道去哪裡查。\u003C\u002Fp>\u003Cp>我也會直接講結論。記憶設計不是看誰最會塞資料。是看誰能把資料分層，還能證明自己記對了。這才是可上線的系統，不是只會 demo 的玩具。\u003C\u002Fp>\u003Ch2>產業脈絡與實作現實\u003C\u002Fh2>\u003Cp>agent memory 之所以最近很熱，是因為大家都卡到同一個瓶頸。模型會說話，但流程不會自己延續。你要它做訂票、查資料、寫報告、跑工作流，它就得記住前一步做了什麼。\u003C\u002Fp>\u003Cp>這也解釋了為什麼很多團隊開始重視 state machine、資料表、事件 log。說穿了，很多 agent 問題根本不是 NLP 問題，而是軟體工程問題。你要的是可靠性，不是漂亮句子。\u003C\u002Fp>\u003Cp>台灣開發者如果要做這類系統，我會建議先從最簡單的做法開始。先把工作狀態寫進明確的欄位。再決定哪些欄位需要檢索。最後才考慮摘要或語意記憶。順序反過來，很容易把系統做得很玄，卻不好維護。\u003C\u002Fp>\u003Ch2>接下來該怎麼做\u003C\u002Fh2>\u003Cp>如果你現在在做 agent，我的建議很直接。先定義三件事：哪些資料要短期保存，哪些要長期保存，哪些根本不該記。這比一開始就追求更大的 context window 實際多了。\u003C\u002Fp>\u003Cp>下一步，再決定每一層記憶要放哪裡。prompt、資料庫、向量庫、log，各有用途。不要把所有東西都交給 LLM。那樣成本高，還很難查錯。講白了，記憶越清楚，agent 越像產品。\u003C\u002Fp>\u003Cp>我自己的判斷是，接下來 12 個月，做得好的 agent 框架會更像資料系統，而不是純聊天框架。你如果現在就把記憶層拆好，之後換模型、換供應商、換工具，會輕鬆很多。你可能會想問：那第一步是什麼？答案很簡單，先把 state 寫清楚。\u003C\u002Fp>","AI agent 要能跨任務保持狀態，記憶設計就很重要。本文拆解短期、長期與外部記憶，並比較框架、資料庫與向量檢索的取捨。","zhuanlan.zhihu.com","https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F2004958359774839763",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1775058021870-r6l5.png",[13,14,15,16,17,18,19,20,21,22],"AI agent","agent memory","LLM","context window","vector database","LangChain","AutoGen","LlamaIndex","資料庫","向量庫","zh",1,false,"2026-04-01T10:21:33.242276+00:00","2026-04-01T10:21:33.164+00:00","done","c323257c-2c2c-46ea-94f5-79c3388d6775","agent-memory-framework-analysis-zh","ai-agent","01299403-0ffd-4a04-abbb-5b4d792fd01c","published","2026-04-09T09:00:53.837+00:00",[36,38,39,41,43,45,47,48],{"name":14,"slug":37},"agent-memory",{"name":22,"slug":22},{"name":18,"slug":40},"langchain",{"name":19,"slug":42},"autogen",{"name":15,"slug":44},"llm",{"name":20,"slug":46},"llamaindex",{"name":13,"slug":31},{"name":21,"slug":21},{"id":32,"slug":50,"title":51,"language":52},"agent-memory-framework-analysis-en","Agent Memory: How AI Agents Keep State","en",[54,60,66,72,78,84],{"id":55,"slug":56,"title":57,"cover_image":58,"image_url":58,"created_at":59,"category":31},"38406a12-f833-4c69-ae22-99c31f03dd52","switch-ai-outputs-markdown-to-html-zh","怎麼把 AI 輸出改成 HTML","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778743243861-8901.png","2026-05-14T07:20:21.545364+00:00",{"id":61,"slug":62,"title":63,"cover_image":64,"image_url":64,"created_at":65,"category":31},"c7c69fe4-97e3-4edf-a9d6-a79d0c4495b4","anthropic-cat-wu-proactive-ai-assistants-zh","Cat Wu 談 Claude 的主動式 AI","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778735455993-gnw7.png","2026-05-14T05:10:30.453046+00:00",{"id":67,"slug":68,"title":69,"cover_image":70,"image_url":70,"created_at":71,"category":31},"e1d6acda-fa49-4514-aa75-709504be9f93","how-to-run-hermes-agent-on-discord-zh","如何在 Discord 執行 Hermes Agent","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778724655796-cjul.png","2026-05-14T02:10:34.362605+00:00",{"id":73,"slug":74,"title":75,"cover_image":76,"image_url":76,"created_at":77,"category":31},"4104fa5f-d95f-45c5-9032-99416cf0365c","why-ragflow-is-the-right-open-source-rag-engine-to-self-host-zh","為什麼 RAGFlow 是最適合自架的開源 RAG 引擎","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778674262278-1630.png","2026-05-13T12:10:23.762632+00:00",{"id":79,"slug":80,"title":81,"cover_image":82,"image_url":82,"created_at":83,"category":31},"7095f05c-34f5-469f-a044-2525d2010ce9","how-to-add-temporal-rag-in-production-zh","如何在正式環境加入 Temporal RAG","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778667053844-osvs.png","2026-05-13T10:10:30.930982+00:00",{"id":85,"slug":86,"title":87,"cover_image":88,"image_url":88,"created_at":89,"category":31},"10479c95-53c6-4723-9aaa-2fde5fb19ee7","github-agentic-workflows-ai-github-actions-zh","GitHub 把 AI 代理放進 Actions","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1778551884342-8io7.png","2026-05-12T02:11:02.069769+00:00",[91,96,101,106,111,116,121,126,131,136],{"id":92,"slug":93,"title":94,"created_at":95},"4ae1e197-1d3d-4233-8733-eafe9cb6438b","claude-now-uses-your-pc-to-finish-tasks-zh","Claude 開始幫你操作電腦","2026-03-26T07:20:48.457387+00:00",{"id":97,"slug":98,"title":99,"created_at":100},"5bede67f-e21c-413d-9ab8-54a3c3d26227","googles-2026-ai-agent-report-decoded-zh","Google 2026 AI Agent 報告解讀","2026-03-26T11:15:22.651956+00:00",{"id":102,"slug":103,"title":104,"created_at":105},"2987d097-563f-46c7-b76f-b558d8ef7c2b","kimi-k25-review-stronger-still-not-legend-zh","Kimi K2.5 評測：更強，但還不是神作","2026-03-27T07:15:55.277513+00:00",{"id":107,"slug":108,"title":109,"created_at":110},"95c9053b-e3f4-4cb5-aace-5c54f4c9e044","claude-code-controls-mac-desktop-zh","Claude Code 也能操控 Mac 了","2026-03-28T03:01:58.58121+00:00",{"id":112,"slug":113,"title":114,"created_at":115},"dc58e153-e3a8-4c06-9b96-1aa64eabbf5f","cloudflare-100x-faster-ai-agent-sandbox-zh","Cloudflare 的 AI 沙箱跑超快","2026-03-28T03:09:44.142236+00:00",{"id":117,"slug":118,"title":119,"created_at":120},"1c8afc56-253f-47a2-979f-1065ff072f2a","openai-backs-isara-agent-swarm-bet-zh","OpenAI 挺 Isara 的 agent swarm …","2026-03-28T03:15:27.513155+00:00",{"id":122,"slug":123,"title":124,"created_at":125},"7379b422-576e-45df-ad5a-d57a0d9dd467","openai-plan-automated-ai-researcher-zh","OpenAI 想做自動化 AI 研究員","2026-03-28T03:17:42.090548+00:00",{"id":127,"slug":128,"title":129,"created_at":130},"48c9889e-86df-450b-a356-e4a4b7c83c5b","harness-engineering-ai-agent-reliability-2026-zh","駕馭工程：從「馬具」到「作業系統」，AI Agent 可靠性的終極密碼","2026-03-31T06:42:53.556721+00:00",{"id":132,"slug":133,"title":134,"created_at":135},"e41546b8-ba9e-455f-9159-88d4614ad711","openai-codex-plugin-claude-code-zh","OpenAI 把 Codex 放進 Claude Code","2026-04-01T09:21:54.687617+00:00",{"id":137,"slug":138,"title":139,"created_at":140},"96d8e8c8-1edd-475d-9145-b1e7a1b02b65","mcp-explained-from-prompts-to-production-zh","MCP 怎麼把提示詞變工作流","2026-04-01T09:24:39.321274+00:00"]