AI News HubLIVE
站內改寫2 分鐘閱讀

Show HN:雙層記憶——AI編碼代理的可查詢長期記憶

為AI編碼代理提供可查詢的長期記憶,採用雙層系統:始終載入的索引和按需查詢的SQLite資料庫,突破上下文視窗限制。

來源Hacker News AI作者: tadelstein

AI編碼代理的預設長期記憶機制通常是將Markdown檔案堆疊載入到會話的上下文視窗中。這種方式在檔案數量較少時尚可應付,但當積累到上百個檔案時,所有內容競爭有限的上下文視窗,超出邊界的資訊會被靜默截斷,導致代理遺忘已解決的問題、重複勞動甚至與之前的決策矛盾。許多人將此歸咎於模型能力不足,但根本問題在於檔案系統本身——這正是一個1970年就被資料庫解決的老問題:將資料結構化儲存、建立索引、按需精確查詢所需的行,而非全量載入掃描。

該專案提出了雙層記憶架構來解決這一侷限。第一層是一個始終載入的索引檔案(INDEX.md),每行對應一個已解決的問題,僅包含標題和指標,佔用的上下文空間極小,能告知代理有哪些已知資訊而不暴露細節。該索引從第二層資料庫自動生成,確保不會漂移。第二層是一個按需查詢的SQLite資料庫,每個難題儲存為一行,包括問題描述、根因、解決方案、注意事項和相關工件。上千行資料在未被查詢時不會佔用任何上下文,只有當代理嗅到熟悉氣味時才會執行SQL查詢獲取精確資訊。

使用方式極為簡單:透過Python 3自帶的sqlite3庫即可執行。命令列工具支援init、add、query、get、list、index等操作。例如新增一條新記錄時,可指定領域、標題、問題、根因、解決方案、注意事項和標籤;查詢時使用全文搜尋(FTS5)。索引檔案透過命令手動或自動重新生成,確保與資料庫一致。

作者強調,工具本身只是誘餌,真正發揮價值需要配合良好的使用習慣。必須將“先搜尋記憶再行動”設為代理的固定規則,否則資料庫形同虛設。每條記錄應在解決當天寫入,一旦發現錯誤立即刪除或更新——過時的記錄比空表更具誤導性。此外,當前內建的全文搜尋只能匹配關鍵詞,可能無法準確找到意圖的條目,未來可在此基礎上嫁接語義搜尋或嵌入向量,但不要一開始就追求複雜方案。

將雙層記憶整合到AI編碼代理中,只需在專案指令中新增兩條規則:遇到新難題時先查詢記憶庫,命中則直接複用;解決新穎問題後新增記錄並更新索引。這樣,始終載入的INDEX.md提示代理已知內容,資料庫按需提供詳細資訊,雙方互補。整個工具零依賴,僅需Python 3及其內建sqlite3模組。原始碼包括schema.sql(建表及FTS5觸發器)、memory.py(CLI實現)、自動生成的INDEX.md和memory.db資料檔案。專案採用MIT許可證,由Tom Adelstein公開構建,模式源於與Anthropic編碼代理Claude Code的協作會話,體現了人機協作的核心理念。