본문으로 건너뛰기

© 2026 Molayo

HN요약2026. 05. 14. 19:24

Show HN: Continuous Claude – Claude Code를 루프 내에서 실행하기

요약

Continuous Claude는 대규모 프로젝트의 코드베이스에 대해 단위 테스트 작성 및 커버리지 향상과 같은 다단계 작업을 수행하기 위해 Claude Code를 반복적인 루프 내에서 오케스트레이션하는 자동화된 워크플로우입니다. 이 도구는 단순히 코드를 실행하는 것을 넘어, CI/CD 관행을 차용하여 PR 생성, 체크 모니터링, 머지까지의 전 과정을 자율적으로 처리합니다. 이 시스템은 이전 반복의 결과와 다음 행동 지침을 Markdown 파일에 저장하고 컨텍스트로 유지함으로써, 상태가 없는(Stateless) AI 쿼리의 한계를 극복하며 지속적인 개발 루프를 구현했습니다.

핵심 포인트

  • Claude Code를 연속적인 루프 내에서 실행하여 자율적으로 PR 생성 및 머지까지 수행하는 자동화 워크플로우 구축.
  • CI/CD 관행을 활용하여 GitHub의 Pull Request 워크플로우에 통합함으로써 코드 리뷰와 프리뷰 환경을 확보함.
  • Markdown 파일을 외부 메모리(External Memory)로 사용하여 반복 간 컨텍스트 연속성(Context Continuity)을 유지하고 지식 손실을 방지함.
  • Bash 스크립트가 오케스트레이터 역할을 하며, 브랜치 생성, 커밋, 푸시, PR 생성 및 CI 체크 모니터링 등 복잡한 툴링을 처리함.
<h1><img width="512" height="294" alt="Continuous Claude" src="https://github.com/user-attachments/assets/26878379-6cff-4803-a50d-c1e3f9455f55" /></h1> <details data-embed="anandchowdhary.com" data-title="Continuous Claude" data-summary="대규모 프로젝트를 수행하기 위해 Claude Code를 반복적인 루프 내에서 실행합니다."> <summary>Claude Code를 연속적인 루프 내에서 오케스트레이션하여 자율적으로 PR(Pull Request)을 생성하고, 체크를 기다리고, 머지(Merge)까지 수행하는 자동화된 워크플로우입니다. 이를 통해 사용자가 잠든 동안에도 다단계 프로젝트를 완료할 수 있습니다.</summary>

이 모든 것은 제가 수십만 줄의 코드베이스에 대해 단위 테스트(Unit Test)를 작성하고, 향후 몇 주 안에 커버리지(Coverage)를 0%에서 80% 이상으로 끌어올려야 하는 계약상의 의무를 맡게 되면서 시작되었습니다. 이는 Claude가 해야 할 일처럼 보였습니다. 그래서 저는 여러 반복(Iteration)에 걸쳐 지속적인 컨텍스트(Context)를 유지하며 Claude Code를 루프로 실행하는 CLI 도구인 Continuous Claude를 구축했습니다.

현재의 AI 코딩 도구들은 작업이 완료되었다고 판단하면 한 번의 태스크를 마친 후 멈추는 경향이 있으며, 자기 비판(Self-criticism)이나 추가적인 개선을 할 기회가 실제로 없습니다. 그리고 이러한 원샷(One-shot) 패턴은 더 큰 프로젝트를 다루기 어렵게 만듭니다. 따라서 (고립된 폭발적 도움을 제공하는) Claude Code를 "있는 그대로" 실행하는 것과 대조적으로, 여러분이 원하는 것은 컨텍스트 윈도우(Context Window)를 소진하지 않으면서 장시간 동안 Claude Code를 실행하는 것입니다.

결과적으로, 이는 단순히 Claude Code를 연속적인 루프 내에서 실행하는 것만큼 간단합니다. 하지만 CI/CD 관행과 지속적 에이전트(Persistent Agents)에서 영감을 얻어, 이를 스케줄에 따라 실행하거나 트리거를 통해 실행하고 GitHub의 Pull Request 워크플로우에 연결함으로써 한 단계 더 나아갈 수 있습니다. 또한 한 반복에서 다음 반복으로 관련 컨텍스트와 결과를 유지함으로써, 이 프로세스는 초기 단계에서 얻은 지식이 손실되지 않도록 보장합니다. 이는 현재 상태가 없는(Stateless) AI 쿼리에서는 불가능하며, 진행 상황을 저장하기 위해 마크다운(Markdown) 파일을 설정하고 그에 따라 컨텍스트 엔지니어링(Context Engineering)을 직접 수행해야 하는 부분입니다.

While + git + persistence

이 아이디어의 첫 번째 버전은 단순한 while 루프였습니다:

while true; do
  claude --dangerously-skip-permissions "Increase test coverage [...] write notes for the next developer in TASKS.md, [etc.]"
  sleep 1
...

이에 대해 Giga AI의 제 친구 Namanyay는 "천재적이고 웃기다"라고 말했습니다. 저는 토요일 내내 나머지 툴링(tooling)을 구축하는 데 시간을 보냈습니다. 이제 Bash 스크립트는 지휘자 역할을 하며, 적절한 프롬프트(prompt)와 함께 Claude Code를 반복적으로 호출하고 주변 툴링을 처리합니다. 각 반복(iteration)마다 스크립트는 다음을 수행합니다:

  1. 새로운 브랜치(branch)를 생성하고 Claude Code를 실행하여 커밋(commit)을 생성합니다.
  2. GitHub CLI를 사용하여 변경 사항을 푸시(push)하고 풀 리퀘스트(pull request)를 생성합니다.
  3. gh pr checks를 통해 CI 체크와 리뷰를 모니터링합니다.
  4. 성공하면 머지(merge)하고, 실패하면 폐기합니다.
  5. 업데이트된 메인(main) 브랜치를 풀(pull)하고, 정리한 뒤 반복합니다.

반복이 실패하면 PR을 닫고 작업을 폐기합니다. 이는 낭비적이지만, 테스트 실패에 대한 지식을 바탕으로 다음 시도에서 다른 방식을 시도할 수 있습니다. GitHub의 기존 워크플로우(workflow)에 편승하기 때문에, 추가 작업 없이도 코드 리뷰와 프리뷰 환경(preview environment)을 얻을 수 있습니다. 만약 저장소(repo)가 코드 소유자(code owner)의 승인이나 특정 CI 체크를 요구한다면, 해당 제약 사항을 준수할 것입니다.

컨텍스트 연속성 (Context continuity)

공유된 마크다운(markdown) 파일은 Claude가 자신이 수행한 일과 다음에 수행해야 할 일을 기록하는 외부 메모리 역할을 합니다. 구체적인 프롬프트 지침이 없다면, 도움이 되기보다 해가 되는 장황한 로그를 생성할 것입니다. 의도는 실행 간의 깔끔한 인수인계 패키지로서 노트를 유지하는 것입니다. 따라서 모델에 전달하는 핵심 지침은 다음과 같습니다: "이것은 연속적인 개발 루프의 일부입니다... 한 번의 반복에서 전체 목표를 완료할 필요는 없으며, 단지 한 가지 사항에 대해 의미 있는 진전을 이루고, 다음 반복을 위해 명확한 노트를 남기세요... 이것을 당신이 바통을 넘겨주는 계주라고 생각하세요."

실제 프로덕션 사례는 다음과 같습니다. 이전 반복(iteration)이 "참고: X에 테스트를 추가하려고 시도했으나 엣지 케이스(edge case)에서 실패함, 함수 Y에서 null 입력을 처리해야 함"이라는 내용으로 끝났고, 바로 다음 Claude 호출은 이를 확인하고 해당 문제를 해결하는 것을 우선순위로 두었습니다. 단일 소형 파일은 이전의 추론을 잊어버리고 제자리를 맴도는 컨텍스트 드리프트 (context drift) 현상을 줄여줍니다.

흥미로운 점은 마크다운 (markdown) 파일이 어떻게 자기 개선 (self-improvement)을 가능하게 하는가 하는 것입니다. 사용자의 단순한 "커버리지 증가" 요청은, 시스템이 반복을 통해 스스로를 학습하고 자신의 진행 상황을 추적함에 따라 "커버리지를 실행하고, 커버리지가 낮은 파일을 찾아, 한 번에 하나씩 수행하라"는 식으로 변합니다.

지속적 AI (Continuous AI)

GitHub Next의 친구들은 그들의 프로젝트인 Continuous AI에서 이 아이디어를 탐구해 왔으며, 저는 그들에게 Continuous Claude를 공유했습니다.

이 팀의 설득력 있는 아이디어 중 하나는 전문화된 에이전트 (agents)를 동시에 실행하는 것이었습니다. 하나는 개발용, 다른 하나는 테스트용, 세 번째는 리팩터링 (refactoring)용으로 사용하는 방식입니다. 이는 복잡한 작업을 분할 정복 (divide and conquer)하여 더 효율적으로 처리할 수 있지만, 조정 (coordination)의 어려움을 야기할 수도 있습니다. 저는 모노레포지토리 (monorepository)의 서로 다른 부분에 테스트를 동시에 추가하기 위해 유사한 접근 방식을 시도하고 있습니다.

agentics 프로젝트는 에이전트 기반 작업 (agentic work)이 시작되기 전에 소프트웨어가 복구되었음을 보장하기 위해 명시적인 연구 단계와 빌드 전 단계 (pre-build steps)를 결합합니다. GitHub Next의 수석 연구원(Principal Researcher)인 Don Syme는 "루프 내의 에이전트 (Agent in a Loop)가 가진 결함 허용 (fault-tolerance) 능력은 정말 중요합니다. 문제가 발생하면 단순히 리소스 제한에 걸리고 다시 시도할 뿐입니다. 또는 사용자가 생성된 PR이 도움이 되지 않으면 그냥 버려버리면 됩니다. 잘못된 경로로 빠진 에이전트를 가이드하려다 좌절하는 사용자가 있는 것보다 훨씬 낫습니다"라고 말했습니다.

이는 경제학/수학에서 "확률의 방사 (radiation of probabilities)"라고 불리는 개념을 떠올리게 합니다 (다소 엉뚱한 비유일 수 있지만, 잠시만 들어주세요). 여기서 각 에이전트 실행은 마치 무작위 입자와 같습니다. 개별적으로 분석되는 것이 아니라, 분포로부터 일반적인 방향성이 나타납니다. 각 실행은 심지어 멱등적 (idempotent)이라고 생각할 수도 있습니다. 예를 들어 GitHub Actions가 6시간 후에 프로세스를 종료하더라도, 다음 에이전트가 어차피 다시 처리할 지저분한 파일들만 잃게 될 뿐입니다. 여러분이 신경 써야 할 것은 개별 에이전트가 무엇을 하는가가 아니라, 예를 들어 테스트 커버리지를 높이는 것과 같이 전반적으로 올바른 방향으로 움직이고 있는지 여부입니다. 이러한 낭비적이지만 효과적인 접근 방식은 Cursor의 멀티 에이전트 (multiple agents) 방식과 유사하게, 토큰 비용이 0에 가까워짐에 따라 실행 가능해집니다.

강화된 Dependabot

Dependabot과 같은 도구들은 의존성 업데이트를 처리하지만, Continuous Claude는 릴리스 노트 (release notes)를 사용하여 업데이트 이후 발생하는 중단 변경 사항 (breaking changes)까지 수정할 수 있습니다. 매일 아침 업데이트를 확인하고 모든 테스트가 통과할 때까지 지속적으로 문제를 수정하는 GitHub Actions 워크플로우를 실행할 수 있습니다.

대규모 리팩터링 (refactoring) 작업도 관리 가능해집니다. 모놀리스 (monolith)를 모듈로 분리하거나, 콜백 (callback)을 async/await로 현대화하거나, 새로운 스타일 가이드라인으로 업데이트하는 작업 등이 이에 해당합니다. 주말 동안 전체 CI 검증을 거치며 리팩터링의 일부를 수행하는 20개의 풀 리퀘스트 (pull requests)를 연속적으로 생성할 수도 있습니다. 인간이 하기에는 너무 단조롭지만, 빌드를 깨뜨리지 않기 위해 여전히 주의가 필요한 작업들이 아주 많습니다.

이 모델은 인간의 개발 관행을 반영합니다. Claude Code가 허드렛일을 처리하지만, 인간은 PR 리뷰와 같은 익숙한 메커니즘을 통해 루프 내 (in the loop)에 머물게 됩니다. 시작하려면 GitHub에서 CLI를 다운로드하세요!

</details>

⚙️ 작동 원리

Claude Code 또는 Codex CLI를 사용하여 반복적인 개발을 유도함으로써, 이 스크립트는 코드 변경부터 병합된 커밋 (merged commits)에 이르기까지 PR 라이프사이클을 완전히 자동화합니다:

  • 선택된 AI 코딩 에이전트 (AI coding agent)가 사용자의 프롬프트 (prompt)를 기반으로 루프 (loop) 내에서 실행됩니다.
  • 모든 변경 사항은 새로운 브랜치 (branch)에 커밋 (commit)됩니다.
  • 새로운 풀 리퀘스트 (pull request, PR)가 생성됩니다.
  • 필요한 모든 PR 체크 (PR checks)와 코드 리뷰 (code reviews)가 완료될 때까지 대기합니다.
  • 체크를 통과하고 리뷰가 승인되면, PR이 병합 (merge)됩니다.
  • 이 프로세스는 작업이 완료될 때까지 반복됩니다.
  • SHARED_TASK_NOTES.md 파일이 반복 간에 컨텍스트 (context)를 전달함으로써 연속성을 유지하며, AI와 인간 개발자 간의 원활한 인수인계 (handoffs)를 가능하게 합니다.
  • 여러 에이전트가 프로젝트가 완료되었다고 판단하면, 루프는 조기에 종료됩니다.

🚀 빠른 시작 (Quick start)

설치 (Installation)

단일 명령어로 설치하세요:

curl -fsSL https://raw.githubusercontent.com/AnandChowdhary/continuous-claude/main/install.sh | bash

이 명령은 다음을 수행합니다:

  • continuous-claude~/.local/bin에 설치
  • 필요한 의존성 (dependencies) 확인
  • 필요한 경우 PATH에 추가하도록 안내

PowerShell 7을 사용하는 Windows의 경우:

irm https://raw.githubusercontent.com/AnandChowdhary/continuous-claude/main/install.ps1 | iex

이는 네이티브 PowerShell 러너 (runner)를 continuous-claude.ps1로 설치하므로, Windows 사용자는 WSL이나 Git Bash 없이도 Continuous Claude를 실행할 수 있습니다:

pwsh ~/.local/bin/continuous-claude.ps1 --prompt "add unit tests until all code is covered" --max-runs 5

PowerShell 러너는 핵심 루프 (core loop), Claude/Codex 프로바이더 (providers), 리뷰어 패스 (reviewer passes), 공유 노트 (shared notes), 기간/비용 제한 (duration/cost limits), 로컬 커밋 (local commits), 그리고 GitHub PR 생성/병합 (merge)을 지원합니다. 워크트리 관리 (Worktree management), 자체 업데이트 (self-update), 그리고 자동 CI/댓글 재시도 (comment retry) 워크플로우 (workflows)는 아직 Bash 러너 (Bash-runner)에서만 지원됩니다.

수동 설치 (Manual installation)

수동 설치를 선호하는 경우:

# 스크립트 다운로드
curl -fsSL https://raw.githubusercontent.com/AnandChowdhary/continuous-claude/main/continuous_claude.sh -o continuous-claude

...

PowerShell의 경우:

Invoke-WebRequest https://raw.githubusercontent.com/AnandChowdhary/continuous-claude/main/continuous_claude.ps1 -OutFile continuous-claude.ps1
pwsh ./continuous-claude.ps1 --help

continuous-claude를 삭제하려면:

rm ~/.local/bin/continuous-claude
# 또는 /usr/local/bin에 설치한 경우:
sudo rm /usr/local/bin/continuous-claude
rm ~/.local/bin/continuous-claude.ps1

요구 사항 (Prerequisites)

continuous-claude를 사용하기 전에 다음이 필요합니다:

  1. AI 코딩 에이전트 CLI (AI coding agent CLI):
  2. GitHub CLI - gh auth login으로 인증
  3. jq - brew install jq (macOS) 또는 apt-get install jq (Linux)로 설치. PowerShell 실행기는 네이티브 JSON 파싱 (JSON parsing)을 사용하므로 jq가 필요하지 않습니다.

사용법 (Usage)

# 프롬프트 (prompt), 최대 실행 횟수 (max runs), 그리고 GitHub 저장소 (GitHub repo)와 함께 실행 (소유자와 저장소는 git remote에서 자동 감지됨)
continuous-claude --prompt "add unit tests until all code is covered" --max-runs 5

...

🎯 플래그 (Flags)

AI 자동 생성 콘텐츠

본 콘텐츠는 HN Claude Code Search의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
1

댓글

0