▲ Claude Code 터미널 환경에서 /effort 단계별 연산 자원 및 벤치마크 성능 최적화 모델
터미널에서 코딩 에이전트를 돌리다 보면 사소한 수정 하나에 몇 분씩 걸리며 토큰을 쏟아붓거나, 반대로 복잡한 백엔드 아키텍처 버그를 대충 1분 만에 훑고 지나가서 속 터진 경험이 다들 한 번쯤 있으실 겁니다. AI가 똑똑하지 않아서가 아니라, 그 작업에 생각을 얼마나 쏟아야 하는지 마감 시간을 정해주지 않았기 때문입니다.
최근 앤트로픽 Claude Code 팀의 엔지니어 Thariq가 공식 기술 블로그에 공개한 "Using Claude Code: Spending your effort" 리포트는 바로 이 고민에 명쾌한 해답을 내놓았습니다. 직접 수백 회 돌린 벤치마크 데이터와 Terminal-Bench 3.0 전수 분석을 통해, 노력(effort) 단계를 언제 올리고 언제 내려야 토큰 낭비 없이 버그를 박멸할 수 있는지 명확한 가이드라인을 제시했습니다.
- /effort 파라미터: 세션 도중 프롬프트 캐시 깨짐 없이 AI의 자율 검증 및 추론 깊이를 즉시 제어하는 핵심 명령어
- Terminal-Bench 3.0 분석: max 단계는 자체 테스트 누락 버그를 65% 줄여주지만, 불명확한 명세에서는 엉뚱한 해석 실수가 1.8배 증가
- 실전 황금 배분: 초기 인터뷰와 초안 구현은 빠른 low로 사람이 밀착 피드백하고, 최종 방어선 테스트만 high로 무인 위임
클로드 코드의 /effort 설정이란 무엇이며 왜 중요한가?
클로드 코드에서는 작업 도중 언제라도 /effort 명령어를 입력해 대화 맥락을 끊지 않고 단계를 전환할 수 있습니다. 특히 최신 모델 아키텍처에서는 이 설정을 중간에 바꾸더라도 이전 대화와 코드베이스 인덱스가 저장된 프롬프트 캐시가 전혀 깨지지 않습니다. 다시 말해 비용 손실 없이 상황에 맞춰 엔진 기어를 바꿀 수 있다는 뜻입니다.
Thariq는 이 노력을 직장인의 '업무 마감 시간'에 빗대어 설명합니다. 누군가 12시간을 통째로 주면서 일을 맡기면, 사람은 엣지 케이스까지 꼼꼼하게 검증하고 완성도를 끌어올려 넘겨주려 합니다. 반면 같은 일을 1시간 안에 끝내 달라고 요구하면, 일단 요구조건에 맞춘 가장 나은 초안을 빠르게 작성하고 이후 피드백을 받아 고쳐나갈 것을 전제합니다.
"노력(effort) 단계는 AI의 모델 지능을 바꾸는 스위치가 아니라, AI가 인간 대신 얼마나 스스로 검증하고 자체 판단을 떠맡을지 결정하는 마감 시간입니다."
제가 직접 터미널에서 대형 풀스택 리포지토리를 열어두고 테스트해 보니 확실히 체감이 다르더라고요. 사소한 CSS 패딩 수정에 effort를 high로 두면 혼자 온갖 회귀 테스트를 돌리느라 3분이 넘게 걸리지만, low로 두면 10초 만에 완벽한 수정본을 내놓습니다. 작업의 성격에 맞춰 노력 단계를 조절하는 것이 곧 개발 생산성의 핵심입니다.
Terminal-Bench 3.0 실험 데이터: 노력 단계별 통과율과 토큰 비용의 현실
노력 단계를 무조건 최고(max)로 올리면 항상 좋은 결과가 나올까요? 결론부터 말씀드리면 전혀 그렇지 않습니다. Thariq가 공개한 Terminal-Bench 3.0 데이터는 매우 흥미로운 사실을 보여줍니다.
Opus 5.5 모델 기준으로 볼 때, low 단계에서 약 30% 후반이던 과제 통과율은 high 단계로 올라가면 약 60%까지 수직 상승합니다. 이때 시도당 소모되는 토큰 중앙값은 약 10만 개 수준입니다. 주목할 점은 상승폭이 가장 큰 구간이 low에서 medium으로 이동하는 구간이라는 사실입니다.
반면 high에서 max로 올라갈 때는 사정이 달라집니다. 토큰 소비량은 시도당 약 3배(30만 개 이상) 가까이 폭증하지만, 통과율은 고작 7%포인트 오르는 데 그쳤습니다. 가성비 관점에서 엄청난 비효율이 발생하는 셈입니다. 한편 Fable 5.1 모델은 max 단계에 이르러서야 60% 통과율에 도달했으며, 이때 약 20만 개의 토큰을 사용했습니다. 벤치마크 도표에 '같은 점수, 절반의 토큰'이라는 주석이 붙은 이유가 여기에 있습니다.
더 깊숙한 진실은 실패 원인 분석에 숨겨져 있습니다. Thariq는 Fable 5.1의 370회 시도를 분석하여 low와 max의 실패 원인을 정밀 비교했습니다. 통과 과제는 140회에서 214회로 대폭 증가했습니다. 특히 가장 눈에 띄게 줄어든 것은 엣지 케이스를 놓친 실패로, 59회에서 24회로 59%나 급감했습니다. 그중에서도 '자체 테스트가 잡지 못한 버그'는 40회에서 14회로 65%나 줄어들었습니다.
근데 여기서 반전이 있어요. 잘못된 판단으로 인한 실패는 133회에서 107회로 소폭 줄어드는 데 그쳤습니다. 요구사항을 잘못 읽은 경우는 45회에서 26회로 줄었지만, 놀랍게도 여러 해석 중 틀린 쪽을 잘못 고른 실패는 25회에서 47회로 88%나 폭증했습니다.
솔직히 말씀드리면 AI를 혼자 오래 생각하게 방치한다고 해서 무조건 옳은 길을 가는 건 아니더라고요. 생각하는 시간이 길어질수록 AI 스스로 자의적인 해석을 내릴 확률도 함께 늘어나기 때문입니다. 명세가 명확하지 않은 상태에서 높은 노력 단계를 주는 것은, 오히려 잘못된 방향으로 엄청나게 깊은 삽질을 하도록 부추기는 결과를 초래합니다.
명세(요구사항) 밀도에 따라 결과물이 완전히 달라지는 이유
요구사항을 거의 주지 않고 작업을 던지면 노력 단계가 결과물의 형태를 완전히 뒤흔들어 놓습니다. Thariq는 Opus 5.5 모델에 "개인용 피트니스와 운동 기록 앱을 만들어줘"라는 단 한 줄의 프롬프트만 주고 단계별로 실행시켰습니다.
결과는 충격적이었습니다. low 단계는 1분 30초 만에 운동 기록 목록과 간단한 차트 하나를 내놓았습니다. medium은 4분, high는 11분이 걸리며 화면 구성이 점점 촘촘해졌습니다. 그리고 max 단계는 무려 67분을 쓰면서 운동 빈도를 색상으로 시각화한 잔디 모양의 히트맵까지 스스로 붙였습니다. 기능이 화려해진 만큼, 사용자가 지시하지도 않은 수많은 요소들을 AI가 독자적으로 결정한 셈입니다.
반면 방향성이 어느 정도 잡힌 디자인 작업에서는 양상이 달랐습니다. Claude Code의 /config 설정 메뉴를 다시 디자인해 달라는 과제에서 네 단계 모두 하위 메뉴 분할과 검색 개선이라는 유사한 방향을 제시했습니다. 이때 low는 1분 만에 아이디어가 직관적으로 전달되는 인터랙티브 스케치를 내놨고, max는 28분 동안 실제 프로덕션 수준의 정교한 목업을 만들었습니다. Thariq는 이 작업에서 망설임 없이 low를 선택하겠다고 밝혔습니다. 사람이 직접 피드백을 주고받으며 조율할 단계라면, AI가 어떤 그림을 그리고 있는지 1분 만에 확인하는 편이 훨씬 빠르기 때문입니다.
"사용자가 비워둔 빈칸이 많을수록 고노력의 AI가 빈칸을 제멋대로 채우고, 명세가 빈칸을 미리 채워두면 노력 단계별 결과물은 하나의 수렴점으로 모입니다."
실제로 Thariq가 Claude에게 자신을 깊이 인터뷰하게 만든 뒤 상세 명세를 작성해 각 노력 단계에 넘겼을 때, 소요 시간은 low 16분에서 max 79분까지 벌어졌지만 결과물의 뼈대와 레이아웃은 거의 차이가 없었습니다. max 단계는 단지 시간을 들여 몇몇 세부 코드를 단순하게 정리했을 뿐입니다. 결국 명세가 탄탄하면 굳이 토큰을 많이 쓰는 high나 max를 고집할 필요가 없다는 뜻입니다.
도메인별 격차와 실전 실패 사례 심층 해부
노력의 효과는 작업 분야(도메인)에 따라 극단적인 차이를 보였습니다. Fable 5.1 기준으로 최저 노력과 최고 노력의 통과율 변화를 살펴보면 이 법칙이 선명하게 드러납니다.
- 하드웨어 (Verilog 등): 34% → 75% (41%p 폭등)
- 보안 (XSS 필터 등): 64% → 87% (23%p 상승)
- 머신러닝 (ML): 54% → 73% (19%p 상승)
- 과학 연산: 41% → 61% (20%p 상승)
- 일반 소프트웨어: 43% → 56% (13%p 상승에 그침)
- 운영 (규칙집 준수 작업): 12% → 22% (10%p 상승에 그침)
운영 작업은 회사의 월말 관세 통계 신고처럼 엄격한 규칙집을 그대로 따라야 하는 작업입니다. 이런 작업은 생각을 오래 한다고 해서 없던 창의성이 나오는 게 아닙니다. 반면 하드웨어와 보안은 결과물을 시뮬레이션이나 공격 입력값으로 즉시 테스트해 볼 수 있습니다. 즉, 스스로 확인할 수단(피드백 루프)이 존재하는 분야에서만 노력을 투입한 만큼의 점수가 정직하게 따라옵니다.
실제 벤치마크 과제 사례를 보면 차이가 더욱 극명합니다:
- html-js-filter (웹 XSS 필터 제작): low는 2분 만에 필터 코드를 뚝딱 작성하고 손으로 만든 페이지 1개로 확인한 뒤 끝내 1/5 통과에 그쳤습니다. 반면 xhigh는 33분 동안 공격자 관점에서 코드를 검토하고, 파서 소스를 뜯어본 뒤 표준 XSS 테스트 세트와 무작위 문서 퍼저(Fuzzer)까지 자체 제작해 5/5 전원 통과를 달성했습니다.
- mvcc-lsm-compaction (저장 엔진 크래시 수정): low는 1분 동안 테스트 스크립트도 안 돌리고 코드부터 덤벼들었다가 5번 모두 실패했습니다. xhigh는 11분 동안 크래시 재현 스크립트를 먼저 만들고, 압축을 하지 않는 기준 구현체와 대조하는 무작위 테스트까지 거쳐 4/5 통과했습니다.
- cli-2ph-simplex (선형계획법 풀이기): low는 작은 문제 몇 개만 돌려보고 "큰 문제에서는 느릴 수 있다"는 경고 문구만 덜렁 남긴 채 멈췄습니다(0/5). 반면 high는 무작위 문제 대조 중 큰 문제의 실행 지연을 프로파일링으로 직접 잡아내 탐색 알고리즘을 뜯어고쳐 5/5 통과했습니다. low가 경고로 방치한 문제를 high는 직접 시험해서 풀어낸 것입니다.
- gsea-proteomics (단백질체 유전자 분석): low는 그럴듯해 보이는 전처리 방식 하나를 골라 그대로 보고했습니다(0/5). 반면 high는 전처리를 두 가지로 비교 검증하다가 방식에 따라 유의미한 처리 목록이 뒤바뀌는 현상을 포착하고 원인을 규명해 정답을 맞혔습니다(4/5).
Thariq가 제안하는 실전 워크플로우: 토큰을 아끼는 3단계 황금 배분법
그렇다면 우리는 실무에서 /effort를 어떻게 써야 할까요? Thariq는 작업의 진행 단계에 따라 노력 설정을 유기적으로 변경하는 3단계 파이프라인을 적극 권장합니다. 사람이 핸들을 쥐고 개입해야 하는 구간과 AI에게 온전히 맡겨두는 구간을 명확히 분리하는 전략입니다.
- 1단계: 명세 기획 및 셀프 인터뷰
새로운 기능을 구현하기 전, Claude에게 초기 요구사항을 던지고 "빠진 요구사항이나 결정해야 할 사항이 있다면 나에게 역으로 질문해 줘"라고 지시합니다. 사용자의 기획 의도를 명확한 텍스트로 미리 정의하여 불필요한 AI의 자의적 해석을 사전 차단합니다. - 2단계: 빠른 초안 구현은 Low로 돌리기
명세가 확정되면/effort low상태에서 핵심 기능 뼈대 코드를 작성하게 합니다. 큰 줄기가 제대로 잡혔는지 개발자가 눈으로 확인하고, 수정 사항이 있다면 low 상태에서 빠르게 핑퐁을 주고받으며 다듬습니다. 개발자가 대화창을 주시하고 있을 때는 빠른 응답 속도가 최고입니다. - 3단계: 최종 검증과 회귀 테스트만 High로 위임하기
뼈대 구현이 끝나면/effort high로 설정을 전환하고, 엣지 케이스 테스트 케이스 작성과 회귀 버그 검증을 지시합니다. 사람이 일일이 찾아내기 힘든 극한의 예외 상황을 AI가 스스로 재현 스크립트를 짜서 무인으로 완벽하게 해결하도록 시간을 주는 것입니다.
핵심은 이겁니다. 옆에서 방향을 잡아줄 수 있으면 낮은 노력으로 빠르게 돌리고, 맡겨두고 자리를 비울 일이면 AI가 스스로 검증할 시간을 넉넉하게 주면 됩니다. 앤트로픽이 최신 Opus 5.5 가이드에서 결과 검토를 Opus 5.5에게 먼저 맡기라고 권고한 맥락과도 정확하게 맞닿아 있습니다.
자주 묻는 질문 (FAQ)
마무리하며: 도구의 주도권을 쥐는 현명한 엔지니어링
클로드 코드의 /effort는 단순히 속도를 올리거나 내리는 슬라이더가 아닙니다. AI에게 '검증의 책임'을 얼마나 맡길지 결정하는 거버넌스 도구입니다. 이제 무작정 high에 두고 토큰을 날리거나 low에서 나오는 미완성 코드에 실망하지 마시고, 작업의 성격과 개발자의 위치에 맞춰 유연하게 기어를 바꿔보시기 바랍니다. 궁금한 점이나 여러분만의 실전 effort 조합 꿀팁이 있다면 댓글로 자유롭게 공유해 주세요!