Engrim 1.3.0:適用於多模型 AI CLI 的本地優先 SQLite 記憶引擎

簡要說明

Engrim 1.3.0 為 AI 開發助手(Google Antigravity、Claude Code、Cursor、Windsurf)提供了一個以 SQLite 為後端的本地優先情景記憶層,支援無縫切換模型與持續保留上下文,同時確保所有資料離線且私密。


核心價值主張

Engrim 以 4 KB 精選的工作記憶 取代日益嚴重的「注意力稀釋」問題(大型 token 窗口變得雜亂且昂貴),該記憶儲存在 SQLite 中。主要優勢包括:

  • 廠商無關的連續性 – 在專案中從 Gemini 3.8 切換至 Claude 3.7 Sonnet 再到 GPT‑4o,仍能保留決策、限制與架構,無需重新解釋。
  • 明確的儲存按鈕語意 – 開發者可清除代理的會話(/clear),而 Engrim 會自動重新載入精選的記憶套件。
  • 混合式檢索 – 結合 FTS5 BM25 語彙搜尋與靜態 model2vec 嵌入,透過零延遲的互惠排序融合引擎實現高效檢索。

「為什麼要在每回合都為 200,000 個 token 的遺忘雜訊付費?模型只是可棄的工具;你的專案決策卻不是。」 – Engrim README


實證證據(105 會話案例研究)

在一個 50 k 行的演算法交易程式碼庫上進行的生產測試顯示:

  • 153 000 個 token 的工作被壓縮至 < 1 000 個 token 的活躍記憶(約 99 % 減少)。
  • 在切換 Antigravity、Claude Code 與 Cursor 後,186 個單元測試 無一出現回歸錯誤。
  • 在專案中間切換代理時,未觀察到記憶遺忘現象。

作者指出,測試涉及連續會話,但 Hacker News 上的討論提出了關於基準可比性與非正常結束處理的疑問。


架構概覽

代理(Antigravity、Claude Code、Cursor/Windsurf) → 适配器與鉤子 →
   來源追蹤引擎(origin_agent 追蹤) →
   混合式檢索(bm25 + 向量) →
   SQLite 儲存空間(~/.engrim/memory.db)
  • Memories table – 儲存精選的記錄(決策、事實、回饋)。
  • FTS5 – 支援 Porter 演算法的全文搜尋與觸發器。
  • 向量欄位 – 用於語意回憶的靜態 model2vec 嵌入。
  • 飛行紀錄器日誌 – 原始的逐回合對話記錄,供審計與檢閱。

多代理環境快速入門

pip install engrim
engrim setup            # 自動偵測 Antigravity、Claude、Cursor、Windsurf
# 或逐代理明確設定
engrim setup --agy      # Antigravity 鉤子
engrim setup --claude   # Claude Code 鉤子
engrim setup --cursor   # Cursor MCP 註冊
engrim setup --all      # 設定所有支援的代理
  • 使用 --dry-run 可預覽檔案變更而不寫入。

來源追蹤

每個記憶項目皆記錄 origin_agent 欄位(antigravityclaude-codecursorcliuser)。engrim list 的範例輸出如下:

[DECISION]
- #961 (via Antigravity): 高波動性下反轉停損矩陣
- #942 (via Claude Code): 將主要資料庫從 MongoDB 改為 PostgreSQL
- #910 (via Cursor): 標準化使用 Pydantic v2 資料結構

現有的資料庫會自動遷移,透過 ALTER TABLE 新增來源欄位。


模型上下文協定(MCP)伺服器

執行一個零依賴的 JSON‑RPC 2.0 標準輸入輸出伺服器:

engrim serve --mcp   # 或僅 `engrim mcp`

伺服器保留 stdout 用於 JSON‑RPC 訊息,並將診斷資訊發送到 stderr

核心 MCP 方法

方法 簽名 目的
engrim_recall (query: str, project: str = "auto", k: int = 5, type: str = None) 混合關鍵字 + 語意搜尋。
engrim_add (type: str, summary: str, detail: str = None, tags: list[str] = []) 持久化記憶記錄。
engrim_context (project: str = "auto", budget: int = 4000) 回傳預算限制的記憶套件,供會話啟動使用。
engrim_review (project: str = "auto") 在清除前掃描日誌,尋找未捕捉的決策。

CLI 參考(選用指令)

指令 範例 說明
engrim add engrim add -t decision -s "..." 插入記憶記錄(類型:decision、fact、feedback、state、user、reference)。
engrim recall engrim recall -q "database" 為目前專案執行混合排序回憶。
engrim context engrim context -b 4000 取得優先順序排序、字元預算限制的啟動套件。
engrim hook engrim hook --agent agy --event boot 執行 Antigravity 或 Claude Code 的生命週期鉤子。
engrim serve engrim serve --mcp 啟動 MCP 伺服器以整合代理。
engrim review engrim review 在清除前確認所有近期決策均已記錄。
engrim list engrim list -k 20 顯示目前專案的近期記憶。

「繼續如清空」工作流程

  1. 捕捉 – 每當做出決策或規則時,使用 engrim add(或 MCP 的 engrim_add)。
  2. 設定恢復指標 – 新增標記為 resume-pointer 的記錄,描述下一個立即任務;最新指標會以 [▶ RESUME HERE] 的形式出現在下次啟動時。
  3. 審查 – 執行 engrim review,確保無重要決策遺漏。
  4. 清空 – 在代理中輸入 /clear;Engrim 會在下一個提示中自動注入精選的記憶套件。

安全與隱私保證

  • 100 % 本地且離線 – 所有資料儲存在 ~/.engrim/memory.db;無遙測或雲端同步。
  • 檔案權限 – SQLite 檔案以 0600(僅所有者)權限建立。
  • Git 安全性*.db 預設被 git 忽略,防止意外提交。
  • 可選嵌入 – 設定 ENGRIM_EMBED=off 可僅使用語彙搜尋,無需 model2vec 套件。

社群反饋(Hacker News 精選)

@thih9: 「不帶參數執行 engrim setup……它會附帶解除安裝腳本嗎?」 – 使用者要求提供清理工具;目前倉儲尚未提供此功能。

@aidiveyt: 「停止鉤子也能阻斷回合:以訊息退出 2,會話會持續運作直到檢查通過。」 – 表示鉤子失敗會正確傳播,確保會話穩定性。

@corv: 「我正在使用 gbrain 作為廠商無關的記憶,但很欣賞 SQLite 實際上的輕量級表現,所以這很有趣!」 – 強調 SQLite 相較於其他記憶後端的極小佔用優勢。

@dsemakin: 「實際上是什麼觸發記憶寫入?要靠我記得執行 engrim add 嗎?」 – 明確指出記憶建立是明確的;開發者必須主動呼叫 engrim add(或 MCP 的 engrim_add)來記錄事實。

@flippant: 「我一直在使用另一個記憶外掛……決策摘要看起來真的很棒——雖然代理/模型資訊對我來說可能沒用,因為我從不讓代理自主提交程式碼。」 – 對現有工具的正面比較,指出來源資訊對某些工作流程可能是可選的。

@esafak: 「能否擴展說明一下 105 會話的案例研究?……目前尚無生命週期管理或衝突解決機制,且模型自行決定何時使用它。」 – 呼籲進行更嚴謹的基準測試並釐清衝突處理方式。

@quietraster: 「當兩個代理寫入同一個 SQLite 儲存區時,你如何處理衝突?」 – 目前設計依賴 SQLite 的交易保證;並發寫入會序列化,但尚未實作更高層級的衝突解決機制。


局限與開放問題

  • 基準測試 – 發布的案例研究缺乏與競爭性記憶外掛(例如 ctx.rs)的直接比較;獨立基準測試將有助於量化 99 % token 減少的聲稱。
  • 衝突解決 – 雖然 SQLite 可防止損壞,但倉儲尚未提供 reconciling 多個代理的分歧編輯策略。
  • 解除安裝支援 – 無內建腳本用於移除鉤子或刪除記憶資料庫;使用者必須手動清理。
  • 跨裝置同步 – 此工具刻意採用本地優先設計;在機器間同步 SQLite 檔案需外部解決方案(例如 rsync、雲端掛載磁碟)。

授權條款

Engrim 以 MIT 授權條款發布(© 2026 Tim Gordon)。

Sources

相關

  • 專案
  • 專案
  • Dispatch
  • 專案
  • 專案