SMRITI Memory について
SMRITI Memoryは、AIエージェント、マルチエージェントシステム、MCPクライアント向けの長期記憶エンジンです。対話を即時に記録し、非同期で意味グラフに整理しながら、矛盾の処理や記憶の減衰を行います。
主な機能
- 01エピソード記憶の即時取り込み
- 02非同期のグラフ統合
- 03意味検索とグラフ検索による想起
- 04プライベートメモリルーム
- 05ワーキングメモリのコンテキスト注入
- 06グラフの可視化とObsidian同期
活用シーン
- 01コーディングエージェント間でプロジェクト情報を共有
- 02長期的な会話で有用な情報を保持
- 03授業資料をオフラインの学生向けQ&A用にパッケージ化
- 04選択した記憶をチーム同期から除外
MCP 対応
SMRITIはMCPサーバーとして動作し、記憶の記録、想起、管理、統合を行う19個のツールとAMP v1.0エイリアスを提供します。MCPクライアントは現在のワーキングメモリを取得し、グラフUIを開くこともできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
SMRITI Memcore
LLM エージェント、マルチエージェントフレームワーク、MCP クライアント向けの、エンタープライズグレードでプライバシーを最優先した長期記憶(LTM)エンジンです。
インタラクティブなセマンティック・パレス・グラフブラウザー(smriti ui) — カテゴリールームのハブクラスタリング、ニューラルシナプスの粒子フロー、リアルタイムのデュアルインスペクター。高解像度版の動画を見る
SMRITI とは?
SMRITI は、AI エージェントに永続的で適応的な想起機能を提供し、リアルタイムの実行ループを妨げないように設計された、高性能で神経科学に着想を得た長期記憶レイヤーです。
人間の二重過程理論に着想を得た SMRITI は、記憶処理を次のように分割します。
- システム 1(即時ヒューリスティクス):生のやり取りを追記専用のエピソードバッファーにミリ秒単位で取り込みます。処理は分離されているため、他の処理を妨げません。
- システム 2(非同期の統合):LLM を活用したバックグラウンド処理で、ナレッジグラフを抽出し、矛盾を解決し、スキルを特定して、弱い記憶を減衰させます。
SMRITI と単純な RAG・ベクトルデータベースの比較
| 特徴 | 単純な RAG/ベクトルデータベース | SMRITI Memory Engine |
|---|---|---|
| レイテンシー | コンテキストサイズに比例して増大し、エージェントのループをブロックします | 5 ミリ秒未満で取り込み(システム 1)。システム 2 は非同期です |
| コンテキストウィンドウ | 生のログを詰め込むため、プロンプトが肥大化し、注意が散漫になります | **ミラーの法則(7 ± 2 スロット)**に基づき、容量を制限したワーキングメモリー |
| データの変化 | 埋め込みは静的で、矛盾や修正への対応が困難です | 競合の自動解決、抽象化、時間経過による減衰 |
| 関係性 | フラットなベクトル検索で、エンティティ間のリンクという概念がありません | 構造化されたルーム/トピックの関連を示すセマンティック・パレス・グラフ |
| プライバシーと同期 | ストレージは一律で、名前空間のルーティングが複雑です | プライベートルームとprivate=Trueタグにより、ユーザーごとの同期を標準で分離します |
主な機能
- デュアルプロセスのパフォーマンス:リアルタイムループをブロックしません。すぐに書き込み、アイドル時に分析します。
- ペルソナの宮殿とオンデマンドハブ:歴史上の人物(例:Albert Einstein、Isaac Newton)を再現した、あらかじめ厳選された認知記憶の宮殿をダウンロードし、その人物らしい思考モデルで対話できます。
- プライバシー優先(プライベートルーム):共有/チーム全体の同期からメモリが自動的に除外される、ローカルなセマンティックルームを作成できます。
- Model Context Protocol(MCP):Claude Code、Claude Desktop、Gemini Antigravity、Codex とネイティブに統合できる MCP サーバーです。
- AMP v1.0 仕様準拠:Agent Memory Protocol に準拠するあらゆるエージェントフレームワークと、ドロップインで互換性があります。
- ビジュアルグラフエクスプローラー:Prometheus メトリクス監視機能を備えた、D3.js ベースのシンプルな可視化インターフェースです。
- Obsidian Vault 連携:エージェントのメモリグラフを Obsidian Vault に自動同期し、人間が整理できるようにします。
- フレームワークに依存しない設計:LangChain、LlamaIndex、CrewAI、AutoGen とネイティブに統合できます。
コアアーキテクチャ
┌─────────────────────────────────┐
│ Asynchronous Consolidation │
│ (8 Background Processes) │
│ • Chunking • Cross-Ref. │
│ • Conflict Res. • Skill Ext. │
│ • Forgetting • Spaced Rep. │
│ • Reflection • Defragment. │
└────────────────┬────────────────┘
│ background
┌──────────┐ ┌──────────┐ ┌───────────▼─────────┐ ┌──────────┐
│ Input │──▶│ Attention │──▶│ Episode Buffer │──▶│ Semantic │
│ Text │ │ Gate │ │ (append-only log) │ │ Palace │
│ └───────┘ │ (salience │ └─────────────────────┘ │ Graph │
│ │ filter) │ │ G=(V,E) │
└──────────┘ └──────────┘ └────┬─────┘
│
┌──────────┐ ┌──────────┐ ┌───────────────────┐ │
│ Query │──▶│ Retrieval│──▶│ Working Memory │◀──────────┘
│ │ │ Engine │ │ (7 ± 2 slots) │
└──────────┘ │ Q(v) = │ └───────────────────┘
│ β₁cos + │
│ β₂decay+ │ ┌───────────────────┐
│ β₃freq + │──▶│ Meta-Memory │
│ β₄sal │ │ (confidence map) │
└──────────┘ └───────────────────┘
クイックスタート
1. SMRITI をインストールする
コアメモリエンジンと CLI をインストールします。
pip install smriti-memcore
(任意:100%プライベートかつ無料で LLM 推論を行うには、Ollama がローカルで実行されていることを確認してください:ollama run mistral)
2. 教授とコース作成者向けの手順:カリキュラムをパッケージ化する
講義資料のフォルダーを、学生向けの24時間対応のソクラテス式ティーチングアシスタントとして機能する、自己完結型でオフラインファーストの認知の宮殿バンドル(.smritibundle)に変換します。
# Package a folder of slides, transcripts, readings, or notebooks into an offline bundle:
smriti pack ./my-course-folder -o cs101.smritibundle
# Or package directly from a declarative YAML/JSON persona spec:
smriti pack ./course-spec.yaml -o cs101.smritibundle --install
- 対応形式:PDF スライド、WebVTT/SRT 形式の動画講義の文字起こし、Markdown、プレーンテキスト、Jupyter ノートブック(
.ipynb)。 - クラウド費用ゼロ:すべてのベクトル埋め込みをローカルで計算します(OpenAI/HuggingFace API の請求額は $0)。
- 軽量な配布:ベクトルインデックス、全文検索、セマンティックグラフを含む自己完結型アーカイブを生成します(通常5~15 MB)。Canvas、Blackboard、Piazza、Google Drive に直接アップロードするか、学生にメールで送信できます。
3. 学生向けの手順:24時間対応のソクラテス式オフィスアワー
学生は教授の .smritibundle をダウンロードし、ターミナルからインタラクティブなコースメンターと対話できます。完全オフライン、プライベートで、サブスクリプションも不要です。
# Step 1: Import the course bundle provided by your professor
smriti pull ./cs101.smritibundle
# Step 2: Start your 24/7 Socratic Office Hours
smriti chat cs101
# (Optional) Use a specific local Ollama model (e.g. Mistral, Qwen, Llama)
smriti chat cs101 --model mistral
smriti chat cs101 --model qwen3.5
- 出典箇所の明示:あらゆる概念について質問すると、該当するスライドの正確なページ番号や動画講義の文字起こしからの引用が表示されます。
- ソクラテス式教授法:宿題の答えをそのまま教えるのではなく、コースのたとえを用いて、基本原理から学生を段階的に導きます。
- 100%ローカルでプライベート:すべての会話は学生のノート PC 内に留まり、学生のデータが外部サーバーに送信されることはありません。
公式レジストリに登録された、厳選済みのメンター
すぐに利用できる既成のメンターも確認できます。
# List all available mentors and locally installed bundles
smriti list
# Socratic Distributed Systems Professor (Raft, Paxos, CAP theorem)
smriti chat prof-systems
# 100% Private, Local CBT & Mindfulness Companion
smriti chat mindful-counsellor
# Historical Thinkers
smriti chat einstein
smriti chat newton
smriti chat marcus-aurelius
4. Smriti DevBrain:あらゆる開発者向けのメモリ(Cursor、Claude、Windsurf、Gemini、Zed)
SMRITI は、あらゆる AI コーディングツールで共有されるローカルな認知の頭脳として機能し、エージェント間の記憶喪失を解決します。Claude Code や Gemini で解決したバグを、Cursor がすぐに記憶します。
ステップ 1:インストール済みのすべての IDE とエージェントを自動設定する
1つのコマンドで Cursor、Claude Code、Windsurf、Gemini、Zed をスキャンし、数秒で設定します。
smriti install
(または、対象のツールを指定します:smriti install --client cursor,windsurf)
ステップ 2:コードベースのワークスペースを初期化する
任意のリポジトリ内で、次を実行します。
smriti init
これにより、次の処理が自動的に行われます。
- プロジェクト用の専用セマンティックルームを宮殿内に作成します(
repo:<name>)。 .cursorrules、.cursor/rules/smriti.mdc、CLAUDE.md、プロジェクトの.cursor/mcp.jsonを作成します。- 直近のコミットやアーキテクチャの変更をメモリに記録する、軽量で処理をブロックしない git
post-commitフックをインストールします。
Git コミットメモリフックの管理:
smriti hook install # Enable automatic commit context logging
smriti hook uninstall # Remove the post-commit hook
3. Python SDK
カスタムエージェントループを構築するアプリケーション開発者向けです。
pip install smriti-memcore[faiss] # FAISS is recommended for accelerated vector search
from smriti import SMRITI, SmritiConfig
# Initialize memory engine with OpenAI
config = SmritiConfig(
storage_path="./my_agent_memory",
llm_model="gpt-4o",
openai_api_key="your-api-key-here"
)
memory = SMRITI(config=config)
# Ingest observations
memory.encode("User prefers using PyTorch for neural networks.")
memory.encode("User is allergic to shellfish.", context="medical")
# Recall relevant context using multi-factor retrieval
results = memory.recall("What framework does the user prefer?")
for mem in results:
print(f"[{mem.strength:.2f}] {mem.content}")
# Manually trigger System 2 background consolidation
memory.consolidate()
memory.save()
# --- Or Load a Pre-Curated Persona (e.g. Albert Einstein) ---
einstein, manifest = SMRITI.from_persona("albert-einstein")
memories = einstein.recall("What thought experiment led to Special Relativity?")
for mem in memories:
print(f"[{mem.strength:.2f}] {mem.content}")
MCP ツールリファレンス
SMRITI はクライアント向けに、19 個のツール(ネイティブ 13 個+AMP エイリアス 6 個)を提供します。
コアツール
| ツール名 | 説明 |
|---|---|
smriti_encode | 新しいメモリを取り込みます。private=True を指定すると、チームの同期対象から除外できます。 |
smriti_recall | セマンティック検索とグラフベースの検索を使ってメモリを取得します。 |
smriti_get_context | 現在アクティブな作業メモリのスロットをコンテキストウィンドウに挿入するためのヘルパーです。 |
smriti_how_well_do_i_know | 指定されたトピックについて、メタメモリの確信度を確認します。 |
smriti_knowledge_gaps | エージェントが追加情報を必要とすると特定したトピックを特定します。 |
smriti_pin | メモリを永続としてマークします(強度の減衰から保護します)。 |
smriti_forget | メモリをソフト削除/アーカイブし、暗号学的なトゥームストーンを残します。 |
smriti_consolidate | バックグラウンドで System 2 の統合処理を実行します。 |
smriti_stats | システム全体の統計情報(メモリ総数、ルーム数、プライベート件数)を返します。 |
smriti_create_private_room | プライベートルームを作成します。このルーム内のすべてのメモリは、他から隔離されて表示されます。 |
smriti_open_ui | インタラクティブな D3.js メモリグラフを既定のブラウザーで起動します。 |
smriti_sync_obsidian | Semantic Palace のグラフ構造を、Obsidian Vault 内の Markdown ファイルにエクスポートします。 |
AMP v1.0 エイリアスツール
これらのエンドポイントにより、標準の Agent Memory Protocol 仕様への完全な準拠が確保されます。
| AMP ツール | ネイティブの対応先 | 戻り値の形式 |
|---|---|---|
amp.encode | smriti_encode | AMP 標準の JSON レスポンス |
amp.recall | smriti_recall | {id, content, score, timestamp, status} の配列 |
amp.forget | smriti_forget | {status: "forgotten" | "not_found"} |
amp.stats | smriti_stats | {memory_count, ...} |
amp.pin | smriti_pin | {status: "pinned" | "not_found"} |
amp.consolidate | smriti_consolidate | {status: "ok", memories_processed: int} |
フレームワークとの統合
LangChain との統合
SmritiLangChainMemory を、既定のチャットバッファーの代わりにそのまま使用できます。Working Memory を使ってアクティブなコンテキストを制限し、会話履歴はバックグラウンドで Semantic Palace グラフに移します。
from langchain.chains import ConversationChain
from smriti.integrations.langchain_memory import SmritiLangChainMemory
from smriti import SMRITI
smriti_engine = SMRITI(storage_path="./langchain_smriti_db")
smriti_memory = SmritiLangChainMemory(smriti_client=smriti_engine, top_k=3)
conversation = ConversationChain(
llm=my_llm,
memory=smriti_memory,
)
conversation.predict(input="I prefer backend APIs in Python.")
ベンチマークとパフォーマンス
1. LoCoMo(複数システムのコンテキスト検索)
長文脈対話データセット LoCoMo(28 ターン、評価質問 15 件)を使い、4 つのアーキテクチャと比較してテストしました。
| システム | F1 スコア | レイテンシ | クエリあたりのトークン数 | 統合処理 |
|---|---|---|---|---|
| FullContext | 0.345 | 1147ms | 550 | — |
| MemGPT-style | 0.334 | 1397ms | 478 | — |
| NaiveRAG | 0.312 | 1387ms | 145 | — |
| SMRITI | 0.279 | 1317ms | 146 | 41.2s(非同期) |
| Mem0-style | 0.235 | 1088ms | 106 | — |
SMRITI はクエリのコンテキストサイズを大幅に削減しながら、高い再現率を維持します。統合処理はバックグラウンドで実行されるため、クライアントとのやり取りを妨げません。
2. LongMemEval(長期チャットセッション)
LongMemEval ハーネスを使い、50 件以上のチャットセッションで評価しました。
| システム構成 | 完全一致精度 | クエリの平均レイテンシ |
|---|---|---|
| ベースライン(フルコンテキスト) | 100.0% | 11.98s |
| SMRITI Dual-Process | 80.0% | 0.98s(レイテンシを 12 倍削減) |
設定パラメーター
認知的な重みを調整するには、カスタムパラメーターを指定して SmritiConfig を初期化します。
from smriti import SmritiConfig
config = SmritiConfig(
working_memory_slots=7, # Capacity limit (Miller's Law)
# Retrieval scoring weights (sum to 1.0)
recency_weight=0.2,
relevance_weight=0.4,
strength_weight=0.2,
salience_weight=0.2,
# Forgetting & Temporal Decay
decay_rate=0.99, # Strength multiplier per day
strength_hard_threshold=0.05, # Memories dropping below this are forgotten
# Palace Graph
room_merge_threshold=0.85, # Cosine similarity for auto-merging semantic rooms
)
引用
研究で SMRITI を使用する場合は、以下の技術論文を引用してください。
@article{tyagi2025smriti,
title={SMRITI: A Scalable, Neuro-Inspired Architecture for Long-Term Event Memory in LLM Agents},
author={Tyagi, Shivam},
year={2025},
doi={10.13140/RG.2.2.25477.82407}
}
ライセンス
SMRITI は MIT ライセンスの下でライセンスされています。詳細は LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。