brain — the recorder について
brain-mcp は、Claude Code・Codex・Pi のセッション記録がエージェントによって削除される前に保存するローカルレコーダーです。自分の AI 会話履歴を検索し検証したいユーザー向けで、検索結果にはすべて確認可能な引用が付きます。
主な機能
- 01削除前にセッションのバイト列を記録
- 02検索結果にファイル・行範囲・sha256 を付与
- 03該当なしの場合は検索した範囲と日付を明示
- 04レーンごとの鮮度を報告し、未測定は正常扱いしない
- 05削除されたセッションをバイト単位で復元
- 06ローカル記録の検証可能なバックアップ
活用シーン
- 01過去の特定日に Claude Code で話した内容の検索
- 02cleanupPeriodDays により削除されたセッションの復元
- 03各エージェントの記録が完全に取得されているかの確認
MCP 対応
このプロジェクトは MCP サーバーで、brain_search、brain_get、brain_recent、brain_health など 7 つのツールを公開し、MCP クライアントからローカルに記録された AI 会話を照会できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
brain-mcp — AI との会話を記録するレコーダー
AI の履歴は今まさに削除されています。 Claude Code は起動時に、cleanupPeriodDays(デフォルトは 30)より古いセッションファイルを削除します。これを実行して、履歴が途切れる境目を確認してください。
# macOS
find ~/.claude/projects -name '*.jsonl' -exec stat -f '%Sm %N' -t '%Y-%m-%d' {} + | sort | head -3
# Linux
find ~/.claude/projects -name '*.jsonl' -printf '%TY-%Tm-%Td %p\n' | sort | head -3
表示された最も古い日付が、履歴の終わりです。brain-mcp は消える前に、セッション全体、サブエージェントのトランスクリプト、保存されたツール出力も含めて、バイト単位で正確に、コンテンツハッシュ付きでローカルに記録します。sed と shasum で検証できる引用付きで検索可能にし、何が削除されたかを知らせて、元に戻します。
Claude Code が削除した場合
brain-mcp health # the receipt: "3 session(s) and 41 file(s) are gone from where the
# agent kept them; the floor holds every one" — each re-hashed
# against the manifest when the recorder first noticed it
brain-mcp restore --list # what can be put back
brain-mcp restore <id> # writes the session (and its folder) back, byte-exact, then:
# cd <its working directory> && claude --resume <id>
restore は異なるバイト列を上書きしません(同一のバイト列なら何も行いません)。処理は全件成功か全件失敗で、--dry-run と --to <dir> を指定できます。これは CLI の動詞のみであり、MCP ツールが保存領域の外に書き込むことはありません。
インストール
pipx install brain-mcp # or: uvx brain-mcp
brain-mcp install cc # CC hooks + 60-second scheduler
brain-mcp serve # the MCP server (stdio) — add to your client config
または、Claude Code のプラグインとしてインストールできます(フックとサーバーを一度に設定します)。
/plugin marketplace add mordechaipotash/brain-marketplace
/plugin install brain
機能
- 発生元で取得します。 Stop/SessionEnd フックを介して Claude Code を取得します(行差分と最終スナップショット)。Codex、Pi、および Claude Code セッションの専用フォルダー内にあるすべてのもの(サブエージェントとワークフローのトランスクリプト、
.meta.json、tool-results/)は、60 秒間隔のポーリングスキャンで取得します。スプールは 1 つ、保存領域も 1 つです。 - バイト列を保持します。 保存領域は
~/.brain/lake/<lane>/<session>.jsonlです。追記専用で、元のファイルとバイト単位で同一のデータを保持し、追記専用の sha256 マニフェストも備えています。解析されて破棄されるものはありません。DuckDB インデックスはキャッシュであり、lake から完全に再生成できます。 - 引用するか、回答を控えます。 検索結果にはすべて
{file, line span, sha256}が含まれ、データベースがなくても、誰でもsed -n 'A,Bp' file | shasum -a 256で検証できます。結果が 0 件の場合は、実際に検索したレーンと日付を明示して、回答を控えます。 - 健全性を正直に報告します。
freshは保存領域にエージェントのファイルにあるすべての内容が保持されている状態です。staleはレコーダーが取りこぼした内容がエージェント側にある状態です。unknownは未測定であり、健全な状態ではありません。「問題なし」の扱いにすることはありません。 - 検証可能なバックアップを作成します。
brain-mcp backup <dest>は lake とマニフェストを同期し、保存先でサンプルファイルのハッシュを再計算します。検証に失敗することがあります。それこそが目的です。 - ネットワークからの取得は一度だけで、あなたに関するものではありません。 テレメトリー、クラウド、アカウントはなく、このパッケージに HTTP クライアントも含まれていません。例外として、インデックスの初回構築時に DuckDB が全文検索拡張機能(
fts)を DuckDB 独自の拡張機能リポジトリからダウンロードし、~/.duckdbにキャッシュします。brain-mcp installはこの取得を事前に行い、その旨を表示します。brain-mcp doctorでは、キャッシュの有無を確認できます。
7 つの MCP ツール
| ツール | 内容 |
|---|---|
brain_search | 記録されたすべての内容を対象とする BM25 検索。引用付きの結果、または明示的な回答保留 |
brain_get | 引用の元となる生の行を取得し、sha を検証 |
brain_recent | 時系列順の最近のアクティビティ。すべての行に引用付き |
brain_sessions | 日付/エージェント別のセッションカード |
brain_health | レーンごとの発生元と保存領域の鮮度(unknown ≠ healthy)。エージェントが削除したものの記録も表示 |
brain_capture_status | 仕組み自体が動作しているかを確認(スプール、ハートビート、保存領域) |
brain_backup | 検証済みバックアップ。保存領域の外にのみ書き込み |
🤖 AI アシスタント向け
あなたの人間がTHE RECORDERを実行し、AIとのやり取りの履歴へのアクセスをあなたに許可したため、この内容を読んでいます。これは誠実さに関する約束です。
唯一のルール:これらのツールから述べることは、すべて出典を示すか、回答を差し控えるかのどちらかです。第三の選択肢はありません。 出典を示した主張には、確認可能な参照先(ファイル+行の範囲+sha256)が含まれます。その主張を根拠に話を進める前に、brain_get(expect_sha256=...) で検証してください。回答を差し控えるというのは、「ツールが測定した対象範囲と期間において、しきい値を超える情報が見つからなかった」という意味です。「その出来事は一度もなかった」という意味ではありません。差し控えた回答を、決して自分の推測で補わないでください。
- 思い出した内容は、本人の言葉として日付とともに示してください。*「2026-08-19に、あなたはこう書きました:『…』(sess-7f2a.jsonl:412)」*のようにします。自分の知識として述べてはいけません。主張1つにつき、引用1つです。
- brain_get の
verified: falseは、インデックス作成後にフロアの内容が変わったことを意味します。そのことを率直に伝えてください。 - ヘルスチェックの応答に
unknownのレーンが1つでも含まれている場合、「すべて問題ありません」と言ってはいけません。誠実な表現は「2レーンは最新、1レーンは古く、1レーンは未測定です」です。 - 「Xについて私はどう考えている?」→
brain_search(query, role="user")。これは、本人が書いた内容を返します。ハーネスが user ロールで挿入したテキスト(スキル本文、リマインダー、スラッシュコマンドのラッパー、圧縮時の要約、Codex のコンテキストブロックなど。実測では user 行の4分の1から3分の2を占めます)は、include_machine=Trueを渡さない限り除外されます。また、サブエージェントのトランスクリプトもinclude_subagents=Trueを渡さない限り除外されます。「私の考えはどう変化した?」→order="time_asc"を追加し、since/untilで期間を指定します。サーバーは、あなたの人間の心について見解を持っているわけではありません。あるのは、証拠付きの本人の言葉です。
フロアの形式
~/.brain/
spool/<lane>/ hooks + scanner write here (atomic, dot-tmp invisible)
lake/<lane>/<session>.jsonl THE FLOOR: append-only, byte-identical to the origin;
a rewrite opens <session>.g2.jsonl — old kept, never deleted
lake/cc_sessiondir/<project>/<session>/... a CC session's folder, mirrored at the
same relative paths (subagents/, tool-results/, *.meta.json)
manifest/manifest.jsonl one versioned line per chunk: byte range, line range, sha256
offsets/<lane>/<session> hook fast-path line counters
health/*.last_run side-effect heartbeats (mtimes are the proof, never a report)
brain.duckdb the index — a cache, re-derivable from lake/ + manifest/
エージェントのトランスクリプトの保存場所:Claude Code ~/.claude/projects/**/*.jsonl(ローリングウィンドウ!)、Codex ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl、Pi ~/.pi/agent/sessions/**/*.jsonl。
その他の動詞
brain-mcp record # one capture tick (the scheduler runs this every 60s)
brain-mcp health [--exit-nonzero-on-stale] # cron-able
brain-mcp doctor # capture status, health, fts cache, the receipt, runaway generations
brain-mcp restore [<id>] [--list] [--to DIR] [--dry-run] # put a deleted session back
brain-mcp redact <file> --lines A B --reason "..." # tombstone a secret; audited in manifest
brain-mcp migrate-v1 <all_conversations.parquet> # import v1 data (marked v1_derived)
brain-mcp uninstall # removes hooks + scheduler; your floor is KEPT
v1 → v2
v2は、まずバイト列を取り込み、それ以外はすべてそこから導出するという原則を中心に再構築されています。v1は会話を parquet に解析し、オリジナルを破棄していました。v2では、フロアの仕組みにより、それが構造上不可能になっています。v1の25個のツールは7個になりました。「認知パターン」や「切り替えコスト」といった統合ツールは廃止されました。行の範囲を示す引用を付けられない主張は、このサーバーが行わないためです。移行するには、brain-mcp migrate-v1 を実行します。v1の行は保持され、導出データとしてマークされます。ソースが残っている場合は、フロアに裏付けられた行が優先されます。
Windowsはv2.0の対象外です。スケジュール設定には、LaunchAgent(macOS)/systemd user timer(Linux)を使用します。
MIT。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。