일회성 읽기: 중복 파일 읽기를 방지하는 Claude 코드 훅

한 개발자가 read-once라는 PreToolUse 훅을 만들어서 Claude Code가 세션 중에 같은 파일을 반복해서 읽는 경향을 해결했습니다. 이로 인해 불필요한 토큰 소비를 방지합니다.
문제와 해결책
Claude Code는 종종 이미 컨텍스트에 있는 파일을 다시 읽습니다. 예를 들어, 500줄짜리 파일을 열고 작은 편집을 한 후 Claude가 전체 파일을 다시 읽으면 읽기당 약 2,000개 이상의 토큰이 소비됩니다. 일반적인 세션에서 같은 파일이 5-10번 읽히는 경우가 있습니다.
read-once 훅은 Claude가 현재 세션에서 어떤 파일을 읽었는지 추적합니다. Claude가 변경되지 않은 파일을 다시 읽으려고 하면, 훅이 이를 차단하고 다음과 같은 메시지를 표시합니다: "read-once: config.rs (~3,400 토큰) 이미 컨텍스트에 있음 (4분 전에 읽음, 변경되지 않음). 세션 절감량: ~12,000 토큰."
작동 방식
- 첫 번째 읽기 시: 파일 경로, 수정 시간 및 타임스탬프를 기록한 후 정상적으로 읽기를 허용합니다.
- 변경되지 않은 파일 재읽기 시: Claude가 이미 내용을 가지고 있으므로 읽기를 차단합니다.
- 변경된 파일 재읽기 시: 전체 재읽기를 허용하는 대신, 훅이 diff를 계산하고 변경된 부분만 반환합니다. Claude는 이미 컨텍스트에 이전 버전을 가지고 있으며 델타만 필요합니다. 3줄이 변경된 500줄 파일의 경우, ~2,000개 대신 ~30개의 토큰을 사용하여 파일 반복 시 80-95%를 절약합니다.
기능 및 구성
이 도구는 TTL을 인식하며 캐시 항목은 20분 후에 만료됩니다(구성 가능). 만료 후에는 Claude가 컨텍스트를 압축하여 이전 내용을 잃어버렸을 수 있으므로 재읽기가 허용됩니다.
구성은 환경 변수를 통해 수행됩니다:
READ_ONCE_TTL=1200- 캐시 만료 전 초 단위 시간(기본값 20분)READ_ONCE_DIFF=1- diff 모드 활성화READ_ONCE_DIFF_MAX=40- 전체 재읽기로 폴백하기 전 최대 diff 줄 수READ_ONCE_DISABLED=1- 완전히 끄기
기술적 세부사항
전체 도구는 jq와 diff를 제외한 종속성이 없는 약 250줄의 bash 스크립트입니다. MIT 라이선스로 배포되며 .claude/settings.json 훅에 자신을 추가하여 설치합니다.
개발자는 Claude Code를 자율 루프에서 실행할 때 토큰 비용이 빠르게 누적되기 때문에 이 도구를 만들었습니다. diff 모드만으로도 세션당 토큰 사용량을 약 30% 절감했다고 보고되었습니다.
📖 전체 소스 읽기: r/ClaudeAI
👀 See Also

AutoSkillUpdate: 오래된 기술을 감지하는 Claude 코드 플러그인
AutoSkillUpdate는 코드베이스를 스캔하여 기존 스킬과 비교하고 차이점을 식별하는 오픈소스 Claude Code 플러그인입니다. 파일 경로와 라인 참조가 포함된 차이점 보고서를 제공하며, 사용자 확인 후 오래된 스킬을 재작성하는 기능을 제공합니다.

클로드는 대화형 차트 및 다이어그램 생성 기능을 추가합니다.
Claude는 이제 대화 내에서 직접 차트, 다이어그램, 탐색 가능한 분석을 포함한 인터랙티브 시각 자료를 생성할 수 있습니다. 이 기능은 무료 티어를 포함한 모든 요금제에서 베타로 이용 가능합니다.

Depct 도구는 Claude가 프로덕션 문제를 디버깅하는 데 도움이 되도록 런타임 데이터를 수집합니다.
Depct는 Node.js 애플리케이션에서 런타임 계측 데이터를 수집하고, 이를 그래프로 구성한 후 AWS Bedrock을 통해 Claude에 전달하여 간헐적으로 발생하는 프로덕션 장애를 디버깅하는 데 도움을 주는 도구입니다. 또한 런타임 동작에서 아키텍처 다이어그램과 의존성 맵을 생성합니다.

OpenClaw 코어브레인 플러그인: AI 코딩 에이전트를 위한 지속적 메모리
CoreBrain이라는 새로운 플러그인이 OpenClaw의 메모리 문제를 해결합니다. 이 플러그인은 정보를 컨텍스트 윈도우 외부의 지식 그래프에 저장하고 모든 쿼리 전에 자동으로 주입하여 도구 호출과 선택적 메모리 호출의 필요성을 없앱니다.