メモリツールは現在ベータ版です。有効にするには、APIリクエストでベータヘッダー
context-management-2025-06-27を使用してください。この機能に関するフィードバックは、フィードバックフォームを通じてお寄せください。使用例
- 複数のエージェント実行にわたってプロジェクトコンテキストを維持
- 過去のやり取り、決定、フィードバックから学習
- 時間をかけて知識ベースを構築
- Claudeが繰り返しワークフローで改善する会話間学習を可能にする
仕組み
有効にすると、Claudeはタスクを開始する前に自動的にメモリディレクトリをチェックします。Claudeは/memoriesディレクトリ内でファイルを作成、読み取り、更新、削除して作業中に学んだことを保存し、将来の会話でそれらのメモリを参照して類似のタスクをより効果的に処理したり、中断したところから再開したりできます。
これはクライアントサイドツールなので、Claudeはメモリ操作を実行するためにツール呼び出しを行い、あなたのアプリケーションがそれらの操作をローカルで実行します。これにより、メモリがどこにどのように保存されるかを完全に制御できます。セキュリティのため、すべてのメモリ操作を/memoriesディレクトリに制限する必要があります。
例:メモリツール呼び出しの仕組み
Claudeにタスクの支援を求めると、Claudeは最初に自動的にメモリディレクトリをチェックします。典型的なやり取りは次のようになります: 1. ユーザーリクエスト:サポートされているモデル
メモリツールは以下で利用可能です:- 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
基本的な使用方法
ツールコマンド
クライアントサイド実装では、これらのメモリツールコマンドを処理する必要があります:view
オプションの行範囲でディレクトリの内容またはファイルの内容を表示します:create
ファイルを作成または上書きします:str_replace
ファイル内のテキストを置換します:insert
特定の行にテキストを挿入します:delete
ファイルまたはディレクトリを削除します:rename
ファイル/ディレクトリの名前を変更または移動します:プロンプトガイダンス
メモリツールが含まれている場合、システムプロンプトに以下の指示を自動的に含めます:注意:メモリフォルダを編集する際は、常にその内容を最新で一貫性があり整理された状態に保つようにしてください。関連性がなくなったファイルは名前を変更したり削除したりできます。必要でない限り新しいファイルを作成しないでください。また、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がアクティブなコンテキストと永続的なメモリの両方を管理しながら、ワークフローを無期限に継続できる