컨텍스트 소실 방지·활동 로그·일일 리포트 자동화로 AI 자율 운영
Safety Guards로 파괴적 명령을 차단하고, Code Quality로 구문 에러와 DoD 누락을 막았다.
그런데 이 두 가지를 설정한 뒤에도 여전히 남는 문제가 있다.
"Claude Code가 무엇을 하고 있는지, 잘 되고 있는지, 어디서 막혔는지를 알 수 없다."
장시간 자율 운영에서 이 상태는 사실상 운전석에 아무도 없는 것과 같다. 사고가 나야 비로소 알게 된다.
Monitoring은 이 맹점을 없애기 위한 카테고리다. 그리고 이번에 소개하는 3개의 hook은, 설정 대비 효과가 가장 높은 조합이다.
어떤 일이 벌어졌나
Claude Code가 몇 시간째 작업을 이어가던 중, 갑자기 태도가 달라졌다. "앞서 작성한 코드를 기반으로 이어서..."라고 지시했더니 "어떤 코드를 말씀하시는 건가요?"라는 응답이 돌아왔다.
Context window가 가득 찬 것이다.
Claude Code는 이 사실을 알리지 않았다. 그리고 이전 작업 내용을 전혀 모르는 상태로 동일한 태스크를 처음부터 다시 시작했다. 중복 작업과 파일 덮어쓰기가 발생했다.
왜 이런 일이 생기나
Claude의 Context window는 대화 기록, 파일 내용, 코드 등이 누적되면서 소모된다. 한도에 도달하면 오래된 내용부터 잊어버리지만, Claude Code 스스로 "지금 몇 % 남았는지"를 사용자에게 먼저 알려주지는 않는다. 외부에서 잔량을 감시하고, 한계에 가까워지면 자동으로 압축하는 구조가 필요하다.
1단계. hook 스크립트를 배치한다.
curl -o ~/.claude/hooks/context-monitor.sh \
https://raw.githubusercontent.com/gaebalai/claude-code-hooks/main/hooks/context-monitor.sh
chmod +x ~/.claude/hooks/context-monitor.sh
2단계. PostToolUse hook에 등록한다.
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{ "type": "command", "command": "bash ~/.claude/hooks/syntax-check.sh" }
]
},
{
"matcher": "Bash",
"hooks": [
{ "type": "command", "command": "bash ~/.claude/hooks/activity-logger.sh" }
]
},
{
"matcher": ".*",
"hooks": [
{ "type": "command", "command": "bash ~/.claude/hooks/context-monitor.sh" }
]
}
]
}
}
3단계. 4단계 경고 시스템의 동작을 확인한다.
지금 바로 작가의 멤버십 구독자가 되어
멤버십 특별 연재 콘텐츠를 모두 만나 보세요.
오직 멤버십 구독자만 볼 수 있는,
이 작가의 특별 연재 콘텐츠