SQLite Local AI Memory について
SQLite Local AI Memoryは、ローカルに永続的なメモを残したいAIアシスタントや開発者向けの、プロセス内メモリエンジン兼MCPサーバーです。SQLiteストレージにキーワード・セマンティック検索、メモリ整理、事実の履歴管理を組み合わせています。
主な機能
- 01単一ファイルのローカルSQLiteストレージ
- 02キーワードとセマンティックのハイブリッド検索
- 03進行中のタスクと決定の記録
- 04メモリの整理と重複の統合
- 05事実の矛盾処理と履歴管理
- 065種類のMCPメモリツール
活用シーン
- 01チャットセッション間でプロジェクトの文脈を維持
- 02技術的な決定や過去のバグ修正を検索
- 03変更される事実とその履歴を追跡
- 04組み込みメモリライブラリを使ったエージェント開発
MCP 対応
save_fact、search_memory、get_current_state、get_fact_lineage、consolidateの5つのメモリツールをMCPクライアントに公開します。直接利用できるNode.jsライブラリも提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y sqlite-local-ai-memoryGEMINI_API_KEYシークレットGoogle Gemini API key for Out-of-the-Box cloud cognitive agents and embeddings (gemini-2.5-flash-lite & gemini-embedding-001).SQLITE_MEM_PATHOptional custom path to the SQLite database file (defaults to ~/.local-ai-memory/memoria.db).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🧠 SQLite Local AI Memory
60 秒で、AI アシスタントに本物の永続的な記憶を持たせましょう。
毎月のデータベース利用料も、Docker のセットアップも不要です。お使いのコンピューターに、プライベートなファイルを 1 つ置くだけです。
🛑 問題:AI はなぜ何度も忘れてしまうのでしょうか?
AI コーディングアシスタントやチャットボット(Claude Desktop、Cursor、Antigravity など)を使っているなら、こんなもどかしさをすでにご存じでしょう。
- 完全な健忘症: チャットを閉じたり、新しいウィンドウを開いたりした途端、AI はあなたのことや技術スタック、サーバーの IP アドレス、個人的な好みを忘れてしまいます。
- コピー&ペースト地獄: 同じコンテキストを何度も説明し直すか、巨大なテキストファイルを毎回のプロンプトに貼り付けなければなりません。
- 無駄な出費と遅いチャット: 膨大なチャット履歴を毎回のプロンプトに詰め込むと、トークン予算を使い果たし、実際に費用がかかるうえ、AI の動作が遅くなり、混乱しやすくなります。
✨ 解決策:1 つのファイルに収まるプライベートな脳
sqlite-local-ai-memory は、AI アシスタントに永続的で整理された脳を提供します。脳は、お使いのマシン上の単一ファイル(memoria.db)に安全に保存されます。
仕組み(簡単に説明すると):
- 📝 1. アクティブなメモ帳(今取り組んでいること):
目の前の作業、今日決めたこと、次の手順など、現在の関心事を記録します。翌日に新しいチャットを開くと、AI はすぐに前回の続きから把握できます。 - 📚 2. ナレッジ保管庫(めったに変わらない事実):
サーバー設定、好みのコーディングスタイル、家族内のルールなど、具体的な知識を保存します。何かが変わったとき(例:IP アドレスの変更)は、過去の監査記録を残しながら、現在の事実を更新します。 - 🌙 3. 夜間の整理/AutoDream(脳をすっきり保つ):
人間の脳が睡眠中に思考を整理するように、AI がアイドル状態のとき、未整理のメモを静かに見直し、重複を統合し、関連する事実をつなげて、すっきりした要約にまとめます。
⚡ 何が独自なのでしょうか?(「秘密の仕組み」)
生のテキストをブラックボックスに放り込むだけの単純なチャットログや汎用ベクトルデータベースとは異なり、このシステムは、AI が記憶を本当に理解できるようにする 6 つの高度な認知メカニズム を採用しています。
🌙 1. AutoDream エンジン(睡眠サイクルによる記憶の整理)
何千ものチャットメッセージが読めないほど積み上がるのを放置する代わりに、AutoDream はレム睡眠中の人間の脳のように機能します。
- ライブダッシュボード: 今日取り組んでいることの概要を常に最新の状態に保ちます。
- 永続的な知識: 重要な技術的決定を自動的に要約し、SQLite 内のコンパクトな事実として保存します。
- 未完了の作業も失いません: 問題が未解決のまま残った場合、AutoDream は
[UNRESOLVED_CASE]タグを付けて安全にアーカイブします。これにより、AI は過去の手がかりを失わず、数週間後にデバッグを再開できます。
🐣 2. 未解決ケースのインキュベーターと動的メモリウィンドウ
複雑なバグのトラブルシューティングに何日もかかる場合でも、進行中の調査は「インキュベーター」に安全に保管されます。AI が最終的にケースを統合するとき、最後のメッセージだけを読むのではありません。問題が始まった正確な時点まで、動的に履歴をさかのぼります。これにより、恒久的な修正を作成するために必要な過去のコンテキストを 100% AI に提供できます。
⚖️ 3. リアルタイム矛盾調停機能(AI の「時間感覚の欠如」を解消)
標準的なベクトルデータベースは、時間をまったく認識できません。AI に「サーバーの IP アドレスは .100 です」と伝え、2 週間後に「サーバーを .205 に移しました」と伝えた場合、通常のベクトル検索は両方を返し、AI は幻覚を起こします。このシステムのセマンティック調停機能は、状態の矛盾を即座に検知します。古い IP アドレスをアーカイブし、新しい IP アドレスをリアルタイムで有効なものとして設定します。
🚀 4. 100%埋め込み型ストレージ(データベースサーバー不要)
維持する Docker コンテナーはありません。Chroma のインストールや、pgvector を使った PostgreSQL の実行、Pinecone などのクラウドデータベースへの支払いも不要です。キーワードのインデックス作成からベクトル演算まで、すべてが 1 つのローカル SQLite ファイル内に収まります。アクティブなメモは 0.1 ms 未満、深い記憶は 1.5 ms 未満で取得できます。
🛡️ 5. 2層ノイズファイアウォール(雑談ブロッカー)
不要なノイズからデータベースと API の利用料金を守ります。
- 第1層(即時フィルター、0 ms): 何気ない挨拶(「こんにちは」、「ありがとう」、「いいですね」)を即座に破棄します。
- 第2層(スマート選別器、10 ms): 小型で高速なモデルを使い、より大きなモデルを呼び出す前に、ナレッジを含まない会話を除外します。
🔎 6. デュアルハイブリッド検索(完全一致と意味検索の組み合わせ)
2種類の検索を同時に並列実行します。
- 完全一致キーワード検索(FTS5): IP アドレス、変数名、エラーコードを 0.5 ms 未満で見つけます。
- セマンティックベクトル検索: まったく異なる言葉を使っていても、概念を見つけます。
逆順位スコアリングを使って両方の結果を組み合わせ、毎回、正確な回答を返します。
🛡️ 7. オフライン時のグレースフルフォールバック(クラッシュしません)
インターネット接続が切れたり、API キーなしで実行したりしても、システムがハングしたりクラッシュしたりすることはありません。ベアメタルモードへグレースフルにフォールバックするため、AI は引き続き事実を直接保存でき、高速なキーワード検索ですべてをローカルで検索できます。
メモ
機能低下に関する注意: システムは LLM なしでも安定して動作しますが、真価を発揮するインテリジェンス(AutoDream による統合、矛盾の調停、セマンティックベクトル検索)は、AI モデル(Google Gemini またはローカルの Ollama)に接続したときに利用できます。
🔍 透明性について:ローカルとクラウドの違い
AI メモリの動作について、100%誠実にお伝えします。
- データとストレージ:100%ローカルかつプライベートです。
すべてのメモリ、検索インデックス、メモは、ドライブ上の標準的な SQLite ファイル1つに保存されます。クラウドベクトルデータベースの料金(Pinecone、Qdrant、月額 SaaS 料金)は一切かかりません。 - AI 推論レイヤー(3つの動作モード):
メモを整理し、矛盾を検出し、要約を作成するには、システムに AI モデルが必要です。- 🟢 モード1:クラウド支援(推奨/デフォルト): 軽量な Google Gemini API を使用します。文字どおりわずかな料金で(数千件のメモでも月額 < $0.50)、完璧な JSON 形式と高度な推論を実現します。
- 🟡 モード2:Ollama による完全オフライン(プライベートなローカル AI): インターネットにデータを1バイトも送信せず、手元のハードウェアで完全オフライン実行したい場合、Ollama(
qwen2.5-coder+nomic-embed-text)ですぐに使えます。 - 🔴 モード3:LLM を使わない純粋なベアメタルモード(非推奨): API キーがなく、Ollama もインストールされていない場合、エンジンはクラッシュせず、SQLite FTS5 のキーワードストレージにグレースフルにフォールバックします。警告:このモードは理想的ではありません。 LLM がないと、インテリジェントなノイズフィルタリング、矛盾の調停、エンティティ抽出、AutoDream による統合が利用できません。インテリジェントな認知ブレインではなく、高速なキーワードデータベースとしてのみ動作します。
🚀 クイックスタート:シナリオを選択
| 機能 | シナリオ1:MCP サーバー(推奨) | シナリオ2:Node.js ライブラリを直接利用 |
|---|---|---|
| 最適な用途 | ユーザーの90%: Cursor、Claude Desktop、VS Code | カスタムエージェント、ボット、バックエンドを構築する開発者 |
| セットアップ時間 | 60秒(コーディング不要) | 5分(標準の npm install によるインポート) |
| 動作の仕組み | AI クライアントが stdio ツールを介してメモリと通信します | プロセス内でネイティブに実行し、サブミリ秒単位で呼び出します |
🌟 シナリオ1:MCP ツールとして使う(Cursor、Claude Desktop、VS Code)
1. MCP 設定に追加します(claude_desktop_config.json または .cursor/mcp.json):
{
"mcpServers": {
"sqlite-memory": {
"command": "npx",
"args": ["-y", "sqlite-local-ai-memory"],
"env": {
"GEMINI_API_KEY": "your-gemini-api-key"
}
}
}
}
(Ollama を使って完全オフラインで実行しますか? GEMINI_API_KEY を ORCHESTRATOR_MODEL=ollama/qwen2.5:1.5b と OLLAMA_HOST=http://localhost:11434 に置き換えてください!)
2. 秘訣:このプロンプトを .cursorrules または CLAUDE.md に追加します
真の自律的で永続的なインテリジェンスを実現するには、この指示を AI のルールに貼り付けてください。
# Persistent Memory Protocol You have access to the `sqlite-memory` MCP server. Follow this operating cycle: 1. 🌅 Session Start: On your very first turn, call `get_current_state` silently to load your active working dashboard and tasks. 2. 🔎 Memory Recall: Before answering that you don't recall a technical decision or bug, run `search_memory("keywords")`. 3. 🔨 Milestone Learning: When you solve a bug or make an architectural decision, call `save_fact` with Causal Syntax: `[TYPE: BUGFIX|ARCHITECTURE] [CAUSE: <symptom>] -> [DECISION: <fix>] -> [EFFECT: <impact>]` 4. 🌙 Session Wrap-up: When wrapping up or when the user says goodbye, call `consolidate` to synthesize the dashboard and prune resolved issues.
💻 シナリオ 2:Node.js / TypeScript ライブラリとして直接使用する
スタンドアロンのエージェント、CLI ツール、Discord/WhatsApp ボットを構築する開発者向けです。
npm install sqlite-local-ai-memory
import { MemoryEngine } from "sqlite-local-ai-memory";
const memory = new MemoryEngine({
dbPath: "./agent_memory.db",
userId: "developer_1"
});
// 1. Cold-start: Load active working state in < 0.1 ms
const dashboard = memory.getDashboard("developer_1");
// 2. Just-in-Time RAG: Search hybrid memory in < 1.5 ms
const hits = await memory.search("PostgreSQL port configuration");
// 3. Save atomic causal facts (anti-collision arbiter built-in)
await memory.saveFact("[BUGFIX] [CAUSE: Port conflict] -> [DECISION: Moved to 5433] -> [EFFECT: Resolved]");
// 4. Maintenance: Run AutoDream cognitive consolidation at close
const result = await memory.consolidate("developer_1", "BACKEND_PROJECT");
🛠️ AI が利用できる 5 つのシンプルなツール
MCP 経由で接続すると、AI アシスタントは以下の 5 つのコマンドを自動的に利用できるようになります。
| Command | What it does in plain words |
|---|---|
save_fact | 「PostgreSQL はポート 5432 で動作しています。」 重要な事実を自動で重複排除しながら、永続的に保存します。 |
search_memory | 「このプロジェクトはどうやってデプロイしますか?」 キーワード検索とセマンティック検索を組み合わせたハイブリッド検索で、2 ms 未満でメモリ保管庫を検索します。 |
get_current_state | 「何に取り組んでいましたか?」 アクティブなプロジェクトの共有ボードを読み取ります。(注:AI が初期ダッシュボードを統合できるよう、少なくとも一度 consolidate を実行する必要があります。) |
get_fact_lineage | 「このサーバーの IP は、これまでどう変わりましたか?」 事実の完全な履歴監査記録と、過去に置き換えられたバージョンを調べます。 |
consolidate | 「メモを整理して、状況を把握してください。」 最近のやり取りを確認し、重複を統合し、解決済みのタスクをアーカイブして、アクティブな currentState ダッシュボードを作成します。 |
🔬 詳しい技術仕様が必要ですか?
Int8 スカラー量子化、Reciprocal Rank Fusion(RRF)、ベンチマークのテレメトリ、データベースの PRAGMA に関する詳細な数式については、完全版の技術アーキテクチャリファレンス(README_TECHNICAL.md)をご覧ください。
💬 よくある質問(FAQ)
Q: ファイルはどこに保存されますか?
A: お使いのコンピューターの ~/.local-ai-memory/memoria.db に保存されます。いつでもバックアップ、コピー、削除できます。標準的な SQLite ファイルです。
Q: Docker や複雑なデータベースソフトウェアは必要ですか?
A: いいえ!Docker コンテナーもデータベースサーバーも必要ありません。Node.js 内で直接動作します。
Q: プライバシーは安全ですか?
A: はい。データベースがお使いのコンピューターから外部に出ることはありません。
📄 ライセンス
MIT ライセンス — 誰でも無料で利用できるオープンソースです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。