Claude Platform Docs
  • Messages
  • Managed Agents
  • 관리자

Search...
⌘K
첫 단계
Claude 소개빠른 시작
Claude로 빌드하기
기능 개요Messages API 사용하기중지 이유 및 폴백거부 및 폴백폴백 크레딧
모델 기능
확장 사고적응형 사고Effort작업 예산 (베타)고속 모드 (리서치 프리뷰)구조화된 출력인용스트리밍 메시지배치 처리검색 결과스트리밍 거부다국어 지원임베딩
도구
개요도구 사용 작동 방식튜토리얼: 도구 사용 에이전트 빌드하기도구 정의도구 호출 처리병렬 도구 사용Tool Runner (SDK)엄격한 도구 사용프롬프트 캐싱과 도구 사용서버 도구문제 해결웹 검색 도구웹 가져오기 도구코드 실행 도구어드바이저 도구메모리 도구Bash 도구컴퓨터 사용 도구텍스트 편집기 도구
도구 인프라
도구 레퍼런스도구 컨텍스트 관리도구 조합도구 검색프로그래밍 방식 도구 호출세분화된 도구 스트리밍
컨텍스트 관리
컨텍스트 윈도우압축컨텍스트 편집프롬프트 캐싱대화 중 시스템 메시지오케스트레이션 모드 빌드하기캐시 진단 (베타)토큰 계산
파일 작업
Files APIPDF 지원이미지 및 비전
스킬
개요빠른 시작모범 사례엔터프라이즈용 스킬API의 스킬
MCP
원격 MCP 서버MCP 커넥터
클라우드 플랫폼의 Claude
Amazon BedrockAmazon Bedrock (레거시)AWS의 Claude PlatformMicrosoft FoundryVertex AI

Log in
메모리 도구
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Claude on AWS
  • Claude on Google Cloud

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Messages/도구

메모리 도구

메모리 도구는 Claude가 메모리 파일 디렉터리를 통해 대화 간에 정보를 저장하고 검색할 수 있게 합니다. Claude는 세션 간에 지속되는 파일을 생성, 읽기, 업데이트 및 삭제할 수 있어, 모든 것을 "context window"(컨텍스트 윈도우)에 유지하지 않고도 시간이 지남에 따라 지식을 축적할 수 있습니다.

이는 적시 컨텍스트 검색을 위한 핵심 기본 요소입니다. 에이전트는 모든 관련 정보를 미리 로드하는 대신, 학습한 내용을 메모리에 저장하고 필요할 때 다시 가져옵니다. 이를 통해 활성 컨텍스트가 현재 관련된 내용에만 집중되도록 유지할 수 있으며, 이는 모든 것을 한 번에 로드하면 컨텍스트 윈도우가 과부하되는 장기 실행 워크플로에서 매우 중요합니다. 더 넓은 패턴에 대해서는 Effective context engineering을 참조하세요.

메모리 도구는 클라이언트 측에서 작동합니다. 즉, 자체 인프라를 통해 데이터가 저장되는 위치와 방식을 제어할 수 있습니다.



이 기능에 대한 피드백을 공유하려면 피드백 양식을 통해 문의하세요.



이 기능은 Zero Data Retention (ZDR)의 적용 대상입니다. 조직에 ZDR 계약이 체결되어 있는 경우, 이 기능을 통해 전송된 데이터는 API 응답이 반환된 후 저장되지 않습니다.

사용 사례

  • 여러 에이전트 실행에 걸쳐 프로젝트 컨텍스트 유지
  • 과거 상호작용, 결정 및 피드백으로부터 학습
  • 시간이 지남에 따라 지식 베이스 구축
  • Claude가 반복되는 워크플로에서 개선되는 대화 간 학습 활성화

작동 방식

활성화되면 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..."

모델 지원에 대해서는 도구 참조를 참조하세요.

시작하기

메모리 도구를 사용하려면:

  1. 요청에 메모리 도구를 추가하세요
  2. 메모리 작업을 위한 클라이언트 측 핸들러를 구현하세요


애플리케이션에서 메모리 도구 작업을 처리하려면 각 메모리 명령에 대한 핸들러를 구현해야 합니다. SDK는 도구 인터페이스를 처리하는 메모리 도구 헬퍼를 제공합니다. BetaAbstractMemoryTool(Python 및 C#)을 서브클래싱하거나, betaMemoryTool(TypeScript)을 사용하거나, BetaMemoryToolHandler(Java)를 구현하여 자체 메모리 백엔드(파일 기반, 데이터베이스, 클라우드 스토리지, 암호화된 파일 등)를 구현할 수 있습니다.

작동하는 예제는 다음을 참조하세요:

  • Python: examples/memory/basic.py
  • TypeScript: examples/tools-helpers-memory.ts
  • Java: BetaMemoryToolExample.java
  • C#: MemoryToolExample

기본 사용법

client = anthropic.Anthropic()

message = client.messages.create(
    model="claude-opus-4-8",
    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"}],
)

print(message)

도구 명령

클라이언트 측 구현은 다음 메모리 도구 명령을 처리해야 합니다. 이 사양은 Claude가 가장 익숙한 권장 동작을 설명하지만, 사용 사례에 따라 구현을 수정하고 필요한 문자열을 반환할 수 있습니다.

view

선택적 줄 범위와 함께 디렉터리 내용 또는 파일 내용을 표시합니다:

{
  "command": "view",
  "path": "/memories",
  "view_range": [1, 10] // Optional: view specific lines
}

반환 값

디렉터리의 경우: 파일 및 디렉터리를 크기와 함께 표시하는 목록을 반환합니다:

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}
  • 최대 2단계 깊이까지 파일을 나열합니다
  • 사람이 읽을 수 있는 크기를 표시합니다(예: 5.5K, 1.2M)
  • 숨김 항목(.으로 시작하는 파일) 및 node_modules를 제외합니다
  • 크기와 경로 사이에 탭 문자를 사용합니다

파일의 경우: 헤더와 줄 번호가 포함된 파일 내용을 반환합니다:

Here's the content of {path} with line numbers:
{line_numbers}{tab}{content}

줄 번호 형식:

  • 너비: 6자, 공백 패딩으로 오른쪽 정렬
  • 구분자: 줄 번호와 내용 사이에 탭 문자
  • 인덱싱: 1부터 시작(첫 번째 줄은 줄 1)
  • 줄 제한: 999,999줄을 초과하는 파일은 오류를 반환해야 합니다: "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."

create

새 파일을 생성합니다:

{
  "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"

str_replace

파일의 텍스트를 교체합니다:

{
  "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"

디렉터리 처리

경로가 디렉터리인 경우 "file does not exist" 오류를 반환합니다.

insert

특정 줄에 텍스트를 삽입합니다:

{
  "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}]"

디렉터리 처리

경로가 디렉터리인 경우 "file does not exist" 오류를 반환합니다.

delete

파일 또는 디렉터리를 삭제합니다:

{
  "command": "delete",
  "path": "/memories/old_file.txt"
}

반환 값

  • 성공: "Successfully deleted {path}"

오류 처리

  • 파일/디렉터리가 존재하지 않음: "Error: The path {path} does not exist"

디렉터리 처리

디렉터리와 모든 내용을 재귀적으로 삭제합니다.

rename

파일/디렉터리의 이름을 변경하거나 이동합니다:

{
  "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가 어수선한 메모리 파일을 생성하는 것을 관찰하면 다음 지침을 포함할 수 있습니다:

Note: when editing your memory folder, always try to keep its content up-to-date, coherent and organized. You can rename or delete files that are no longer relevant. Do not create new files unless necessary.

Claude가 메모리에 기록하는 내용을 안내할 수도 있습니다. 예: "Only write down information relevant to <topic> in your memory system."

보안 고려 사항

메모리 저장소를 구현할 때 중요한 보안 고려 사항은 다음과 같습니다:

민감한 정보

Claude는 일반적으로 메모리 파일에 민감한 정보를 기록하는 것을 거부합니다. 그러나 잠재적으로 민감한 정보를 제거하는 더 엄격한 검증을 구현하는 것이 좋습니다.

파일 저장소 크기

메모리 파일 크기를 추적하고 파일이 너무 커지지 않도록 방지하는 것을 고려하세요. 메모리 읽기 명령이 반환할 수 있는 최대 문자 수를 추가하고 Claude가 내용을 페이지 단위로 탐색할 수 있도록 하는 것을 고려하세요.

메모리 만료

장기간 액세스되지 않은 메모리 파일을 주기적으로 정리하는 것을 고려하세요.

경로 순회 보호



악의적인 경로 입력은 /memories 디렉터리 외부의 파일에 액세스하려고 시도할 수 있습니다. 구현은 디렉터리 순회 공격을 방지하기 위해 모든 경로를 반드시 검증해야 합니다.

다음 보호 조치를 고려하세요:

  • 모든 경로가 /memories로 시작하는지 검증하세요
  • 경로를 정규 형식으로 해석하고 메모리 디렉터리 내에 유지되는지 확인하세요
  • ../, ..\\ 또는 기타 순회 패턴과 같은 시퀀스가 포함된 경로를 거부하세요
  • URL 인코딩된 순회 시퀀스(%2e%2e%2f)를 주의하세요
  • 언어의 내장 경로 보안 유틸리티를 사용하세요(예: Python의 pathlib.Path.resolve() 및 relative_to())

오류 처리

메모리 도구는 텍스트 편집기 도구와 유사한 오류 처리 패턴을 사용합니다. 자세한 오류 메시지 및 동작은 위의 개별 도구 명령 섹션을 참조하세요. 일반적인 오류에는 파일을 찾을 수 없음, 권한 오류, 잘못된 경로 및 중복 텍스트 일치가 포함됩니다.

컨텍스트 편집 통합

메모리 도구는 장기 실행 대화를 관리하기 위해 컨텍스트 편집과 함께 사용됩니다. 자세한 내용은 컨텍스트 편집을 참조하세요.

Compaction과 함께 사용하기

메모리 도구는 이전 대화 컨텍스트의 서버 측 요약을 제공하는 compaction과도 함께 사용할 수 있습니다. 컨텍스트 편집은 클라이언트 측에서 특정 도구 결과를 지우는 반면, compaction은 컨텍스트 윈도우 한도에 근접할 때 서버 측에서 전체 대화를 자동으로 요약합니다.

장기 실행 에이전트 워크플로의 경우 두 가지를 모두 사용하는 것을 고려하세요. compaction은 클라이언트 측 관리 없이 활성 컨텍스트를 관리 가능한 상태로 유지하고, 메모리는 compaction 경계를 넘어 중요한 정보를 유지하여 요약에서 중요한 내용이 손실되지 않도록 합니다.

다중 세션 소프트웨어 개발 패턴

여러 에이전트 세션에 걸쳐 진행되는 장기 실행 소프트웨어 프로젝트의 경우, 메모리 파일은 작업이 진행됨에 따라 임시로 작성되는 것이 아니라 의도적으로 부트스트랩되어야 합니다. 아래 패턴은 메모리를 구조화된 복구 메커니즘으로 전환하여 각 새 세션이 이전 세션이 중단된 지점에서 정확히 다시 시작할 수 있도록 합니다.

작동 방식

  1. 초기화 세션: 첫 번째 세션은 실질적인 작업이 시작되기 전에 메모리 아티팩트를 설정합니다. 여기에는 진행 로그(완료된 작업과 다음 작업 추적), 기능 체크리스트(작업 범위 정의), 프로젝트에 필요한 시작 또는 초기화 스크립트에 대한 참조가 포함됩니다.

  2. 후속 세션: 각 새 세션은 해당 메모리 아티팩트를 읽는 것으로 시작합니다. 이를 통해 코드베이스를 다시 탐색하거나 이전 결정을 되짚을 필요 없이 몇 초 만에 프로젝트의 전체 상태를 복구할 수 있습니다.

  3. 세션 종료 업데이트: 세션이 종료되기 전에 완료된 작업과 남은 작업으로 진행 로그를 업데이트합니다. 이를 통해 다음 세션이 정확한 시작점을 갖도록 보장합니다.

핵심 원칙

한 번에 하나의 기능만 작업하세요. 코드가 작성된 직후가 아니라 엔드투엔드 검증을 통해 작동이 확인된 후에만 기능을 완료로 표시하세요. 이를 통해 진행 로그를 신뢰할 수 있게 유지하고 세션 간에 범위 확장이 누적되는 것을 방지합니다.



초기화 스크립트, 진행 파일 구조 및 git 기반 복구를 포함하여 이 패턴의 실제 사례 연구에 대한 자세한 내용은 Effective harnesses for long-running agents를 참조하세요.

다음 단계

모든 도구 보기

Anthropic에서 제공하는 도구 및 해당 속성의 디렉터리입니다.

컨텍스트 편집

메모리와 함께 대화 길이를 관리합니다.

Was this page helpful?

  • 사용 사례
  • 작동 방식
  • 예시: 메모리 도구 호출 작동 방식
  • 시작하기
  • 기본 사용법
  • 도구 명령
  • view
  • create
  • str_replace
  • insert
  • delete
  • rename
  • 프롬프트 가이드
  • 보안 고려 사항
  • 민감한 정보
  • 파일 저장소 크기
  • 메모리 만료
  • 경로 순회 보호
  • 오류 처리
  • 컨텍스트 편집 통합
  • Compaction과 함께 사용하기
  • 다중 세션 소프트웨어 개발 패턴
  • 작동 방식
  • 핵심 원칙
  • 다음 단계