Claude에게 '주의해'라고 말하는 것을 멈추세요: 3가지 도구로 외부에서 강화하기
요약
Claude Code의 한계를 극복하기 위해 프롬프트 지침 대신 외부 훅(hook)을 활용한 세 가지 강화 도구를 소개합니다. 컨텍스트 관리, 장기 기억 제공, 도구 호출 감사를 통해 구조적 문제를 해결합니다.
핵심 포인트
- 프롬프트 지침만으로는 Claude의 구조적 한계를 해결할 수 없음
- Throughline: 비대해진 컨텍스트를 SQLite로 오프로드하여 관리
- Caveat: 과거의 실수를 방지하기 위한 장기 기억 레이어 제공
- Spotter: 놓친 도구 호출을 감시하고 감사하는 별도 프로세스 운영
지난 한 달여 동안, 저는 npm에 Claude Code를 위한 세 가지 강화 도구(reinforcement tools)를 출시했습니다.
- Throughline — 비대해진 컨텍스트 (context)를 오프로드(offload)합니다.
- Caveat — 과거의 노트를 표면화하여 같은 함정에 두 번 빠지지 않게 합니다.
- Spotter — 별도의 Claude가 놓친 도구 호출 (tool calls)을 감사 (audit)합니다.
각 도구는 서로 다른 문제를 해결하지만, 근본 원인은 동일합니다. Claude에게 "주의해"라고 말함으로써 해결할 수 있는 모든 문제는 이미 해결되었습니다. 남은 것들은 구조적으로 해결할 수 없는 문제들이었습니다.
끊임없는 "주의해" 경고의 시기
처음에는 저도 CLAUDE.md와 프롬프트 (prompts)에 "주의해"라는 지침을 많이 작성했습니다.
"파일을 추측하지 마세요. 답변하기 전에 항상 파일을 읽으세요."
"컨텍스트 (context)가 비대해지면 /compact를 실행하세요."
"CLAUDE.md에 작성된, 제가 과거에 빠졌던 함정들을 읽으세요."
하지만 더 많이 쓸수록 CLAUDE.md는 점점 더 비대해졌습니다. 비대해진 CLAUDE.md는 Claude에 의해 그저 훑어 읽힐 뿐입니다. 거기에 적혀 있더라도, 지켜지지 않습니다.
제 글쓰기 방식이 좋지 않은가 싶어 문구를 바꿔보기도 했습니다. 그래도 효과는 없었습니다. 저는 문구를 아무리 바꿔도 단순히 사라지지 않는 특정 유형의 문제들이 존재한다는 것을 깨달았습니다.
해결 가능한 문제 vs 해결 불가능한 문제
어느 날, 저는 명확한 선을 그었습니다.
"주의해"라고 적어서 해결할 수 있는 문제와 그렇지 못한 문제는 근본적으로 다른 유형의 이슈입니다.
지침을 작성함으로써 해결할 수 있는 문제는 Claude가 단순히 "잊어버렸기" 때문에 발생합니다. 지침을 보면 기억해냅니다. 이는 프롬프트 (prompts)를 개선함으로써 처리할 수 있습니다.
해결할 수 없는 문제들은 Claude가 자신의 한계를 인식하지 못하기 때문에 발생합니다.
- 컨텍스트 (context)가 비대해졌다는 사실을 인지하지 못합니다 (요청이 전송되는 순간에 결정되므로, 자신의 크기를 볼 수 없습니다).
- 과거 세션에서 마주쳤던 함정들을 기억하지 못합니다 (세션은 독립적이며, CLAUDE.md에 내용을 추가하면 파일이 무거워집니다).
- 도구 (tool) 호출을 잊었을 때 이를 알아차리지 못합니다 (자신이 무엇을 모르는지 모르기 때문에, 그것을 가져오러 갈 수 없습니다).
Claude에게 이러한 부분들에 대해 "주의해"라고 요청하는 것은 효과가 없습니다. 왜냐하면 이것들은 Claude 스스로 해결할 수 없는 문제들이기 때문입니다.
포기하고 외부에서 강화하기
그래서 저는 Claude에게 요청하는 것을 그만두고 외부에서 개입하기 시작했습니다.
Claude Code에는 훅 (hook) 메커니즘이 있습니다. 프롬프트 (prompts)를 보내기 전, 도구가 실행된 후, 또는 세션이 종료될 때 훅을 삽입할 수 있습니다. Claude 스스로는 인지하지 못하더라도, 외부에서 상태를 관찰하고 필요한 처리를 주입할 수 있습니다.
이를 깨달은 이후, 저는 세 가지 강화 도구를 만들었습니다.
Throughline (감산)
컨텍스트 비대화 문제를 해결하기 위해, 도구의 입력과 출력을 SQLite로 오프로드(offload)하고 컨텍스트에서 제거합니다.
파일 읽기 내용, grep 결과, Bash 출력물 등은 AI가 이를 사용하여 결정을 내리고 다음 단계로 넘어가는 순간 그 목적이 달성됩니다. 하지만 이들은 끝까지 남아 토큰 (tokens)을 소비합니다. 저는 훅을 사용하여 이들을 SQLite로 오프로드합니다. 만약 Claude가 이것들이 필요하다면, 스스로 검색하여 가져올 수 있습니다.
저는 Claude로부터 "비대해짐을 인지해야 하는" 부담을 완전히 제거했습니다.
Caveat (누적)
같은 함정에 두 번 빠지는 문제를 해결하기 위해, 유사한 상황이 발생했을 때 과거에 작성된 함정 노트를 자동으로 표면화합니다.
제가 함정에 빠지면 이를 마크다운 (Markdown)에 기록합니다. 다음에 유사한 프롬프트를 보내거나, 유사한 도구 에러를 받거나, 또는 세션 종료 시점에 "고군분투 신호 (struggle signal)"가 관찰되면, 관련 있는 과거 노트들이 훅을 통해 Claude의 컨텍스트에 주입됩니다.
저는 Claude에게서 "과거의 함정을 기억해야 하는" 부담을 제거했습니다.
Spotter (추가 사항)
도구 호출을 잊어버리는 문제를 해결하기 위해, 저는 도구 카탈로그(tool catalog)를 완벽하게 파악하고 호출이 누락되었을 경우 이를 지적해 주는 또 다른 Claude를 병렬로 실행합니다.
메인 Claude는 평소처럼 작동합니다. 또 다른 Claude (Haiku 4.5)가 그 옆에 상주하며 사용자의 입력과 최종 응답을 관찰합니다. 만약 이 모델이 "web_search를 사용하여 답변할 수 있었습니다"라고 인지하면, 훅(hook)을 통해 메인 Claude에게 포인터를 보냅니다.
저는 Claude에게서 "자신이 무엇을 호출하는 것을 잊었는지 깨달아야 하는" 불가능한 부담을 제거했습니다.
공통 패턴
이 세 가지 도구의 공통점은 Claude 자체에게 아무것도 기대하지 않는 설계라는 점입니다.
| Throughline | Caveat | Spotter | |
|---|---|---|---|
| Claude에게 요구되지 않는 것 | 컨텍스트 관리 (Context management) | 과거의 기억 (Past memories) | 누락된 단계의 탐지 (Detection of missed steps) |
| ... |
"Claude를 위해 필요한 변경 사항"이 제로(0)라는 사실이 중요합니다. 여러분은 평소처럼 프롬프트와 CLAUDE.md에 쓰고 싶은 내용을 그대로 작성하면 됩니다. "주의하세요"라는 경고의 횟수를 늘릴 필요도 없습니다.
아직 강화되지 않은 구조적 문제들
세 가지를 만들었다고 해서 만족하는 것은 아닙니다. 여전히 제가 해결하고 싶은 구조적인 문제들이 남아 있습니다.
- 장기적 역할 이탈 (Long-term role drift): 긴 세션 동안 Claude의 페르소나가 변질되는 문제입니다. 프롬프트에 "당신은 엄격한 검토자입니다"라고 적어두어도, 20번의 대화가 지나면 태도가 느슨해집니다.
- 서브 에이전트를 통한 컨텍스트 손실 (Context loss through sub-agents): Task 도구에 의해 생성된 서브 에이전트들은 부모 세션의 암시적 컨텍스트(implicit context)를 가지지 못합니다. 매번 자식 에이전트에게 동일한 설명을 전달하는 것은 조용히 고통스러운 일입니다.
- 도구 선택 정확도 (Tool selection accuracy): 여러 옵션 중 "어떤 도구를 사용할지"에 대한 판단이 때때로 허술합니다. Spotter는 누락된 호출은 탐지하지만, 잘못된 도구 선택은 탐지하지 못합니다.
결론
저는 Claude에게 "주의하라"고 말함으로써 해결할 수 있는 모든 문제를 이미 해결했습니다. 남은 문제들은 Claude 스스로는 해결할 수 없는 유형의 문제들입니다.
그렇기 때문에 저는 외부에서 강화(reinforce)합니다. 그저 훅(hooks)을 통해 삽입할 뿐입니다. Claude 스스로는 아무것도 알 필요가 없습니다.
한 달 동안 이 세 가지를 만들면서, 저는 강화(reinforcement)를 위한 패턴을 파악했다고 느낍니다. 세 가지 모두 MIT 라이선스로 npm에 공개되어 있으니, 만약 여러분도 동일한 구조적 문제로 어려움을 겪고 있다면 원하신다면 한 번 살펴보시기 바랍니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기