構建有狀態AI代理:Centri——記憶優先的編碼代理
Centri是一個開源專案,透過持久的記憶脊柱解決AI代理的遺忘問題。它採用僅追加的事件脊柱作為真相來源,派生可重新推導的記憶圖,確定性地為每輪對話組裝上下文。主要功能包括事件脊柱、型別化記憶圖、確定性策展、FTS5精確回憶、LLM整合、時間回憶、基於ACP的編碼委託、工具合同和歷史匯入。與Letta的基準測試顯示,Centri在處理過時事實方面表現更佳。
Centri是一個開源的記憶優先編碼代理,旨在解決AI代理普遍存在的遺忘問題。傳統代理在上下文視窗填滿、會話結束後,每次新對話都從零開始,導致重複解釋已做決策和已拒絕方案。Centri透過引入一個僅追加的事件脊柱(event spine)作為系統的唯一真相來源,顛覆了這一模式。記憶不再依賴於脆弱的上下文視窗,而是從一個持久化日誌中派生而來,並可隨時重新生成。
Centri的核心架構分為三個部分:Python記憶體API核心、基於OpenCode的TypeScript/Bun應用外殼,以及Hermes整合外掛。事件脊柱是真相來源,型別化的記憶圖(包含決策、事實和開放迴圈)具有雙時態取代能力,新事實使舊事實失效,但歷史完整保留。每次對話的上下文由純函式curate()確定性地計算得出,每條資訊都附帶指向源頭事件的ID,保證了可審計性和可復現性。
Centri提供了多項關鍵功能:
- 僅追加事件脊柱:記錄每個工具呼叫、檔案編輯、決策和結果,並即時脫敏敏感資訊。
- 型別化記憶圖:支援雙時態取代,舊事實不再出現在新上下文中,但可追溯。
- 確定性策展:不依賴LLM生成上下文,保證相同輸入產生相同輸出。
- FTS5精確回憶:透過SQLite全文索引,可將之前的精確令牌(如檔名、錯誤字串)直接引入上下文。
- LLM整合:離線工作執行緒將原始事件摺疊成使用者畫像、活躍專案、開放迴圈等高層資訊。
- 時間回憶:支援“自昨天以來發生了什麼變化”等自然語言查詢。
- 基於ACP的編碼委託:透過代理客戶端協議(JSON-RPC over stdio)將任務委託給編碼代理,支援即時流式進度、破壞性操作審批門控和故障切換。
- 工具合同:Composio工具(如Tavily搜尋)透過事件日誌記錄呼叫,副作用操作經過審批,只讀結果自動回饋記憶。
- 歷史匯入:支援一次性引導和持續跟蹤OpenCode、Claude Code和Cursor的歷史記錄,使新安裝即擁有完整記憶。
- Hermes結構化攝入:將Hermes聊天作為型別化、可去重的信封攝入。
快速部署方面,Centri支援Docker一鍵啟動(docker compose up -d),也可手動從原始碼執行。配置全部透過環境變數驅動,模型無關且自帶金鑰(BYOK)。預設監聽127.0.0.1:8760埠,提供健康檢查和狀態端點。參考部署方案包括systemd服務搭配Caddy/TLS。
Centri還整合了Hermes作為記憶體提供者,透過薄外掛將Hermes記憶體呼叫轉譯為Centri核心的HTTP API。此外,Centri提供了基準測試工具centri-bench,與Letta v0.16.8(pgvector歸檔)進行對比。在三個角色平均測試中,Centri在過時事實處理上獲得滿分1.00,而Letta僅為0.67,複合得分1.00對0.93。
Centri擁有385個測試用例的測試套件,覆蓋核心、記憶圖、策展、ACP編碼迴圈、工具合同和歷史匯入。專案採用MIT許可證,其中OpenCode分支保留原上游MIT許可證。完整的文件和路線圖可在專案的docs/目錄下找到。