メモリツール
メモリツールは、Claudeがメモリファイルディレクトリを通じて会話間で情報を保存・取得できるようにします。Claudeは、セッション間で持続するファイルを作成、読み取り、更新、削除でき、コンテキストウィンドウにすべてを保持することなく、時間をかけて知識を構築できます。
メモリツールはクライアントサイドで動作します—あなたが独自のインフラストラクチャを通じてデータがどこにどのように保存されるかを制御します。
メモリツールは現在ベータ版です。有効にするには、APIリクエストでベータヘッダーcontext-management-2025-06-27を使用してください。
この機能に関するフィードバックは、フィードバックフォームを通じてお寄せください。
使用例
- 複数のエージェント実行にわたってプロジェクトコンテキストを維持
- 過去のやり取り、決定、フィードバックから学習
- 時間をかけて知識ベースを構築
- Claudeが繰り返しワークフローで改善する会話間学習を可能にする
仕組み
有効にすると、Claudeはタスクを開始する前に自動的にメモリディレクトリをチェックします。Claudeは/memoriesディレクトリ内でファイルを作成、読み取り、更新、削除して作業中に学んだことを保存し、将来の会話でそれらのメモリを参照して類似のタスクをより効果的に処理したり、中断したところから再開したりできます。
これはクライアントサイドツールなので、Claudeはメモリ操作を実行するためにツール呼び出しを行い、あなたのアプリケーションがそれらの操作をローカルで実行します。これにより、メモリがどこにどのように保存されるかを完全に制御できます。セキュリティのため、すべてのメモリ操作を/memoriesディレクトリに制限する必要があります。
例:メモリツール呼び出しの仕組み
Claudeにタスクの支援を求めると、Claudeは最初に自動的にメモリディレクトリをチェックします。典型的なやり取りは次のようになります:
1. ユーザーリクエスト:
「このカスタマーサービスチケットへの返信を手伝ってください。」2. Claudeがメモリディレクトリをチェック:
「カスタマーサービスチケットへの返信をお手伝いします。以前のコンテキストがないかメモリをチェックしてみます。」Claudeがメモリツールを呼び出します:
{
"type": "tool_use",
"id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
"name": "memory",
"input": {
"command": "view",
"path": "/memories"
}
}3. あなたのアプリケーションがディレクトリの内容を返します:
{
"type": "tool_result",
"tool_use_id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
"content": "Directory: /memories\n- customer_service_guidelines.xml\n- refund_policies.xml"
}4. Claudeが関連ファイルを読み取ります:
{
"type": "tool_use",
"id": "toolu_01D5E6F7G8H9I0J1K2L3M4N5",
"name": "memory",
"input": {
"command": "view",
"path": "/memories/customer_service_guidelines.xml"
}
}5. あなたのアプリケーションがファイルの内容を返します:
{
"type": "tool_result",
"tool_use_id": "toolu_01D5E6F7G8H9I0J1K2L3M4N5",
"content": "<guidelines>\n<addressing_customers>\n- Always address customers by their first name\n- Use empathetic language\n..."
}6. Claudeがメモリを使用して支援します:
「あなたのカスタマーサービスガイドラインに基づいて、返信の作成をお手伝いできます。チケットの詳細を共有してください...」サポートされているモデル
メモリツールは以下で利用可能です:
- Claude Sonnet 4.5 (
claude-sonnet-4-5-20250929) - Claude Sonnet 4 (
claude-sonnet-4-20250514) - Claude Haiku 4.5 (
claude-haiku-4-5-20251001) - Claude Opus 4.1 (
claude-opus-4-1-20250805) - Claude Opus 4 (
claude-opus-4-20250514)
はじめに
メモリツールを使用するには:
- APIリクエストにベータヘッダー
context-management-2025-06-27を含める - リクエストにメモリツールを追加する
- メモリ操作のクライアントサイドハンドラーを実装する
アプリケーションでメモリツール操作を処理するには、各メモリコマンドのハンドラーを実装する必要があります。私たちのSDKは、ツールインターフェースを処理するメモリツールヘルパーを提供しています—BetaAbstractMemoryTool(Python)をサブクラス化するか、betaMemoryTool(TypeScript)を使用して、独自のメモリバックエンド(ファイルベース、データベース、クラウドストレージ、暗号化ファイルなど)を実装できます。
実用的な例については、以下を参照してください:
- Python: examples/memory/basic.py
- TypeScript: examples/tools-helpers-memory.ts
基本的な使用方法
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--header "anthropic-beta: context-management-2025-06-27" \
--data '{
"model": "claude-sonnet-4-5",
"max_tokens": 2048,
"messages": [
{
"role": "user",
"content": "I'\''m working on a Python web scraper that keeps crashing with a timeout error. Here'\''s the problematic function:\n\n```python\ndef fetch_page(url, retries=3):\n for i in range(retries):\n try:\n response = requests.get(url, timeout=5)\n return response.text\n except requests.exceptions.Timeout:\n if i == retries - 1:\n raise\n time.sleep(1)\n```\n\nPlease help me debug this."
}
],
"tools": [{
"type": "memory_20250818",
"name": "memory"
}]
}'ツールコマンド
クライアントサイド実装では、これらのメモリツールコマンドを処理する必要があります:
view
オプションの行範囲でディレクトリの内容またはファイルの内容を表示します:
{
"command": "view",
"path": "/memories",
"view_range": [1, 10] // オプション:特定の行を表示
}create
ファイルを作成または上書きします:
{
"command": "create",
"path": "/memories/notes.txt",
"file_text": "Meeting notes:\n- Discussed project timeline\n- Next steps defined\n"
}str_replace
ファイル内のテキストを置換します:
{
"command": "str_replace",
"path": "/memories/preferences.txt",
"old_str": "Favorite color: blue",
"new_str": "Favorite color: green"
}insert
特定の行にテキストを挿入します:
{
"command": "insert",
"path": "/memories/todo.txt",
"insert_line": 2,
"insert_text": "- Review memory tool documentation\n"
}delete
ファイルまたはディレクトリを削除します:
{
"command": "delete",
"path": "/memories/old_file.txt"
}rename
ファイル/ディレクトリの名前を変更または移動します:
{
"command": "rename",
"old_path": "/memories/draft.txt",
"new_path": "/memories/final.txt"
}プロンプトガイダンス
メモリツールが含まれている場合、システムプロンプトに以下の指示を自動的に含めます:
重要:他の何よりも先に、常にメモリディレクトリを表示してください。
メモリプロトコル:
1. `memory`ツールの`view`コマンドを使用して、以前の進捗をチェックしてください。
2. ... (タスクに取り組む)...
- 進捗を作るにつれて、ステータス/進捗/思考などをメモリに記録してください。
中断を想定:コンテキストウィンドウはいつでもリセットされる可能性があるため、メモリディレクトリに記録されていない進捗を失うリスクがあります。Claudeが乱雑なメモリファイルを作成している場合は、この指示を含めることができます:
注意:メモリフォルダを編集する際は、常にその内容を最新で一貫性があり整理された状態に保つようにしてください。関連性がなくなったファイルは名前を変更したり削除したりできます。必要でない限り新しいファイルを作成しないでください。
また、Claudeがメモリに書き込む内容をガイドすることもできます。例:「メモリシステムには<トピック>に関連する情報のみを書き留めてください。」
セキュリティ上の考慮事項
メモリストアを実装する際の重要なセキュリティ上の懸念事項は以下の通りです:
機密情報
Claudeは通常、メモリファイルに機密情報を書き込むことを拒否します。ただし、潜在的に機密性の高い情報を除去するより厳格な検証を実装することをお勧めします。
ファイルストレージサイズ
メモリファイルのサイズを追跡し、ファイルが大きくなりすぎることを防ぐことを検討してください。メモリ読み取りコマンドが返すことができる最大文字数を追加し、Claudeが内容をページ分割できるようにすることを検討してください。
メモリの有効期限
長期間アクセスされていないメモリファイルを定期的にクリアすることを検討してください。
パストラバーサル保護
悪意のあるパス入力は、/memoriesディレクトリ外のファイルにアクセスしようとする可能性があります。あなたの実装は、ディレクトリトラバーサル攻撃を防ぐためにすべてのパスを検証する必要があります。
以下の保護措置を検討してください:
- すべてのパスが
/memoriesで始まることを検証する - パスを正規形式に解決し、メモリディレクトリ内に留まることを確認する
../、..\\、またはその他のトラバーサルパターンを含むパスを拒否する- URLエンコードされたトラバーサルシーケンス(
%2e%2e%2f)に注意する - 言語の組み込みパスセキュリティユーティリティを使用する(例:Pythonの
pathlib.Path.resolve()とrelative_to())
エラーハンドリング
メモリツールはテキストエディタツールと同じエラーハンドリングパターンを使用します。一般的なエラーには、ファイルが見つからない、権限エラー、無効なパスなどがあります。
コンテキスト編集との併用
メモリツールはコンテキスト編集と組み合わせることができ、会話コンテキストが設定されたしきい値を超えて成長すると古いツール結果を自動的にクリアします。この組み合わせにより、コンテキスト制限を超える長時間実行のエージェントワークフローが可能になります。
連携の仕組み
コンテキスト編集が有効で、会話がクリアしきい値に近づくと、Claudeは自動的に警告通知を受け取ります。これにより、Claudeはツール結果がコンテキストウィンドウからクリアされる前に、ツール結果からの重要な情報をメモリファイルに保存するよう促されます。
ツール結果がクリアされた後、Claudeは必要に応じてメモリファイルから保存された情報を取得でき、メモリを作業コンテキストの拡張として効果的に扱います。これにより、Claudeは以下のことができます:
- 重要な情報を失うことなく複雑な多段階ワークフローを継続する
- ツール結果が削除された後でも過去の作業と決定を参照する
- 典型的なコンテキスト制限を超える会話にわたって一貫したコンテキストを維持する
- アクティブなコンテキストウィンドウを管理可能に保ちながら、時間をかけて知識ベースを構築する
ワークフローの例
多くのファイル操作を伴うコードリファクタリングプロジェクトを考えてみましょう:
- Claudeがファイルに多数の編集を行い、多くのツール結果を生成する
- コンテキストが成長してしきい値に近づくと、Claudeが警告を受け取る
- Claudeがこれまでに行った変更をメモリファイル(例:
/memories/refactoring_progress.xml)にまとめる - コンテキスト編集が古いツール結果を自動的にクリアする
- Claudeが作業を継続し、すでに完了した変更を思い出す必要があるときにメモリファイルを参照する
- Claudeがアクティブなコンテキストと永続的なメモリの両方を管理しながら、ワークフローを無期限に継続できる
設定
両方の機能を一緒に使用するには:
response = client.beta.messages.create(
model="claude-sonnet-4-5",
max_tokens=4096,
messages=[...],
tools=[
{
"type": "memory_20250818",
"name": "memory"
},
# その他のツール
],
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{
"type": "clear_tool_uses_20250919",
"trigger": {
"type": "input_tokens",
"value": 100000
},
"keep": {
"type": "tool_uses",
"value": 3
}
}
]
}
)また、Claudeが最近のメモリ操作に常にアクセスできるように、メモリツール呼び出しをクリアから除外することもできます:
context_management={
"edits": [
{
"type": "clear_tool_uses_20250919",
"exclude_tools": ["memory"]
}
]
}