oleksiijko/pmb
Local-first persistent memory for AI coding agents (Claude Code, Cursor, Codex) over MCP. Decisions, lessons and facts live in one SQLite file on your disk. Offline, multilingual.
PMB – AI コーディングエージェントのためのローカルファーストメモリ
概要 – PMB(発音は「p-m-b」)は、コードを記述する LLM エージェント(Claude Code、Cursor、Codex、Gemini など)に、完全にあなたのマシン上に存在する永続的で検索可能なメモリを提供する Python パッケージです。メモリは SQLite データベース(信頼できる情報源)に保存され、LanceDB にオプションのベクトルインデックスが作成され、Model-Context-Protocol (MCP) を通じてエージェントに公開されます。
なぜ重要か – 今日、多くの AI 支援コーディングツールは、プロセスが再起動するとすべてを忘れてしまい、決定事項、教訓、プロジェクトのコンテキストを繰り返すことを余儀なくされます。PMB はこれらの事実を自動的にキャプチャしてインデックスを作成し、モデルが応答を生成する前に、関連する部分をエージェントに注入し直します。すべてクラウド呼び出しや API キーなしで行われます。
主な機能(README に記載の通り)
| 機能 | 得られるもの |
|---|---|
| ローカルファーストストレージ | すべてのイベント、事実、および埋め込みは ~/.pmb/<workspace>/ 内の SQLite ファイルに書き込まれます。読み取りにネットワークトラフィックは不要です。書き込みはサブミリ秒です。 |
| ハイブリッドリコール | クエリは、BM25 語彙検索、密なベクトル類似度、およびグラフベースの拡散(Reciprocal-Rank-Fusion)の融合によって回答されます。典型的なウォームパスのレイテンシ:~35 ms (p50) および ~110 ms (p95)。 |
| MCP ネイティブ統合 | 小さな MCP サーバーがエージェントの子として実行されます。標準の prepare(message) 呼び出しは、構造化されたペイロード(project_context、lessons、recent_activity、open_goals、active_arcs)を返します。 |
| 自動インジェスト | pmb index project . はコードベースをスキャンし、シンボル、インポート、およびファイルの意図を抽出します。pmb index pdf … は PDF を抽出してチャンク化します。pmb track … はコミットの意図とモジュールの目的を記録します。 |
| アンビエント(自動書き込み)メモリ | フックはエージェントのツール使用(編集、テスト、コミット)を観察し、エージェントが record_* ツールの呼び出しを忘れた場合に軽量なジャーナルエントリを書き込みます。 |
| ダッシュボード UI | ローカル Web UI(pmb dashboard)は、メモリをエンティティグラフ、タイムライン、教訓の影響、重複、パフォーマンス統計として視覚化します。 |
| 多言語埋め込み | paraphrase-multilingual-MiniLM-L12-v2(50 以上の言語をカバー)を使用しているため、ロシア語、フランス語などのクエリで英語の事実を取得できます。 |
| ゼロコンフィグ、ゼロコスト | クラウドアカウント、API キー、サブスクリプションは不要です。すべてのデータはディスク上に残ります。Markdown/JSON にエクスポートできます。 |
| プライバシーとエクスポート | シークレットは書き込み時に編集されます。ワークスペース全体をコピー、Dropbox に同期、またはバージョン管理できます。 |
| 拡張可能な設定 | 105 の調整可能なノブ。デフォルトで 25 が公開されています(pmb config list)。高度なフラグは --pro の背後に隠されています。 |
仕組み(高レベルのフロー)
- セットアップ –
pip install pmb-ai && pmb setupがターゲットエージェントを検出し、MCP フックをインストールします。 - インジェスト – ファイル、PDF、git コミット、および明示的な
record_*呼び出しが SQLite に書き込まれます。埋め込みはキューに入れられ、LanceDB に非同期で挿入されます。 - リコール – エージェントが
prepare(message)を送信すると、PMB はハイブリッド検索(BM25 + ベクトル + グラフ拡散)を実行し、最も関連性の高いエンティティ、教訓、最近のアクションなどを返します。 - アンビエント書き込み – 各ツール使用後、フックはアクションをログに記録します。「stop」フックは教訓のフォロースルーをスコアリングし、欠落している
record_*エントリを合成できます。 - ダッシュボード – UI はエンティティとアークのライブグラフ、イベントのタイムライン、および診断(どの教訓が実際に結果を変えたか、ツールごとのレイテンシ、重複検出)を表示します。
クイックスタート(README から)
pip install pmb-ai # install the package
pmb setup # wire the chosen agent (Claude Code, Cursor, …)
pmb warmup # preload the ~450 MB embedder
# restart the agent – memory is now active
pmb stats # see counts of stored items
pmb recall "auth decision" # ad-hoc terminal search
pmb dashboard # open the local UI at http://127.0.0.1:8765
すべてのコマンドは、pmb-ai エイリアス(npm)経由、または Python モジュールとしても使用できます。
典型的なユースケース
- 長期間実行されるコードベース – 再説明なしで、多くのセッションにわたって決定事項、アーキテクチャルール、バグ修正の根拠を保持します。
- クロスエージェントの継続性 – Claude Code から Cursor に切り替えても、同じ SQLite ワークスペースが両方にメモリを提供します。
- リサーチヘビーなプロジェクト – PDF にインデックスを付け、コーディング中に即座に関連する箇所を取得します。
- チームレベルの共有コンテキスト – オプションの HTTP モードにより、複数の開発者がエージェントを共通のワークスペースに向けることができます(認証保護)。
- 教訓の影響分析 – ダッシュボードは、エージェントが実際にどの「ルール」に従ったかを示し、死んだりノイズの多い教訓を剪定するのに役立ちます。
制限事項と考慮事項(記載または暗示されている通り)
- 読み取りパスはオフラインのみ – リコール時に LLM は呼び出されません。品質は埋め込みモデルとハイブリッドランク付けに依存します。
- 埋め込みモデルのサイズ – デフォルトの多言語 MiniLM モデル(~450 MB)を 1 回ロードする必要があります(
pmb warmup)。 - オプションの LLM ベースの機能 – 一部のオプションコマンド(
pmb consolidate、自動書き込み合成)はローカルの Ollama/Claude/OpenAI モデルを呼び出すことができますが、デフォルトでは無効になっています。 - ローカルリソースの使用 – SQLite + LanceDB インデックスはディスク容量を占有します。大規模なコードベースや多数の PDF はワークスペースを大きくします。
- エージェント固有のフック – 完全なメリットを得るには、エージェントが MCP フックをサポートしている必要があります。README にはサポートされているホスト(Claude Code、Cursor、Codex など)がリストされています。
ライセンスとコミュニティ
- Apache 2.0 – 自由に使用、変更、再配布できます。
- MCP 登録 – Model-Context-Protocol レジストリにリストされており、他の MCP 対応ツールからの発見を可能にします。
- ドキュメントと CI – オンラインドキュメントは
docs.pmbai.devにあり、CI バッジはプッシュごとにテストがパスすることを示しています。
結論
PMB は、AI 支援開発者にとっての具体的なペインポイントである、永続的で低レイテンシなメモリの欠如を解決する、本物のオープンソースプロジェクトです。すべてをローカルの SQLite に保存し、高速なハイブリッド検索を提供し、MCP を介して人気のあるコーディングエージェントに自動的に接続することで、クラウド依存なしにセッション間でプロジェクトのコンテキスト、教訓、決定事項を保持できます。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- Dispatch