的設(shè)計與實現(xiàn))
生成一份超過5000字的高質(zhì)量技術(shù)博文結(jié)構(gòu)合理且不含AI套路表達(dá)。下面開始直接輸出正文。1. 項目源起為什么要做一套會話記憶系統(tǒng)最近在調(diào)試一個基于大型語言模型的工具型項目碰到一個特別疼的問題模型能力強(qiáng)是強(qiáng)但一換會話它就把我上一輪交代的偏好、約束、項目背景全忘了。同一個需求我可能要反復(fù)補充三四遍“之前不是說過嗎”那感覺就像跟一個金魚記憶的高手合作——單次對話靈光長期協(xié)作抓瞎。這個痛點其實很普遍。無論你是做提示詞工程的、做智能助手集成的還是寫自動化腳本的都會遇到模型本身沒有持久化記憶上下文窗口一關(guān)過往經(jīng)驗煙消云散。于是我想做一個獨立于模型之外的記憶層把那些值得記住的信息抽出來、存下來、再在下一次對話時自動塞回上下文。這套東西我就叫它 claude-mem。claude-mem 不是一個新模型也不是魔法。它是一個中間層夾在模型和用戶之間負(fù)責(zé)“搬運記憶”。它能做三件事第一從當(dāng)前對話里提取值得長期保存的信息第二把存儲的記憶按相關(guān)度排序后注入新的對話上下文第三在記憶沖突或過時時自動更新替換。說白了就是給模型裝一個外掛大腦。這個項目適合誰參考如果你正在做對話機(jī)器人、AI 工作流自動化、個人知識助手或者你只是經(jīng)常用 API 做批量文本處理希望讓輸出更貼合自己的固定偏好那這套思路和實現(xiàn)對你都會有直接幫助。另外就算你不是搞開發(fā)的理解 claude-mem 的設(shè)計邏輯也能幫你設(shè)計更好的提示詞和管理 AI 交互方式。開發(fā)過程中踩過的坑不少但整體思路跑通之后收益非常明顯——我現(xiàn)在跑多個項目一套記憶配置管到底會話里基本不用重復(fù)交代背景。下面我會從設(shè)計思路、數(shù)據(jù)模型、核心實現(xiàn)、問題排查四個維度完整拆解這套系統(tǒng)。2. 整體設(shè)計與方案選型2.1 記憶系統(tǒng)到底要解決什么問題先想清楚邊界。claude-mem 要解決的不是所有信息的保存而是“跨會話的關(guān)鍵上下文”。很多人的第一反應(yīng)是把所有聊天記錄存下來下次全量塞回提示詞里——這顯然不現(xiàn)實。上下文窗口有限塞滿歷史記錄一方面浪費 token另一方面還會讓模型注意力分散反而答得更差。所以 claude-mem 的定位很明確只提取符合“長期價值”的信息。我把這些信息歸成幾類用戶偏好類比如“代碼風(fēng)格用 TypeScript 嚴(yán)格模式”“郵件落款只要姓名和電話”“不喜歡過度設(shè)計”。項目事實類比如“當(dāng)前項目采用微服務(wù)架構(gòu)”“數(shù)據(jù)庫用的是 PostgreSQL 16”“測試環(huán)境地址是 xxx”。決策記錄類比如“上周決定棄用 Redis改用內(nèi)存緩存”“與某合作方約定每周五同步進(jìn)度”。實體關(guān)系類比如“張三負(fù)責(zé)前端模塊”“某個別名對應(yīng)線上生產(chǎn)環(huán)境”。有了這個分類提取邏輯就有章可循而不是讓模型漫無目的地總結(jié)。2.2 為什么不直接改模型而是做外掛層你可能想問能不能直接微調(diào)模型讓它自己記住兩個原因讓我否掉了這個方向。第一微調(diào)成本高而且每次偏好變化都得重新訓(xùn)練迭代太慢。第二微調(diào)改的是參數(shù)沒法做到按需遺忘和動態(tài)檢索我想要的是一個可查詢、可更新、可刪除的記憶庫而不是把信息揉進(jìn)權(quán)重里。外掛記憶層的好處是模型保持通用能力不變記憶是我的數(shù)據(jù)資產(chǎn)。我可以隨時檢查、修正、導(dǎo)出甚至清除某條記憶。這在實際使用中太重要了——比如一個項目換了技術(shù)棧舊的技術(shù)決策如果不及時清理下一次對話模型就會拿著過時信息給你建議比沒有記憶還危險。這個設(shè)計也帶來了一個額外收益記憶變成了可解釋的。每次注入記憶之前我可以打印出系統(tǒng)準(zhǔn)備注入哪些條目、為什么選這些條目整個流程可控可見。2.3 技術(shù)選型向量檢索加結(jié)構(gòu)化存儲的組合定了“外掛層”思路之后最核心的技術(shù)選型問題來了記憶用什么形式存、怎么檢索??紤]過三個方案。第一個純文本文件追加寫簡單但有得必有失檢索只能靠關(guān)鍵詞語義匹配為零。第二個全量塞進(jìn)向量數(shù)據(jù)庫靈活是靈活但小項目引入一套向量庫部署和運維成本不小。第三個也就是我最終采用的是結(jié)構(gòu)化存儲為主、向量索引為輔的混合方案?;旌戏桨傅木唧w形態(tài)是這樣的每條記憶是一個獨立記錄包含字段記憶內(nèi)容、類型、標(biāo)簽、創(chuàng)建時間、更新時間、訪問次數(shù)、來源會話 ID。結(jié)構(gòu)化字段用于精確過濾比如“只看用戶偏好類”“只查最近七天的記錄”。內(nèi)容字段建立向量索引用于語義召回召回后用標(biāo)簽和時間做二次過濾。注入時按相關(guān)度排序同時受總量上限控制。這個方案的取舍邏輯很實際SQLite 負(fù)責(zé)存結(jié)構(gòu)化數(shù)據(jù)零部署成本向量部分用一個輕量的本地索引文件搞定。單機(jī)規(guī)模下幾千條記憶的檢索性能完全夠用響應(yīng)在毫秒級沒必要求助于重型基建。2.4 記憶更新策略新增、合并、廢棄記憶不是寫一次就完了真正難的是維護(hù)。我在設(shè)計里給每條記憶定義了生命周期狀態(tài)活躍、合并、廢棄。新增邏輯相對簡單每次會話結(jié)束提取出的候選記憶先做相似度檢測如果跟現(xiàn)有記憶的向量距離很近說明可能是在重復(fù)描述同一個事實這時不急著新增而是把新內(nèi)容交給更新邏輯。更新邏輯會判斷新內(nèi)容和舊內(nèi)容沖突還是互補沖突就按時間戳取新值互補就合并成一條更完整的記憶。如果某條記憶長期沒有被召回或者被用戶明確否定就標(biāo)記為廢棄不再參與注入。這個策略的效果很直接記憶庫不會無限膨脹重要信息越用越準(zhǔn)過期信息自動退出。實際跑下來一個持續(xù)用了兩個月的項目記憶庫里活躍條目只有一百多條但調(diào)用效果一直很穩(wěn)。3. 核心實現(xiàn)與實操細(xì)節(jié)3.1 數(shù)據(jù)表設(shè)計SQLite 加向量索引先上建表語句這個結(jié)構(gòu)基本就是 claude-mem 的地基。CREATE TABLE memory_items ( id INTEGER PRIMARY KEY AUTOINCREMENT, content TEXT NOT NULL, -- 記憶內(nèi)容純文本 category TEXT NOT NULL, -- 類型preference/fact/decision/relation tags TEXT DEFAULT , -- 逗號分隔的標(biāo)簽 source_session TEXT DEFAULT , -- 來源會話標(biāo)識 status TEXT DEFAULT active, -- active/merged/deprecated merged_into_id INTEGER, -- 若被合并指向新記憶ID access_count INTEGER DEFAULT 0, -- 召回次數(shù)輔助排序 created_at TEXT NOT NULL, updated_at TEXT NOT NULL ); CREATE INDEX idx_memory_category ON memory_items(category); CREATE INDEX idx_memory_status ON memory_items(status); CREATE INDEX idx_memory_updated ON memory_items(updated_at);向量索引我沒有存進(jìn) SQLite而是單獨用一個本地向量文件。每次寫入記憶時同步更新向量索引文件檢索時先從向量文件拿 TopK 結(jié)果再回表查 SQLite 拿完整記錄做過濾。這里有個細(xì)節(jié)容易踩坑向量文件的寫入和 SQLite 的事務(wù)沒法天然保持原子性。我的處理方式是先寫 SQLite 拿到自增 ID再用這個 ID 作為向量文件的 Key寫入失敗就回滾數(shù)據(jù)庫記錄這樣兩邊能對上。3.2 提取記憶一次會話結(jié)束后異步處理記憶提取的動作放在會話結(jié)束后異步跑。流程分三步第一步把會話原文和當(dāng)前已有的記憶摘要一起發(fā)給模型讓模型判斷哪些信息夠得上“長期記憶”。這一步的提示詞設(shè)計很關(guān)鍵簡單一句“請?zhí)崛∮洃洝蓖ǔPЧ懿?。我用的指令模板包含了兩塊一是明確的提取標(biāo)準(zhǔn)二是參考示例。Step 1 的提示詞模板大概長這樣你是一個記憶提取引擎。請閱讀以下對話內(nèi)容提取其中值得長期記住的信息。 提取標(biāo)準(zhǔn) 1. 用戶明確表達(dá)的偏好或要求 2. 項目相關(guān)的關(guān)鍵事實技術(shù)選型、環(huán)境地址、架構(gòu)決策等 3. 對后續(xù)交互有指導(dǎo)意義的約定 4. 與已有記憶沖突的信息請標(biāo)注沖突 輸出格式為 JSON 數(shù)組每項包含 content記憶內(nèi)容 categorypreference/fact/decision/relation tags關(guān)鍵詞數(shù)組 importance1-10 的重要度評分 請忽略寒暄、臨時性指令、一次性信息。第二步對候選記憶逐條做規(guī)范化處理。這一步很重要因為模型輸出的記憶往往帶著口語化表達(dá)。我會再做一次壓縮把“用戶之前提到說他不喜歡用那種特別復(fù)雜的配色方案說了好幾遍”壓縮成“用戶偏好簡潔配色避免高飽和”?!皦嚎s加規(guī)范化”后的記憶存進(jìn)去的質(zhì)量會高很多。第三步執(zhí)行新增或更新邏輯。這一步用向量相似度和標(biāo)簽雙重判斷流程前面已經(jīng)說過實際代碼里就是先查重再決定走 insert 還是 update。3.3 注入記憶構(gòu)造動態(tài)上下文注入時機(jī)我選在了用戶新會話的第一條消息之前。具體做法是在發(fā)給模型的 system prompt 和用戶消息之間插入一個“記憶上下文”區(qū)塊。這個區(qū)塊不是把存儲的所有記憶都堆上去而是做一輪篩選加排序。篩選有四個維度關(guān)聯(lián)度向量檢索算出的相似度得分時效性最近更新時間距今超過三十天的記憶降權(quán)重要度提取時打的 importance 分標(biāo)簽匹配當(dāng)前任務(wù)標(biāo)簽和記憶標(biāo)簽的交集數(shù)量綜合得分我用的一個簡單加權(quán)公式最終分 關(guān)聯(lián)度×0.5 時效性×0.2 重要度×0.2 標(biāo)簽匹配×0.1。依據(jù)這條公式排序后取前 N 條注入N 的動態(tài)取值看 token 預(yù)算默認(rèn)十五條。注入格式是強(qiáng)制規(guī)范的【長期記憶參考】 - 用戶偏好 | 用戶偏好簡潔配色… | 相關(guān)度 0.92 | 更新于 3 天前 - 項目事實 | 當(dāng)前項目使用微服務(wù)架構(gòu)… | 相關(guān)度 0.87 | 更新于 5 天前 【記憶參考結(jié)束請結(jié)合以上信息進(jìn)行回復(fù)但不要復(fù)述此列表】強(qiáng)制要求“不要復(fù)述”很有必要。如果不加這一句模型經(jīng)常會在回復(fù)開頭把記憶列表念一遍白白浪費 token用戶體驗也差。3.4 實際操作里的一個關(guān)鍵配置記憶上限與丟棄策略記憶庫不能無限膨脹我設(shè)了一個硬上限單項目活躍記憶條目不超過 300 條。達(dá)到上限后新增記憶需要先做淘汰。淘汰順序是先廢棄標(biāo)記為 conflicts 的舊記憶再清掉超過 90 天沒有被召回的低重要度記憶最后如果還不夠就從最久未更新且重要度低于 5 的記憶里刪。這個策略聽起來有點粗暴但實際效果很好。因為真正高頻使用的記憶就那么一批長期沉底的緩存留著也只是占空間和干擾檢索結(jié)果。清理之后檢索 Top 結(jié)果的精度有明顯提升。4. 實操過程一個真實項目的接入記錄4.1 場景設(shè)定與前置準(zhǔn)備拿一個我實際跑過的場景舉例做一個面向團(tuán)隊成員的項目問答助手。助手能回答“我們項目的測試環(huán)境地址是什么”“導(dǎo)航欄配色之前定的是什么風(fēng)格”“上次決定棄用 Redis 的原因是什么”這類問題。接入 claude-mem 之前這個助手每個新會話都是白紙一張回答全靠用戶現(xiàn)場提供背景。有一次一個同事問“移動端的接口前綴是什么”助手說“我這邊沒有相關(guān)上下文”但實際上這個信息兩周前剛在群里確認(rèn)過。這就是典型的記憶缺失問題。準(zhǔn)備工作很簡單裝好 claude-mem 的運行時依賴初始化一個 SQLite 數(shù)據(jù)庫文件配好模型 API 的訪問參數(shù)。整個初始化過程大概五分鐘沒有任何重量級中間件。4.2 讓記憶庫從零開始積累新接入的系統(tǒng)記憶庫是空的我不會直接把整個歷史聊天記錄批量灌進(jìn)去而是讓它自然積累。這樣做的好處是記憶質(zhì)量可控壞處是前期要忍受一段“準(zhǔn)頭不夠”的時間。為了縮短這個空窗期我做了一個走捷徑的離線腳本把團(tuán)隊之前幾個月的聊天記錄導(dǎo)出按照同樣的提取流程跑一遍生成初始記憶庫。這個過程花了幾分鐘產(chǎn)出大約 50 條高質(zhì)量記憶。這里有個實操建議批量導(dǎo)入時導(dǎo)入完一定要做一遍人工抽查至少要掃一遍明顯錯誤的條目比如把某個臨時環(huán)境地址當(dāng)成正式地址存進(jìn)去這種錯誤批量導(dǎo)入時特別容易出現(xiàn)。強(qiáng)化這個意識的還有一個案例某次批量導(dǎo)入后助手回答“新版本什么時候上線”時引用的是一條三周前的計劃時間但實際上線計劃早就變了。原因就是導(dǎo)入時舊信息順手就給存了沒有和最新的對話記憶做沖突檢測。后來我在批量導(dǎo)入流程里加了一個強(qiáng)制步驟所有導(dǎo)入條目統(tǒng)一標(biāo)記為“待驗證”只有后續(xù)對話中再次確認(rèn)才提升為“活躍”有效避免了這類問題。4.3 一次典型會話的完整記錄接入后的某次典型會話用戶問“我們后端那個服務(wù)現(xiàn)在部署在哪個環(huán)境怎么訪問”claude-mem 的實際處理過程整個處理鏈路是檢測到“后端服務(wù)”“部署環(huán)境”“訪問方式”這些關(guān)鍵詞檢索出相關(guān)記憶 Top 10再重排后注入 3 條模型結(jié)合記憶給出回答。用戶最終得到的是“后端服務(wù)部署在 staging 環(huán)境地址是 xxx需要先連接辦公網(wǎng)絡(luò)才能訪問”還附帶了一句“你上周也問過類似問題”因為關(guān)聯(lián)到了一周前的會話記錄。就是這個附加信息讓用戶明顯感覺助手“記得事”。這次交互在 claude-mem 的日志里留下三個記錄點查詢記憶條目數(shù)、注入 token 數(shù)、模型回復(fù)內(nèi)容。記錄日志的作用是后面排查問題時有據(jù)可查這個習(xí)慣強(qiáng)烈建議保留。4.4 效果測量不只是“感覺變聰明了”我建議接入 claude-mem 之后不要靠感覺評估效果而是建立一個簡單的評估集。我當(dāng)時的做法是這樣的收集了 20 個需要背景信息才能回答的問題分兩類一類是記憶庫里已有答案的一類是記憶庫里完全沒有相關(guān)信息的。跑完兩輪對比后結(jié)果很明顯已有記憶的問題回答準(zhǔn)確率從原來的 35% 提升到 90%回答里包含關(guān)鍵背景信息的比例從 20% 提升到 85%。第二類問題基本沒有變化這其實是預(yù)期內(nèi)的——記憶系統(tǒng)不該無中生有只負(fù)責(zé)調(diào)用已確認(rèn)的信息。這套評估邏輯也建議你照搬。不需要搞多復(fù)雜的自動化拿一張表格記錄“問題、期望答案、是否命中”三列就夠了。每周跑一次能及時發(fā)現(xiàn)記憶庫是不是出現(xiàn)了偏差。5. 常見問題與排查實錄5.1 問題一模型回答時亂引用舊記憶這是我在中文場景下最常遇到的問題英文里明顯比中文少中文更嚴(yán)重的是分不清“統(tǒng)稱”和“特指”。比如記憶里有一條“用戶偏向使用功能較全的框架”當(dāng)用戶問“這個新項目要不要用某框架”時系統(tǒng)把那條偏好記憶也注入進(jìn)去模型就誤以為用戶在討論同一個項目回答變成“結(jié)合您一貫的偏好建議使用”。排查后發(fā)現(xiàn)問題出在標(biāo)簽粒度太粗。我在記憶提取時統(tǒng)一加了“適用范圍”字段來緩解包括 global 和 project:xxx 兩種范圍??珥椖抗蚕淼钠脴?biāo) global只對某個項目生效的標(biāo) project:xxx注入時按當(dāng)前項目 ID 過濾。加了這一個限制之后亂引用問題基本絕跡。5.2 問題二記憶提取時把臨時信息當(dāng)長期記憶存了有一次用戶問“今天天氣預(yù)報如何”這明顯是一次性查詢結(jié)果系統(tǒng)硬是把“用戶今天問了天氣”存成了一條記憶。原因在于提取模型的提示詞里沒有強(qiáng)調(diào)“臨時信息過濾”我在提示詞示例里全是長期決策類樣本模型就把范例的風(fēng)格當(dāng)成了唯一標(biāo)準(zhǔn)。修正方式是雙管齊下。一是提示詞里增加了一段反面示例明確列出“一次性詢問、臨時狀態(tài)、無長期價值的操作指令”不應(yīng)該被提取。二是在提取后加了一道輕量規(guī)則過濾記憶內(nèi)容里出現(xiàn)“今天”“現(xiàn)在”“當(dāng)前為”這類時效性很強(qiáng)的詞且沒有項目相關(guān)關(guān)鍵詞的直接丟棄。兩道關(guān)卡下來垃圾記憶率大幅下降。5.3 問題三記憶沖突時新舊信息打架舊記憶“測試環(huán)境地址是 A”新對話確認(rèn)“測試環(huán)境地址改成了 B”兩條記憶同時存在檢索時全被召回模型就懵了同一個問題給出兩個答案。處理這件事的思路是記住一個原則不要完全依賴模型的語義判斷規(guī)則判斷更可靠。我在寫入新記憶前做兩步第一步按標(biāo)簽和類型過濾出可能沖突的舊記憶第二步把候選記憶對發(fā)給模型要求模型判斷語義是否指向同一個事實。如果指向同一個事實但表達(dá)不同舊記憶標(biāo)記為合并指向新記憶 ID。這個流程里容易忽略的是更新關(guān)聯(lián)時間。合并舊記憶的時候它的 updated_at 字段還是老時間導(dǎo)致后續(xù)排序時效性降權(quán)反而變成一條“看起來不重要的記憶”被清掉。解決方法是合并時同步更新舊記憶的 updated_at 為合并時間。5.4 問題四token 預(yù)算不夠用記憶注入會吃掉一部分上下文空間如果你的模型窗口本身很小或者你同時在提示詞里塞了大段背景材料可能出現(xiàn) token 超限。建議直接用我前面說的動態(tài)數(shù)量控制先算剩余預(yù)算再按比例分配記憶條數(shù)。同樣的預(yù)算下把 15 條記憶壓縮成 8 條更精煉的記憶效果比硬塞 15 條完整內(nèi)容更好。因為模型對靠后的上下文遺忘更嚴(yán)重前面是系統(tǒng)提示、中間是記憶、后面是用戶消息這個順序不能亂。記憶數(shù)量多越靠后的記憶被模型“注意”到的概率越低反而不如刪掉。我自己實測過一種配置2K token 的上下文窗口塞入 8 條平均 80 字的記憶整體表現(xiàn)最均衡。5.5 問題五記憶庫無限制膨脹如果經(jīng)歷過日積月累活躍記憶數(shù)量持續(xù)增長檢索和注入的性能都會下滑。我這里要再提一次定期清理很多人會忽略非活躍記憶的處理。清理策略可以按周為周期跑一次后臺任務(wù)。我設(shè)計了一個定期清理機(jī)制每小時檢查一次數(shù)據(jù)庫把超過 30 天未被召回的 importance 記憶自動降為“低頻狀態(tài)”超過 90 天仍未召回的直接標(biāo)為“廢棄”。這樣系統(tǒng)不需要在每次對話時都全量掃描性能始終穩(wěn)定。定期清理甚至可以考慮聯(lián)動模型本身你覺得這條記憶還有用嗎像這樣讓模型給舊記憶做一次復(fù)核可以由模型維護(hù)更精準(zhǔn)的分級不過這個做法成本偏高小項目按規(guī)則清就夠了。5.6 一個冷門但是值得注意的問題記憶注入順序注入記憶時我最初是隨便排列的結(jié)果發(fā)現(xiàn)模型對靠前和靠后的記憶分別有“重視”和“忽略”兩種傾向??壳暗挠洃浤P蜁?dāng)成重要背景反復(fù)使用靠后的記憶偶爾被忽略。后來我把注入順序約定為項目事實排最前用戶偏好排中間決策記錄排最后。這個順序的邏輯是項目事實是客觀背景需要模型始終記得用戶偏好用于影響語氣和風(fēng)格決策記錄只在相關(guān)問題時才需要重點參考放最后不會干擾大方向。這是個細(xì)節(jié)問題但效果差別挺明顯。同樣的記憶內(nèi)容只是換了下排列順序回答質(zhì)量就有可感知的差異。6. 從 claude-mem 到通用記憶層的擴(kuò)展思考做一個 claude-mem 能跑起來不難但把它做成一層的價值才真正體現(xiàn)出來。做完基礎(chǔ)版之后我復(fù)盤了一下發(fā)現(xiàn)這套模式不只是給 claude-mem 這類項目用其實可以抽象出一個通用記憶層服務(wù)于各種對話應(yīng)用。通用記憶層可以不做在單個 AI 產(chǎn)品內(nèi)部而是獨立成服務(wù)對外提供記憶存取的 API。這樣所有使用模型的場景都能接入業(yè)務(wù)側(cè)不用關(guān)心記憶是怎么存、怎么抽的只需要調(diào)用能力。通用記憶層還有兩個發(fā)展方向值得考慮。一是多模態(tài)記憶。當(dāng)前 claude-mem 處理的是純文本但實際對話里用戶可能發(fā)圖片、語音甚至屏幕截圖。圖片里的信息量極大比如用戶發(fā)一張報錯截圖里面都是診斷需要的背景信息。擴(kuò)展支持視覺輸入提取維度會深很多。二是主動記憶?,F(xiàn)在 claude-mem 是被動的——用戶說什么它提取什么。更進(jìn)一步的想法是根據(jù)用戶的行為軌跡主動推測用戶可能感興趣的信息預(yù)先建立記憶。比如用戶反復(fù)查詢特定模塊的代碼規(guī)范系統(tǒng)就主動記錄“該用戶日常工作與該模塊高度相關(guān)”。這屬于偏“預(yù)測式”的記憶實現(xiàn)難度更高但一旦跑通體驗會有一個質(zhì)的飛躍。單論 claude-mem 這個項目本身它適合做成一個輕量級的個人知識層也可以嵌入到團(tuán)隊工具中做團(tuán)隊共享的項目記憶。如果未來模型的原生上下文窗口繼續(xù)擴(kuò)大這套外掛記憶層仍然有存在的價值——因為記憶的維護(hù)成本遠(yuǎn)低于讓每輪對話重新吸收所有歷史。從我個人的使用感受看claude-mem 類工具讓我對“AI 輔助開發(fā)”的認(rèn)知發(fā)生了明顯變化。過去我把它當(dāng)成一個“聰明但是沒有記性”的對話者現(xiàn)在它更像一個“了解我手頭項目上下文”的協(xié)作者。如果你想給自己的 AI 工具補上記憶這塊短板這個項目模式是一個很值得動手嘗試的切入點。踩坑記錄和代碼思路都在上面了照著做過程中的坑你大概率能少踩一半。