cortex
memem
Claude Codeのための、永続的で自己進化するメモリ。 セッションごとにプロジェクトを説明し直すのはもうやめましょう。
LLM/AIツールの発見については、llms.txt を参照してください。
███╗ ███╗███████╗███╗ ███╗███████╗███╗ ███╗
████╗ ████║██╔════╝████╗ ████║██╔════╝████╗ ████║
██╔████╔██║█████╗ ██╔████╔██║█████╗ ██╔████╔██║
██║╚██╔╝██║██╔══╝ ██║╚██╔╝██║██╔══╝ ██║╚██╔╝██║
██║ ╚═╝ ██║███████╗██║ ╚═╝ ██║███████╗██║ ╚═╝ ██║
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
persistent memory for Claude Codemememとは?
mememは、Claude Codeにセッションをまたぐ永続的なメモリを提供するClaude Codeプラグインです。バックグラウンドのマイナーが完了したセッションから永続的な教訓(決定事項、規約、バグ修正、設定など)を抽出し、ObsidianボルトにMarkdownとして保存します。そして、新しいセッションを開始するたびに、クエリに合わせて調整されたブリーフィングを通じて、関連する情報を自動的に提示します。
ローカルファーストです:クラウドサービスやAPIキーは不要で、ベンダーロックインもありません。すべては ~/obsidian-brain/memem/memories/ 内に人間が読めるMarkdownとして保存されます。
mememを使うべき場面
以下のような場合にmememを使用してください:
Claude Codeを毎日使用しており、新しいセッションのたびにプロジェクトを説明し直している
Markdownとして閲覧・編集できる永続的なメモリが欲しい
ベンダーロックインのないローカルファーストなツールを好む
すでにObsidianを使用している(mememはボルトに直接プラグインできます)
以下のような場合はmememをスキップしてください:
CLAUDE.mdで十分であり、バックグラウンドデーモンを動かしたくないマシン間でクラウド同期されたメモリが必要(mememはローカル専用です)
Python 3.11未満の環境を使用している
mememはCLAUDE.mdとどう違うのですか?
CLAUDE.md はプロジェクトごとに手動で編集する単一のファイルです。mememは以下を提供します:
自動抽出 — 手動でのメモ取りは不要。マイナーが完了したすべてのセッションから教訓をキャプチャします
クエリ認識型コンテキスト — 静的なダンプではなく、現在の質問に関連するメモリのみが注入されます
自己進化 — プロジェクトの進化に合わせて、メモリが自動的に統合、更新、廃止されます
プロジェクト横断 — 1つのリポジトリに限定されず、使用するすべてのClaude Codeプロジェクトで機能します
セキュリティスキャン — すべての書き込みは、プロンプトインジェクションや認証情報の流出がないかスキャンされます
閲覧可能 — Obsidianボルトにより、グラフビューやバックリンクを無料で利用できます
mememのインストール方法
/plugin marketplace add TT-Wang/memem
/plugin install memem以上です。初回実行時に bootstrap.sh がすべてを自己修復します:
Python 3.11以上であることを確認
uvが不足している場合はインストール(公式のAstralインストーラー経由)プラグインローカルの
.venvに依存関係を同期(uv.lockに対してハッシュキャッシュ)~/.memem/と~/obsidian-brain/を作成し、カナリアテストを実行~/.memem/.capabilitiesを書き込み(縮退モードの判断に使用)実際のMCPサーバーを実行
初回実行: 約5秒。2回目以降: 約100ms。個別の pip install ステップは不要です。
最初のClaude Codeセッションでは何が起こりますか?
最初のメッセージを入力すると、UserPromptSubmitフックが起動し、メモリがゼロであることを検知して(インストール直後のため)、Claudeのコンテキストにウェルカムバナーを注入します。Claudeはそのバナーを読み、mememがアクティブであることを伝え、以前のClaude Codeセッションがある場合は /memem-mine-history を通じてそれらをマイニングすることを提案します。
通常通り作業してください。マイナーデーモンはバックグラウンドで静かに実行されます。セッションが終了し5分間経過すると、マイナーはClaude Haikuを使用してトランスクリプトからメモリを抽出し、ボルトに書き込みます。
2回目のセッション以降: フックが最初のメッセージを context_assemble に送信し、Haikuに関連メモリを渡して、調整されたブリーフィングを合成するよう求めます。[memem] 12 memories · miner OK · assembly OK のようなステータスバナーが表示され、その後にブリーフィングが続きます。Claudeは完全なコンテキストで開始するため、説明し直す必要はありません。
mememは何を保存しますか?
セッションログではなく、永続的な知識を保存します:
アーキテクチャの決定事項 とその根拠(「…のためRS256 JWTを使用する」)
規約(「テストは
spec/ではなくtests/に配置する」)忘れてしまいそうなバグ修正(「bcrypt.compareは非同期 —
awaitが必要」)ユーザーの好み(「スタックされたPRではなく、単一のコミットを好む」)
既知の問題(「JWT_SECRETが未設定の場合、デフォルトで 'secret' になる — #123 で追跡」)
以下は保存しません:
生のセッショントランスクリプト(これらは
transcript_searchで検索可能であり、メモリとして保存されません)自明な事実
セッションの結果(「今日はXに取り組んだ」)
mememはどこにメモリを保存しますか?
ストア | パス | 目的 |
メモリ |
| 真実のソース(人間が読めるMarkdown) |
プレイブック |
| プロジェクトごとのキュレーションされたブリーフィング |
検索DB |
| SQLite FTS5インデックス(マシン高速ルックアップ) |
テレメトリ |
| アクセス追跡(アトミック書き込み) |
イベントログ |
| 追記専用の監査証跡 |
機能 |
| ブートストラップによって書き込まれる縮退モードフラグ |
ブートストラップログ |
| 初回実行時の診断 |
MEMEM_DIR および MEMEM_OBSIDIAN_VAULT 環境変数を使用して、mememの保存先を別の場所に指定できます。
Claudeが呼び出せるMCPツールは何ですか?
ツール | 動作 |
| 教訓を保存。書き込み前にプロンプトインジェクションと認証情報流出のセキュリティスキャンが行われます。 |
| メモリを検索。FTS5 + 時間的減衰 + アクセス強化 + 重要度重み付け。 |
| プロジェクトごとにグループ化された、統計付きの全メモリをリスト表示。 |
| ファイル、ディレクトリ、またはチャットエクスポートからのバルクインポート。 |
| 生のClaude CodeセッションJSONLログを検索(マイニングされたメモリではありません)。 |
| プレイブック + メモリ + トランスクリプトから、オンデマンドでクエリに合わせて調整されたブリーフィングを作成。 |
mememが追加するスラッシュコマンドは何ですか?
/memem— ウェルカム、ステータス、ヘルプ/memem-status— メモリ数、プロジェクト、検索DBサイズ、マイナーの健全性/memem-doctor— ブロッカーに対する修正手順を含む事前健全性チェック/memem-mine— マイナーデーモンを手動で開始(通常は自動開始)/memem-mine-history— オプトイン:インストール前のすべてのClaude Codeセッションをマイニング
claude CLIがPATHにない場合はどうなりますか?
mememは縮退モードに入ります。機能はしますが、Haikuによるコンテキストアセンブリとスマートリコールは使用できません。クエリに合わせて調整されたブリーフィングの代わりに、FTSのみのキーワードリコールが提供されます。各セッションのコンテキスト上部に [memem] N memories · miner OK · assembly degraded (claude CLI missing — FTS-only recall) と表示されるため、理由がわかります。
これは設計によるものです:オプションの依存関係が欠けている場合は失敗させるのではなく、機能を縮退させるべきです。
問題を診断するにはどうすればよいですか?
/memem-doctor を実行してください。ブートストラップシムが実行するのと同じ事前チェック(Pythonバージョン、mcp のインポート可否、PATH上の claude CLI、ディレクトリの書き込み権限、uv の利用可否)を実行し、各ブロッカーに対する明確な修正手順とともに HEALTHY、DEGRADED、または FAILING とラベル付けされたレポートを出力します。
より詳細なデバッグについては:
tail -f ~/.memem/bootstrap.log # first-run shim log
tail -f ~/.memem/miner.log # miner daemon log
cat ~/.memem/events.jsonl # memory operation audit trail
python3 -m memem.server --status # detailed status dumpマイニングパイプラインはどのように機能しますか?
Session ends → miner daemon sees the JSONL file in ~/.claude/projects/
→ Waits 5 minutes for the file to "settle" (no more writes)
→ Filters to human messages + assistant prose (strips tool calls, system reminders)
→ One Haiku call with the full context: "extract durable lessons"
→ Haiku returns JSON array of memory candidates
→ Each candidate runs: security scan → dedup check → contradiction detection → save
→ Index rebuilt, per-project playbooks grown and refined
→ Session marked COMPLETE in ~/.memem/.mined_sessionsリコールパイプラインはどのように機能しますか?
First message in a new session → auto-recall.sh hook fires
→ Reads ~/.memem/.capabilities for status banner
→ If claude CLI is available → sends (message, memories) to Haiku
→ Haiku synthesizes a focused briefing (300-800 tokens usually)
→ Brief injected into Claude's context as "memem context briefing"
→ If claude CLI is missing → falls back to FTS-only keyword recall
→ Either way, Claude starts its reply with relevant context already loadedアーキテクチャ
mememは小さく焦点を絞ったモジュールに分割されています:
models.py— データ型、パス定数security.py— プロンプトインジェクション + 認証情報流出スキャンtelemetry.py— アクセス追跡、イベントログ(アトミック書き込み、fcntlロック)search_index.py— SQLite FTS5インデックスobsidian_store.py— メモリI/O、重複排除スコアリング、矛盾検出playbook.py— プロジェクトごとのプレイブックの成長 + 洗練assembly.py— Haikuによるコンテキストアセンブリcapabilities.py— 縮退モードのためのランタイム機能検出storage.py— サーバーライフサイクルヘルパー(PID管理、マイナー自動開始)server.py— 軽量なMCPエントリーポイント(FastMCPを遅延インポート)cli.py— 非MCPエントリーポイント用のコマンドディスパッチャーmining.py— セッションマイニングパイプライン
マルチシグナルリコールスコアリング:
50% FTS関連性
15% 新規性 (0.995^時間 減衰)
15% アクセス履歴 (使用頻度による強化)
20% 重要度 (Haikuによる1-5スケール)
メモリのスキーマ (Markdownフロントマター):
---
id: uuid
schema_version: 1
title: "descriptive title"
project: project-name
tags: [mined, project-name]
related: [id1, id2, id3]
created: 2026-04-13
updated: 2026-04-13
source_type: mined | user | import
source_session: abc12345
importance: 1-5
status: active | deprecated
valid_to: # set when deprecated
contradicts: [id1] # flagged conflicts
---設定
環境変数 | デフォルト | 目的 |
|
| 状態ディレクトリ(PIDファイル、検索DB、ログ) |
|
| ボルトの場所 |
| (なし) | マイニングする追加セッションディレクトリ(コロン区切り) |
|
| 完了したセッションをマイニングするまでの待機秒数 |
|
|
|
Obsidianのセットアップ (オプション、推奨)
mememはObsidianなしでも機能し、Markdownを書き込むだけです。しかし、Obsidianを使用するとグラフビューとバックリンクを無料で利用できます:
ダウンロード: https://obsidian.md (無料)
~/obsidian-brainをボルトとして開くメモリは
memem/memories/に、プレイブックはmemem/playbooks/に表示されますグラフビューを使用して、
relatedフィールドを通じてメモリがどのようにリンクしているかを確認できます
要件
Claude Code
Python 3.11以上
uv(初回実行時に bootstrap.sh によって自動インストール)PATH上の
claudeCLI (オプション — Haikuによるアセンブリに必要。縮退モードはこれなしでも動作します)
開発
git clone https://github.com/TT-Wang/memem.git
cd memem
pip install -e ".[dev]"
pytest # 54 tests
ruff check . # lint
mypy memem # type check (strict)PRプロセスについては CONTRIBUTING.md を、バージョン履歴については CHANGELOG.md を参照してください。
ライセンス
MIT
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/TT-Wang/cortex-plugin'
If you have feedback or need assistance with the MCP directory API, please join our Discord server