実行プログラムと拡張機能

agent-memory:コーディングエージェントにセッションを越えた記憶を持たせる

セッションが閉じると消えていた文脈をファイルとして残します

agent-memoryはコーディングエージェントの記憶をMarkdownファイルとして残す実行ツールです。ファイルが原本で、SQLiteの索引は削除して作り直せるキャッシュです。想起のときは本文を貼り付けず、ファイルのパスと要約で答えるため、エージェントは必要な分だけ開きます。

実行条件と要点
  • セッションが終わると消えていた作業の文脈をMarkdownファイルとして残します。
  • 検索はパスと要約で答え、本文は必要なときだけ開きます。
  • 制限付きの実験で52.9%となり、記憶なしの5.8%を上回りました。
  • Claude Code、Codex CLI、Hermesが同じ保存先を共有します。

セッションが閉じると消えていたものを残します

エージェントはセッションを閉じると、その中で学んだことを忘れます。どのファイルをなぜ直したのか、どの試みが失敗したのかは次のセッションには残りません。agent-memoryはこの欠落を埋める実行ツールです。

記憶の扱い方は二つに分かれています。一つは埋め込みと知識グラフで探す検索エンジン、もう一つはエージェントが直接読むファイルシステムです。前者はよく見つかりますが中身を検査しにくく、後者は読みやすいものの検索は苦手です。

このツールは両方を一つの保存先にまとめます。ファイルはそのままにして索引を重ね、検索は索引が、読むのはファイルが担当します。

記憶は会話全文を貼り付けた塊ではありません。何をなぜしたのかを1つのファイルに書き、関連するファイル同士をリンクでつなぎます。

ノートPCの前に座る人と、文書・表・メールの窓がエージェントへ流れていく図
セッションごとに消えていた文書・表・メールの文脈をファイルとして残すことが記憶の出発点です。

Markdownが原本で、索引はキャッシュです

記憶はMarkdownファイル一つひとつが単位です。ファイル内のリンクが関係を作り、同じフォルダのファイル同士は隣人になります。グラフデータベースを別に置かなくても関係は保たれます。

記憶をたどる3つの経路
経路処理内容
セッション開始時の注入MEMORY.mdをそのまま読み込む
索引検索FTS5で検索し、ベクトルも混ぜられる
フォルダの直接探索lsとgrepで直接探す

索引はいつでも削除できます。索引フォルダを消して作り直しても失う知識はなく、これは文書の約束ではなくテストで確認しています。

索引の作り直し
rm -rf .index/ && mem rebuild

インストールして保存先を作ります

まだPyPIにないためリポジトリからインストールします。Python 3.12以上が必要で、インストールするとmemとMCP1サーバー、フックの実行ファイルが一緒に作られます。

インストール
uv sync --all-packages

保存先を作った後は、使っているエージェントに合わせて設定を結びつけます。ホストごとに設定ファイルの場所が違うため、コマンドにホスト名を入れます。

想起はパスで答え、ファイルで読みます

検索すると本文ではなく一行の要約とファイルのパス、スコアが返ります。エージェントはその一覧を見て、必要なファイルだけを必要な深さで開きます。

読む深さごとにかかるコスト
段階返ってくるもの
一覧一行の要約、パス、スコア
概要見出しのみ
要約ファイルの要約
全文ファイル全体
原本引用された元のメッセージ

本文を貼り付けるとコンテキストがすぐ埋まり、何を読んだかも確認しづらくなります。パスで答えると、開いたファイルと開かなかったファイルが会話記録に残ります。

小さなロボットが箱の上に立ち、ファイル・カレンダー・チャット・検索のカードが線でつながる図
記憶をたどる経路が複数あれば、一つが外れても別の道で見つけられます。

書き込みは会話の境界で起こります

エージェントが記憶を残すと判断するのを待ちません。会話が切れる地点で整理が始まり、その作業が進行中の仕事を止めることはありません。

残す価値のあることは、たいてい作業が終わる瞬間に現れます。どんな選択をし、何が失敗したかがそのとき整理されます。

整理の前に元の会話記録を先に複製します。そのため整理の段階で取りこぼした内容がシステムから消えることはありません。

ライブラリの中にモデルのクライアントはありません。判断はホストのエージェントのCLI2が行い、その判断は会話記録に残るので後から確認できます。

眠っている間に整理し、忘れます

会話がないときに統合処理が走ります。新しく入った記憶をまとめ、価値の低いものを忘れます。この処理は独自の周期で動くため、リクエストを待ちません。

人のいない間にできることとできないことが分かれています。追加と更新は自分で行いますが、削除は提案としてのみ残し、確認を受けます。

忘れることも機能です。同じ内容が複数のファイルに散らばると検索結果が重複し、古い判断が最新の判断を覆い隠します。

更新しても以前の記録は消えません。特定の日付を指定すればその時点の記憶で答えられるため、何がいつ変わったかを追えます。

夜に机の照明をつけてモニターのチェック一覧を見る人と、整理された書類トレイ
会話のない時間に統合と忘却が走るため、次のセッションは整理された記憶から始まります。

記憶がある場合とない場合を比較しました

開発チームはLongMemEval-Sを120エピソードに縮めて測定しました。検索範囲は12セッションに制限し、ホストはClaude Haiku 4.5、採点はSonnet 5が担当しました。

記憶なしと比較した正答率
方式正答
agent-memory52.9% (127/240)
MemCore35.8% (86/240)
記憶なし5.8% (7/120)

この数字は文章の品質や推論能力を測ったものではありません。以前のセッションの事実をどれだけ正確に取り戻せるかだけを見ています。

3つのホストが1つの保存先を共有します

Claude Codeが残した記憶をCodex CLIが見つけ、Hermesが再び使う組み合わせを確認しました。3つのホストを使う9通りの順序の組み合わせがすべて通り、特定の内容もそのまま残っていました。

ホストを変えても記憶が続くのは、保存先がファイルだからです。特定アプリのデータベースに閉じ込められていると、他のアプリからは取り出せません。

記憶なしで始めた場合と比べると36回中2回から13回に増えました。ホストを変えても記憶が引き継がれるという意味です。

初期バージョンなので確認すべき点があります

バージョンは0.1.0で、まだPyPIにはありません。コマンド名や設定項目が変わる可能性があるため、インストールした時点の文書に沿うのが安全です。

測定値は検索範囲を12セッションに制限した実験です。そのためこの数字は記憶の書き方についての比較であり、大きなコーパスでの性能比較ではありません。

エージェントを変えるとフックと設定を入れ直す必要があります。記憶そのものはMarkdownとして残りますが、どのホストがいつ書くかは設定によります。

用語の注釈

  1. MCP — モデルが利用できるツールやデータソースをクライアントに接続するためのプロトコルです。接続可能であることと、個別のツールを実行する権限は別に設定する必要があります。

    本文に戻る
  2. CLI — Command-Line Interfaceの略です。ターミナルにコマンドを入力してプログラムを操作する方式です。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
agent-memoryはコーディングエージェントの記憶をMarkdownファイルとして残す実行ツールです。ファイルが原本で、SQLiteの索引は削除して作り直せるキャッシュです。想起のときは本文を貼り付けず、ファイルのパスと要約で答えるため、エージェントは必要な分だけ開きます。