Claude Memory Tool完全解説:会話をまたいで情報を保存する長期記憶API
Claude Memory Toolを解説。クライアントサイドメモリの仕組み、Context Editingとの組み合わせによる長期エージェント設計、Managed Agentsのメモリストアとの使い分けを網羅。
TL;DR
- Claudeが会話をまたいで情報を保存・参照・更新できるツール
- ストレージはクライアントサイド管理(開発者が保存先を自由に選択)
- Context Editing と組み合わせると長期エージェントでのコンテキスト溢れを防止
- 保存先を自分で持ちたくない場合は、Managed Agents 側のメモリストアという別の選択肢がある
概要
Claude Memory Tool は、2025年9月29日にbetaとして公開されたメモリ管理ツールです。Claudeが自律的に情報を保存・参照・更新し、セッションをまたいでコンテキストを維持できます。
ストレージはサーバーサイドではなくクライアントサイドで管理します。保存先はファイル・データベース・ベクターストアなど開発者が自由に選べます。
ツールの構成
Memory Tool は {"type": "memory_20250818", "name": "memory"} という Anthropic 定義のツールとして宣言します。input_schema は自分で書きません。実際の保存処理は開発者側のハンドラーで実装し、次の3種類の操作をカバーします。
| 操作 | 用途 |
|---|---|
| 保存 | 新しい情報を記録する |
| 読み取り | 過去の情報を参照する |
| 更新 | 既存情報を最新化する |
基本的な使い方
import anthropic
import json
client = anthropic.Anthropic()
# メモリストア(シンプルなdict例)
memory_store = {}
def handle_memory_tool(tool_name, tool_input):
"""Memory Toolの実行ハンドラー"""
if tool_name == "memory_create":
key = tool_input["key"]
memory_store[key] = tool_input["value"]
return f"保存しました: {key}"
elif tool_name == "memory_read":
key = tool_input.get("key")
if key:
return memory_store.get(key, "データが見つかりません")
return json.dumps(memory_store) # 全件返す
elif tool_name == "memory_update":
key = tool_input["key"]
memory_store[key] = tool_input["value"]
return f"更新しました: {key}"
# Memory Tool を組み込んだエージェントループ
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
tools=[{"type": "memory_20250818", "name": "memory"}],
messages=[
{
"role": "user",
"content": "私は田中省伍です。Webエンジニアとして働いています。覚えておいてください。"
}
],
)
Context Editing との組み合わせ
長期エージェントでは、処理を続けるとツール出力が蓄積してコンテキストウィンドウを消費します。Context Editing と組み合わせることで、古いツール結果を削除しながら重要情報だけをメモリに保持できます。
# コンテキスト削減 + メモリ保持の組み合わせ例
# 1. エージェントが重要情報をMemory Toolで保存
# 2. 古いtool_resultをContext Editingで削除
# 3. 次のステップでMemory Toolから必要な情報を読み取る
# SDK の tool_runner にループを任せる場合
runner = client.beta.messages.tool_runner(
model="claude-opus-5",
max_tokens=4096,
tools=[{"type": "memory_20250818", "name": "memory"}],
messages=[...],
)
result = runner.until_done()
Context Editing 自体は client.beta.messages.* に context-management-2025-06-27 betaヘッダーを付け、context_management で方式を指定します。古いツール結果を消す clear_tool_uses_20250919 と、思考ブロックを消す clear_thinking_20251015 があります。
Claude.ai のメモリ・Managed Agents のメモリストアとの違い
2026年7月に Managed Agents 向けのメモリストアが加わり、選択肢は3つになりました。
| 項目 | Memory Tool(API) | メモリストア(Managed Agents) | Claude.ai メモリ |
|---|---|---|---|
| 管理者 | 開発者(クライアント側) | Anthropic(サーバー側) | Anthropic(サーバー側) |
| 保存先 | 自由(DB・ファイル等) | ワークスペース単位のストア | Anthropicのシステム |
| ユーザー操作 | 開発者が設計 | APIから操作 | claude.ai UIから管理 |
| カスタマイズ | 完全に自由 | ストア構成の範囲で自由 | 限定的 |
メモリストアの要点
メモリストアはワークスペース単位のテキスト文書コレクションで、セッションのサンドボックスにディレクトリとしてマウントされます。バージョンは不変で、保持期間は30日です。コンプライアンス対応の redact エンドポイントも用意されています。
| 制限 | 値 |
|---|---|
| 1セッションあたりのストア数 | 8 |
| 1ストアあたりのメモリ数 | 2,000 |
| 1メモリのサイズ | 100 kB |
betaヘッダーは他の Managed Agents エンドポイントと異なり、メモリストア系だけ agent-memory-2026-07-22 を使います。managed-agents-2026-04-01 と同時に送ると400エラーになります。
関連して「Dreaming」も追加されています。断片化したメモリを、元のストアを書き換えずに新しい出力ストアへ統合するセッションです。
対応モデル
現行の Opus 5 / Sonnet 5 / Fable 5 / Haiku 4.5 で利用できます。
なお claude-opus-4-1 は2026年8月5日、claude-opus-4 と claude-sonnet-4 は2026年6月15日に廃止済みです。これらを指定している実装は動きません。