
說明本文討論的是 Agent 的記憶分層與層間流轉(zhuǎn)協(xié)議屬于大模型工程實(shí)踐話題不涉及具體模型版本與價(jià)格。AI 領(lǐng)域版本迭代極快凡涉及版本號、價(jià)格、可用性請以你閱讀時(shí)的官方頁面為準(zhǔn)。文中代碼為結(jié)構(gòu)示意請按自己的技術(shù)棧調(diào)整后再上生產(chǎn)。一、為什么記憶必須要分層把三者當(dāng)一個(gè)池子用遲早爆多數(shù) Agent 項(xiàng)目卡住的位置不在模型能力而在記憶的組織方式。跑 demo 時(shí)歷史短、任務(wù)單一一個(gè)列表就能轉(zhuǎn)上量之后同一條鏈路反復(fù)出現(xiàn)三個(gè)現(xiàn)象模型引用了一條不該出現(xiàn)在當(dāng)前任務(wù)里的結(jié)論上下文成本隨輪次上漲出了錯(cuò)找不到是哪一條記憶導(dǎo)致的。三個(gè)現(xiàn)象指向同一個(gè)根因——工作記憶、會(huì)話短期記憶、跨會(huì)話長期記憶被放進(jìn)了同一個(gè)池子。上下文窗口不等于記憶把兩者混為一談最典型的行為是把加大窗口當(dāng)作記憶問題的解藥。窗口是單次請求的帶寬記憶是跨請求的存儲(chǔ)不是同一維度的資源。窗口變大只解決一次能塞多少不解決該塞什么。一個(gè)可復(fù)現(xiàn)的對照實(shí)驗(yàn)同一段對話歷史一次放在 prompt 開頭一次夾在幾萬 token 的無關(guān)檢索結(jié)果之后問同一個(gè)事實(shí)問題后者的錯(cuò)誤率會(huì)明顯更高。結(jié)論不是窗口不夠而是內(nèi)容沒有優(yōu)先級——沒有分層就沒有東西告訴你哪些內(nèi)容必須留在高注意力位置。三類記憶各自解決什么問題記憶層存活范圍典型內(nèi)容誰負(fù)責(zé)寫入淘汰條件工作記憶單次任務(wù)目標(biāo)、已確認(rèn)事實(shí)、待辦、工具結(jié)果摘要任務(wù)執(zhí)行器任務(wù)結(jié)束即銷毀會(huì)話短期記憶單次會(huì)話逐輪對話、會(huì)話內(nèi)結(jié)論會(huì)話管理層滑出窗口或被摘要替代跨會(huì)話長期記憶跨會(huì)話持久穩(wěn)定事實(shí)、用戶偏好顯式確認(rèn)入口到期、失效或被用戶刪除三者的目標(biāo)函數(shù)不同工作記憶要的是這次任務(wù)別跑偏短期記憶要的是這輪對話別自相矛盾長期記憶要的是下次來別從零開始。目標(biāo)不同寫入權(quán)、生命周期、淘汰條件就必然不同。不分層的三種典型癥狀串味。用戶在一次調(diào)試會(huì)話里說超時(shí)先調(diào)到 5 秒試試這句帶明顯臨時(shí)性的話如果寫進(jìn)長期記憶三天后另一個(gè)任務(wù)里模型會(huì)把它當(dāng)成用戶偏好主動(dòng)改掉默認(rèn)超時(shí)值。串味的來源是把會(huì)話內(nèi)的一次表態(tài)和穩(wěn)定偏好當(dāng)成了同一類信號而這兩者的存活周期差了幾個(gè)數(shù)量級。幻覺引用。會(huì)話壓縮過程中“用戶提到過某接口容易被壓成用戶確認(rèn)使用某接口”。后續(xù)回答里就出現(xiàn)按您之前確認(rèn)的方案而那個(gè)確認(rèn)從未發(fā)生。壓縮措辭的強(qiáng)度漂移是幻覺引用最常見的入口。邊際成本遞增。所有歷史進(jìn)同一個(gè)池子token 消耗隨輪次單調(diào)上漲有效信息占比隨輪次單調(diào)下降。到第四十輪賬單按第四十輪算但里面能影響決策的內(nèi)容可能只剩幾條。二、工作記憶當(dāng)前任務(wù)的臨時(shí)黑板工作記憶回答的是這一步該干什么。它最容易做對也最容易被做壞——做壞的方式是把不該進(jìn)黑板的東西全貼上去。裝什么槽位而不是原文工作記憶應(yīng)該是一組結(jié)構(gòu)化槽位不是一段流水賬。最小集合是四類目標(biāo)當(dāng)前任務(wù)的一句話目標(biāo)以及判定完成的驗(yàn)收條件已確認(rèn)事實(shí)從工具結(jié)果或用戶輸入中提取、并且已經(jīng)核對過的字段待辦還沒完成的步驟帶狀態(tài)未開始 / 進(jìn)行中 / 阻塞工具結(jié)果摘要每次工具調(diào)用后留下的一句話結(jié)論而不是原始返回?? 代碼待驗(yàn)證# 工作記憶結(jié)構(gòu)示意任務(wù)結(jié)束即丟棄WORKING_MEMORY{task_id:任務(wù)標(biāo)識(shí),goal:為用戶查詢訂單并確認(rèn)是否可退款,facts:{order_id:已核對,paid_amount:已核對,refund_window_days:已核對,},todos:[{step:校驗(yàn)訂單狀態(tài),state:done},{step:核對退款窗口,state:in_progress},{step:生成結(jié)論,state:pending},],tool_digest:[訂單查詢返回狀態(tài)為已完成未發(fā)貨,退款規(guī)則返回窗口為簽收后若干天,],}關(guān)鍵在于facts里存的是這個(gè)字段已核對而不是工具返回的原始 JSON。原始返回留在任務(wù)日志里供排障不進(jìn)黑板。這樣做的代價(jià)是黑板自身不攜帶原文一旦需要復(fù)核細(xì)節(jié)就得回查日志所以task_id必須寫進(jìn)每一條日志否則回查無從下手。生命周期任務(wù)邊界即銷毀工作記憶的生命周期應(yīng)當(dāng)和任務(wù)邊界對齊任務(wù)開始創(chuàng)建任務(wù)結(jié)束銷毀不跨任務(wù)復(fù)用。這條規(guī)則常被違反的方式是順手復(fù)用——把上一次任務(wù)的工作記憶緩存下來下一次任務(wù)讀一讀省一次工具調(diào)用。省下的這一次調(diào)用換來的是串味上一任務(wù)的目標(biāo)和事實(shí)混進(jìn)當(dāng)前任務(wù)模型分不清哪條屬于現(xiàn)在。判斷邊界是否清晰有個(gè)簡單辦法給工作記憶一個(gè)task_id任何寫入都必須帶task_id讀取時(shí)校驗(yàn)一致不一致就拒絕。這條校驗(yàn)不依賴任何模型判斷。常見錯(cuò)把工具原始返回全量貼上黑板最普遍的錯(cuò)誤是把工具返回原樣寫進(jìn)上下文。一次檢索返回十來個(gè)文檔片段一次接口返回幾百行 JSON全貼上去工作記憶立刻從幾十 token 漲到幾萬。正確做法是在工具調(diào)用和黑板之間加一層結(jié)果處理只做兩件事抽取當(dāng)前任務(wù)需要的字段寫進(jìn)facts生成一句話結(jié)論寫進(jìn)tool_digest原始返回存到可檢索的存儲(chǔ)里黑板只留指針比如一條trace_id。需要復(fù)核時(shí)按指針回查不需要復(fù)核時(shí)不占上下文。代價(jià)也要說清多一層抽取就有信息損失抽取規(guī)則寫窄了會(huì)漏字段。補(bǔ)救辦法仍然是留指針——上下文里丟的是原文不是數(shù)據(jù)的可達(dá)性。三、會(huì)話短期記憶多輪對話歷史怎么裁短期記憶面對的是歷史越來越長這個(gè)確定會(huì)發(fā)生的問題。策略只有三類區(qū)別在于丟掉什么。三種壓縮策略對比策略做法保留能力主要風(fēng)險(xiǎn)滑動(dòng)窗口只保留最近若干輪近期上下文完整早期約定被丟跨輪指代斷裂滾動(dòng)摘要舊輪次壓成摘要新輪次保留原文長程信息不丟摘要漂移多輪壓縮后失真關(guān)鍵輪次錨定給關(guān)鍵輪次打標(biāo)始終保留原文關(guān)鍵信息不失真需判定關(guān)鍵判錯(cuò)就漏三者的選擇不看偏好看會(huì)話形態(tài)。任務(wù)型會(huì)話關(guān)鍵輪次少而明確錨定策略性價(jià)比最高探索型會(huì)話關(guān)鍵輪次事先無法判定滾動(dòng)摘要更合適寒暄與確認(rèn)占多數(shù)的會(huì)話用滑動(dòng)窗口就夠摘要反而引入失真。什么時(shí)候該摘要、什么時(shí)候該整段丟判定要落到可執(zhí)行的信號上不能憑感覺。下面這張判定表可以直接進(jìn)流程歷史片段特征處理方式理由含未完成的承諾或待辦摘要并提升為錨定丟了下游會(huì)重復(fù)追問含用戶明確給出的約束摘要并提升為錨定約束丟失會(huì)造成違規(guī)輸出只是一次成功的工具調(diào)用記錄壓成一句話摘要細(xì)節(jié)無復(fù)用價(jià)值重復(fù)確認(rèn)、寒暄、糾錯(cuò)后廢棄的表述整段丟棄不留信息增量已被后續(xù)推翻的中間結(jié)論整段丟棄留著會(huì)誘發(fā)引用錯(cuò)誤高風(fēng)險(xiǎn)操作刪除、付款、授權(quán)保留原文不壓縮需可審計(jì)、可回放這張表的判定依據(jù)是信息是否還有下游消費(fèi)者有消費(fèi)者的進(jìn)摘要或錨定沒有消費(fèi)者的直接丟。很多實(shí)現(xiàn)的問題在于一律摘要——所有輪次都壓一遍壓縮成本高被推翻的舊結(jié)論也留了下來。指代與一致性摘要后剛才那個(gè)還能不能對上摘要最容易破壞的是指代。用戶在第 3 輪說換成剛才那家店如果第 2 輪的店名在摘要里被壓成了用戶討論過一家門店第 3 輪就無法解析。保一致性的做法有兩條實(shí)體不壓縮。摘要時(shí)對實(shí)體名、編號、金額、時(shí)間這類值做保護(hù)原文照抄不做同義替換。摘要只壓縮敘述不壓縮標(biāo)識(shí)。摘要帶引用。每條摘要后面帶上它覆蓋的輪次范圍比如第 2 到第 5 輪。解析指代時(shí)先定位輪次范圍再回原文查具體值而不是從摘要文字里猜。?? 代碼待驗(yàn)證defcompress_turns(turns:list,protect_kinds(entity,amount,time))-dict:按保護(hù)規(guī)則壓縮歷史輪次實(shí)體、金額、時(shí)間原樣保留。keep,summarizable[],[]fortinturns:ift.get(kind)inprotect_kindsort.get(pinned):keep.append({span:t[span],text:t[text]})else:summarizable.append(t)ifnotsummarizable:return{anchors:keep,summary:,covered:[]}return{anchors:keep,# 指代解析時(shí)優(yōu)先查這里summary:f覆蓋第{summarizable[0][span]}至{summarizable[-1][span]}輪,covered:[t[span]fortinsummarizable],}四、跨會(huì)話長期記憶存什么、什么時(shí)候?qū)戦L期記憶是三層里唯一跨會(huì)話存在的因此也是最貴、最難糾正的一層寫錯(cuò)一條影響面是后續(xù)所有會(huì)話。只存穩(wěn)定事實(shí)與偏好判定標(biāo)準(zhǔn)可以寫得很具體一條信息能不能進(jìn)長期記憶看它在半年后是否仍然成立。信息類型是否入長期記憶原因用戶的固定稱呼與語言偏好是跨會(huì)話穩(wěn)定用戶所在行業(yè)與角色是短期不變用戶隨口說的當(dāng)前情緒否一次性狀態(tài)會(huì)話里臨時(shí)采用的參數(shù)取值否只對本次任務(wù)有效用戶明確表達(dá)的長期禁忌是需長期遵守模型自己推斷出的用戶意圖否除非確認(rèn)推斷錯(cuò)誤會(huì)持續(xù)污染最后一行是重點(diǎn)。推斷出來的偏好看著省事但它是一次未經(jīng)驗(yàn)證的假設(shè)而長期記憶的特性恰恰是活得久一個(gè)錯(cuò)誤假設(shè)會(huì)被反復(fù)調(diào)用。寫入時(shí)機(jī)顯式確認(rèn)與隱式推斷隱式推斷是污染的主要來源區(qū)別在于證據(jù)強(qiáng)度顯式確認(rèn)用戶說了以后都這樣“記住我的某偏好”或者對一條待確認(rèn)記憶點(diǎn)了確認(rèn)。證據(jù)強(qiáng)可直接寫。隱式推斷從行為里猜。用戶連續(xù)三次問同一類技術(shù)問題于是推斷用戶是這個(gè)方向的開發(fā)者——第四次就可能是錯(cuò)的他可能只是在幫同事查資料。可行的折中是延遲寫入加待確認(rèn)隊(duì)列隱式推斷不直接落庫先進(jìn)候選隊(duì)列累積到一定次數(shù)或在下一次會(huì)話中顯式問一句要不要記住確認(rèn)后再落。?? 代碼待驗(yàn)證{memory_id:記憶標(biāo)識(shí),scope:user,content:偏好用中文回復(fù)技術(shù)術(shù)語保留英文原文,source:explicit,confidence:0.95,created_at:2026-09-30,expires_at:null,last_used_at:2026-09-30,evidence:[用戶會(huì)話中的明確表述],status:active}source區(qū)分顯式與推斷是后續(xù)排查污染時(shí)的第一個(gè)溯源字段。expires_at為null表示不過期只用于穩(wěn)定偏好。檢索不能只靠向量結(jié)構(gòu)化過濾加語義召回只做向量召回會(huì)撞上一類錯(cuò)誤語義相似但作用域不同。兩個(gè)用戶的偏好語義可能高度相似直接召回就會(huì)串號。另一個(gè)常見錯(cuò)配是把臨時(shí)狀態(tài)召回進(jìn)穩(wěn)定偏好的位置。做法是兩段式先結(jié)構(gòu)化過濾再語義排序結(jié)構(gòu)化過濾按scope用戶 / 會(huì)話 / 任務(wù)、statusactive / superseded / deleted、時(shí)間窗口先切一遍把不滿足硬條件的剔除語義召回在剩下的候選里按向量相似度排序取前若干條置信度與新鮮度加權(quán)相似度接近時(shí)置信度高、最近被用過的優(yōu)先?? 代碼待驗(yàn)證defrecall(query_vec,user_id,k5,nowNone):# 第一段硬條件過濾candidates[mforminMEMORY_STOREifm[scope]userandm[owner]user_idandm[status]activeand(m[expires_at]isNoneorm[expires_at]now)]# 第二段語義排序scored[(cosine(query_vec,m[vec])*m[confidence],m)formincandidates]scored.sort(keylambdax:x[0],reverseTrue)return[mfor_,minscored[:k]]硬過濾必須在語義排序之前順序顛倒就會(huì)出現(xiàn)過濾掉了但已經(jīng)排進(jìn)候選集的漏洞而且這個(gè)問題在離線測試?yán)锊蝗菀妆┞兑驗(yàn)殡x線樣本的作用域通常很干凈。五、三類記憶之間的流轉(zhuǎn)協(xié)議前三章分別講了三層各自怎么做。這一章講層與層之間怎么交接——出問題的地方通常不在層內(nèi)而在層間。寫入權(quán)單一化一個(gè)事實(shí)只能由一個(gè)層寫入最有效的防污染規(guī)則每一條事實(shí)只有一個(gè)寫入方。同一份用戶所在城市如果既允許工作記憶寫、又允許長期記憶寫兩處遲早出現(xiàn)不一致。分配原則按數(shù)據(jù)的穩(wěn)定度劃分一次任務(wù)內(nèi)產(chǎn)生、任務(wù)結(jié)束即無意義的只由工作記憶寫會(huì)話內(nèi)有效、跨會(huì)話無意義的只由會(huì)話短期記憶寫跨會(huì)話穩(wěn)定成立的只由長期記憶寫跨層需要傳遞時(shí)走提升通道不走直接寫入這樣任何一條記憶都能追溯到唯一的寫入來源。提升與淘汰短期到長期的判定條件提升不是簡單的復(fù)制一份到長期。判定條件可以寫死成三條全部滿足才提升穩(wěn)定性這條信息在超過一次會(huì)話中出現(xiàn)過或由用戶顯式確認(rèn)獨(dú)立可讀脫離原會(huì)話上下文仍能讀懂不能是就用剛才那個(gè)這類依賴指代的表述非敏感或已授權(quán)涉及敏感信息時(shí)需走單獨(dú)的確認(rèn)流程淘汰同樣要有明確條件三類觸發(fā)到期帶時(shí)效的信息比如本季度的目標(biāo)口徑到期自動(dòng)失效置信度衰減長期未被召回、且置信度低于閾值的記錄降級為候選顯式失效新記憶與舊記憶沖突時(shí)舊記錄狀態(tài)改為superseded不物理刪除提升與淘汰必須成對設(shè)計(jì)。只做提升不做淘汰長期記憶會(huì)單調(diào)增長召回噪聲隨之上升命中率反而下降。沖突處理新舊矛盾時(shí)誰贏、怎么留痕兩條記憶沖突時(shí)默認(rèn)規(guī)則是新證據(jù)壓過舊證據(jù)但舊記錄留痕。留痕的具體做法是把舊記錄的狀態(tài)改成superseded寫一個(gè)指向新記錄的引用同時(shí)帶上替換時(shí)間。這樣召回時(shí)只取active用戶看到的是新值排查時(shí)能沿引用鏈回看搞清是何時(shí)、因何被替換。?? 代碼待驗(yàn)證處理沖突的三步 1. 找出與新記憶沖突的舊記錄同 scope 且同 key 2. 舊記錄 status 置為 superseded寫入 superseded_by 與 superseded_at 3. 新記錄 status 置為 activeevidence 里引用觸發(fā)本次寫入的會(huì)話 例外新證據(jù)不足時(shí)不覆蓋 - 新記憶來自隱式推斷且置信度低于舊記錄則進(jìn)候選隊(duì)列不動(dòng)舊記錄 - 舊記錄由用戶顯式確認(rèn)過新記憶只是推斷則保留舊記錄先向用戶確認(rèn)這個(gè)例外的意義在于用戶明確確認(rèn)過的東西不該被系統(tǒng)的猜測覆蓋。兩條都是推斷時(shí)也不該互相覆蓋應(yīng)當(dāng)并列存在并標(biāo)記待確認(rèn)。完整版資料清單本文用到的記憶分層對照表與流轉(zhuǎn)判定清單都整理在里面了掃碼即可獲取六、污染治理與可刪除性分層能擋住結(jié)構(gòu)性的污染但擋不住具體的寫錯(cuò)、忘刪、召錯(cuò)。這一章講怎么治。污染的三個(gè)來源錯(cuò)誤寫入。不該進(jìn)長期記憶的進(jìn)了。典型是一次性狀態(tài)被當(dāng)成偏好或推斷被當(dāng)成事實(shí)。過期未淘汰。信息本身沒錯(cuò)但事實(shí)變了而記錄沒動(dòng)。用戶換了工作、換了技術(shù)棧舊記錄還在按老樣子參與召回。召回錯(cuò)配。記錄沒錯(cuò)、也沒過期但召回到了當(dāng)前問題不需要的場景。語義相似而作用域不符是這一類的代表也是只做向量召回時(shí)最先暴露的問題。三類來源對應(yīng)三套不同的處置錯(cuò)誤寫入靠收緊寫入權(quán)過期靠到期與衰減錯(cuò)配靠結(jié)構(gòu)化過濾。到期、置信度、顯式失效三種淘汰手段手段適用場景判定信號代價(jià)到期時(shí)間有明確時(shí)效的信息寫入時(shí)設(shè)定的到期點(diǎn)時(shí)效估計(jì)不準(zhǔn)會(huì)誤刪置信度衰減長期未被使用的記錄召回次數(shù)與時(shí)間低頻但重要的記錄會(huì)被誤降顯式失效事實(shí)發(fā)生變化新證據(jù)或用戶指令依賴沖突檢測足夠全三者配合使用比單用任何一種都穩(wěn)。到期管不住沒有到期日的偏好衰減管不住剛寫入就錯(cuò)的記錄顯式失效依賴有人觸發(fā)??尚械慕M合是穩(wěn)定偏好不打到期時(shí)間只參與衰減時(shí)效信息打到期間并允許續(xù)期任何寫入都參與沖突檢測。衰減閾值不要一次定死先記錄歷史召回次數(shù)觀察一兩周再定。用戶的忘掉這個(gè)必須能真刪刪除請求必須是可執(zhí)行、可驗(yàn)證的不能只是不再召回。這里有一組明確的取舍軟刪標(biāo)記刪除保留記錄、狀態(tài)置為已刪除。優(yōu)點(diǎn)是審計(jì)與恢復(fù)友好能追溯刪除歷史缺點(diǎn)是數(shù)據(jù)還在合規(guī)口徑上不算刪除。硬刪物理刪除記錄從存儲(chǔ)中移除。優(yōu)點(diǎn)是真的刪掉了缺點(diǎn)是回放和排查會(huì)斷鏈且刪除操作本身不可回滾??尚械淖龇ㄊ欠謱犹幚順I(yè)務(wù)側(cè)默認(rèn)軟刪保證可追溯同時(shí)提供硬刪通道滿足真刪要求硬刪前把必要的排障信息留在審計(jì)記錄里只記刪除這一事實(shí)不含內(nèi)容。?? 代碼待驗(yàn)證# 硬刪通道示意# 1) 寫審計(jì)只記事實(shí)不記內(nèi)容audit_log--actiondelete --memory-id$MID--reasonuser_request--at$(date-u%FT%TZ)# 2) 物理刪除主記錄與向量索引中的對應(yīng)條目store delete--id$MID--hardindex delete --vector-id$MID刪除之后還有一個(gè)容易漏的點(diǎn)派生內(nèi)容里的殘留。一條記憶可能已經(jīng)被并入某段長期摘要硬刪主記錄不會(huì)自動(dòng)清掉摘要里的復(fù)述刪除流程需要一并維護(hù)派生引用否則用戶以為刪了摘要里還留著。七、落地順序與觀測三層的方案寫起來清楚一次全上會(huì)翻車。這一章給推進(jìn)順序和觀測口徑。不要一次上三層建議的推進(jìn)順序推進(jìn)順序按收益確定、風(fēng)險(xiǎn)可控排先做工作記憶的結(jié)構(gòu)化。收益立刻可見上下文變短、任務(wù)內(nèi)不跑偏風(fēng)險(xiǎn)也最低因?yàn)樗豢鐣?huì)話。再做會(huì)話短期記憶的裁剪。先跑通滑動(dòng)窗口再加滾動(dòng)摘要最后加錨定每加一層都對照判定表復(fù)核。最后做跨會(huì)話長期記憶。它影響面最大放在前兩層穩(wěn)定運(yùn)行、寫入權(quán)規(guī)則驗(yàn)證過之后再上。長期記憶上線時(shí)先只讀后寫。先讓它在召回端參與確認(rèn)穩(wěn)定后再開寫入。這個(gè)順序的反面是先建長期記憶庫——它是唯一會(huì)持續(xù)污染后續(xù)所有會(huì)話的一層先上它等于把最難的放在最沒有經(jīng)驗(yàn)的時(shí)候做。三個(gè)觀測指標(biāo)指標(biāo)定義關(guān)注什么異常信號記憶命中率被實(shí)際引用的記憶占召回的比例召回是否有效偏低說明召回噪聲大污染率抽樣中被判為錯(cuò)誤引用的比例記憶是否傷到正確性上升說明寫入或過濾有問題記憶 token 占比記憶占單次請求上下文的比重成本是否可控持續(xù)上漲說明淘汰沒生效三個(gè)指標(biāo)的用法不一樣命中率看召回質(zhì)量污染率看正確性token 占比看成本。污染率是唯一必須人工抽樣的因?yàn)樗鼪]有可靠的自動(dòng)信號——引用了一條錯(cuò)記憶和引用了一條對記憶在模型看來沒有區(qū)別。?? 代碼待驗(yàn)證defmemory_metrics(requests:list)-dict:從請求日志里算三個(gè)指標(biāo)命中率按被引用條數(shù)除以召回條數(shù)算。recalledsum(r[mem_recalled]forrinrequests)citedsum(r[mem_cited]forrinrequests)mem_tokenssum(r[mem_tokens]forrinrequests)all_tokenssum(r[total_tokens]forrinrequests)or1return{hit_rate:round(cited/recalled,3)ifrecalledelseNone,token_share:round(mem_tokens/all_tokens,3),recalled:recalled,cited:cited,}命中率的分母是召回條數(shù)而不是記憶總數(shù)——召回了很多但一條沒用上說明過濾條件寫得太松一條都沒召回才是記憶庫里沒東西。前者的修法是收緊過濾后者是擴(kuò)大寫入。記憶層出問題時(shí)的降級路徑記憶層是增強(qiáng)項(xiàng)不該成為單點(diǎn)故障。降級按這個(gè)順序切關(guān)停召回保留寫入召回出問題時(shí)先讓它不參與上下文會(huì)話按無長期記憶的方式繼續(xù)跑寫入照常以便事后補(bǔ)撈關(guān)停寫入保留召回寫入污染嚴(yán)重時(shí)反過來凍結(jié)新寫入只讓已有記憶參與整體旁路兩層都出問題時(shí)走無記憶模式邏輯上等價(jià)于只有會(huì)話短期記憶先保證主流程可用降級開關(guān)要提前設(shè)計(jì)出問題時(shí)才改代碼來不及。判斷切到哪一檔的信號來自上一節(jié)的三個(gè)指標(biāo)其中污染率是觸發(fā)降級的主要依據(jù)。完整版資料清單本文用到的記憶分層對照表與流轉(zhuǎn)判定清單都整理在里面了掃碼即可獲取附表 A關(guān)鍵取舍一覽本文涉及的工程判斷集中在這里方便按需回看。工程決策原因依據(jù)章節(jié)三類記憶分開存放與治理目標(biāo)函數(shù)不同共用規(guī)則必然互相污染第一章不把加大窗口當(dāng)作記憶方案窗口是帶寬不解決該塞什么第一章工作記憶存槽位而非工具原文原文占上下文且無復(fù)用價(jià)值第二章工作記憶以 task_id 校驗(yàn)邊界純代碼可判無需模型介入第二章工具原始返回留指針而非全量入上下文原文可回查不代表要常駐第二章會(huì)話壓縮按會(huì)話形態(tài)選策略任務(wù)型與探索型的關(guān)鍵輪次分布不同第三章被推翻的舊結(jié)論整段丟棄留著會(huì)誘發(fā)引用錯(cuò)誤第三章實(shí)體、金額、時(shí)間不參與壓縮指代解析依賴原文數(shù)值第三章摘要附帶輪次區(qū)間回查入口否則摘要只能當(dāng)背景第三章長期記憶只存半年后仍成立的信息穩(wěn)定性是入層的硬門檻第四章隱式推斷先進(jìn)候選隊(duì)列未經(jīng)驗(yàn)證的假設(shè)不該長期存活第四章先結(jié)構(gòu)化過濾再語義排序順序顛倒會(huì)漏掉作用域不符的記錄第四章一個(gè)事實(shí)只有一個(gè)寫入方多寫入方必然出現(xiàn)不一致第五章提升與淘汰成對設(shè)計(jì)只提升會(huì)讓召回噪聲單調(diào)上升第五章沖突時(shí)新記憶勝出但舊記錄留痕既要當(dāng)前正確也要可追溯第五章用戶確認(rèn)過的記憶不被推斷覆蓋證據(jù)強(qiáng)度不同不能同等對待第五章刪除默認(rèn)軟刪并提供硬刪通道兼顧可追溯與合規(guī)真刪第六章刪除流程維護(hù)派生引用摘要?dú)埩魰?huì)讓刪除失效第六章落地順序從工作記憶開始影響面從小到大逐層驗(yàn)證第七章污染率必須人工抽樣錯(cuò)誤引用沒有自動(dòng)可用信號第七章降級開關(guān)提前設(shè)計(jì)并分三檔記憶是增強(qiáng)項(xiàng)不該成為單點(diǎn)第七章附表 B術(shù)語速查表術(shù)語含義工作記憶單次任務(wù)內(nèi)的臨時(shí)狀態(tài)任務(wù)結(jié)束即銷毀會(huì)話短期記憶單次會(huì)話內(nèi)的多輪歷史與其壓縮結(jié)果跨會(huì)話長期記憶跨會(huì)話持久保留的穩(wěn)定事實(shí)與偏好滑動(dòng)窗口只保留最近若干輪歷史的裁剪策略滾動(dòng)摘要把舊輪次壓縮成摘要、新輪次保留原文的策略關(guān)鍵輪次錨定給關(guān)鍵輪次打標(biāo)并始終保留原文的策略提升把會(huì)話級信息轉(zhuǎn)為長期記憶的判定流程顯式確認(rèn)由用戶明確表達(dá)或確認(rèn)后才寫入的路徑隱式推斷從行為或頻率推測偏好、未經(jīng)確認(rèn)的寫入來源結(jié)構(gòu)化過濾按作用域、狀態(tài)、時(shí)間等硬條件先篩一遍的召回前處理到期時(shí)間記憶的自動(dòng)失效時(shí)點(diǎn)只用于有時(shí)效的信息置信度衰減長期未被召回的記錄按次數(shù)與時(shí)間降級的機(jī)制留痕替換沖突時(shí)把舊記錄標(biāo)記為已被替代而不物理刪除硬刪通道物理移除記錄及其派生內(nèi)容的刪除路徑派生引用由某條記憶派生的摘要或索引刪除時(shí)需一并處理寫在最后這篇用到的資料寫這篇文章時(shí)我把幾個(gè)模型的官方文檔、參數(shù)表和實(shí)測記錄都對了一遍順手整理成幾份配套的東西大模型學(xué)習(xí)路線圖從 LLM 基礎(chǔ)到 Agent 開發(fā)各階段該學(xué)什么、用什么資料大模型全套教程按主題分好的視頻與文檔清單大模型實(shí)戰(zhàn)好書24 本附每本適合的階段資料是我自己整理的放在下面這個(gè)碼上掃碼即可獲取添加時(shí)備注「大模型」優(yōu)先通過。拿到之后建議先看學(xué)習(xí)路線圖那一份先定位自己在哪個(gè)階段再?zèng)Q定學(xué)什么比一上來就啃框架效率高得多。