記憶工具使 Claude 能夠透過記憶檔案目錄在對話之間儲存和檢索資訊。Claude 可以建立、讀取、更新和刪除在工作階段之間持久保存的檔案,讓它能夠隨時間累積知識,而無需將所有內容保留在上下文視窗中。
記憶工具在客戶端運作——您可以透過自己的基礎設施控制資料的儲存位置和方式。
記憶工具目前處於測試階段。要啟用它,請在您的 API 請求中使用測試版標頭 context-management-2025-06-27。
請透過我們的意見回饋表單分享您對此功能的意見。
啟用後,Claude 會在開始任務之前自動檢查其記憶目錄。Claude 可以在 /memories 目錄中建立、讀取、更新和刪除檔案,以儲存工作中學到的內容,然後在未來的對話中參考這些記憶,以更有效地處理類似任務或從上次中斷的地方繼續。
由於這是一個客戶端工具,Claude 會發出工具呼叫來執行記憶操作,而您的應用程式在本地執行這些操作。這讓您完全控制記憶的儲存位置和方式。為了安全起見,您應該將所有記憶操作限制在 /memories 目錄中。
當您要求 Claude 協助處理任務時,Claude 會先自動檢查其記憶目錄。以下是典型互動的樣子:
1. 使用者請求:
"Help me respond to this customer service ticket."2. Claude 檢查記憶目錄:
"I'll help you respond to the customer service ticket. Let me check my memory for any previous context."Claude 呼叫記憶工具:
{
"type": "tool_use",
"id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
"name": "memory",
"input": {
"command": "view",
"path": "/memories"
}
}3. 您的應用程式回傳目錄內容:
{
"type": "tool_result",
"tool_use_id": "toolu_01C4D5E6F7G8H9I0J1K2L3M4",
"content": "Here're the files and directories up to 2 levels deep in /memories, excluding hidden items and node_modules:\n4.0K\t/memories\n1.5K\t/memories/customer_service_guidelines.xml\n2.0K\t/memories/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": "Here's the content of /memories/customer_service_guidelines.xml with line numbers:\n 1\t<guidelines>\n 2\t<addressing_customers>\n 3\t- Always address customers by their first name\n 4\t- Use empathetic language\n..."
}6. Claude 使用記憶來協助:
"Based on your customer service guidelines, I can help you craft a response. Please share the ticket details..."記憶工具可在以下模型上使用:
claude-opus-4-6)claude-opus-4-5-20251101)claude-opus-4-1-20250805)claude-opus-4-20250514)claude-sonnet-4-5-20250929)claude-sonnet-4-20250514)claude-haiku-4-5-20251001)要使用記憶工具:
context-management-2025-06-27要在您的應用程式中處理記憶工具操作,您需要為每個記憶命令實作處理程式。我們的 SDK 提供記憶工具輔助程式來處理工具介面——您可以繼承 BetaAbstractMemoryTool(Python)或使用 betaMemoryTool(TypeScript)來實作您自己的記憶後端(基於檔案、資料庫、雲端儲存、加密檔案等)。
如需工作範例,請參閱:
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-opus-4-6",
"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"
}]
}'您的客戶端實作需要處理這些記憶工具命令。雖然這些規格描述了 Claude 最熟悉的建議行為,但您可以根據您的使用案例修改實作並回傳所需的字串。
顯示目錄內容或檔案內容,可選擇指定行範圍:
{
"command": "view",
"path": "/memories",
"view_range": [1, 10] // 可選:檢視特定行
}對於目錄: 回傳一個列表,顯示檔案和目錄及其大小:
Here're the files and directories up to 2 levels deep in {path}, excluding hidden items and node_modules:
{size} {path}
{size} {path}/{filename1}
{size} {path}/{filename2}5.5K、1.2M). 開頭的檔案)和 node_modules對於檔案: 回傳帶有標頭和行號的檔案內容:
Here's the content of {path} with line numbers:
{line_numbers}{tab}{content}行號格式:
"File {path} exceeds maximum line limit of 999,999 lines."輸出範例:
Here's the content of /memories/notes.txt with line numbers:
1 Hello World
2 This is line two
10 Line ten
100 Line one hundred"The path {path} does not exist. Please provide a valid path."建立新檔案:
{
"command": "create",
"path": "/memories/notes.txt",
"file_text": "Meeting notes:\n- Discussed project timeline\n- Next steps defined\n"
}"File created successfully at: {path}""Error: File {path} already exists"替換檔案中的文字:
{
"command": "str_replace",
"path": "/memories/preferences.txt",
"old_str": "Favorite color: blue",
"new_str": "Favorite color: green"
}"The memory file has been edited." 後接帶有行號的已編輯檔案片段"Error: The path {path} does not exist. Please provide a valid path.""No replacement was performed, old_str `\{old_str}` did not appear verbatim in {path}."old_str 出現多次時,回傳:"No replacement was performed. Multiple occurrences of old_str `\{old_str}` in lines: {line_numbers}. Please ensure it is unique"如果路徑是目錄,回傳「檔案不存在」錯誤。
在特定行插入文字:
{
"command": "insert",
"path": "/memories/todo.txt",
"insert_line": 2,
"insert_text": "- Review memory tool documentation\n"
}"The file {path} has been edited.""Error: The path {path} does not exist""Error: Invalid `insert_line` parameter: {insert_line}. It should be within the range of lines of the file: [0, {n_lines}]"如果路徑是目錄,回傳「檔案不存在」錯誤。
刪除檔案或目錄:
{
"command": "delete",
"path": "/memories/old_file.txt"
}"Successfully deleted {path}""Error: The path {path} does not exist"遞迴刪除目錄及其所有內容。
重新命名或移動檔案/目錄:
{
"command": "rename",
"old_path": "/memories/draft.txt",
"new_path": "/memories/final.txt"
}"Successfully renamed {old_path} to {new_path}""Error: The path {old_path} does not exist""Error: The destination {new_path} already exists"重新命名目錄。
當包含記憶工具時,我們會自動在系統提示中加入以下指令:
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.如果您觀察到 Claude 建立了雜亂的記憶檔案,您可以加入以下指令:
注意:編輯記憶資料夾時,請始終保持其內容最新、連貫且有組織。您可以重新命名或刪除不再相關的檔案。除非必要,否則不要建立新檔案。
您也可以引導 Claude 寫入記憶的內容,例如「只在您的記憶系統中記錄與 <topic> 相關的資訊。」
以下是實作記憶儲存時的重要安全考量:
Claude 通常會拒絕在記憶檔案中寫入敏感資訊。但是,您可能需要實作更嚴格的驗證來過濾潛在的敏感資訊。
考慮追蹤記憶檔案大小並防止檔案過大。考慮為記憶讀取命令新增最大字元數限制,並讓 Claude 分頁瀏覽內容。
考慮定期清除長時間未存取的記憶檔案。
惡意路徑輸入可能嘗試存取 /memories 目錄之外的檔案。您的實作必須驗證所有路徑以防止目錄遍歷攻擊。
考慮以下防護措施:
/memories 開頭../、..\\ 或其他遍歷模式的路徑%2e%2e%2f)pathlib.Path.resolve() 和 relative_to())記憶工具使用與文字編輯器工具類似的錯誤處理模式。請參閱上方各個工具命令章節以了解詳細的錯誤訊息和行為。常見錯誤包括找不到檔案、權限錯誤、無效路徑和重複文字匹配。
記憶工具可以與上下文編輯結合使用,當對話上下文超過設定的閾值時,上下文編輯會自動清除舊的工具結果。這種組合可以實現長時間運行的代理工作流程,否則這些工作流程會超出上下文限制。
當啟用上下文編輯且您的對話接近清除閾值時,Claude 會自動收到警告通知。這會提示 Claude 在工具結果從上下文視窗中被清除之前,將任何重要資訊保存到記憶檔案中。
在工具結果被清除後,Claude 可以在需要時從記憶檔案中檢索儲存的資訊,有效地將記憶作為其工作上下文的延伸。這使 Claude 能夠:
考慮一個包含許多檔案操作的程式碼重構專案:
/memories/refactoring_progress.xml)要同時使用這兩個功能:
response = client.beta.messages.create(
model="claude-opus-4-6",
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
}
}
]
}
)您也可以排除記憶工具呼叫不被清除,以確保 Claude 始終能存取最近的記憶操作:
context_management={
"edits": [
{
"type": "clear_tool_uses_20250919",
"exclude_tools": ["memory"]
}
]
}記憶工具也可以與壓縮搭配使用,壓縮提供伺服器端的舊對話上下文摘要功能。上下文編輯在客戶端清除特定的工具結果,而壓縮則在對話接近上下文視窗限制時,在伺服器端自動摘要整個對話。
對於長時間運行的代理工作流程,考慮同時使用兩者:壓縮在無需客戶端記帳的情況下保持活動上下文的可管理性,而記憶則在壓縮邊界之間持久保存重要資訊,確保摘要中不會遺失任何關鍵內容。
Was this page helpful?