Skip to Content
사용자 가이드기능상주 컨텍스트 비용

상주 컨텍스트 비용

세션이 보내는 모든 요청은 대화 이전에 동일한 접두사를 전달합니다. 시스템 프롬프트, 선언된 모든 도구의 스키마, 컨텍스트(QWEN.md) 파일, 그리고 skill 목록이 그것입니다. 이 접두사에 대한 비용을 모든 턴에서 지불하며, 단순히 질문에 답하는 턴에서도 마찬가지입니다. 이 페이지는 이를 측정하고 줄이는 방법에 대해 다룹니다.

토큰 캐싱은 접두사의 _가격_을 낮춥니다. 이 페이지는 _접두사 자체_를 줄입니다. 둘은 함께 작동합니다 — 더 작은 접두사는 캐싱되었을 때 역시 더 저렴합니다.

무엇을 위해 비용을 지불하는지 확인하기

/context detail

/context는 카테고리별 분석을 출력합니다. detail은 항목별 행을 추가합니다 — 각 내장 도구, 각 MCP 도구, 각 컨텍스트 파일, 각 나열된 skill — 어떤 단일 항목이 비용이 많이 드는지 확인할 수 있습니다. 세션의 첫 번째 턴에서 읽어보세요. 대화가 아직 비어 있고 보이는 모든 것이 접두사인 상태입니다.

카테고리는 /context가 보고하는 항목에 두 가지 계산 행을 더한 것입니다: startupContext(첫 번째 사용자 턴으로 전송되는 환경 블록)와 카테고리가 할당하지 않는 나머지에 대한 명시적 잔차로, 부분들이 항상 합계와 일치합니다.

창의 백분율이 아닌 유휴 비용 사용하기

컨텍스트 창의 백분율은 유지할 수 있는 목표가 아닙니다. 분모가 임의적이기 때문입니다. 동일한 구성이 1M 컨텍스트 모델에서는 6.5%로, 128k 모델에서는 37%로 표시됩니다 — 동일한 텍스트, 동일한 비용인데 숫자만 크게 다릅니다. 대신 다음을 사용하세요:

유휴 비용 — 하나의 질문을 하고 도구를 호출하지 않는 세션의 입력 토큰.

이것은 모델과 창에 독립적이며, 도구 스키마에서 컨텍스트 파일로 텍스트를 옮겨서 숫자를 좋게 보이게 할 수 없습니다. 또 다른 유용한 측정값은 대화가 접두사를 따라잡는 데 몇 턴이 걸리는지입니다: 압축 비용을 상각하는 데 20턴이 걸리는 접두사는 5턴 세션에서는 결코 상각되지 않습니다.

레버, 효과 순서

1. 사용하지 않는 기능 끄기

도구를 등록하는 각 기능은 모든 요청에서 해당 도구의 스키마에 대한 비용을 지불합니다. 가장 큰 내장 항목들은 선택적 기능에 속한 것들이므로, 워크플로, 목표, 예약 작업, 또는 리뷰 도구를 사용하지 않는 배포는 어떤 프롬프트 편집보다도 해당 기능들을 꺼서 더 많이 절약할 수 있습니다. 이렇게 하면 서브에이전트에서도 도구가 제거되며, 다음 레버가 항상 그렇게 하지는 않습니다.

2. 지연 도구 표면을 실제로 사용하는 것으로 유지하기

tools.eager는 초기 요청에 스키마가 유지되는 내장 도구의 허용 목록입니다. 나머지는 모두 **지연(deferred)**됩니다: 여전히 등록되어 있고, /tools에 나열되며, 호출 가능합니다 — 모델이 실제로 필요할 때 tool_search로 로드합니다.

{ "tools": { "eager": [ "read_file", "write_file", "edit", "glob", "grep_search", "run_shell_command", "skill", ], }, }

사용하기 전에 알아야 할 네 가지:

  • 비활성화가 아닙니다. 강등된 도구는 여전히 도달 가능합니다. 도구를 제거하려는 의도였다면 전체 도구 permissions.deny 규칙이나 tools.disabled를 사용하세요.
  • 일부 도구는 제외됩니다 그리고 목록의 내용과 관계없이 정상적인 로드 동작을 유지합니다: tool_search, structured_output, 계획 모드 수명 주기 도구(enter_plan_mode, exit_plan_mode, ask_user_question), task_stop, MCP 도구(mcp__*), 그리고 Computer Use 도구(computer_use__*). task_stop과 Computer Use 패밀리는 기본적으로 온디맨드이므로 이들을 게이팅해도 절약되는 것이 없습니다. MCP 도구는 tools.toolSearch.*와 서버별 includeTools / excludeTools 필터에 의해 관리되며, 앞의 세 가지 중 하나를 제거하는 유일한 방법은 permissions.deny입니다.
  • permissions.allow은 절약되지 않습니다. 이것은 순수한 자동 승인입니다: 도구를 강등, 숨김, 제거하지 않습니다. 승인 모드도 마찬가지입니다.
  • tool_search가 켜져 있어야 합니다. ToolSearch가 등록되지 않은 경우 — tools.toolSearch.enabled: false, tool_search 거부 규칙, 또는 DeepSeek 모델에 대한 자동 옵트인 — 허용 목록은 여전히 스키마를 보류하지만 아무것도 다시 로드할 수 없으며, 강등된 도구는 해당 세션에서 도달할 수 없게 됩니다.

tools.visible은 기본적으로 지연되더라도 미리 선언하고 싶은 하나의 도구를 위한 탈출구입니다.

3. 시나리오 가이드를 컨텍스트 파일에서 skill로 옮기기

컨텍스트 파일은 해당 파일이 적용되는 모든 세션의 모든 요청에 관련성 게이팅 없이 연결됩니다. skill은 이름과 설명만 나열됩니다 — 측정된 샘플에서 84개의 skill은 평균 약 55토큰씩이었습니다 — 그리고 호출될 때 본문이 로드되며, paths:로 게이팅된 skill은 일치하는 파일이 건드려질 때까지 나열조차 되지 않습니다.

컨텍스트 파일에는 항상 참인 것만 유지하세요 — 정체성, 어휘, 하드 제약 — 그리고 “X를 할 때 Y를 하라”는 skill 또는 paths: 게이팅 규칙에 넣으세요. /context detail은 각 컨텍스트 파일의 이름을 표시하며, extension의 파일인 경우 해당 extension의 이름을 표시합니다.

4. 시스템 프롬프트, 마지막에

기본 프롬프트는 이미 상주 카테고리 중 가장 작으며, 그 중 약 3분의 1은 편집하면 안 되는 안전 및 권한 텍스트입니다. 또한 이제 세션이 실제로 선언한 도구만 설명하므로, 도구 표면을 줄이면 무료로 약간 줄어듭니다. --system-prompt로 전체를 교체하는 것이 가능하지만 이 페이지에서 가장 위험도가 높은 변경입니다. 만약 한다면, 모든 업그레이드에서 업스트림 프롬프트를 diff하세요.

함정

  • 서브에이전트도 지연 도구를 받습니다. 명시적 도구 목록을 선언하지 않는 서브에이전트는 등록된 모든 도구의 스키마를 지연 도구를 포함해 수신하며, ToolSearch를 거치지 않습니다. tools.eagerpermissions.deny만이 여기에 도달하는 유일한 조절 수단이며, 프리로드 임계값은 그렇지 않습니다.
  • 백그라운드 메모리 에이전트는 여섯 개의 도구가 필요합니다(read_file, grep_search, glob, run_shell_command, write_file, edit). 하나를 거부하면 오류 대신 조용히 성능이 저하됩니다.
  • 토큰은 사라지지 않고 이동할 수 있습니다. grep_searchglob을 제거하면 모델이 셸을 통해 grepfind를 사용할 수 있으며, 그 출력은 대화에 포함됩니다. 새 출력은 처음 전송될 때 입력 토큰을 추가하며, 이를 포함하는 변경되지 않은 역사는 이후 요청에서 제공자의 접두사 캐시에 도달할 수 있습니다. 변경을 접두사만이 아닌 작업당 총 입력 토큰, 제공자가 보고한 캐시된 및 캐시되지 않은 입력, 그리고 실제 청구서로 판단하세요.
  • 재개된 세션은 필요한 것을 다시 전송합니다. 강등된 도구가 재개된 세션의 역사에 나타나면 스키마가 자동으로 복원됩니다. 거부된 도구는 그렇지 않습니다.
  • 세션 중간에 공개된 지연 도구는 접두사 캐시를 무효화합니다. 함수 선언은 접두사의 맨 앞에 위치하므로, 하나의 공개가 접두사를 다시 작성하고 해당 턴에 전체 프롬프트가 다시 계산됩니다. 지연 세트를 프리로드하면(tools.toolSearch.threshold) 매 턴 해당 스키마를 유지하는 대가로 이를 피할 수 있습니다. threshold: 0은 세션이 실제로 이들을 전혀 필요로 하지 않을 때만 이득입니다.
  • 접두사 캐싱 모델은 트레이드를 반전시킵니다. 할인이 안정적인 접두사에 의존하는 모델의 경우, 접두사를 동일하게 유지하는 것이 작게 만드는 것보다 더 가치가 있습니다. DeepSeek 모델이 이 이유로 ToolSearch를 자동으로 옵트아웃합니다.
  • 범위가 유출됩니다. 설정은 이를 읽는 모든 클라이언트(CLI, Web Shell, serve)에 적용되므로, 배포별 도구 표면에는 자체 설정 범위가 필요합니다.

절약 확인하기

  1. 변경 전 유휴 비용을 기록합니다: 새 세션, 간단한 질문 하나, 첫 번째 턴에서 /context.
  2. 한 번에 하나의 레버를 적용하고 반복합니다. 세션을 재시작하세요 — 이러한 설정의 대부분은 시작 시 읽힙니다.
  3. 자체 작업 세트에서 기능이 유지되었는지 확인합니다: 도구 호출 성공률, tool_search가 호출되는 빈도, 그리고 작업 결과. 모델이 찾지 않는 강등된 도구는 크게 실패하지 않습니다. 그냥 사용되지 않을 뿐입니다.
  4. 접두사뿐만 아니라 청구서를 확인하세요 — 토큰이 대화로 이동하는 것에 대한 함정을 참조하세요.

함께 보기

  • 토큰 캐싱 — 캐싱이 남은 것의 가격에 미치는 영향.
  • 규칙paths: 조건부 컨텍스트, extension이 기여할 수 있는 내용 포함.
  • Skills — 프로그레시브 디스클로저, 그리고 paths: 게이팅.
  • 설정 레퍼런스tools.eager, tools.visible, tools.disabled, tools.toolSearch.*, permissions.deny의 정확한 의미.
Last updated on