
你是不是也有這種感覺跟AI助手聊了幾個月它卻連你的名字都記不住。每次新開一個會話它都像第一天上班那樣客客氣氣你被迫把項目背景、代碼規(guī)范、個人偏好從頭到尾再講一遍。我這次做的這個小項目claude-mem就是想解決這個真正的痛點——給Claude裝上一層可持續(xù)累積的長期記憶讓它不再是每次對話都失憶的打工人。claude-mem名字已經(jīng)說明了一切它就是Claude的memory。它不是去改動Claude模型本身而是作為一層外部記憶系統(tǒng)在Claude和你的真實會話之間搭一座橋。它只做三件核心的事把對話里值得長期保存的信息自動抽出來、存好下次你提問時把相關(guān)的歷史記憶打撈回來塞進上下文然后持續(xù)更新和整理自己的記憶庫讓它越用越順手、越用越懂你。這個項目最適合三類人一是重度使用Claude做編碼和架構(gòu)設(shè)計的開發(fā)者告別每次都要重新介紹項目結(jié)構(gòu)的尷尬二是長期跟蹤同一課題的研究型用戶需要讓AI記住閱讀進度和關(guān)鍵結(jié)論三是所有被AI需要重復(fù)交代背景折磨過的普通使用者。這篇博客我會從設(shè)計思路、技術(shù)選型、核心實現(xiàn)到踩坑實錄把整個項目從頭到尾拆開講清楚。1. 項目起源與核心設(shè)計思路1.1 AI對話的失憶癥到底有多痛先說痛點。Claude這類大模型本質(zhì)上是無狀態(tài)的——每次調(diào)用都是獨立的模型只看到你這次提交的上下文除此之外它對你是誰、你做過什么、你上次討論到哪一概不知。這不怪模型而是它的工作方式?jīng)Q定的注意力機制的窗口就那么大不可能把人類幾個月的歷史對話都裝進去。但工作場景下的真實需求恰恰相反。我維護一個中大型開源項目時每天要問Claude的問題至少有幾十個涉及模塊設(shè)計、接口規(guī)范、歷史決策理由。如果每次對話前都要先把之前兩三個小時的討論結(jié)論復(fù)述一遍這個時間成本幾乎等于沒用AI。更崩潰的是有時候你講完背景它給出的答案和你上次已經(jīng)確認過的結(jié)論剛好沖突——因為它根本不知道你已經(jīng)排除了那個方案。我嘗試過一些替代方案比如開一個超長會話不關(guān)閉把歷史全堆在上下文里。但很快發(fā)現(xiàn)token開銷大得離譜回答變慢費用也直線上升。會話一旦達到長度上限前面早討論出的結(jié)論照樣被截斷和失憶沒區(qū)別。后來又試過手工維護一個背景文檔每次提問前人工復(fù)制粘貼——效果還行但太累而且文檔經(jīng)常忘記更新過幾天就過期了。claude-mem的靈感正是來自這種反復(fù)碰壁。與其靠人的自律去維護記憶不如讓系統(tǒng)在對話過程中自動沉淀記憶再在合適的時機自動召回。這個方向做下來效果比我預(yù)想的好得多。1.2 設(shè)計目標像一個貼身助理而不是一個數(shù)據(jù)庫這個項目立項時我給自己定了三條原則后來每一步?jīng)Q策都在向這三條靠攏。第一條記憶必須自動沉淀。用戶不應(yīng)該有保存記憶這個額外動作。只要對話在正常進行系統(tǒng)就應(yīng)當悄無聲息地把值得記錄的信息抽出來。我后來實現(xiàn)時采用了對話輪次觸發(fā) 會話結(jié)束掃描雙保險機制確保不遺漏關(guān)鍵信息。第二條記憶必須精準召回。塞進上下文的東西不是越多越好而是越準越好。每條多余的記憶都是對模型注意力的浪費甚至?xí)斐苫煜?。所以召回質(zhì)量是整個系統(tǒng)的生命線我在相似度閾值、排序策略、數(shù)量上限上花了大量功夫。第三條記憶必須可管理。用戶要能查看系統(tǒng)記住了什么、隨時刪掉不該記的東西。記憶是隱私的延伸不能變成一個黑盒。我提供了CLI查詢和可視化面板兩個入口后面會詳細講。這三條原則其實對應(yīng)了記憶系統(tǒng)的三個核心環(huán)節(jié)寫入Memory Write、存儲Memory Store、召回Memory Recall。我在設(shè)計架構(gòu)的時候也堅持把這三個環(huán)節(jié)徹底解耦每一層都可以單獨替換。這樣做的好處是如果以后有更好的向量模型我只需要換掉召回模塊完全不影響其他部分。2. 整體架構(gòu)與技術(shù)選型解析2.1 記憶分層的思路一開始我曾想做一個通用的全局記憶庫所有信息都堆在一起需要時統(tǒng)一檢索。但這個方向很快就翻車了——不同類型的記憶生命周期和重要性差異極大混在一起既污染檢索結(jié)果也不便于管理。舉個例子用戶叫張偉、偏好TypeScript、討厭代碼里出現(xiàn)any這類信息是長期穩(wěn)定的屬于用戶畫像層幾乎每次對話都該被考慮。某某模塊尚未完成、上輪討論決定采用事件驅(qū)動架構(gòu)這類是項目狀態(tài)層會隨項目推進而變化。昨天你讓我先跑一遍測試再提PR這類是臨時任務(wù)層可能一天后就失效了。我把記憶分成四層用戶畫像層Profile、項目語義層Semantic、任務(wù)狀態(tài)層Task和對話摘要層Episode。每層有不同的保留策略——用戶畫像永久保留項目語義按有效性衰減任務(wù)狀態(tài)完成后標記歸檔對話摘要則定期壓縮合并成更上層的長期記憶。這個設(shè)計類似人的記憶機制短期記憶經(jīng)過睡眠鞏固變成長期記憶而不是把所有雞毛蒜皮都原樣保存。這個分層后來被證明是項目成功的關(guān)鍵之一。沒有分層時檢索路由是個大難題——你問上次那個bug后來怎么修的結(jié)果系統(tǒng)把用戶喜歡喝美式咖啡也當相似內(nèi)容返回了因為它們的向量空間可能恰好接近。分層之后每一層單獨建索引、單獨召回語義干擾小了非常多。2.2 存儲選型為什么是SQLite加向量索引存儲層的選型我在三個方案之間權(quán)衡了很久純JSON文件、SQLite、專門的向量數(shù)據(jù)庫如Chroma、Qdrant。純JSON文件最輕量但檢索完全靠暴力遍歷記憶一多就扛不住。向量數(shù)據(jù)庫檢索很強但對本地單機場景來說太重了還得單獨跑一個服務(wù)進程依賴太多。最后我選了SQLite作為主存儲配合一個可選的外部向量索引。SQLite是單文件數(shù)據(jù)庫不需要額外服務(wù)進程部署成本幾乎為零事務(wù)能力強悍還支持全文搜索擴展FTS5。我的記憶條目由結(jié)構(gòu)化字段和長文內(nèi)容組成用SQLite管理再合適不過。向量索引這部分我默認使用本地運行的sentence-transformers/all-MiniLM-L6-v2模型把記憶內(nèi)容轉(zhuǎn)成384維向量直接序列化存在同一張表的embedding字段里。檢索時用余弦相似度在內(nèi)存里做粗排再用關(guān)鍵詞匹配做精排。這個組合方案既保證了一定的語義召回能力又沒有任何外部服務(wù)依賴單機跑起來非常順。如果你有更大的語料規(guī)模或更高的精度要求我也預(yù)留了適配層可以對接Chroma或pgvector。接口我已經(jīng)定義好了切換只是改配置的事。2.3 上下文注入1%的上下文80%的體驗提升Claude的上下文窗口不管多大本質(zhì)上是稀缺資源。把記憶無腦全塞進去不但浪費token還會稀釋模型對當前問題的注意力。我在設(shè)計上下文注入策略時給自己定的紀律是注入的記憶總量控制在當前上下文token上限的1%到2%以內(nèi)。具體策略分三步第一步根據(jù)當前用戶問題做向量召回拿到Top-30候選記憶第二步用規(guī)則和輕量模型做重排剔除與當前問題無關(guān)的、過期的、互相矛盾的記憶第三步按類型配額選擇最終注入條目——通常用戶畫像層最多2條項目語義層最多2條任務(wù)狀態(tài)層最多1條對話摘要層最多1條??倵l數(shù)上限默認5條超出就壓縮合并。這個少量精準的策略在實際體驗中效果遠好過大量覆蓋。你給模型灌一百條背景它反而不知道重點在哪。但只給五條最相關(guān)的記憶它會非常明確地圍繞你當前的問題行動。這也是整個項目里投入產(chǎn)出比最高的一項優(yōu)化。3. 核心功能拆解與實現(xiàn)細節(jié)3.1 記憶寫入什么時候提取、怎么提取記憶的寫入是整個系統(tǒng)最容易出問題的環(huán)節(jié)。寫得太勤會存一堆噪聲寫得太懶又漏掉關(guān)鍵信息。我最后采用的是雙觸發(fā)策略每滿6輪對話自動做一次增量提取會話結(jié)束時再補一次全面掃描。提取過程分兩段。第一段是規(guī)則篩選——先從句式特征上判斷哪些對話值得進入記憶。比如出現(xiàn)我喜歡我習(xí)慣我們決定注意千萬別以后不要這類帶長期語義的信號詞就直接標記為高優(yōu)先級候選。第二段是LLM抽取——把候選對話和已有記憶庫一起交給模型讓它輸出結(jié)構(gòu)化記憶條目每條包含內(nèi)容、類型、重要性和有效性四個字段并和已有記憶做去重。提取提示詞的模板大致長這樣 從下面的對話中提取值得長期記憶的信息。 只提取對將來對話有實際幫助的內(nèi)容忽略寒暄和臨時情緒。 輸出JSON數(shù)組每個元素包含 - content: 記憶內(nèi)容保留具體細節(jié) - memory_type: user_profile / project_semantic / task_state / episode_summary - importance: 0-10的整數(shù)10為極重要 - valid_until: 過期時間永久留空 對話內(nèi)容 ... 已有記憶供去重參考 ...這里有一個我踩過的坑如果讓模型自由提取它傾向于把用戶今天心情不好也寫成長期記憶因為情感信息在LLM看來很有記下來的價值。但實際上這類情緒碎片對長期工作毫無幫助反而會干擾判斷。我的對策是在提示詞里加了反向說明明確忽略情緒性、臨時性、閑聊性內(nèi)容。做了這個調(diào)整之后記憶庫的噪聲水平直線下降。3.2 記憶存儲表結(jié)構(gòu)設(shè)計與降噪機制存儲層的表結(jié)構(gòu)并不復(fù)雜但也遠比一張表存所有要精細。核心表memory_items包含幾個關(guān)鍵字段字段類型說明idTEXT主鍵UUIDuser_idTEXT用戶標識支持多用戶隔離session_idTEXT來源會話memory_typeTEXT記憶分層類型contentTEXT記憶正文metadataTEXTJSON存標簽、實體名等輔助信息embeddingBLOB384維向量序列化importanceINTEGER0-10created_atINTEGER創(chuàng)建時間戳last_hit_atINTEGER最近一次被召回的時間hit_countINTEGER累計召回次數(shù)is_activeINTEGER0/1軟刪除標記last_hit_at和hit_count這兩個字段一開始我并沒打算加后來發(fā)現(xiàn)它們是記憶健康度的晴雨表。我寫了一個定期清理任務(wù)超過90天沒有被召回過的低重要度記憶自動標記為不活躍超過180天沒有被召回過的直接軟刪除。這保證了記憶庫長期保持精煉不會越積越滿、檢索越來越慢。去重方面除了寫入時做語義相似度判斷合并新內(nèi)容外我還會對同類型記憶做版本化處理。比如用戶的偏好從喜歡JavaScript變成優(yōu)先TypeScript舊條目不會直接刪掉而是標記deprecated并引用新條目查詢時只返回最新版本。這樣即使記憶更新了歷史的變更有跡可循不會因為錯誤合并而丟失信息。3.3 記憶召回從相關(guān)到有用的最后一公里召回環(huán)節(jié)最微妙的一點是模型判斷相關(guān)和我們判斷有用往往是兩碼事。向量相似度高不一定真的有用尤其是當問題里帶了很多通用詞匯時容易召回到一堆泛泛而談的記憶。我的召回鏈路是四段式召回→重排→配額→格式化。召回階段用當前用戶消息的向量和記憶庫里所有活躍條目做余弦相似度計算取出Top-30。這里的相似度閾值默認0.35低于這個的干脆不取。閾值太高容易漏太低容易噪這個0.35是我在本地測試集上調(diào)出來的你的場景可能不一樣后面會講怎么調(diào)。重排階段按三要素打分向量相似度占50%、記憶新鮮度last_hit_at距離現(xiàn)在越近分越高占30%、記憶重要性占20%。這樣即使一條記憶向量得分稍低但如果它昨天剛被用過且很重要也會排在前面。格式化階段把選中的記憶拼裝成語義自然的前綴追加到用戶消息之前。這步很關(guān)鍵——直接用JSON格式灌給模型它也能理解但理解效率差不少。我用模板塊拼裝出下面這種形式[長期記憶參考] 以下是從歷史對話中提取的與本問題相關(guān)的信息 - 用戶偏好后端使用Python/FastAPI數(shù)據(jù)庫使用PostgreSQL不接受在核心鏈路引入Redis。 - 項目狀態(tài)訂單服務(wù)模塊尚未完成已確定事件驅(qū)動方案消息隊列選用RabbitMQ。 - 近期任務(wù)用戶今天要求先完善接口文檔再開始寫單元測試。用自然語言而不是原始JSON模型可以更快把記憶內(nèi)容融入到回答邏輯中。這個小改動讓回答的貼切感提升了一個檔次。4. 實操過程從零接入claude-mem4.1 安裝與初始化配置claude-mem的安裝很簡單。如果你只想快速體驗直接通過包管理器裝pip install claude-mem如果你打算改代碼、用自己的記憶模型就Clone源碼git clone https://github.com/yourname/claude-mem.git cd claude-mem pip install -e .安裝完后第一次啟動要跑初始化命令它會自動創(chuàng)建數(shù)據(jù)目錄和配置文件claude-mem init默認數(shù)據(jù)目錄在~/.claude-mem/下包含config.yaml和memory.db。第一次運行建議打開config.yaml確認幾個關(guān)鍵參數(shù)因為它們決定了系統(tǒng)的記憶行為memory: max_inject_count: 5 # 單次最大注入條數(shù) similarity_threshold: 0.35 # 召回相似度閾值 extract_interval_rounds: 6 # 對話輪次觸發(fā)間隔 importance_min: 4 # 寫入最低重要度 enable_auto_extract: true # 是否開啟自動提取 vector: model_name: sentence-transformers/all-MiniLM-L6-v2 dimension: 384 storage: db_path: ~/.claude-mem/memory.db enable_fts: true # 啟用全文搜索 retention_days: 180 # 未命中保留天數(shù)importance_min這個參數(shù)很容易被忽略但特別重要。它設(shè)定了記憶寫入的重要度門檻只有模型評估為4分以上的信息才允許入庫。調(diào)高它可以讓記憶庫更精煉調(diào)低則更完整、但噪聲更多。我自己的配置是4你可以根據(jù)自己的容忍度調(diào)整。4.2 接入對話流程的兩種方式claude-mem接入實際對話流程我支持兩種方式。第一種作為MCP工具接入。如果你用的是Claude桌面端可以在配置文件里添加MCP Server注冊{ mcpServers: { claude-mem: { command: claude-mem, args: [mcp-server], env: { CLAUDE_MEM_CONFIG: ~/.claude-mem/config.yaml } } } }這樣Claude在每次對話中會自動調(diào)用claude-mem提供的工具——search_memory、save_memory、update_memory、delete_memory。模型會在它認為合適的時候調(diào)用這些工具來查詢或?qū)懭胗洃?。這是最省心的方式用戶完全無感知。第二種代理模式接入。如果你沒有桌面端或者想在命令行或者自己的腳本中接入可以用代理模式claude-mem proxy --api-key $ANTHROPIC_API_KEY --port 8080啟動后你的API請求發(fā)給本地8080端口代理會自動做記憶注入和提取再轉(zhuǎn)發(fā)給Claude。這個模式更靈活適合放在自己的自動化流程里。我平時寫代碼用的就是這種模式因為可以精確控制哪些消息流經(jīng)記憶層。4.3 驗證記憶效果一次真實的測試接入完成后我建議照著下面這個流程測試你的記憶層是否正常工作。第一步在第一個會話里說幾條明顯的偏好性信息我以后寫Python函數(shù)都要加類型注解。本項目數(shù)據(jù)庫統(tǒng)一用PostgreSQL。這個模塊的接口變更必須要更新OpenAPI文檔。第二步等對話超過6輪或者直接說請記住這些確保記憶被提取。然后查看記憶庫claude-mem list --type user_profile此時應(yīng)該能看到三條獨立的記憶條目并且內(nèi)容基本準確。第三步新開一個會話問一句和第一條偏好相關(guān)的問題給我一個用戶登錄的函數(shù)注意結(jié)合我的編碼習(xí)慣。如果沒有記憶層Claude會給出一個普普通通的函數(shù)。有了記憶層它應(yīng)當主動生成帶完整類型注解、用PostgreSQL風(fēng)格SQL的示例。如果它做到了說明記憶注入這條鏈路是通的。第四步檢查召回日志claude-mem stats這個命令會顯示每次召回命中了哪幾條記憶、相似度得分多少、注入消耗了多少token。實測下來我自己的項目注入成本大約占單次對話token總量的1.2%左右完全可接受。5. 常見問題與排查技巧實錄5.1 記憶完全不生效排查鏈路長什么樣最常遇到的問題就是我設(shè)置了記憶但新會話里Claude完全沒反應(yīng)。遇到這種情況別慌按照下面這條鏈路逐層排查。第一層確認記憶真的寫入了。運行claude-mem list --all看有沒有條目。如果沒有問題在前面檢查提取觸發(fā)條件——是不是對話輪次不夠6輪重要度是否低于4被過濾了信號詞規(guī)則是不是沒觸發(fā)第二層確認召回真的執(zhí)行了。開啟調(diào)試日志claude-mem proxy --debug然后重新提問??慈罩纠镉袥]有recall操作、命中了幾條記憶、相似度得分是多少。如果相似度全部低于0.35閾值說明你的提問方式和記憶內(nèi)容差異太大需要適當降低閾值。第三層確認記憶真的注入進了上下文。在調(diào)試日志里查看最終的請求體看系統(tǒng)消息或者用戶消息前面有沒有長期記憶參考段落。如果沒有可能是注入模塊被enable_inject: false關(guān)掉了或者上下文配額已經(jīng)滿了。這一套排查下來90%的問題都能定位到。核心思路是記憶寫入、召回、注入是三個獨立環(huán)節(jié)哪個環(huán)節(jié)斷了就在哪個環(huán)節(jié)查日志。別一上來就改模型、換數(shù)據(jù)庫。5.2 上下文超限和token成本失控有段時間我貪心把max_inject_count調(diào)到了15結(jié)果對話質(zhì)量反而下降token成本翻倍甚至偶爾觸發(fā)上下文超限。后來我意識到記憶注入和對話本身是在搶占同一份上下文預(yù)算必須給記憶設(shè)一個顯式的預(yù)算上限。我最終的策略是固定配額 動態(tài)壓縮單個記憶條目內(nèi)容超過200字符的自動用LLM壓縮成不超過80字符的關(guān)鍵信息摘要再注入所有注入記憶的總字符數(shù)不超過800字符。這樣既控制了token又保證了信息的廣度。實測中800字符的記憶注入對對話質(zhì)量提升最明顯再往上就是邊際遞減了。如果確實有大量歷史知識需要模型參考別走記憶注入這條路而是把詳細內(nèi)容寫入一個單獨的知識庫文件在需要時讓模型用工具讀取。這是記憶層和知識庫的分工記憶層管高頻、輕量、跨會話的上下文知識庫管低頻、重量、文檔化的信息。5.3 記憶串臺和過時信息干擾記憶系統(tǒng)用久了一定會遇到記憶串臺——幾個項目的信息混在一起或者舊決策和新決策打架。比如用戶在不同項目里用過不同的技術(shù)棧模型可能把A項目的經(jīng)驗搬到B項目上。串臺問題的根源是記憶庫里不同實體的區(qū)分度不夠。我的解決方案是引入項目命名空間Project Namespace。給每條記憶打上project標簽召回時優(yōu)先檢索當前激活項目的記憶只有當前項目為空時才回退到全局記憶。這個改動極大降低了串臺概率。過時信息干擾則是另一個問題。項目狀態(tài)變了舊記憶還在庫里模型參考到舊信息就可能給出錯誤建議。我的對策是主動失效機制如果新記憶和舊記憶在同一類型下沖突寫入新記憶時自動將舊記憶標記為conflicted并設(shè)置deprecated_at。同時定期運行claude-mem prune把已棄用的記憶歸檔到歷史表不再參與召回。5.4 隱私與數(shù)據(jù)隔離隱私問題我放在最后說因為它最容易被忽略、但真的出事最麻煩。claude-mem默認把數(shù)據(jù)庫文件放在用戶目錄下權(quán)限設(shè)置為僅當前用戶可讀寫。如果你處理的是敏感數(shù)據(jù)建議開啟SQLite加密擴展或者直接把數(shù)據(jù)庫放到加密卷里。多用戶共用一臺機器時務(wù)必給每個用戶單獨的數(shù)據(jù)庫文件并通過user_id字段隔離數(shù)據(jù)。我見過有人直接把全公司的記憶庫混在一個庫文件里結(jié)果A同事問技術(shù)問題被注入了一條屬于B同事的項目決策記憶場面相當尷尬。另外claude-mem的記憶寫入和召回都是本地完成的不會把記憶內(nèi)容發(fā)給第三方。但如果你的Claude API請求本身要發(fā)到遠端執(zhí)行那么注入進上下文的記憶會隨請求一起發(fā)送——這個要在隱私要求極高的場景下特別注意。我給系統(tǒng)的設(shè)計里保留了--no-inject-sensitive開關(guān)開啟后涉及敏感標簽的記憶條目會被攔截不參與任何注入。6. 進階玩法與后續(xù)規(guī)劃6.1 多代理共享記憶和長期Agentclaude-mem目前的定位是單用戶、跨會話的記憶層。但我在接口設(shè)計時預(yù)留了user_id維度這為多代理共享記憶鋪了路。想象這樣一個場景你有三個Agent一個負責(zé)代碼審查一個負責(zé)文檔維護一個負責(zé)CI/CD配置。它們各自和Claude交互但共享同一個項目記憶庫。這樣代碼審查Agent作出的技術(shù)決策文檔Agent在下一次更新文檔時能自然參考到。實現(xiàn)上只需要給每個Agent分配不同的session_id和agent_id記憶召回時按項目命名空間過濾即可。目前agent_id字段已經(jīng)在表結(jié)構(gòu)中預(yù)留下一步我會把它做成正式的一等公民。6.2 記憶可視化與管理面板記憶系統(tǒng)跑久了用戶一定需要定期審視AI到底記住了我什么。命令行工具雖然強大但對非技術(shù)用戶不夠友好。我目前正在開發(fā)一個本地Web面板用gradio或streamlit實現(xiàn)展示所有記憶條目、召回?zé)岫葻崃D、沖突記憶提示并提供一鍵刪除和導(dǎo)出功能。這個面板加上后臺自動清理任務(wù)就能形成一個完整的記憶生命周期管理閉環(huán)自動寫入、精準召回、定期清理、用戶可查。我的目標是可以完全做到讓用戶忘了記憶層的存在但它一直在正確工作。6.3 關(guān)于這個項目的一些真心話做完claude-mem之后我有個很明顯的感受給AI加記憶這件事技術(shù)挑戰(zhàn)其實不在模型而在工程——怎么判斷哪些信息值得記怎么平衡召回精度和成本怎么避免舊信息干擾新決策。這個過程里我試過把所有歷史暴力塞進上下文token爆炸、試過只依賴向量召回串臺嚴重、試過讓模型每次對話都提煉記憶噪聲爆棚最后才沉淀出現(xiàn)在這套分層、配額、雙觸發(fā)提取的方案。如果你也打算做一個類似的記憶層我想給你三個在我實際使用中被驗證過的建議第一記憶一定要分層沒有分層的記憶庫就是一鍋粥第二注入寧可少而精也不要多而雜給窗口留白第三盡早考慮記憶的清理和隱私問題這兩個問題越晚處理越被動。claude-mem目前已經(jīng)能穩(wěn)定支撐我的日常開發(fā)工作流最近一次連續(xù)使用已經(jīng)超過一個月記憶庫積累了兩千多條條目對話注入的token開銷穩(wěn)定控制在2%以內(nèi)。后面我會繼續(xù)完善多代理共享和可視化面板讓這個記憶層真正變成所有AI交互的基礎(chǔ)設(shè)施。你如果也在被AI失憶癥困擾不妨照著這篇文章的思路搭一套自己的記憶層用起來你就能體會到——一個真正記得住你的AI和普通的AI完全是兩個物種。