Claude Code에서 -p 없이 24/7 구동하기: 50줄짜리 훅 공개
My AI runs 24/7 on Claude Code without -p. Here's it's own 50-line hook.
핵심 요약
Claude Code의 -p 옵션 대체용으로 훅을 활용해 세션별로 컨텍스트를 초기화하는 자동화 도구를 개발함.
- 상태 없는 운영 — 세션마다 컨텍스트를 초기화하여 -p와 동일한 stateless 환경을 구현함.
- SDK 크레딧 절약 — 대화형 모드를 활용해 별도의 API 크레딧 소모 없이 구독 플랜 내에서 사용 가능함.
- 자동화된 워크플로우 — inbox 파일을 감시하고 메시지를 처리한 뒤 outbox에 응답을 기록하는 방식으로 작동함.
- 유연한 확장성 — 터미널 여러 개를 병렬로 실행하여 다중 작업 처리가 가능함.
6월 15일 크레딧 변경에 관한 스레드를 보고, 훅을 사용하여 -p를 대체할 수 있는 드롭인(drop-in) 방식을 만들었습니다. 이제 SDK 크레딧이 필요 없습니다.
많은 분들이 보조금을 받던 -p 사용이 중단되는 것에 대해 불만을 가지고 있습니다. 저는 정기 구독을 유지하면서도 대화형 모드에서 동일한 상태 없는(stateless), 한 번에 하나의 메시지만 처리하는 동작을 제공하는 도구를 만들었습니다.
작동 방식:
- 슈퍼바이저가 대화형 모드로 Claude Code를 실행합니다.
- 정지 훅(stop hook)이 새로운 메시지를 위해 받은 편지함(inbox) 파일을 폴링합니다.
- 메시지가 도착하면 훅이 이를 주입합니다 — 세션당 하나의 메시지.
- 에이전트가 이를 처리하고 보낸 편지함(outbox) 파일에 응답을 기록합니다.
- 슈퍼바이저가 세션을 종료하고 새로운 컨텍스트로 다시 시작합니다.
- 다음 메시지는 깨끗한 세션을 얻게 됩니다 —
-p와 같은 진정한 상태 없는 운영입니다.
유휴 상태일 때, 훅은 내부적으로 폴링하며 최소한의 틱(~20 토큰)으로 대기합니다. 유휴 대기로 인한 컨텍스트 팽창은 없습니다.
제공 기능:
- 메시지당 상태 없음 —
-p와 마찬가지로 각 작업은 새로운 컨텍스트를 가집니다. - SDK 크레딧 불필요 — 대화형 모드는 구독 플랜을 사용합니다.
- 자율성 — 받은 편지함을 감시하고, 메시지를 처리하며, 응답을 작성합니다.
- 저렴한 유휴 상태 — 작업을 기다리는 동안 최소한의 토큰 오버헤드만 발생합니다.
- 일반 텍스트 또는 JSON —
echo "fix the bug" >> io/inbox.jsonl명령어로 바로 작동합니다. - 병렬 처리 — 필요한 만큼 터미널을 실행할 수 있습니다.
감수해야 할 점:
- 메시지당 시작 비용 (~500 토큰, CLAUDE.md 읽기)
- 터미널당 하나의 세션 (하지만 원하는 만큼 터미널을 실행 가능)
- 터미널 필요 (백그라운드 실행을 위해
screen이나tmux사용 권장) - 컨텍스트 초기화를 도와준 /u/prototypebydesign 님께 감사를 표합니다.
약 100줄의 JavaScript로 작성되었으며 MIT 라이선스입니다.
GitHub: https://github.com/Siigari/claude-heartbeat
제 개인 AI 컴패니언 프로젝트(Convergence)를 위해 만들었습니다. 하트비트 훅은 그 기반이며, 그 위에 완전한 인격 시스템을 구축했습니다. 질문 있으시면 언제든 환영합니다.

