메인 콘텐츠로 건너뛰기

Context

“Context”는 한 번의 실행을 위해 OpenClaw가 모델에 보내는 모든 것입니다. 이는 모델의 context window(토큰 제한)에 의해 제한됩니다. 초보자를 위한 개념 모델:
  • 시스템 프롬프트(OpenClaw가 구성): 규칙, 도구, Skills 목록, 시간/런타임, 그리고 주입된 워크스페이스 파일.
  • 대화 기록: 이 세션에서 사용자의 메시지 + 어시스턴트의 메시지.
  • 도구 호출/결과 + 첨부 파일: 명령 출력, 파일 읽기, 이미지/오디오 등.
Context는 “메모리”와 같은 것 이 아닙니다. 메모리는 디스크에 저장되었다가 나중에 다시 로드될 수 있지만, context는 모델의 현재 window 안에 들어 있는 것입니다.

빠른 시작(context 검사)

  • /status → “내 window가 얼마나 찼나?”에 대한 빠른 보기 + 세션 설정.
  • /context list → 무엇이 주입되었는지 + 대략적인 크기(파일별 + 총합).
  • /context detail → 더 깊은 분석: 파일별, 도구 스키마 크기별, skill 항목 크기별, 시스템 프롬프트 크기.
  • /usage tokens → 일반 응답에 응답별 사용량 푸터 추가.
  • /compact → 오래된 기록을 압축 항목으로 요약해 window 공간 확보.
함께 보기: 슬래시 명령, 토큰 사용량 및 비용, 압축.

출력 예시

값은 모델, 제공자, 도구 정책, 워크스페이스 내용에 따라 달라집니다.

/context list

🧠 Context breakdown
Workspace: <workspaceDir>
Bootstrap max/file: 20,000 chars
Sandbox: mode=non-main sandboxed=false
System prompt (run): 38,412 chars (~9,603 tok) (Project Context 23,901 chars (~5,976 tok))

Injected workspace files:
- AGENTS.md: OK | raw 1,742 chars (~436 tok) | injected 1,742 chars (~436 tok)
- SOUL.md: OK | raw 912 chars (~228 tok) | injected 912 chars (~228 tok)
- TOOLS.md: TRUNCATED | raw 54,210 chars (~13,553 tok) | injected 20,962 chars (~5,241 tok)
- IDENTITY.md: OK | raw 211 chars (~53 tok) | injected 211 chars (~53 tok)
- USER.md: OK | raw 388 chars (~97 tok) | injected 388 chars (~97 tok)
- HEARTBEAT.md: MISSING | raw 0 | injected 0
- BOOTSTRAP.md: OK | raw 0 chars (~0 tok) | injected 0 chars (~0 tok)

Skills list (system prompt text): 2,184 chars (~546 tok) (12 skills)
Tools: read, edit, write, exec, process, browser, message, sessions_send, …
Tool list (system prompt text): 1,032 chars (~258 tok)
Tool schemas (JSON): 31,988 chars (~7,997 tok) (counts toward context; not shown as text)
Tools: (same as above)

Session tokens (cached): 14,250 total / ctx=32,000

/context detail

🧠 Context breakdown (detailed)

Top skills (prompt entry size):
- frontend-design: 412 chars (~103 tok)
- oracle: 401 chars (~101 tok)
… (+10 more skills)

Top tools (schema size):
- browser: 9,812 chars (~2,453 tok)
- exec: 6,240 chars (~1,560 tok)
… (+N more tools)

context window에 포함되는 항목

모델이 받는 모든 것이 포함되며, 다음이 여기에 해당합니다:
  • 시스템 프롬프트(모든 섹션).
  • 대화 기록.
  • 도구 호출 + 도구 결과.
  • 첨부 파일/transcript(이미지/오디오/파일).
  • 압축 요약 및 가지치기 결과물.
  • 제공자 “래퍼” 또는 숨겨진 헤더(보이지 않아도 여전히 계산됨).

OpenClaw가 시스템 프롬프트를 구성하는 방법

시스템 프롬프트는 OpenClaw 소유이며 실행마다 다시 구성됩니다. 여기에는 다음이 포함됩니다:
  • 도구 목록 + 짧은 설명.
  • Skills 목록(메타데이터만, 아래 참조).
  • 워크스페이스 위치.
  • 시간(UTC + 구성된 경우 변환된 사용자 시간).
  • 런타임 메타데이터(호스트/OS/모델/thinking).
  • Project Context 아래에 주입된 워크스페이스 부트스트랩 파일.
전체 분석: System Prompt.

주입된 워크스페이스 파일(Project Context)

기본적으로 OpenClaw는 고정된 워크스페이스 파일 집합을 주입합니다(존재하는 경우):
  • AGENTS.md
  • SOUL.md
  • TOOLS.md
  • IDENTITY.md
  • USER.md
  • HEARTBEAT.md
  • BOOTSTRAP.md (첫 실행 시에만)
큰 파일은 agents.defaults.bootstrapMaxChars(기본값 20000자)를 사용해 파일별로 잘립니다. OpenClaw는 또한 파일 전체에 걸쳐 총 부트스트랩 주입 상한 agents.defaults.bootstrapTotalMaxChars(기본값 150000자)를 적용합니다. /context원본 대비 주입된 크기와 잘림 여부를 표시합니다. 잘림이 발생하면 런타임은 Project Context 아래에 프롬프트 내 경고 블록을 주입할 수 있습니다. 이는 agents.defaults.bootstrapPromptTruncationWarning (off, once, always; 기본값 once)으로 구성합니다.

Skills: 주입되는 것과 필요 시 로드되는 것

시스템 프롬프트에는 압축된 Skills 목록(이름 + 설명 + 위치)이 포함됩니다. 이 목록은 실제 오버헤드를 가집니다. Skill 지침 자체는 기본적으로 포함되지 않습니다. 모델은 필요할 때만 skill의 SKILL.mdread할 것으로 기대됩니다.

Tools: 두 가지 비용이 있습니다

도구는 두 가지 방식으로 context에 영향을 줍니다:
  1. 시스템 프롬프트 안의 도구 목록 텍스트(“Tooling”으로 보이는 부분).
  2. 도구 스키마(JSON). 모델이 도구를 호출할 수 있도록 전송됩니다. 일반 텍스트로 보이지 않더라도 context에 포함됩니다.
/context detail은 가장 큰 도구 스키마를 분석하여 무엇이 지배적인지 보여줍니다.

명령, 지시문, 그리고 “인라인 단축키”

슬래시 명령은 Gateway에서 처리됩니다. 여기에는 몇 가지 다른 동작이 있습니다:
  • 독립 실행 명령: /...만 있는 메시지는 명령으로 실행됩니다.
  • 지시문: /think, /verbose, /reasoning, /elevated, /model, /queue는 모델이 메시지를 보기 전에 제거됩니다.
    • 지시문만 있는 메시지는 세션 설정을 유지합니다.
    • 일반 메시지 안의 인라인 지시문은 메시지별 힌트로 동작합니다.
  • 인라인 단축키(허용 목록 발신자 전용): 일반 메시지 안의 특정 /... 토큰은 즉시 실행될 수 있으며(예: “hey /status”), 남은 텍스트를 모델이 보기 전에 제거됩니다.
자세한 내용: 슬래시 명령.

세션, 압축, 가지치기(무엇이 유지되는가)

메시지 간에 무엇이 유지되는지는 메커니즘에 따라 다릅니다:
  • 일반 기록은 정책에 따라 압축/가지치기될 때까지 세션 transcript에 유지됩니다.
  • 압축은 요약을 transcript에 유지하고 최근 메시지는 그대로 둡니다.
  • 가지치기는 실행을 위한 메모리 내 프롬프트에서 오래된 도구 결과를 제거하지만, transcript 자체를 다시 쓰지는 않습니다.
문서: Session, 압축, 세션 가지치기. 기본적으로 OpenClaw는 조립과 압축을 위해 내장 legacy context engine을 사용합니다. kind: "context-engine"을 제공하는 plugin을 설치하고 plugins.slots.contextEngine으로 선택하면, OpenClaw는 context 조립, /compact, 그리고 관련 하위 에이전트 context 수명 주기 훅을 대신 그 engine에 위임합니다. ownsCompaction: false는 legacy engine으로 자동 대체되지 않으며, 활성 engine은 여전히 compact()를 올바르게 구현해야 합니다. 전체 플러그형 인터페이스, 수명 주기 훅, 구성은 Context Engine을 참조하세요.

/context가 실제로 보고하는 것

/context는 가능하면 최신 실행 시 구성된 시스템 프롬프트 보고서를 우선 사용합니다:
  • System prompt (run) = 마지막 내장(도구 사용 가능) 실행에서 캡처되어 세션 저장소에 유지된 값.
  • System prompt (estimate) = 실행 보고서가 없을 때(또는 해당 보고서를 생성하지 않는 CLI 백엔드를 통해 실행할 때) 즉석에서 계산된 값.
어느 경우든 크기와 주요 기여 항목을 보고하지만, 전체 시스템 프롬프트나 도구 스키마를 그대로 출력하지는 않습니다.

관련 항목