Alat memori memungkinkan Claude untuk menyimpan dan mengambil informasi di seluruh percakapan melalui direktori file memori. Claude dapat membuat, membaca, memperbarui, dan menghapus file yang bertahan di antara sesi, memungkinkannya membangun pengetahuan seiring waktu tanpa menyimpan semuanya di jendela konteks.
Alat memori beroperasi di sisi klien—Anda mengontrol di mana dan bagaimana data disimpan melalui infrastruktur Anda sendiri.
Alat memori saat ini dalam beta. Untuk mengaktifkannya, gunakan header beta context-management-2025-06-27 dalam permintaan API Anda.
Silakan hubungi kami melalui formulir umpan balik kami untuk berbagi umpan balik Anda tentang fitur ini.
Ketika diaktifkan, Claude secara otomatis memeriksa direktori memorinya sebelum memulai tugas. Claude dapat membuat, membaca, memperbarui, dan menghapus file di direktori /memories untuk menyimpan apa yang dipelajarinya saat bekerja, kemudian mereferensikan memori tersebut dalam percakapan masa depan untuk menangani tugas serupa dengan lebih efektif atau melanjutkan dari tempat ia berhenti.
Karena ini adalah alat sisi klien, Claude membuat panggilan alat untuk melakukan operasi memori, dan aplikasi Anda menjalankan operasi tersebut secara lokal. Ini memberi Anda kontrol penuh atas di mana dan bagaimana memori disimpan. Untuk keamanan, Anda harus membatasi semua operasi memori ke direktori /memories.
Ketika Anda meminta Claude untuk membantu dengan tugas, Claude secara otomatis memeriksa direktori memorinya terlebih dahulu. Berikut adalah apa yang terlihat seperti interaksi khas:
1. Permintaan pengguna:
"Bantu saya merespons tiket layanan pelanggan ini."2. Claude memeriksa direktori memori:
"Saya akan membantu Anda merespons tiket layanan pelanggan. Biarkan saya memeriksa memori saya untuk konteks sebelumnya apa pun."Claude memanggil alat memori:
{
"type": "tool_use",
"id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
"name": "memory",
"input": {
"command": "view",
"path": "/memories"
}
}3. Aplikasi Anda mengembalikan isi direktori:
{
"type": "tool_result",
"tool_use_id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
"content": "Directory: /memories\n- customer_service_guidelines.xml\n- refund_policies.xml"
}4. Claude membaca file yang relevan:
{
"type": "tool_use",
"id": "toolu_01D5E6F7G8H9I0J1K2L3M4N5",
"name": "memory",
"input": {
"command": "view",
"path": "/memories/customer_service_guidelines.xml"
}
}5. Aplikasi Anda mengembalikan isi file:
{
"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 menggunakan memori untuk membantu:
"Berdasarkan panduan layanan pelanggan Anda, saya dapat membantu Anda menyusun respons. Silakan bagikan detail tiket..."Alat memori tersedia di:
claude-sonnet-4-5-20250929)claude-sonnet-4-20250514)claude-haiku-4-5-20251001)claude-opus-4-5-20251101)claude-opus-4-1-20250805)claude-opus-4-20250514)Untuk menggunakan alat memori:
context-management-2025-06-27 dalam permintaan API AndaUntuk menangani operasi alat memori di aplikasi Anda, Anda perlu mengimplementasikan penangan untuk setiap perintah memori. SDK kami menyediakan pembantu alat memori yang menangani antarmuka alat—Anda dapat membuat subkelas BetaAbstractMemoryTool (Python) atau menggunakan betaMemoryTool (TypeScript) untuk mengimplementasikan backend memori Anda sendiri (berbasis file, database, penyimpanan cloud, file terenkripsi, dll.).
Untuk contoh yang berfungsi, lihat:
Implementasi sisi klien Anda perlu menangani perintah alat memori ini:
Menampilkan isi direktori atau isi file dengan rentang baris opsional:
{
"command": "view",
"path": "/memories",
"view_range": [1, 10] // Opsional: lihat baris tertentu
}Buat atau timpa file:
{
"command": "create",
"path": "/memories/notes.txt",
"file_text": "Meeting notes:\n- Discussed project timeline\n- Next steps defined\n"
}Ganti teks dalam file:
{
"command": "str_replace",
"path": "/memories/preferences.txt",
"old_str": "Favorite color: blue",
"new_str": "Favorite color: green"
}Sisipkan teks pada baris tertentu:
{
"command": "insert",
"path": "/memories/todo.txt",
"insert_line": 2,
"insert_text": "- Review memory tool documentation\n"
}Hapus file atau direktori:
{
"command": "delete",
"path": "/memories/old_file.txt"
}Ubah nama atau pindahkan file/direktori:
{
"command": "rename",
"old_path": "/memories/draft.txt",
"new_path": "/memories/final.txt"
}Kami secara otomatis menyertakan instruksi ini ke prompt sistem ketika alat memori disertakan:
IMPORTANT: ALWAYS VIEW YOUR MEMORY DIRECTORY BEFORE DOING ANYTHING ELSE.
MEMORY PROTOCOL:
1. Use the `view` command of your `memory` tool to check for earlier progress.
2. ... (work on the task) ...
- As you make progress, record status / progress / thoughts etc in your memory.
ASSUME INTERRUPTION: Your context window might be reset at any moment, so you risk losing any progress that is not recorded in your memory directory.Jika Anda mengamati Claude membuat file memori yang berantakan, Anda dapat menyertakan instruksi ini:
Catatan: saat mengedit folder memori Anda, selalu coba simpan kontennya tetap terbaru, koheren, dan terorganisir. Anda dapat mengubah nama atau menghapus file yang tidak lagi relevan. Jangan buat file baru kecuali diperlukan.
Anda juga dapat memandu apa yang Claude tulis ke memori, misalnya, "Hanya tulis informasi yang relevan dengan <topic> dalam sistem memori Anda."
Berikut adalah kekhawatiran keamanan penting saat mengimplementasikan penyimpanan memori Anda:
Claude biasanya akan menolak untuk menuliskan informasi sensitif dalam file memori. Namun, Anda mungkin ingin mengimplementasikan validasi yang lebih ketat yang menghilangkan informasi yang berpotensi sensitif.
Pertimbangkan pelacakan ukuran file memori dan mencegah file tumbuh terlalu besar. Pertimbangkan menambahkan jumlah karakter maksimum yang dapat dikembalikan perintah baca memori, dan biarkan Claude membuka halaman konten.
Pertimbangkan untuk menghapus file memori secara berkala yang belum diakses dalam waktu yang lama.
Input jalur berbahaya dapat mencoba mengakses file di luar direktori /memories. Implementasi Anda HARUS memvalidasi semua jalur untuk mencegah serangan traversal direktori.
Pertimbangkan perlindungan ini:
/memories../, ..\\, atau pola traversal lainnya%2e%2e%2f)pathlib.Path.resolve() dan relative_to() Python)Alat memori menggunakan pola penanganan kesalahan yang sama dengan alat editor teks. Kesalahan umum termasuk file tidak ditemukan, kesalahan izin, dan jalur tidak valid.
Alat memori dapat digabungkan dengan context editing, yang secara otomatis menghapus hasil alat lama ketika konteks percakapan tumbuh melampaui ambang yang dikonfigurasi. Kombinasi ini memungkinkan alur kerja agen jangka panjang yang sebaliknya akan melampaui batas konteks.
Ketika context editing diaktifkan dan percakapan Anda mendekati ambang pembersihan, Claude secara otomatis menerima notifikasi peringatan. Ini mendorong Claude untuk menyimpan informasi penting dari hasil alat ke file memori sebelum hasil tersebut dihapus dari jendela konteks.
Setelah hasil alat dihapus, Claude dapat mengambil informasi yang disimpan dari file memori kapan pun diperlukan, secara efektif memperlakukan memori sebagai perpanjangan dari konteks kerjanya. Ini memungkinkan Claude untuk:
Pertimbangkan proyek refaktorisasi kode dengan banyak operasi file:
/memories/refactoring_progress.xml)Untuk menggunakan kedua fitur bersama:
Anda juga dapat mengecualikan panggilan alat memori dari pembersihan untuk memastikan Claude selalu memiliki akses ke operasi memori terbaru:
context_management={
"edits": [
{
"type": "clear_tool_uses_20250919",
"exclude_tools": ["memory"]
}
]
}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"
}]
}'response = client.beta.messages.create(
model="claude-sonnet-4-5",
max_tokens=4096,
messages=[...],
tools=[
{
"type": "memory_20250818",
"name": "memory"
},
# Your other tools
],
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
}
}
]
}
)