Goat 2.0 – 面向AI智慧體的主動情景記憶系統
Goat 2.0 是一個基於Telegram的AI智慧體,核心是一個主動分層記憶系統。與標準RAG不同,它在每次對話回合前主動檢索記憶,無需智慧體主動詢問。系統包含三個獨立的儲存後端(Redis、ChromaDB、Letta),具有自適應令牌預算、優先反轉的L2/L3分割、寫透歸檔等特性。該專案展示瞭如何構建具有複雜記憶機制的AI助手。
Goat 2.0 是一個基於Telegram的AI智慧體,其核心創新在於一個主動分層記憶系統。與傳統的RAG(檢索增強生成)不同,Goat 2.0 在每個對話回合開始前就主動檢索相關記憶,而不是等待模型意識到需要查詢。這意味著即使是一條模糊的單詞訊息,也能觸發對過往會話的語義搜尋,並將結構相關的內容注入到提示中。模型永遠不需要問“我記得這個嗎?”,因為檢索已經發生了。
該系統的關鍵設計在於多個獨立的後端儲存層。工作記憶使用Redis,儲存當前會話的對話歷史和快取;情景記憶使用ChromaDB(持久化客戶端),儲存長期語義記憶;永久記憶使用Letta HTTP API,儲存關鍵事實和身份資訊。這三個後端都是延遲載入的,即首次使用時才建立連線,並且彼此獨立故障——例如,如果Letta服務中斷,僅僅丟失L1(事實層)的內容,對話仍可繼續。
記憶被組織為五個邏輯層。L0是身份層,始終包含基礎人格提示;L1是事實層,由Letta中的鍵值對構成;L2是工作層,包含當前會話的完整對話歷史(有上限);L2.5是會話快取層,為L3搜尋結果和工具輸出提供TTL快取;L3是情景層,透過語義搜尋從ChromaDB中檢索長期記憶。Orchestrator只透過一個統一的介面(MemoryLayers)與記憶系統互動,從不直接匯入任何物理後端。
預取守護程序是該系統與其他系統的核心區別。它在每個對話回合開始時作為非同步任務啟動,與L0/L1/L2的獲取並行執行。預取守護程序同時執行三種檢索機制:時間機制(解析日期範圍進行過濾搜尋)、主題機制(無條件執行,進行快取語義搜尋)和特定鍵機制(當訊息包含結構鍵時進行精確匹配)。這些機制獨立評估,沒有置信度門限,只有超時作為唯一阻塞條件。三種機制的結果透過結果合併器進行去重和混合評分(加權0.6/0.3/0.1),並注入到系統提示中。
自適應意圖令牌縮放(AITS)是另一個關鍵特性。每輪對話根據使用者訊息的置信度和複雜性計算動態令牌預算。置信度基於查詢中的提示詞(如“什麼”、“如何”、“為什麼”等)評估;複雜性基於訊息長度和連線詞數量。預設預算為2000令牌,複雜查詢可接近12000令牌。此外,上下文預算的分配採用優先順序反轉策略:在扣除L0+L1的固定消耗後,先保障L3至少獲得1200令牌,剩餘的再給L2,確保長程記憶不會被短期對話完全擠佔。
寫透歸檔機制確保每次對話回合都原樣儲存到情景記憶(L3)中,標記為“l2_full_archive”,保留訪問計數和時間戳以供將來排序使用。對話歷史在超過上限時會自動裁剪,但第一條訊息(通常設定對話主題)會被固定保留,前提是它足夠短。
專案還提供了可觀測性支援:每輪對話生成一個JSON日誌行,包含AITS引數、快取命中/未命中、各階段延遲、令牌使用量、預取結果等。這些資料由MemoryAnalytics聚合,每100次請求輸出一份摘要報告。
Goat 2.0 的程式碼結構清晰,主要模組包括記憶層、編排器、服務註冊中心、外掛管理器、工具登錄檔和Telegram介面。整體設計遵循“零單例”原則,所有服務透過依賴注入容器管理,便於測試和擴充套件。該專案體現瞭如何構建一個具有複雜記憶系統的AI智慧體,適合需要持久上下文和長程記憶的對話應用。