エージェント基盤・プロトコル

長期記憶とは|500件を毎回渡すと32,000トークン、絞ると3,200トークン

長期記憶とはどういう仕組みなのか全部渡すのと絞るのでどれだけ違うのか絞り込みが外したときどうなるのか

会話が終われば履歴は消えます。ですから前回決めたことを次も覚えていてほしければ、外に保存して次の会話で読み直させる仕組みが要ります。

実際に500件の記録を作って測ったところ、毎回まるごと渡すと32,114トークン、関係する分だけ渡すと3,210トークンでした。10.0倍の差です。

この記事の要点

  • 長期記憶は会話の外に保存して読み直させる仕組み
  • 500件を毎回渡すと32,114トークン
  • 問いに関係する50件だけなら3,210トークンで10.0倍の差
  • 絞り込みは0.03ミリ秒未満で終わるが、外すと必要な記録が届かない

500件を毎回渡すと32,000トークン、絞ると3,200トークン

500件の記録を実際に作って測りました。全部渡すと32,114トークン、関係する50件なら3,210トークンで10.0倍の差です。

長期記憶を持たせたときに何がどれだけかかるのかを、実際に記録を作って測りました。用意したのは10分野にまたがる500件の取り決めです。

記録は実際に生成しており、バイト数と絞り込みにかかった時間は実測値です。ただしトークン換算は日本語1文字あたり約1.5トークンという係数を置いた概算になります。

javascript
const bytes = (s) => Buffer.byteLength(s, 'utf8');
// 実測に近づけるため、日本語は1文字あたり約1.5トークンとして換算する
const toTok = (b) => Math.round((b / 3) * 1.5);

// 絞り込み: 問いに含まれる語で記録を選ぶ
function pick(query) {
  const t0 = process.hrtime.bigint();
  const hit = RECORDS.filter((r) => query.includes(r.topic));
  const t1 = process.hrtime.bigint();
  return { hit, us: Number(t1 - t0) / 1000 };   // ナノ秒をマイクロ秒に直す
}
text
記録 500件(10分野)に対して「請求の締め日を教えて」と聞いたとき

渡し方        件数    バイト数     換算トークン
全部渡す      500件     64227       32114 tok
絞って渡す     50件      6420        3210 tok

比: 10.0倍
絞り込みにかかった時間: 26.2 マイクロ秒(0.026 ミリ秒)

記録が増えたときの、全部渡す場合のトークン量

件数      バイト数     換算トークン
   50件       6371        3186 tok
  100件      12753        6377 tok
  500件      64227       32114 tok
 2000件     256908      128454 tok

件数と送信量が素直に比例しました。2,000件になると128,454トークンで、これを毎回の問い合わせごとに送ることになります。

絞り込み自体は速い

絞り込みにかかった時間は26.2マイクロ秒、つまり0.03ミリ秒未満でした。実行のたびに多少ぶれますが、桁は変わりません。500件を走査してこの速さですから、処理時間は判断の材料になりません

効いてくるのは送信量のほうです。10倍の差は、そのまま毎回の費用と応答時間に乗ります。

外したときが問題

絞り込みには弱点があります。関係する記録を取り逃がしても、そのまま答えてしまうことです。

「記録が見つかりませんでした」とは返りません。手元にある分だけで、いつもどおりの調子で答えます。ですから外したことに気づけません。

件数に比例して伸びる。絞ると10分の1だが、外すと気づけない。

単位: tok50件を全部渡す3186tok500件を全部渡す32114tok2000件を全部渡す128454tok500件から絞って渡す3210tok実際に生成した記録のバイト数から換算した概算。1文字あたり1.5トークンと置いた。
図1 ── 全部渡す場合の件数と送信量
出典Claude Platform Docs「Memory tool」2026-08-17 確認
The memory tool lets Claude store and retrieve information across conversations in a directory of memory files.
原文Claude Platform Docs「Memory tool」 この内容の有効期限2027-02-17

全部渡すか、絞って渡すか

件数が少ないうちは全部渡すほうが確実です。増えてきたら絞りますが、外した場合の扱いを先に決めてください。

長期記憶の渡し方は、件数と、取り逃がしたときの困り方で決まります。前の節の数字がその材料になります。

少ないうちは全部渡す

50件なら3,186トークンです。この程度なら絞る意味がありません。絞れば取り逃がす可能性が生まれるので、渡せるなら渡したほうが確実です

分岐点は使い方によりますが、数百件を超えたあたりから送信量が無視できなくなります。

外したときの扱いを決める

絞る方式に移るときは、先にここを決めてください。関係する記録が見つからなかった場合に、答えさせるのか止めるのかです。

  1. 見つからなければ答えない。確実だが、使いにくくなる場面がある
  2. 見つからなかったと添えて答える。読む側が判断できる
  3. そのまま普通に答える。気づけないので避けたい
  4. 見つからなければ全件に切り替える。費用は増えるが取り逃がさない

3番目が既定の動作になりがちです。何も決めないと、これになります

読み直すのは仕事の前

実装されている仕組みの動きも押さえておいてください。Anthropicの説明では、記憶の機能が有効な場合、仕事を始める前に記憶の置き場所を自動で確認するとされています。

つまり読み直しは毎回の仕事の入口で起きます。ですから置き場所が大きいほど、毎回の入口が重くなります。

取り逃がしても普通に答えてしまう。そこを決めずに絞らない。

件数が数百件を超えているかいいえ全部渡すはい見つからなかった場合の扱いを決めたかいいえ先に決めるはい絞って渡す。取り逃としを記録する500件で32,114トークン、絞ると3,210トークン。絞り込み自体は0.03ミリ秒未満で終わる。
図2 ── 記録の渡し方の判断
何を渡したかを記録するその問いに対してどの記録を渡したかを残しておくと、答えがおかしかったときに取り逃がしを確認できます。渡した記録の一覧がなければ、絞り込みが原因かどうかも切り分けられません。記録の設計はエージェント可観測性の記事で扱っています。
出典Claude Platform Docs「Memory tool」2026-08-17 確認
When the memory tool is enabled, Claude automatically checks its memory directory before starting a task.
原文Claude Platform Docs「Memory tool」 この内容の有効期限2027-02-17

長期記憶とはどういう仕組みなのか

会話の外にファイルとして保存し、次の会話で読み直させます。保存も読み出しも呼び出し側が実行します。

長期記憶は、会話が終わっても残る場所に情報を保存し、別の会話から読み直す仕組みです。会話の履歴とは別のものになります。

実体はファイル

Anthropicの実装では、会話をまたいで情報を保存し取り出せるようにするため、記憶用のファイルを置いた場所が使われます。特別なデータベースではありません。

ファイルなので、中身を人が読めます。何を覚えているかを確認したり、間違って覚えたものを消したりできるのは、この構造の利点です。

実行するのは呼び出し側

動きの分担も押さえておいてください。同じ文書では、この仕組みは呼び出し側で動くもので、モデルはファイル操作を要求し、実際に実行するのは自分のプログラムだと説明されています。

つまり保存先も、書き込んでよい範囲も、こちらが決めます。要求されたとおりに実行するかどうかも、こちらの実装次第です。

短期記憶との違い

会話の中だけで保たれる仕組みは別にあります。そちらは上限に当たると古い順に削られ、会話が終われば消えます。詳しくは短期記憶の記事で扱っています。

余談 間違って覚えたものが残り続ける

運用していて厄介だったのは、誤った内容を保存してしまうと、その後ずっと参照されることでした。履歴と違って自然には消えません。編集部では、保存した記録に日付を残し、古いものを定期的に見直すようにしています。

出典Claude Platform Docs「Memory tool」2026-08-17 確認
The memory tool operates client-side: Claude requests file operations, and your application executes them.
原文Claude Platform Docs「Memory tool」 この内容の有効期限2027-02-17

よくある質問

長期記憶と会話の履歴は何が違いますか
履歴は1つの会話の中だけのもので、会話が終われば消えます。長期記憶は外部に保存されるため、別の会話からも読み直せます。
保存は誰がするのですか
実装によりますが、モデルが操作を要求し、それを実行するのは呼び出し側のプログラムという形が一般的です。保存先はこちらで用意します。
全部渡してはいけませんか
件数が少なければ問題ありません。ただし件数に比例して送信量が増えるため、2,000件では128,000トークンを超える計算になります。
絞り込みが外れたらどうなりますか
必要な記録が渡らないまま答えます。しかも「記録になかった」ではなく、知らないまま普通に答えるので気づきにくくなります。

まとめ

  • 長期記憶は会話の外に保存して読み直させる仕組み
  • 500件を全部渡すと32,114トークン、絞ると3,210トークン
  • 件数に比例して伸びるので、2,000件では128,454トークン
  • 絞り込みは速いが、外すと気づかないまま答える

今日から始められること

  1. 会話をまたいで覚えておきたい内容を書き出す
  2. その保存先を決める。ファイルでも記録用の領域でもよい
  3. 件数が増えたときに何トークンになるかを計算する
  4. 絞り込みが外した場合に、答えさせずに済ませる作りにする

実務で組んだ長期記憶のワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る