LLM 호출 시 캐시 무효화를 잡아내는 간단한 도구 (하네스 개발자용)
If you're building a harness, here is a simple tool to catch cache invalidation in your calls to LLMs
핵심 요약
LLM 하네스 개발 시 발생하는 캐시 무효화 문제를 추적하고 디버깅할 수 있는 'cache-hunter' 도구를 소개합니다.
- 캐시 무효화 추적 — LLM 호출 시 프롬프트나 설정 변경으로 인한 캐시 무효화 지점을 시각적으로 확인함
- 도구 기능 — 로컬 LLM 엔드포인트와 하네스 사이에 위치하여 실시간 세션 캡처 및 오류 분석을 수행함
- 하네스 최적화 — OpenCode, Claude Code 등 주요 하네스의 비효율적인 캐시 사용 문제를 진단함
- 개발 철학 — 복잡한 기교보다는 캐시를 존중하는 단순하고 정직한 하네스 설계를 강조함
안녕하세요,
많은 분이 하네스를 직접 만들고 계신 걸로 압니다. 재미있기도 하고 배우는 게 많으니까요.
저는 로컬 우선(local-first) 하네스에 집중하고 있는데, 로컬 LLM을 돌릴 때 프리필(prefill) 비용이 얼마나 드는지 금방 체감하게 되더군요.
이 비용은 종종 캐시 무효화에서 발생합니다. 메시지 순서를 지키지 않거나, 메시지 내용을 바꾸거나(시스템 프롬프트나 도구, 심지어 제 환경에서는 reasoning_effort를 바꾸는 것조차 캐시 무효화를 유발합니다!).
그래서 이 도구를 만들었습니다: cache-hunter
- 도구를 실행하고 실제 LLM 엔드포인트를 가리키게 합니다.
- 하네스에서 cache-hunter 로컬 포트를 가리키게 합니다.
- "Start capture"를 누릅니다.
- 하네스에서 평소처럼 세션을 진행합니다.
그러면 도구에서 세션이 실시간으로 보이고, 빨간색 셀이 뜨면 생각만큼 안정적이지 않았다는 뜻입니다.
제 하네스로도 돌려봤고, OpenCode, Claude Code, Cline, Pi, Hermes, Vibe로도 돌려봤습니다. 대부분 시스템 프롬프트, 도구, 순서, 내용이 불안정하다는 문제가 나타났습니다.
이게 하네스 표준 테스트에 포함되어 있지 않다는 게 미칠 노릇입니다.
직접 하네스를 만드신다면, 이걸 사용해서 무엇을 의미하는지 파악해보세요(아니면 직접 만드셔도 상관없습니다). 여러분과 사용자들에게 도움이 될 겁니다.

