Engrim 1.3.0: マルチモデルAI CLI向けローカル優先のSQLiteメモリエンジン

TL;DR

Engrim 1.3.0は、AIコーディングアシスタント(Google Antigravity、Claude Code、Cursor、Windsurf)向けに、ローカル優先のSQLiteバックエンドによるエピソード記憶層を提供し、すべてのデータをオフラインかつプライベートに保ちながら、モデルのシームレスな切り替えとコンテキストの永続化を可能にします。


コア価値提案

Engrimは、大きなトークン窓がノイズが多く高コストになるという「注意の希薄化」問題を、4 KBの選別された作業メモリ(SQLiteに格納)で置き換えます。主な利点は以下の通りです:

  • ベンダーアーグノスティックな継続性 – プロジェクト途中でGemini 3.8からClaude 3.7 Sonnet、GPT‑4oに切り替えても、決定事項、制約、アーキテクチャを再説明せずに保持できます。
  • 明示的な保存ボタンの意味 – 開発者はエージェントのセッションを (/clear) クリアできますが、Engrimは自動的に選別されたメモリパックを再読み込みします。
  • ハイブリッド検索 – FTS5 BM25の語彙検索と静的 model2vec エンベッディングを、ゼロレイテンシの相互ランク融合エンジンで組み合わせます。

「毎ターン、忘れ去られたノイズの200,000トークンを支払うのはなぜですか?モデルは使い捨てのツールですが、プロジェクトの決定はそうではありません。」 – Engrim README


実証的証拠(105セッションケーススタディ)

50 k行のアルゴリズム取引コードベースでの本番テストでは、以下の結果が得られました:

  • 153 000トークンの作業が、1 000トークン未満のアクティブメモリに圧縮されました(約99 %削減)。
  • Antigravity、Claude Code、Cursor間の切り替え後、186個のユニットテストでゼロのリグレッションが発生しました。
  • プロジェクト途中でエージェントを交換しても、コンテキストの忘却は観察されませんでした。

著者は、テストが継続的なセッションを含んでいたと指摘していますが、Hacker Newsでの議論ではベンチマークの比較可能性や不正な終了の扱いについて懸念が提起されています。


アーキテクチャ概要

エージェント(Antigravity、Claude Code、Cursor/Windsurf) → アダプタとフック →
   プロヴェナンスエンジン(origin_agentの追跡) →
   ハイブリッド検索(bm25 + ベクトル) →
   SQLiteストア(~/.engrim/memory.db)
  • Memoriesテーブル – 選別された記録(決定事項、事実、フィードバック)を格納。
  • FTS5 – ポーターステミングとトリガーを備えた全文検索。
  • ベクトルカラム – 意味的再検索用の静的 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): 主要DBをMongoDBからPostgreSQLに変更
- #910 (via Cursor): Pydantic v2スキーマを標準化

既存のデータベースは ALTER TABLE を使って自動的に移行され、プロヴェナンスカラムが追加されます。


モデルコンテキストプロトコル(MCP)サーバー

ゼロ依存のJSON‑RPC 2.0 stdioサーバーを実行します:

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: 「ストップフックはターンをブロックすることもできます:メッセージ付きでexit 2を返すと、チェックが通るまでセッションは動作し続けます。」 – フックの失敗が正しく伝播されることを示しており、セッションの安定性が保たれていることを意味します。

@corv: 「私はgbrainをプロバイダーアーグノスティックなメモリとして使っていますが、実際の軽量さに驚いており、これはとても興味深いです!」 – 他のメモリバックエンドと比較して、SQLiteの最小限のフットプリントの魅力を強調しています。

@dsemakin: 「実際には、メモリがいつ書き込まれるのですか?engrim addを覚えておく必要があるのですか?」 – メモリの作成は明示的であることを明確にしています。開発者はengrim add(またはMCPのengrim_add)を呼び出して事実を記録する必要があります。

@flippant: 「私は別のメモリプラグインを使っています…決定要約はとても素晴らしいです – ただしエージェント/モデル情報はおそらく私には役立ちません。なぜなら、エージェントがコードを自動的にコミットさせないからです。」 – 既存ツールとのポジティブな比較であり、プロヴェナンスメタデータが一部のワークフローではオプションである可能性を指摘しています。

@esafak: 「105セッションケーススタディについて詳しく説明していただけますか?…まだライフサイクル管理や競合解決は実装されておらず、モデルがいつ使うかを判断する作業を行っています。」 – より厳密なベンチマークと競合処理の明確化を求める声です。

@quietraster: 「2つのエージェントが同じSQLiteストアに書き込む場合、どう競合を処理しますか?」 – 現在の設計ではSQLiteのトランザクション保証に依存しています。同時書き込みはシリアライズされますが、上位レベルの競合解決はまだ実装されていません。


制限事項と未解決の問い

  • ベンチマーク – 公開されたケーススタディは、競合するメモリプラグイン(例:ctx.rs)との直接比較を欠いています。独立したベンチマークにより、99 %のトークン削減の主張を定量的に検証できるでしょう。
  • 競合解決 – SQLiteが破損を防ぐ一方、複数エージェントによる異なる編集を統合する戦略はまだ提供されていません。
  • アンインストールサポート – フックの削除やメモリデータベースの削除をサポートする組み込みスクリプトはありません。ユーザーは手動でクリーンアップする必要があります。
  • クロスデバイス同期 – このツールは意図的にローカル優先です。SQLiteファイルを複数マシン間で同期するには、外部ソリューション(例:rsync、クラウドマウントドライブ)が必要です。

ライセンス

EngrimはMITライセンス(© 2026 Tim Gordon)の下でリリースされています。

Sources

関連

  • プロジェクト
  • プロジェクト
  • Dispatch
  • プロジェクト
  • プロジェクト