BHGBrain 一週前以開源 MCP 記憶伺服器之姿推出:為 AI 代理打造的共享向量大腦,建於 SQLite 與 Qdrant 之上,具備語意回顧、自動去重與混合搜尋。初次發行涵蓋核心架構:雙存放區寫入管線、記憶類型、命名空間、集合、企業驗證與多代理情境。

此次更新涵蓋自那之後推出的內容:完整的記憶生命週期系統、顯著改善的搜尋、營運安全功能與多語文件。這些不是小追加,分層保留系統尤其將原本扁平的儲存取代為智慧生命週期管理,改變了代理隨時間與記憶互動的方式。


記憶生命週期:層級、滑動視窗與自動升級

分層保留(T0–T3)

BHGBrain 中的每筆記憶現在會在寫入時被指派保留層級。四個層級涵蓋從永久參考知識到短暫工作上下文的完整光譜:

層級標籤TTL典型內容
T0基礎永不過期架構參考、合規要求、公司政策
T1機構性1 年未存取設計決策、API 合約、runbook、編碼標準
T2運作性90 天未存取專案狀態、sprint 結果、技術調查
T3短暫30 天未存取故障單、電子郵件摘要、除錯對話

層級指派遵循優先順序鏈:明確的呼叫端 retention_tier 優先;否則類別一律為 T0;接著套用基於來源的啟發法(程序性代理記憶 → T1,情節 → T2);然後在提取管線啟動時由 LLM 分類;最後若無其他符合則預設為 T2。

T0 記憶永不過期。它們也排除於所有清理工作之外,以完整內容存於 SQLite 以便在向量存放區需重建時復原,並在混合搜尋結果中獲得 +0.1 分數加成。

滑動視窗 TTL

TTL 是基於存取的,不是基於建立日期的。每次記憶被回顧或搜尋時,其到期時鐘從那一刻重設為完整 TTL。一筆 28 天前建立的 T3 記憶今天被回顧,就延長至從現在起 30 天。

這意味記憶衰減由實際使用驅動。你的代理主動引用的記憶保持存活。真正停止使用的記憶會自然衰減,無需手動管理。你不必事先猜測哪些記憶長期重要。

自動升級

任何在其 TTL 窗口內被存取 5 次以上的 T2 或 T3 記憶會自動升級一層,T3 升 T2、T2 升 T1。若運作知識持續證明有用,系統會認知並給予更持久儲存,無需你介入。

結合滑動視窗 TTL,這意味保留系統會適應實際代理行為,而非要求事先分類完美無缺。


搜尋改善

混合 RRF 搜尋

搜尋引擎現使用 Reciprocal Rank Fusion(RRF) 合併兩條獨立檢索路徑的結果:

  • 語意向量搜尋 — 對 Qdrant 嵌入的餘弦相似度(預設 70% 權重)
  • 全文 BM25 搜尋 — SQLite 中的 FTS5 索引(預設 30% 權重)

RRF 的運作方式是先將各系統的結果獨立排名,再依各結果在兩份清單中的位置計算合併分數。一筆在語意排第 3、全文排第 8 的記憶,分數會優於在語意排第 1、全文未上榜的記憶。

{
  "tool": "bhgbrain.search",
  "params": {
    "query": "authentication architecture decisions",
    "mode": "hybrid",
    "limit": 10
  }
}

提供三種搜尋模式:semanticfulltexthybrid。若你的工作負載偏精確匹配或純語意回顧,權重可在 config.json 中調整。

recall 工具(不同於 search)針對對話開始的上下文注入最佳化,使用語意搜尋加層級加成並套用最低分數閾值。search 是通用工具,支援完整過濾與模式。

改良的語意去重

去重現會在儲存新記憶前跑兩階段:

  1. SHA-256 校驗和匹配 — 內容在雜湊前先正規化(摺疊空白、轉小寫、移除標點)。格式微差但功能相同的內容會在此被捕捉,無需計算任何嵌入。

  2. 餘弦相似度閾值 — 新記憶的嵌入與既有記憶比較。基線閾值為 0.92,並有依層級調整的閾值:T0 與 T1 記憶用較嚴格閾值(較難對持久知識去重),T3 則用較寬鬆閾值(短暫內容更積極去重)。

當偵測到重複時,傳入記憶會合併至既有記錄,更新存取時間、合併標籤並保留較高保留層級,而非建立第二筆條目。向量空間保持乾淨。

重要性評分

記憶現帶有 importance 欄位(0.0–1.0,預設 0.5),影響搜尋結果排名。較高重要性的記憶在回顧結果中獲得分數加成,使關鍵知識更突出,無需仰賴精確查詢匹配。

儲存記憶時可明確設定重要性:

{
  "tool": "bhgbrain.remember",
  "params": {
    "content": "All database writes must go through the repository layer. No direct ORM calls in service code.",
    "type": "procedural",
    "retention_tier": "T1",
    "importance": 0.9,
    "category": "coding-standards"
  }
}

營運安全

容量預算

每個層級現有每命名空間的記憶上限:

層級預設上限
T0無上限
T110 萬筆記憶
T220 萬筆記憶
T320 萬筆記憶

當層級接近上限時,/health 端點會回報。上限可在 config.json 中調整。這可防止高量代理工作負載在 T2/T3 無限增長,擠壓 T0/T1 知識在向量空間中的位置。

預到期警告

任一記憶到期前 7 天,會在元資料存放區中被標記。代理與操作員可查詢 health 端點或用 CLI 列出接近到期的記憶:

bhgbrain list --expiring-within 7d

此窗口給你時間介入,手動升級記憶、重設其 TTL,或判斷它是否真該封存。

先封存後刪除

到期記憶絕不直接刪除。它們會在從活躍記憶存放區與 Qdrant 移除前,先移至 SQLite 的 archive 表。封存可透過 CLI 查詢,並保留完整內容、元資料與存取歷史。

若記憶被誤封存,或看似短暫的內容其實很重要,你可還原它。沒有任何東西會在無明確刪除下永久遺失。

原子寫入與延遲刷新

隨保留系統一同推出的兩項效能與可靠性改善:

原子寫入 — 所有 SQLite 磁碟 I/O 使用先寫暫存再重新命名的模式。磁碟上的資料庫檔案絕不會處於部分寫入狀態。若行程在寫入中崩潰,會保留前一個有效狀態。

延遲刷新 — 存取元資料更新(最後存取時間戳、用於自動升級的存取計數)會在記憶體中批次累積最多 5 秒再刷新至磁碟。在讀取密集路徑上,代理在對話開始做大規模上下文注入,這消除了每次回顧的資料庫寫入,對 TTL 準確性無實質影響。


類別:持久策略欄位

類別是命名空間中每個代理都應能一致存取的結構化參考內容的命名儲存欄位。不同於一般記憶,類別不論層級在所有清理週期中存活、無 TTL,並以可預測的欄位格式注入上下文。

使用情境包括架構決策記錄、編碼標準、安全策略與運作規則:

{
  "tool": "bhgbrain.category",
  "params": {
    "action": "set",
    "name": "database-access-policy",
    "slot": "coding-standards",
    "content": "All database access must use the repository pattern. Direct ORM calls in service layer are not permitted. Repositories must return domain objects, not ORM entities."
  }
}

類別可個別取回或列為一群。它們不同於 T0 記憶之處在於以鍵值策略欄位結構化,而非向量索引的語意記憶,它們不經過去重或嵌入管線。


多語文件

完整 README 現以五種語言發布:

  • 英文(README.md
  • 簡體中文(README.zh-CN.md
  • 德文(README.de.md
  • 法文(README.fr.md
  • 西班牙文(README.es.md

這些是完整翻譯,非機翻草稿,架構圖、設定參考、CLI 指令與 MCP 工具參數在每種語言中皆涵蓋。


下一步

分層保留與混合搜尋系統是後續版本中幾項功能的基礎:透過提取 LLM 管線的自動層級分類(目前為手動或啟發法驅動)、多租戶情境的跨命名空間記憶聯邦,以及記憶健康監控儀表板。

儲存庫中的 ROADMAP.md 追蹤已規劃與進行中的項目。


BHGBrain 為開源、MIT 授權,可於 github.com/Big-Hat-Group-Inc/BHGBrain 取得。若你在生產環境運行 AI 代理並困於上下文稅,代理重新發現先前看過的狀態、每次對話重新解釋架構、決策在運行間流失,這正是它設計來解決的問題。

加顆星、提 issue、送 PR。它見到的生產工作負載越多,層級分類啟發法就越好。


Kevin Kaminski 是 Big Hat Group 的負責人,專注於企業 AI 基礎架構、Microsoft 365 與 Windows 365。他為在工作中運行 AI 代理的團隊打造開源工具。