Claude Code 57 tool calls, 코드 0줄 — 리서치 자동화 파이프라인 실측
오늘 57번의 도구 호출 중 코드를 쓴 건 단 한 번뿐이다. collect_2026_05_23.py라는 데이터 수집 스크립트. 나머지 56번은 읽고, 분석하고, 문서를 업데이트했다.
TL;DR Claude Code를 코드 에디터가 아니라 멀티 프로젝트 오케스트레이터로 쓰면 이런 하루가 나온다. SpoonAI와 치과 광고 리서치 두 도메인에서 파일 7개를 처리했다. 세션 하나가 워크플로 게이트에 막혔고, Codex가 날짜 시제 오류 두 개를 교차검증으로 잡아냈다.
대용량 JSON, 분할 읽기로 4분 처리
첫 세션은 SpoonAI 뉴사이트용 일일 AI 인텔리전스 수집이었다. 원자료는 2026-05-23-daily-intel-raw.json — RSS/API/arXiv/GitHub/HuggingFace 크롤 결과를 한 파일에 담은 것이다.
Claude가 첫 Read를 시도하자 “원자료가 너무 큽니다”라고 판단하고 전략을 바꿨다. Read 6회로 파일을 분할해서 읽은 뒤 산출물 두 개를 작성했다:
2026-05-23-daily-intel.md— 편집자용 정리본2026-05-23-daily-intel.json— 구조화된 후보 데이터
세션 전체 4분, Read 6회뿐. 코드 없이 콘텐츠 파이프라인이 돌아간 케이스다.
가설 31 확장 검증 — 부작용 키워드에는 광고가 없다
두 번째 세션이 이날의 핵심이었다. 한국 치과·병원 광고 SERP를 관찰하고 누적 지식베이스를 업데이트하는 작업 — 9분, 29 tool calls, claude-opus-4-7.
이전 세션에서 세운 가설 31: “라미네이트 부작용 키워드에는 광고와 심의필이 모두 노출되지 않는다.” 오늘은 임플란트 부작용, 교정 부작용, 수면치료 위험성으로 확장 검증했다. 결과는 가설 강화 — 부작용형 키워드 전반에서 파워링크·심의필 미검출.
세션 중간에 네이버 공지 ID 31768이 목록 상단에 새로 등장했다. Claude가 summary.json을 분석해서 감지하고 관련 섹션에 반영했다.
실행 흐름:
1. 목표 파일 + 어제 데일리 업데이트 읽기 (연속성 확인)
2. 수집 스크립트 collect_2026_05_23.py 작성·실행
3. summary.json 분석 → 공지 31768 신규 감지
4. 누적 KB 파일 5개 업데이트 시도 → 오케스트레이션 훅에 막힘
5. complexity 재분류 후 통과
도구 호출 분포: Bash 14, Read 6, Edit 5, Write 3, ToolSearch 1.
워크플로 게이트가 막은 이유, 재분류로 푼 방법
4단계에서 오케스트레이션 훅이 Edit/Write를 차단했다. 코드 변경이 없는 리서치 파일 누적 업데이트인데 standard로 분류되어 막힌 것이다.
Claude가 스스로 판단했다:
“본 작업은 코드 변경 없는 누적 리서치 파일 업데이트라
trivial이 맞다.”
재분류 선언 후 통과했다. 훅 설계 관점에서는 “파일 내용 유형(코드 vs 리서치 문서)“과 “변경 규모”를 분리해서 분류해야 한다는 것이 드러난 지점이다.
세션을 쪼갠 이유 — 컨텍스트 길이와 품질
세션 3은 세션 2에서 미완으로 남긴 HTML 보고서만 생성했다. 3분, 13 tool calls.
세션 2가 29회 도구 호출로 길어진 상태였다. 소스 파일을 전부 다시 읽어야 하는 HTML 보고서 생성은 fresh context에서 시작하는 게 더 안정적이다. 세션 분리는 컨텍스트 관리 결정이었다.
산출물: reports/2026-05-23-risk-word-info-keyword-ad-gap.html — 모바일 친화 HTML, 8개 섹션, 24KB. 의료광고법 준수 — 특정 병원명·주소 없음, CPC/CTR/ROAS 수치 없음. [공식 확인]·[공개 SERP 관찰]·[운영 가설]·[확인 필요]·[수치 미확인]·[고지출 추정] 라벨 포함.
1분짜리 핀포인트 수정
세션 4는 세션 3 결과 검토 중 발견한 라벨 누락 하나를 수정했다. HTML에서 [고지출 추정] 라벨이 빠져 있었다.
수정 범위: 파일 하나, 문장 하나.
Read → Edit → Bash (파일 크기 확인) → Grep (라벨 존재 확인)
4회 도구 호출. 결과: 파일 24,974 bytes, [고지출 추정]·[수치 미확인] 모두 존재. 세션 표기 시간 0분 — 실제로 1분 미만이었다는 뜻이다.
Codex 교차검증이 잡아낸 날짜 시제 오류
마지막 세션은 외부 모델 교차검증 결과를 적용하는 워크플로였다. Codex read-only 리뷰가 naver-ranking-hypotheses.md에서 blocking 이슈 두 가지를 찾아냈다.
이슈 1 — 530번째 줄 근처. “5/14·5/28 두 단계로 슬롯이 확대되었다”가 5/28(미래)을 완료형으로 서술.
이슈 2 — 536번째 줄 근처. “두 단계 확장 이후”가 5/28 이후를 기정사실로 처리.
수정:
Before: "5/14·5/28 두 단계로 ... 슬롯이 확대되었다"
After: "5/14 적용 + 5/28 예정 두 단계로 ... 슬롯 확대 흐름이 진행 중이다"
Before: "두 단계 확장 이후"
After: "5/28 적용 이후에는"
Edit 2, Grep 2, Read 1. 총 5회.
누적 파일에서 날짜 시제 오류는 AI가 자주 만드는 패턴이다. 오늘 이후 날짜를 과거형으로 쓰는 실수는 장문 컨텍스트에서 놓치기 쉽다. 단일 모델이 자기 출력을 재검토할 때 맥락 편향이 생기기 때문이다. 외부 모델이 독립적으로 읽어서 잡아내는 게 교차검증의 실제 가치다.
도구 호출 통계
| 도구 | 횟수 |
|---|---|
| Read | 20 |
| Bash | 18 |
| Edit | 8 |
| Grep | 6 |
| Write | 4 |
| ToolSearch | 1 |
| 합계 | 57 |
Read 20회가 가장 많다. 기존 파일을 먼저 충분히 읽고 연속성을 확인한 뒤 수정하는 패턴이다. Bash 18회는 스크립트 실행, 파일 크기 확인, 검색에 분산됐다. Write 4회 각각이 수천 자 이상의 마크다운이거나 20KB 이상 HTML이었다.
오늘 확인된 패턴
세션 분리는 품질 관리 방법이다. 컨텍스트가 길어진 세션에서 대형 산출물을 만들면 오류가 늘어난다. 자연스러운 컷오프 지점에서 나누고, 다음 세션이 파일을 읽어 이어받게 하는 게 낫다.
오케스트레이션 훅은 분류에 민감하다. 코드 변경 없는 리서치 파일 업데이트가 standard로 잡히면 마찰이 생긴다. 콘텐츠 유형과 변경 규모를 분리해서 분류하는 훅 개선이 필요하다.
Codex 교차검증은 날짜 시제에 강하다. 단일 모델은 자신이 작성한 장문 파일에서 시제 오류를 놓치기 쉽다. 독립 컨텍스트로 읽는 외부 모델이 이걸 잡아낸다.
숫자로 보는 하루
- 세션: 5개, 총 소요 약 16분
- tool calls: 57
- 생성 파일: 3개 (
2026-05-23-daily-intel.md,collect_2026_05_23.py, HTML 보고서) - 수정 파일: 4개
- 작성한 코드: 1개 파일 (Python 스크립트)
- 커밋: 0건
Comments 0