Claude Code·Codex·Cursor의 토큰 사용 줄이기
에이전트가 쓰는 내용이 아니라 읽는 내용을 통제하면 Claude Code, Codex, Cursor에서 토큰 사용량을 줄일 수 있습니다. 저는 RocketSim, RocketTrace, 그리고 다른 Swift 앱들에 걸친 제 에이전트 세션 1,674개를 분석했는데, 제 토큰 중 에이전트의 응답이 차지한 비율은 0.6%에 불과했습니다. 나머지는 에이전트가 같은 컨텍스트를 계속해서 다시 읽는 데 쓰였습니다.
이 글에서는 제가 발견한 내용, 제가 사용하는 모든 에이전트에 전역으로 추가한 10줄, 그리고 AGENTS.md 파일을 하나도 건드리지 않고도 모든 Xcode 프로젝트를 토큰 효율적으로 만들어 주는 훅 스크립트 하나를 공유하겠습니다. 시작해 봅시다!
토큰 사용량을 분석한 방법
요즘 저는 주로 Cursor를 사용하고 있으며, Cursor는 에이전트 세션마다 전사본을 저장합니다. 여기에는 에이전트가 수행하는 각 도구 호출도 포함됩니다. 저는 이들 전체를 훑어보는 작은 스크립트를 작성해 토큰을 낭비하는 동작을 집계했습니다: 전체 파일 읽기, 반복 읽기, 필터 없는 빌드, 폴링, 스킬 로드, 서브에이전트의 모델 선택 등이 그것입니다. 여기에 더해 Cursor 대시보드에서 일주일치 사용 데이터를 내보내 요청당 토큰 구성 비율도 확인했습니다.
눈에 띈 수치는 다음과 같습니다.
- 전체 토큰의 94.2%가 캐시 읽기였습니다. 이미 가지고 있는 컨텍스트를 에이전트가 다시 보내는 것입니다. 출력 토큰은 0.6%에 불과했습니다.
- 총 13,323번의
xcodebuild및swift test실행 중 48%는 출력 필터가 없었습니다.AGENTS.md파일에서 필터를 명시적으로 요청하고 있는 RocketSim에서도 2,141번의 빌드 중 751번이 그대로 실행됐습니다.
- 파일 읽기의 53%는 전체 파일을 불러왔고, 제 세션의 절반에서는 에이전트가 편집 없이 이미 읽었던 파일을 다시 읽었습니다. 이런 일이 18,683번 있었습니다.
- 중복 스킬 로드가 961번 있었습니다. 같은
SKILL.md가 한 세션에서 두 번 로드된 것입니다.
- 서브에이전트의 85%가 제 메인 모델을 그대로 상속받았고, 그들은 단지 검색하거나 탐색만 하고 있었습니다.
물론 이는 제 작업 방식에 한정된 결과이며, Codex나 Claude를 사용 중이라면 비슷한 분석을 해볼 수도 있습니다. 제 사용량 내보내기에서 요청의 중앙값은 약 755,000토큰이었습니다. 이 숫자는 에이전트가 컨텍스트를 어떻게 소비하는지 이해해야만 비로소 납득됩니다.
컨텍스트가 토큰 사용량을 좌우하는 이유
에이전트는 단계 사이에 아무것도 기억하지 못합니다. 도구를 호출하고 계속 진행할 때마다, 전체 대화 내용을 다시 모델로 보냅니다: 사용자의 지시, 규칙, 읽었던 모든 파일, 그리고 받은 모든 빌드 로그입니다. 캐싱이 이 과정을 빠르게 해 주지만 토큰은 여전히 계산되며, 제 사용량에서 캐시 읽기가 압도적인 이유도 바로 이것입니다.
이것은 매 질문마다 프로젝트 위키 전체를 다시 읽고 답하는 동료를 떠올리면 됩니다. 위키가 클수록 모든 답변은 더 느리고 더 비싸집니다. 세션 초반에 받았던 40만 토큰짜리 빌드 로그는 이후 이어지는 모든 단계에 함께 전송됩니다.
이로 인해 두 번째 문제가 생깁니다. 컨텍스트 창이 가득 차면 에이전트는 대화를 요약하거나, 아니면 처음부터 다시 시작해야 합니다. 어느 쪽이든 에이전트는 이해를 다시 구축하기 위해 파일과 규칙을 또 읽어야 합니다. 컨텍스트가 더 빨리 가득 찰수록, 그 리셋 비용을 더 자주 치르게 됩니다.
그래서 저는 서로 관련 없는 작업으로 바뀔 때마다 새 채팅을 시작합니다. 그렇지 않으면 에이전트가 이전 작업의 모든 파일과 빌드 로그를 필요 없는 작업에까지 끌고 들어오기 때문입니다.
다시 말해, 컨텍스트를 지키는 것이 토큰 사용량을 줄이는 가장 효과적인 방법입니다. 짧은 응답도 도움이 되지만, 그것은 0.6%를 최적화하는 것일 뿐이라 지금은 제 우선순위가 아닙니다.
AGENTS.md 파일을 작게 유지하세요
AGENTS.md 파일도 모든 세션의 모든 단계에서 그 컨텍스트의 일부입니다. 관리되지 않은 파일은 배운 교훈이 쌓일수록 계속 커지고, 어느새 간단한 SwiftUI 수정 하나를 하면서 릴리스 절차와 CI 세부 정보까지 함께 보내고 있게 됩니다.
예상보다 훨씬 빠르게 벌어집니다. Video Compression은 제 최신 앱입니다. 2주 전만 해도 이 앱의 AGENTS.md는 대략 2,000 토큰 정도로 추정됐습니다. 오늘은 15,000 토큰이 넘고 228줄에 달하며, 그 과정에서 얻은 교훈들로 가득합니다. 에이전트가 라벨만 바꾸는 경우에도, 이런 내용이 매 단계마다 함께 전송됩니다.
저는 9월에 다른 프로젝트들을 정리했습니다. RocketTrace의 루트 AGENTS.md는 8,677바이트에서 1,454바이트로, MCPBeast의 것은 8,166바이트에서 1,384바이트로 줄었습니다. 아무것도 삭제하지 않았습니다. 범위가 한정된 지식을 각각의 하위 폴더에 있는 자체 AGENTS.md 파일로 옮기거나, 에이전트가 그 영역에서 작업할 때만 여는 문서로 옮겼습니다:
# RocketTrace
- App code: see [app/AGENTS.md](app/AGENTS.md)
- Website: see [website/AGENTS.md](website/AGENTS.md)
- Release process: see [docs/releasing.md](docs/releasing.md). Only read when releasing.Codex도 이 점에 대해 경고했습니다. 로그에는 프로젝트의 AGENTS.md 파일이 32 KB 예산을 초과했고, 그 뒤 나머지는 단순히 잘려 나갔다는 내용이 있었습니다. 지침이 끝까지 읽힐 거라고 생각하기 쉽지만, 큰 파일은 눈치채지 못한 사이에 잘려 나갑니다.
AI 에이전트를 코드에서 어떻게 써야 하는지 더 이상 추측하지 마세요
사용하는 도구나 모델이 무엇이든 상관없이, AI 에이전트와 함께 일하는 데 필요한 명확하고 도구에 구애받지 않는 시스템 — 컨텍스트, 지침, 검증 루프까지 포함 — 을 배워서 기술 부채를 쌓지 않으면서 더 빠르게 배포하세요.
중복된 Agent Skills는 아무 소용 없이 로드된다
Agent Skills는 범위가 한정된 문서와 같은 문제를 해결합니다. 즉, 작업에 그 스킬이 필요해질 때까지 에이전트는 짧은 설명만 봅니다. 저는 이에 대해 Agent Skills: Replacing AGENTS.md with reusable AI knowledge에서 쓴 적이 있습니다. 다만 스킬도 모음을 깔끔하게 유지할 때만 토큰을 절약할 수 있습니다.
저는 제 오픈소스 SwiftUI Agent Skill 옆에 두 개의 로컬 SwiftUI 스킬을 설치해 두었습니다. 둘 다 같은 프레임워크를 다뤘기 때문에 에이전트가 종종 둘 다 로드했습니다. 세션 감사 결과, 중복 스킬 하나는 제거하기 전까지 41개 세션에서 로드되었지만, 다른 스킬이 이미 다루는 내용 외에는 아무것도 추가하지 않았습니다. 제거한 뒤에는 SwiftUI 작업이 하나의 스킬로만 연결됩니다. 게다가 설치된 스킬 하나하나가 에이전트가 매 세션마다 받는 카탈로그에 설명을 추가합니다.
제 조언은 이렇습니다. 프레임워크마다 스킬은 하나만 설치하고, 몇 달 동안 쓰지 않은 것은 제거하세요. 무엇을 남길지 확신이 없다면, 올바른 Agent Skill을 고르는 9단계 프레임워크가 도움이 됩니다.
Xcode 빌드 출력은 가장 큰 토큰 낭비다
이건 Swift 개발자인 우리에게만 해당하는 독특한 문제입니다. Xcode의 빌드 출력은 엄청납니다. 저는 제 Mac 앱 MCPBeast의 클린 테스트 실행을 117개 테스트로 측정했습니다:

Xcode 빌드 출력을 최적화해 Claude Code, Cursor, Codex의 토큰 사용량을 줄이세요.
증분 실행은 더 작지만, 비율은 같습니다. 필터 없이 원본은 추정 토큰 18,200개였고, 필터를 거치면 32개였습니다. 필터링된 출력에는 파일과 줄 번호가 포함된 두 개의 컴파일러 경고와 통과한 테스트 수가 여전히 표시됩니다. 에이전트에게 필요한 것은 그게 전부입니다.
xcsift는 xcodebuild와 Swift Package Manager 출력을 간결한 요약으로 파싱하는 작은 명령줄 도구입니다. Homebrew로 설치한 뒤 빌드 출력을 이 도구로 파이프하면 됩니다:
brew install ldomaradzki/xcsift/xcsift
xcodebuild test -scheme MyApp -destination 'platform=macOS' 2>&1 | xcsift -f toon -wRocketSim의 AGENTS.md는 에이전트에게 이렇게 하라고 지시합니다. 하지만 숫자가 보여주듯, 그 저장소에서는 여전히 751번의 원시 빌드가 실행되었습니다. 에이전트에게 지침은 권고에 불과합니다. 그리고 더 최근의 제 프로젝트들에는 그 지침 자체가 없었기 때문에, 모든 빌드마다 조용히 토큰이 낭비되고 있었습니다.
그래서 저는 이 문제를 AGENTS.md에 의존하지 않기로 했고, 전역 훅으로 옮겼습니다.
Claude Code, Codex, Cursor를 위한 하나의 전역 훅
Cursor, Claude Code, Codex는 모두 훅을 지원합니다. 훅은 에이전트가 도구를 실행하기 전에 실행되는 작은 스크립트입니다. 훅은 셸 명령을 검사해 실행되기 전에 변경할 수 있습니다. 즉, 한 번만, 내 머신에서, 앞으로 열게 될 모든 프로젝트에 대해 빌드 출력을 수정할 수 있다는 뜻입니다.
제 훅 스크립트는 셸 명령을 하나씩 살펴봅니다. 필터 없이 xcodebuild, swift build, swift test를 실행하면 뒤에 2>&1 | xcsift -f toon -w를 붙입니다. 이미 필터를 쓰는 명령, xcodebuild -list, 리디렉션이나 파이프가 있는 명령 등 나머지는 그대로 둡니다. xcsift가 설치되어 있지 않으면 아무것도 하지 않습니다.
~/.agents/hooks/xcode-output.py로 저장하세요:
#!/usr/bin/env python3
"""Route raw xcodebuild and SwiftPM build/test output through xcsift."""
import json
import re
import shutil
import sys
FILTER = "xcsift -f toon -w"
BUILD = re.compile(
r"(^|[\s;&(])(xcodebuild\b(?!.*\s-(version|showsdks|list|showBuildSettings|showdestinations|help)\b)"
r"|swift\s+(build|test)\b)"
)
ALREADY_FILTERED = re.compile(r"xcsift|xcbeautify|xcpretty|\s-quiet\b")
UNSAFE = re.compile(r"[|<>`\n]|\$\(|(?<!&)&(?!&)|;|\|\|")
def command_of(tool_input):
command = tool_input.get("command") if isinstance(tool_input, dict) else None
if isinstance(command, list):
command = command[-1] if command else None
return command if isinstance(command, str) else None
def filtered(command):
command = re.sub(r"\s+2>&1\s*$", "", command.strip())
if not BUILD.search(command) or ALREADY_FILTERED.search(command):
return None
if UNSAFE.search(command) or shutil.which("xcsift") is None:
return None
*prefix, last_segment = command.split("&&")
if not BUILD.search(last_segment):
return None
# Claude auto-approves rewritten commands, so only `cd <path> &&` may precede the build.
if any(not re.fullmatch(r"\s*cd\s+[^\s].*?\s*", part) for part in prefix):
return None
return f"set -o pipefail; {command} 2>&1 | {FILTER}"
def main():
mode = sys.argv[1] if len(sys.argv) > 1 else "--cursor"
try:
tool_input = json.load(sys.stdin).get("tool_input") or {}
command = command_of(tool_input)
rewritten = filtered(command) if command else None
except Exception:
rewritten = None
if rewritten is None:
print("{}")
elif mode == "--cursor":
print(json.dumps({"updated_input": {**tool_input, "command": rewritten}}))
elif mode == "--claude":
print(json.dumps({"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow",
"updatedInput": {**tool_input, "command": rewritten},
}}))
else:
print(json.dumps({"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "deny",
"permissionDecisionReason": f"Raw build output wastes context. Re-run exactly as: {rewritten}",
}}))
if __name__ == "__main__":
main()set -o pipefail은 파이프의 마지막 명령이 xcsift이더라도 빌드가 실패하면 실패한 종료 코드가 그대로 반환되도록 보장합니다. 그리고 네, 이 코드는 제 대신 에이전트가 작성했으니, 여러분도 직접 에이전트에게 요청해서 더 최적화해 보셔도 좋습니다!
Cursor에 훅 등록하기
Cursor는 사용자 수준의 훅을 ~/.cursor/hooks.json에서 읽습니다. 다음 내용을 넣어 파일을 만드세요:
{
"version": 1,
"hooks": {
"preToolUse": [
{
"command": "python3 ~/.agents/hooks/xcode-output.py --cursor",
"matcher": "Shell",
"timeout": 5
}
]
}
}Cursor는 저장하면 파일을 다시 불러옵니다. Cursor 설정의 Hooks 탭에서 확인할 수 있습니다.
Claude Code에 훅 등록하기
Claude Code는 ~/.claude/settings.json에서 훅을 읽습니다:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "python3 ~/.agents/hooks/xcode-output.py --claude",
"timeout": 5
}
]
}
]
}
}Claude Code는 훅이 승인한 경우에만 다시 작성된 명령을 적용합니다. 그래서 이 스크립트는 cd가 앞에 선택적으로 붙은 빌드 명령만 다시 작성합니다. rm -rf build && xcodebuild 같은 체인은 그대로 두고 평소의 승인 절차를 거칩니다.
Codex에 훅 등록하기
Codex는 ~/.codex/hooks.json에서 같은 훅 형식을 지원하며, 먼저 ~/.codex/config.toml에서 훅을 활성화해야 합니다:
[features]
hooks = true{
"hooks": {
"PreToolUse": [
{
"hooks": [
{
"type": "command",
"command": "python3 ~/.agents/hooks/xcode-output.py --codex",
"timeout": 5
}
]
}
]
}
}Codex는 조금 다릅니다. 이미 승인한 명령과 비교해 일치시키기 때문에, 다시 작성된 명령은 승인을 다시 요청하게 됩니다. 그래서 다시 쓰는 대신, 훅이 원시 빌드를 막고 에이전트에게 정확히 실행할 명령을 알려 줍니다. 전체 빌드 로그에 비하면 그 정도의 짧은 추가 단계는 별것 아닙니다.
스크린샷 없이 시뮬레이터 탐색하기
같은 생각은 시뮬레이터에도 적용됩니다. 스크린샷은 에이전트가 처리해야 하는 이미지이고, 에이전트에게 보이는 것만 알려 줍니다. 접근성 트리는 텍스트입니다. 모든 버튼, 레이블, 식별자가 바로 작동할 준비가 되어 있습니다.
제가 분석한 기간 동안 제 에이전트는 RocketSim CLI 호출을 8,145번 수행했고, 원시 simctl 스크린샷은 378번만 사용했습니다. 이 비율은 의도한 것입니다. 자세한 내용은 토큰 효율적인 시뮬레이터 자동화에 관한 제 글에서 설명했으니, 여기서는 반복하지 않겠습니다. 핵심은 이렇습니다. 에이전트가 RocketSim의 접근성 출력을 통해 시뮬레이터를 살펴보게 하고, 시각적으로 무엇인가를 확인해야 할 때만 스크린샷을 찍으라는 것입니다.
더 저렴한 모델이 토큰 사용량을 줄일까요?
항상 그런 것은 아닙니다. 더 저렴한 모델은 추가 시도가 필요하면 총 토큰을 더 많이 사용할 수 있고, 컨텍스트 창이 작은 모델은 더 자주 초기화됩니다. 모델 선택은 예상치 못한 두 가지 방식으로 토큰 사용량에 영향을 줍니다.
첫째, 컨텍스트 창은 모델마다 다릅니다. 창이 더 작은 모델은 더 빨리 가득 차므로, 더 많은 요약과 초기화가 필요하고, 초기화할 때마다 다시 읽는 양도 늘어납니다. 특히 큰 프로젝트에서 긴 세션을 할 때는 선택한 모델의 컨텍스트 크기를 확인하세요.
둘째, 더 저렴한 모델이 자동으로 더 적은 토큰을 의미하는 것은 아닙니다. 매 단계마다 전체 컨텍스트를 다시 읽기 때문에, 실패한 테스트를 고치기 위해 세 번 시도해야 하는 모델은 한 번에 고치는 모델보다 그 컨텍스트를 세 배 더 자주 읽습니다. 복잡한 변경 작업에서는 저는 더 강력한 모델이 빠르게 끝내는 편을 선호합니다.
서브에이전트는 반대입니다. 제 서브에이전트의 85%는 제 메인 모델을 그대로 사용했지만, 그들 대부분은 코드베이스를 탐색하는 데만 쓰였습니다. 탐색에는 가장 강력한 모델이 필요하지 않습니다. 탐색용 서브에이전트에는 작고 빠른 모델을 주고, 메인 모델은 판단과 편집에 남겨 두세요.
Caveman과 Ponytail은 어떤가요?
아마 GitHub에서 이 두 가지가 유행하는 것을 보셨을 겁니다. 둘 다 유용한 아이디어이고, 둘 다 아래의 제 규칙에 한 줄씩 영감을 주었습니다.
Caveman은 에이전트가 짧은 원시인 스타일의 문장으로 답하도록 만듭니다. JetBrains는 이 기능을 86개의 실제 코딩 작업에서 테스트했고, 품질 저하 없이 출력 토큰을 8.5% 줄였다고 측정했습니다. 하지만 제 수치를 기억하세요. 출력은 제 토큰의 0.6%에 불과했습니다. 프로젝트 자체 문서도 이 점을 솔직하게 밝히고 있으며, 그래서 에이전트가 읽는 내용을 줄이는 별도 프록시를 만들었습니다. 제가 가져온 한 가지 아이디어는 결과를 먼저 말하고 도구 호출을 장황하게 설명하지 않는 것입니다.
Ponytail은 에이전트가 게으른 시니어 개발자처럼 행동하게 만듭니다. 이게 정말 필요한가? 코드베이스에 이미 있는가? 플랫폼이 이미 제공하는가? 우리에게는 DatePicker, ShareLink, 또는 URLSession을 먼저 사용하고 나서, 커스텀 코드를 작성하거나 의존성을 추가하는 일을 의미합니다. 코드가 적을수록 나중에 쓰고 다시 읽어야 할 토큰도 줄어듭니다. 그들의 벤치마크는 웹 프로젝트가 있는 Claude 모델에서 실행되었고, 자체 결과에서도 OpenAI의 추론 모델은 추가 규칙이 있을 때 더 나쁜 성능을 보였습니다. 그래서 여러분의 환경에서 직접 테스트해볼 가치가 있습니다. 저는 핵심 질문만 남기고 나머지는 덜어냈습니다.
모든 에이전트에서 토큰 사용량을 줄이는 10가지 규칙
아래는 제가 이제 전역적으로 사용하는 문장들입니다. 각각은 제 세션에서 발견한 것과 연결됩니다. 위의 아이디어에 영감을 받아 제 말로 정리했습니다:
# Token-efficient agent work
- Search first, then read only the lines you need. Don't re-read a file you already have unless it changed.
- Run the narrowest test first (`-only-testing:` or `--filter`). Run the full suite once, at the end.
- Wait inside one command (`gh run watch`, `gh pr checks --watch`, an `until` loop) instead of repeated sleep-and-check turns.
- Inspect the Simulator through its accessibility tree (for example, the RocketSim CLI). Take a screenshot only to verify visuals.
- Load a skill only when the task needs it. Never load two skills that cover the same framework.
- Give search and exploration subagents a small, fast model. Keep the main model for decisions and edits.
- Before adding code, check whether this codebase, the Swift standard library, or an Apple framework already solves it. Then write the smallest change that works, without dropping validation, error handling, or accessibility.
- Lead with the result. Skip restating the plan and narrating tool calls, but keep sentences complete.
- After two failed attempts at the same fix, stop and report what you learned instead of looping.
- Delegate self-contained searches and investigations to a subagent so their reads stay out of this conversation. When the user switches to an unrelated task, suggest a new chat with a short handoff note.대기와 관련된 문장은 짧게 설명할 가치가 있습니다. 제 에이전트는 sleep을 4,209번 사용했지만, 그 대부분은 앱을 다시 실행하는 것처럼 명령 내부에서 발생한 무해한 일시 정지였습니다. 낭비는 에이전트가 잠들고, CI를 확인하고, 다시 잠드는 740번의 턴에 있었습니다. 그런 각 턴마다 전체 컨텍스트를 다시 읽게 됩니다. 반면 gh run watch 하나면 한 단계에서 기다릴 수 있습니다.
이 규칙을 모든 프로젝트에 추가할 필요는 없습니다. 각 에이전트는 전역 지침 파일을 지원합니다:
- Cursor : Settings → Rules → User Rules
- Claude Code :
~/.claude/CLAUDE.md
- Codex :
~/.codex/AGENTS.md
저는 규칙들을 하나의 파일에 두고 ~/.claude/CLAUDE.md에서 @~/.agents/token-efficient-agents.md로 가져오며, ~/.codex/AGENTS.md는 같은 파일을 가리키는 심볼릭 링크로 둡니다. 그러면 프로젝트의 AGENTS.md 파일은 각 프로젝트에만 고유한 내용에 집중할 수 있습니다.
자주 묻는 질문
에이전트 세션에서 가장 많은 토큰을 사용하는 것은 무엇인가요? 컨텍스트를 다시 읽는 것입니다. 제 사용 데이터에서 전체 토큰의 94.2%는 캐시 읽기였습니다. 즉, 에이전트가 이미 가지고 있던 지침, 파일, 도구 출력을 매 단계마다 다시 전송한 것입니다. 응답은 고작 0.6%였습니다. 큰 빌드 로그, 전체 파일 읽기, 긴 대화는 이후의 모든 단계를 더 비싸게 만듭니다.
Caveman이 토큰 사용량을 줄여주나요? Caveman은 에이전트의 응답을 짧게 만듭니다. JetBrains는 86개의 코딩 작업에서 품질 저하 없이 출력 토큰이 8.5% 줄었다고 측정했습니다. 하지만 제 토큰의 0.6%만이 응답이었기 때문에, 전체 사용량에 미치는 영향은 작습니다. 빌드 출력이나 반복적인 파일 읽기처럼 에이전트가 읽는 양을 줄이는 편이 훨씬 더 큰 효과가 있습니다.
Claude Code, Codex, Cursor의 전역 지침은 어디에 추가하나요? Claude Code는 ~/.claude/CLAUDE.md를 읽고, Codex는 ~/.codex/AGENTS.md를 읽으며, Cursor는 설정의 User Rules를 사용합니다. 이 위치의 지침은 모든 프로젝트에 적용됩니다. 줄 범위를 읽는 것 같은 일반적인 습관에 사용하고, 프로젝트별 지식은 각 저장소의 AGENTS.md 파일에 두세요.
xcodebuild 출력으로 인한 토큰 사용량은 어떻게 줄이나요? 빌드를 xcsift로 파이프하세요: xcodebuild test ... 2>&1 | xcsift -f toon -w. 이 도구는 오류, 경고, 테스트 결과는 유지하고 나머지는 제거합니다. 제 측정에서는 깨끗한 MCPBeast 테스트 실행이 약 406,500 추정 토큰에서 약 168개로 줄었습니다. 전역 훅을 사용하면 이 작업이 모든 프로젝트에 자동으로 적용됩니다.
결론
토큰 사용량을 줄이는 일은 대부분 컨텍스트를 지키는 문제입니다. 제 경우 출력 토큰은 거의 중요하지 않았고, 이후에 이어지는 각 단계마다 모든 빌드 로그, 전체 파일 읽기, 중복된 스킬이 함께 전송되었습니다. Swift 개발자에게는 원시 xcodebuild 출력이 제 경험상 가장 큰 문제였고, 전역 훅은 각 프로젝트가 AGENTS.md 지침을 제대로 따르길 기대하는 대신 모든 프로젝트에 한 번에 해결책을 제공합니다.
AI 개발 워크플로를 더 개선하고 싶다면 AI Development 카테고리 페이지를 확인해 보세요. 추가 팁이나 피드백이 있다면 언제든지 저에게 연락하거나 Twitter에서 트윗해 주세요.
감사합니다!
출처
- 원문: https://www.avanderlee.com/ai-development/reduce-token-usage-claude-code-codex-cursor/ (2026-09-28 · meetpateltech)