サードパーティ製メモリレイヤー: claude-mem は実際にどう動くのか
- この種のツールにおける「メモリ」の意味を理解する: 保存されたトランスクリプトではなく、ツール呼び出しを監視する第二のモデルが抽出した観測(observation)である
- 6 つのフックのライフサイクルと、壊れたメモリレイヤーが静かに機能低下するのか、コーディングセッションをブロックするのかを決める終了コードの契約を学ぶ
- ほとんど誰も確認しない点を知る: オブザーバーは自分で選ぶプロバイダー上の別のモデルであり、claude-mem 自身のコストデータセットはホスト型オブザーバーを DeepSeek のモデルに対応づけている — セッションの内容が必ずしも Claude に送られるわけではない
- トークン計算を成り立たせる 3 層のリコールを追う — 約 50〜100 トークンのインデックスヒットの後に、約 500〜1,000 トークンの詳細取得を行う — そして、この順序こそが設計のすべてである理由を理解する
- データの保存先を知る: FTS5 付きの SQLite、抽出した事実を 1 件ずつ別にインデックスする Chroma ベクトルストア、そしてポート 37700 + (uid % 100) のワーカー
- 圧縮の費用を誰が負担するのか、そして月額 30 ドルのホスト型プランがそもそも存在する理由を整理する
- 文書化されている 5 つの失敗モードを避ける。最初は、オブザーバーの推論トークンがセッションの出力予算を食い尽くしたケース
- エージェントが触れるすべてのファイルをメモリレイヤーに読ませる前に、あらゆるエージェントのメモリレイヤーに 8 項目の評価チェックリストを当てはめる
コーディングエージェントを使う人は誰もが同じ壁にぶつかります。1 時間かけて文脈を作ります。どのモジュールが何を担当しているか、前のやり方がなぜ失敗したか、ビルドの落とし穴が 1 つ。そしてセッションが終わると、そのすべてが消えます。明日、また最初から説明することになります。
claude-mem はこの問題に対する、圧倒的に人気のある答えです。2026 年 10 月 26 日時点で GitHub のスターは 103,252、ライセンスは Apache-2.0、開発の速さは、このページを書く前の 12 日間で v13.38 から v15.2.1 まで進んだほどです。Claude Code、Cursor、Codex、OpenCode、Antigravity、Claude Desktop など複数のツールで動作します。
このページはインストールガイドではありません。それは README がうまく書いています。README が書いていないこと、つまりこのツールがアーキテクチャとして実際に何であるか、いくら費用がかかるか、何があなたのコードを読むのか、何が壊れるのかを説明します。以下の内容の大半は、リポジトリ自身の docs/ フォルダーに由来します。詳細で誠実ですが、103,000 人のスター付与者の大多数はおそらく読んでいません。
保存されるのはトランスクリプトではない
最初に捨てるべきメンタルモデルは「チャットを保存してくれる」です。そうではありません。保存の単位は**観測(observation)**です。種類、タイトル、ナラティブを持つ構造化されたメモで、エージェントが行ったことからモデルによって抽出されます。
流れは、リポジトリ自身のデータフロー図によると次のとおりです。
- プロンプトを送信します。
session-initハンドラーがセッションを登録し、ワーカーに意味的に関連するコンテキストを要求します。 - エージェントがツールを使います。
PostToolUseフックがそのツール使用をワーカーに送信し、ワーカーがキューに入れます。 - ワーカーの SDKAgent(バックグラウンドのデーモンで動くモデルセッション)がキューを読み、観測と要約を生成します。
- それらは SQLite に保存され、Chroma ベクトルストアに同期され、サーバー送信イベントでローカルの UI にブロードキャストされます。
つまり、あなたの作業を見ているのは第二のモデルで、読んでいるのはすべてのツール呼び出しです。ファイルの読み取り、書き込み、コマンドの出力、検索結果。これがこの種のツール全体の入場料であり、ほかの話に入る前にはっきり言っておく価値があります。
- メモリレイヤーはストレージ機能ではありません。最初のモデルが触れるすべてを常に購読している第二のモデルです。パイプラインにモデルを 1 つ追加するときと同じように評価してください — 何を読むのか、どこに送るのか、誰がトークン代を払うのか、失敗したらどうなるのか。
6 つのフックと、運用上重要な 1 つの契約
claude-mem はライフサイクルフックの集合としてインストールされ、それぞれ claude-mem hook claude-code <event> という形式の、シェルを介さない単一のコマンドとして呼び出されます。docs/architecture-overview.md によると次のとおりです。
| イベント | ハンドラー | 内容 | タイムアウト |
|---|---|---|---|
| Setup | version-check.js | 100 ms 未満のバージョンマーカーのチェック。不一致の場合は npx claude-mem repair の実行を促すヒントを表示する | 60s |
| SessionStart | worker start + context | ワーカーサービスを起動し、過去のコンテキストを注入する | 60s |
| UserPromptSubmit | session-init | セッションを登録し、SDK エージェントを起動し、意味的な注入を行う | 60s |
| PostToolUse | observation | ツール使用を取り込み、ワーカーのキューに入れる | 120s |
| Summary | summarize | SDK エージェントにセッションの要約を要求する | 120s |
| SessionEnd | session-complete | セッションを終了し、保留中のメッセージを処理しきる | 30s |
さて、午前 2 時に問題になる部分です。フックのオーケストレーターは、明示的な機能低下の契約を実装しています。
- トランスポートエラー —
ECONNREFUSED、タイムアウト、ワーカーからの 5xx — は exit 0。ブロックしません。ワーカーが落ちていても、コーディングセッションがブロックされることはありません。 - クライアントのバグ — 4xx、
TypeError、ReferenceError— は exit 2。ブロックします。これらは修正が必要なバグを示すから、という理屈です。
これは筋の通った設計であり、肝に銘じておくべき帰結があります。「メモリデーモンが死んでいる」のは無害ですが、「メモリデーモンが 400 を返している」のは無害ではありません。 不正なリクエスト、部分的なアップグレード後のスキーマのずれ、4xx として現れる期限切れのキーは、このツールが意図的に目立たせる側に分類しています。外部からプラグインをアップグレードした後に Setup フックが npx claude-mem repair を促してくるのも同じ理由で、バージョンがずれたインストールは、まさにブロックする分岐にたどり着く経路です。
- プラグインを更新した直後にコーディングセッションが失敗し始めたら、エージェントをデバッグする前にメモリレイヤーを確認してください。公開されている契約では、トランスポートの失敗は静かに機能低下し、クライアント側の失敗はブロックします。つまり、中途半端にアップグレードされたインストールの症状は、メモリのないセッションではなく、起動しないセッションです。
3 層のリコールこそが本当のアイデア
どんなメモリシステムでも保存はできます。難しいのは、節約するよりも多くのコンテキストを消費しない検索です。セッション開始のたびに記憶したメモを 20 件流し込めば、問題を悪化させるだけです。
claude-mem の答えは、2026 年 10 月 20 日の v15.0.0 で Smart memory search という名前でデフォルトになった、単一の検索ではなくエージェントが推論しながら進める 3 段階の検索です。
- 全文検索クエリ(SQLite FTS5。必要に応じて Chroma ベクトルとのハイブリッド)が、観測 ID 付きのコンパクトなヒット一覧を返します。README では 1 件あたり約 50〜100 トークンとされています。関連性を判断するには十分ですが、それだけで役に立つほどではありません。
- 有望な観測 ID について、その前後の時系列のコンテキストを取得します。この手順が「キーワードに一致するメモ」と「一致するメモに加えて、その直前直後に起きたこと」を分けます。
- ここで初めて観測の全文がコンテキストに入り、1 件あたり約 500〜1,000 トークンです。この順序についての README の主張は、最初から詳細を取得する場合と比べて約 10 倍のトークン節約になる、というものです。
この 3 つの手順は MCP ツールとしてエージェントに公開されます — search(query, type, date, project, limit)、timeline(observation_id, query)、get_observations(ids[]) です。そのため、検索が固定のパイプラインではなく、エージェントが間で推論できるのです。
ここでの応用できる教訓は、claude-mem とは無関係です。安価な表現で絞り込み、残ったものにだけ詳細の代価を払う。 検索結果のページを読んでからタブを開くのと同じパターンであり、行を取得する前にデータベースのインデックスを引くのと同じパターンで、エージェントに取り付けるあらゆる検索の正しい形です。自分で設計するなら、全体像はコンテキストエンジニアリング、このツールが属する分類はエージェントのメモリの実際の仕組みを参照してください。
データが実際に置かれる場所
ローカルのものはすべて ~/.claude-mem/ に保存されます。役割の異なる 2 つのストアがあります。
SQLite(claude-mem.db)。全文検索用に FTS5 を使います。
| テーブル | 目的 |
|---|---|
sdk_sessions | セッションのライフサイクルと、2 種類のセッション ID の対応 |
observations | 抽出されたメモ: 種類、タイトル、ナラティブ、コンテンツハッシュ |
session_summaries | セッションごとのリクエスト / 学んだこと / 完了したこと |
user_prompts | プロンプトの履歴 |
pending_messages | セッションごとの作業キュー |
observation_feedback | 観測ごとの利用シグナル |
ベクトル埋め込み用の ChromaDB(chroma.sqlite3)は、stdio 経由の chroma-mcp でアクセスされます。注目すべき点は、1 つの観測から 1 つではなく複数のドキュメントが作られることです — 本文用の obs_{id}_narrative に加えて、抽出された事実ごとに obs_{id}_fact_0、obs_{id}_fact_1 と続きます。事実は個別に埋め込まれるため、ある特定の細部についてのクエリが、全体の要約は別の話題である観測を取得できるのです。
ワーカーは ユーザーごとのポート 37700 + (uid % 100) で動く Express デーモンです。プロジェクト自身のリリースノートやドキュメントで localhost:37777 を見かけたなら、それは定数ではなく、ある 1 人の uid のポートです。これは、ちょうど一度だけ 10 分を失わせる小さな落とし穴です。
- ワーカーはローカルの HTTP API をバインドし、そこから UI を配信します。docs/security.md は、サーバーのベータ版がデフォルトで API キー認証を使うこと、キーには cmem_ プレフィックスが付き、一度だけ表示され、SHA-256 ハッシュだけが保存されること、そしてループバックの開発用バイパスには 2 つの環境変数を同時に設定する必要があり(CLAUDE_MEM_AUTH_MODE=local-dev と CLAUDE_MEM_ALLOW_LOCAL_DEV_BYPASS=1)、リバースプロキシの背後や公開到達可能なバインドアドレスでは使ってはならないことを明記しています。これは厳格なルールとして扱ってください。このデーモンは、エージェントが読んだすべてを検索可能にしたインデックスを保持しています。
圧縮の費用を払うのは誰か — そしてどのモデルがあなたのコードを読むのか
私が最も驚いた事実であり、このページが存在する理由です。
オブザーバーは独立したモデル呼び出しで、そのプロバイダーはインストール時に選びます: npx claude-mem install --provider [host|openrouter|gemini|anthropic]。4 つの選択肢は、「セッションの内容はどこへ行くのか」に対する 4 通りの答えです。
リポジトリ自身のコスト集計データセット(docs/expense-pricing/README.md)は、オブザーバーのトラフィックの価格付けの方法を記述しており、その中でホスト型オブザーバーが何であるかも記述しています。結合の手順には、モデル ID cmem-observer を、2026-08-08 以降は deepseek/deepseek-v4-flash、それ以前は deepseek/deepseek-chat に解決すると書かれています。
ここには、リポジトリを自分で読むと出くわす見かけ上の矛盾があるので、解いておきます。docs/architecture-overview.md はオブザーバーのコンポーネントを SDKAgent (Claude Agent SDK) と記しており、Claude に違いないように聞こえます。両方が同時に成り立ちます。Agent SDK はハーネス、つまりセッションを管理しレスポンスを解析するループであり、Anthropic 以外のエンドポイントに向けられます。v15.0.2 のリリースノートが、オブザーバーのリクエストが「OpenRouter、cmem.ai ゲートウェイ、OpenAI 互換エンドポイント」に送られると述べているのは、まさにそのことを示唆しています。SDK はクライアントで、誰が応答するかはプロバイダーのフラグが決めます。
DeepSeek への対応づけも慎重に読んでください。過大にも過小にも言いやすいからです。プロジェクトが何かを隠しているということではありません。プロバイダーは文書化されたインストールフラグで、データセットは公開リポジトリで公開されています。ただし、claude-mem という名前のツールが、ホスト型ではそのオブザーバーを DeepSeek のモデルとして価格付けしてきたことは意味しており、「名前のとおり Claude で動くのだろう」という前提だったなら、その前提は誤りでした。コードをサードパーティの推論プロバイダーに送れないなら、--provider anthropic か、セルフホストの OpenAI 互換エンドポイントは、意識的に下すべき選択です。
同じデータセットは、そのトラフィックの性質も教えてくれます。プロジェクト自身の注記では、オブザーバーの利用は約 98% が入力トークンとされており、ツールの出力を読んで短いメモを書き出すプロセスに期待されるとおりです。プロンプトが重く、出力が軽い。
これがホスト型プランの経済性のすべてです。有料プランの CMEM Pro は cmem.ai で、ホスト型の観測とクラウド同期を 30 日間の無料トライアル後に月額 30 ドルとされ、ホスト型の観測がメモリ生成をメインエージェントのサブスクリプションから切り離すという売り文句です。つまり、デフォルトでは、最初のモデルがすることのすべてを第二のモデルに読ませる費用を、誰かが払わなければなりません。それは自分のプロバイダーのアカウントとプランの上限か、他者への月額 30 ドルです。サイトはまた、トークン使用量への影響はワークロードとプロバイダーによること、Pro が他のサブスクリプションの価格や上限を変えないことも慎重に述べています。
- どのメモリレイヤーにも隠れた第二の請求があります。メモリを書くモデルの費用です。導入する前に 3 つの質問に答えてください。どのモデルが抽出を行うのか。誰のアカウントが払うのか。そしてそれが読む内容をそこへ送ってよいのか。claude-mem では、答えは設定可能で、文書化されており、デフォルトでは名前から連想されるものとは違います。
ライセンスの分割も docs/ip-boundary.md で公開されており、これを土台に何かを作る予定がある人にとって知る価値のある、明快なオープンコアの境界です。Apache-2.0 はメモリエンジン、サーバー、CLI、SDK、REST スキーマ、MCP ツール、Claude Code と汎用エージェントのアダプター、ストレージアダプターを対象とします。商用として留保されているのは、ホスト型の Magic Recall、チーム/組織のメモリ同期、管理ダッシュボード、SSO/SAML/SCIM、エンタープライズ RBAC と監査 UI、DLP/ポリシーエンジン、マネージド評価、プライベートコネクタなどです。つまりエンジンは本当に自分で組み込めますが、チームやエンタープライズ向けの部分はそうではありません。
文書化されている 5 つの失敗モード
いずれもプロジェクト自身のリリースノートとアーキテクチャドキュメントからのもので、落とし穴のリストとして最良の情報源です。
1. オブザーバーの推論トークンがセッションの出力予算を食い尽くした。 v15.0.2(2026 年 10 月 23 日)で修正されました。OpenRouter、cmem.ai ゲートウェイ、OpenAI 互換エンドポイントへのオブザーバーのリクエストは、デフォルトで推論が無効になりました。推論トークンが出力予算を埋め尽くし、セッションが出力する余地を残さなかったためです。リスト中で最も示唆に富むバグで、予算に制約のある抽出の役割に推論モデルを置いたことの純粋な帰結であり、同じことをするあらゆるもので再発します。
2. 互換性のない 2 つのセッション ID。 contentSessionId はホストから来てセッション中は不変です。memorySessionId は SDK エージェントから来て、ワーカーが再起動するたびに変わります。アーキテクチャドキュメントは、両者の変換が外部キー制約にとって極めて重要だとしています。SQLite ストアを直接クエリするなら、最初に混乱するのがこれでしょう。
3. 重複排除には 30 秒のウィンドウがある。 コンテンツハッシュは SHA256(memory_session_id + title + narrative) を 16 桁の 16 進数に切り詰めたもので、30 秒以内の繰り返しは、挿入せずに既存の ID を返します。便利であり、同時に、見た目が同一の観測が 31 秒離れて届いた場合に正当に共存しうる理由でもあります。
4. ジェネレーターのクラッシュは 3 回再試行して止まる。 バックオフは 1 秒、2 秒、4 秒で、連続 3 回を超えて再起動した後、ワーカーは再試行をやめてイテレーターを終了させます。カウンターは、ジェネレーターが自然に作業を完了するとリセットされます。保留中のメッセージは再起動をまたいで残り、次に有効なレスポンスが来たときにパーサーの経路でクリアされます。つまり、クラッシュし続けるオブザーバーは、入力の喪失ではなく、静かに増え続けるキューを意味します。
5. インストールの影響範囲は npm install より大きい。 npx claude-mem install は Bun と uv をグローバルにセットアップし、プラグインキャッシュで bun install を実行し、バージョンマーカーを書き込みます。README は、npm install -g では SDK しかインストールされず、npx claude-mem install を使う必要があると明記しています。メモリツールが 2 つのパッケージマネージャーのランタイムをグローバルにインストールするのは妥当なエンジニアリング上の選択ですが、同時にサプライチェーン上の接点を受け入れたことでもあります。一般的な作法はエージェントスキルの審査です。
- リリースの速さは諸刃の剣です。2026 年 10 月 13 日から 25 日のあいだに、このプロジェクトは v13.38 から v15.2.1 までを出荷しました — 12 日間でメジャーバージョンが 2 回上がり、その間に機能の名前も変わりました(ビューアー、リコールモード、ワークビュー)。これだけ活発なツールは、バグも速く直し、あなたのメモも速く壊します。チーム向けに文書化するならバージョンを固定し、アップグレードの後ではなく前にリリースノートを読んでください。
何がマシンの外に出るか、そして知っておくべき 1 つの制御
docs/security.md と README を合わせると、実用的な全体像が得られます。
- ローカルエンジンは、メモリをあなたのマシンの
~/.claude-mem/に保存します。 - クラウド同期はオプトインです。有効にすると、同期されたデータは CMEM にも保存されます。サイト自身のガイダンスは、接続する前にプライバシーポリシーを読むことです。
CLAUDE_MEM_ONLINE_OPTIN=falseはサインインの流れを省略します。<private>タグで囲まれた内容は保存から完全に除外されます — 観測ストアにも、プロファイルやプロジェクトのメモリにも書き込まれません。
最後のものが、覚えておく価値が最も高い制御です。唯一の帯域内の制御だからです。ほかはすべてインストール時に一度行う設定の判断ですが、<private> は、シークレット、顧客名、本番のホスト名がツール呼び出しを通過しそうになったときに、セッションの途中で手を伸ばせるものです。
そして構造上、使うことを覚えておかなければならない制御でもあります。エージェントが通常の仕事の過程でマシンの外に何を送り出すのか、というより広い問いについては、エージェントがアップロードするものを参照してください。
Inspect what a memory layer has actually recorded about you
# Where the local stores live, and how big they have got du -sh ~/.claude-mem/ 2>/dev/null ls -la ~/.claude-mem/ # Which worker port is yours (the formula, not the number in the docs) python3 -c "import os; print(37700 + (os.getuid() % 100))" # Read the observation store directly — it is plain SQLite sqlite3 ~/.claude-mem/claude-mem.db ".tables" sqlite3 ~/.claude-mem/claude-mem.db \ "SELECT type, title, substr(narrative,1,90) FROM observations ORDER BY rowid DESC LIMIT 15;" # Which model actually wrote your memories (the field the cost docs join on) sqlite3 ~/.claude-mem/claude-mem.db \ "SELECT generated_by_model, COUNT(*) FROM observations GROUP BY 1 ORDER BY 2 DESC;" # And your own prompt history, which is stored separately sqlite3 ~/.claude-mem/claude-mem.db \ "SELECT COUNT(*) FROM user_prompts;"
- 列名は docs/architecture-overview.md のスキーマ表と、observation 行の generated_by_model と created_at を挙げている docs/expense-pricing/README.md の結合手順に由来します。12 日でメジャーが 2 回上がるプロジェクトでは名前が変わるかもしれません — クエリがエラーになったら .schema observations を実行して調整してください。この演習の要点は正確な SQL ではなく、メモリレイヤーが自分について何を書いたかを読むことができ、読むべきだということです。それはローカルの SQLite ファイルであり、それを妨げるものは何もありません。
このツールに限らず、あらゆるメモリレイヤーを評価する
この種類のツールは増え続けますし、問いは一般化できます。次のものを導入する前に、これらを確認してください。
- 生のトランスクリプトか、モデルが抽出したメモか、コンパイルされた知識の成果物か。抽出とは、起きたことと記憶することのあいだに第二のモデルの判断が入るということです。それは多くの場合望ましいことですが、誤りが永続的になる場所でもあります。
- はっきり尋ねてください。claude-mem はそれを 4 つの値を取るフラグにしており、自前のコストデータセットでホスト型オブザーバーを DeepSeek のモデルとして記載しています。ツールが教えてくれないなら、それが答えです。
- セッション開始時に持っているものをすべて注入するメモリレイヤーは、コンテキストの節約ではなく、コンテキストへの課税です。詳細の手順の前に安価なインデックスの手順があるかを確認し、インデックスの項目のトークンコストも確認してください。
- 機能低下の契約を探してください。claude-mem は公開しています。トランスポートエラーは exit 0 でブロックせず、クライアントエラーは exit 2 でブロックします。契約が明示されていないツールは、いずれ、あなたに見えない理由でセッションをブロックします。
- クエリして rm できるローカルの SQLite ファイルは、不透明なクラウドのインデックスとはまったく異なるプライバシーの姿勢です。ローカルの形式と、同期がオプトインかオプトアウトかの両方を確認してください。
- 何も再設定せずに、セッションの途中で特定の 1 つのものが記録されないようにする必要が出てきます。<private> タグが claude-mem の答えです。同等のものがないツールでは、制御は「この作業には使わない」しかありません。
- グローバルなランタイム、バックグラウンドのデーモン、MCP サーバー、すべてのツール呼び出しへのフック。個々には妥当ですが、受け入れる前に数えておく価値があります。
- リリースが速いということは、修正も破損も速いということです。チームに展開するなら、各開発者がバラバラのメジャーバージョンに留まるのを許さず、バージョンを固定してアップグレードを自分で管理してください。
- claude-mem はトランスクリプトのストアではありません。バックグラウンドのデーモンで動き、すべてのツール呼び出しを読んで構造化された観測を書く第二のモデルです — これがこの種のツール全体の本当のコストであり、本当の能力です。
- オブザーバーは、インストール時に選ぶプロバイダー(host、OpenRouter、Gemini、Anthropic)上の別のモデルです。プロジェクト自身のコストデータセットは、ホスト型の cmem-observer ID を 2026-08-08 から deepseek/deepseek-v4-flash に対応づけているので、名前からはコードの行き先は分かりません。
- 誰かが抽出の費用を払わなければなりません。デフォルトでは自分のプロバイダーのアカウントで、CMEM Pro の月額 30 ドルの売り文句は、ホスト型の観測がメモリ生成をメインエージェントのサブスクリプションから切り離す、というものです。
- リコールは 1 段階ではなく 3 段階です。約 50〜100 トークンのインデックスヒット、次にタイムラインのコンテキスト、最後に選択した ID だけの約 500〜1,000 トークンの詳細取得。「安く絞り込み、高いものを取得する」は応用できるパターンであり、トークン計算がそもそも成り立つ理由です。
- 機能低下の契約は公開されており、非対称です。トランスポートの失敗は exit 0 でセッションをブロックせず、クライアント側の失敗は exit 2 でブロックします。したがって、中途半端にアップグレードされたインストールは、起動しないセッションになります。
- プロジェクト自身の集計では、オブザーバーのトラフィックは約 98% が入力トークンです — 書くプロセスではなく読むプロセスです。そのつもりで価格を見積もってください。
- 各観測は複数の Chroma ドキュメントになります。抽出された事実ごとに 1 つとナラティブで、細部についてのクエリが、名目上は別の話題のメモを呼び出せる理由です。
- v15.0.2 の修正は、このプロジェクトで最も示唆に富むバグです。抽出の役割にある推論モデルが出力予算を推論に使い果たし、セッションに出力するものを残さなかった。要約役として使うモデルでは推論を無効にしてください。
- 2 つのパッケージマネージャーのランタイム(Bun と uv)がグローバルにインストールされ、デーモンが 37700 + (uid % 100) をバインドし、MCP サーバーがエージェントに加わります。いずれも妥当ですが、受け入れる前に接点として数えておく価値があります。
- 唯一の帯域内の制御は <private> タグで、内容を保存から完全に除外します。それ以外はすべてインストール時に決まります。
理解度チェック
0/6情報源とさらなる読み物
- thedotmack/claude-mem: https://github.com/thedotmack/claude-mem — プロジェクト本体。Apache-2.0、2025 年 8 月 31 日作成、103,252 スター、最終プッシュは 2026 年 10 月 26 日(同日に GitHub API で確認)。
docs/architecture-overview.md: https://github.com/thedotmack/claude-mem/blob/main/docs/architecture-overview.md — このページで最良の情報源。レイヤー図、タイムアウト付きのフック表、データフロー図、保留キューとジェネレーター再起動のパターン、exit-0/exit-2 の機能低下の契約、重複排除ハッシュ、2 種類のセッション ID、SQLite のスキーマ、Chroma のドキュメント命名。docs/security.md: https://github.com/thedotmack/claude-mem/blob/main/docs/security.md — API キー認証のデフォルト、cmem_プレフィックスと SHA-256 のみの保存、ループバックのバイパスに同時に必要な 2 つの環境変数、BullMQ/Redis に関する注記。docs/ip-boundary.md: https://github.com/thedotmack/claude-mem/blob/main/docs/ip-boundary.md — Apache-2.0 のコンポーネントと商用として留保された領域のオープンコアの分割。docs/expense-pricing/README.md: https://github.com/thedotmack/claude-mem/blob/main/docs/expense-pricing/README.md — オブザーバーのコスト集計データセット、2026-08-08 からのcmem-observerからdeepseek/deepseek-v4-flashへの対応づけ、約 98% が入力という作業の性質。「どのモデルが自分のコードを読むのか」に答えるファイルです。- リリースノート v15.0.0(Smart memory search がデフォルトに): https://github.com/thedotmack/claude-mem/releases/tag/v15.0.0 — 2026 年 10 月 20 日に 3 段階のリコールがデフォルトになった。
- リリースノート v15.0.2(オブザーバーのリクエストで推論を無効化): https://github.com/thedotmack/claude-mem/releases/tag/v15.0.2 — 出力予算のバグで、変更履歴で最も示唆に富む項目。
- リリースノート v15.2.1: https://github.com/thedotmack/claude-mem/releases/tag/v15.2.1 — v13.26.1 以降
NPM_TOKENが失敗していたため、npm の公開が OIDC と来歴証明付きの信頼できる公開に移行した。パッケージのサプライチェーンを監査する人には注目に値する。 - cmem.ai: https://cmem.ai/ — ホスト型プラン: 30 日間のトライアル後に月額 30 ドル、「メモリ生成をメインエージェントのサブスクリプションから切り離す」という説明、ローカル保存とクラウド同期に関する記述、そしてトークンへの影響はワークロードとプロバイダー次第という率直な但し書き。
- Model Context Protocol — ツール仕様: https://modelcontextprotocol.io/docs/concepts/tools —
search、timeline、get_observationsツールがエージェントに届く仕組み。 - SQLite FTS5: https://www.sqlite.org/fts5.html — リコールの安価な最初の手順の背後にある全文インデックス。
- Chroma: https://docs.trychroma.com/ — ベクトルストアと、狭いクエリが広いメモに当たる原因となる事実ごとのドキュメントモデル。
次へ
- エージェントのメモリの実際の仕組み — このツールが属する分類: 何がメモリに当たるのか、各アプローチがどの層で動作するのか、そしてそのほとんどが保存ではなく検索で失敗する理由
- Hindsight: 学習するエージェントメモリ — 設計空間のもう一方の端で、メモリはトランスクリプトから抽出されるのではなく結果によって更新される
- CLAUDE.md とメモリファイル — これらのツールのすべてが暗黙のうちに競合している、ファーストパーティの手書きのベースラインで、デーモンを追加する前にまず正しく整えるべきもの
- エージェントがアップロードするもの — このページがオブザーバーについて問うことの、より広いバージョン: エージェントが通常の作業をするあいだに、何がマシンの外に出るのか