메모리 도구는 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)

시작하기

메모리 도구를 사용하려면:
  1. API 요청에 베타 헤더 context-management-2025-06-27 포함
  2. 요청에 메모리 도구 추가
  3. 메모리 작업을 위한 클라이언트 측 핸들러 구현
애플리케이션에서 메모리 도구 작업을 처리하려면 각 메모리 명령에 대한 핸들러를 구현해야 합니다. 저희 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-sonnet-4-5",
        "max_tokens": 2048,
        "messages": [
            {
                "role": "user",
                "content": "타임아웃 오류로 계속 충돌하는 Python 웹 스크래퍼를 작업하고 있습니다. 문제가 있는 함수는 다음과 같습니다:\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\n이를 디버그하는 것을 도와주세요."
            }
        ],
        "tools": [{
            "type": "memory_20250818",
            "name": "memory"
        }]
    }'

도구 명령

클라이언트 측 구현에서는 다음 메모리 도구 명령을 처리해야 합니다:

view

선택적 라인 범위와 함께 디렉토리 내용 또는 파일 내용을 표시:
{
  "command": "view",
  "path": "/memories",
  "view_range": [1, 10]  // 선택사항: 특정 라인 보기
}

create

파일 생성 또는 덮어쓰기:
{
  "command": "create",
  "path": "/memories/notes.txt",
  "file_text": "회의 노트:\n- 프로젝트 일정 논의\n- 다음 단계 정의\n"
}

str_replace

파일의 텍스트 교체:
{
  "command": "str_replace",
  "path": "/memories/preferences.txt",
  "old_str": "좋아하는 색상: 파란색",
  "new_str": "좋아하는 색상: 초록색"
}

insert

특정 라인에 텍스트 삽입:
{
  "command": "insert",
  "path": "/memories/todo.txt",
  "insert_line": 2,
  "insert_text": "- 메모리 도구 문서 검토\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는 다음을 수행할 수 있습니다:
  • 중요한 정보를 잃지 않고 복잡한 다단계 워크플로우 계속
  • 도구 결과가 제거된 후에도 과거 작업과 결정 참조
  • 일반적인 컨텍스트 제한을 초과하는 대화에서 일관된 컨텍스트 유지
  • 활성 컨텍스트 윈도우를 관리 가능하게 유지하면서 시간이 지남에 따라 지식 베이스 구축

예시 워크플로우

많은 파일 작업이 있는 코드 리팩토링 프로젝트를 고려해보세요:
  1. Claude가 파일에 수많은 편집을 하여 많은 도구 결과 생성
  2. 컨텍스트가 증가하고 임계값에 접근하면 Claude가 경고를 받음
  3. Claude가 지금까지 수행한 변경 사항을 메모리 파일에 요약(예: /memories/refactoring_progress.xml)
  4. 컨텍스트 편집이 이전 도구 결과를 자동으로 지움
  5. Claude가 작업을 계속하며 이미 완료된 변경 사항을 기억해야 할 때 메모리 파일을 참조
  6. 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"]
        }
    ]
}