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

Goat 2.0 – 面向AI智能體的主動情景記憶系統

Goat 2.0 是一個基於Telegram的AI智能體,核心是一個主動分層記憶系統。與標準RAG不同,它在每次對話回合前主動檢索記憶,無需智能體主動詢問。系統包含三個獨立的存儲後端(Redis、ChromaDB、Letta),具有自適應令牌預算、優先反轉的L2/L3分割、寫透歸檔等特性。該項目展示瞭如何構建具有複雜記憶機制的AI助手。

來源Hacker News AI作者: takashikiari

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智能體,適合需要持久上下文和長程記憶的對話應用。