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的協作會話,體現了人機協作的核心理念。