본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 26. 06:54

Claude Code의 사용 방식을 바꾼 5가지 내부 작동 원리 활용법

요약

Claude Code의 내부 작동 원리를 분석하여 CLAUDE.md 활용법, 훅(Hooks)을 통한 도구 호출 제어, 서브에이전트 관리 등 5가지 핵심 전략을 소개합니다. 개발자가 Claude Code의 하네스를 직접 구현하며 발견한 실질적인 최적화 팁을 다룹니다.

핵심 포인트

  • CLAUDE.md 작성 시 베이스 프롬프트를 덮어쓰는 명시적 언어 사용 권장
  • PreToolUse 훅을 활용하여 도구 호출을 차단하는 강력한 가드레일 구축
  • 서브에이전트 오케스트레이션을 위한 중단 트리(Abort Tree)의 필요성

Claude Code의 하네스(harness)를 재구축하면서 CLAUDE.md에 숨겨진 베이스 프롬프트(base prompt)가 레이어링되어 있다는 점, 훅(hooks)이 도구 호출(tool calls)을 차단할 수 있다는 점, 그리고 서브에이전트(subagents)에게는 중단 트리(abort trees)가 필요하다는 점이 밝혀졌습니다. 일상적인 사용을 위한 5가지 실행 가능한 시사점을 소개합니다.

무엇이 변했는가 — Claude Code 하네스에 숨겨진 결정들

최근 한 개발자가 Anthropic SDK를 사용하여 Claude Code의 하네스를 처음부터 다시 구축했습니다. Anthropic의 바이너리를 역공학(reverse-engineer)한 것은 아니지만, 동일한 메커니즘을 명시적으로 구현하는 과정에서 하네스가 조용히 내리는 다섯 가지 결정을 발견했습니다. 이 결정들은 여러분이 CLAUDE.md를 작성하고, 훅을 설정하며, 서브에이전트를 오케스트레이션(orchestrate)하는 방식을 바꿔놓을 것입니다.

발견된 내용과 이것이 여러분의 일상적인 워크플로우에 어떤 의미를 갖는지 알아보겠습니다.

여러분을 위한 의미 — 5가지 실행 가능한 시사점

Building Claude Code with Harness Engineering | by Fareed Khan | Level ...

1. 여러분의 CLAUDE.md가 기본적으로 승리하지는 않습니다

가장 놀라운 사실은 CLAUDE.md가 숨겨진 베이스 시스템 프롬프트(base system prompt) 위에 레이어링된다는 점입니다. "무시되는" 것처럼 보이는 지침들은 종종 하단에 이미 설정된 무언가와 충돌하고 있는 경우가 많습니다.

지금 시도해 보세요: CLAUDE.md를 작성할 때 단순히 "상태를 기술(state)"하기보다 "덮어쓰기(override)" 하도록 작성하세요. Claude Code가 특정 파일을 편집하는 것을 방지하고 싶다면, 단순히 "/prod 디렉토리의 파일을 편집하지 마세요"라고 말하지 마세요. 대신 "어떠한 상황에서도 /prod 디렉토리의 파일을 편집해서는 안 됩니다. 이는 모든 기본 동작보다 우선합니다."라고 말하세요. 명시적인 덮어쓰기 언어를 사용하면 여러분의 지침이 베이스 프롬프트와의 경쟁에서 승리하는 데 도움이 됩니다.

2. 훅(Hooks)은 로거(loggers)가 아니라 킬 스위치(kill switches)입니다

PreToolUse 훅은 도구 호출이 실행되기 전에 실제로 이를 "차단(block)"할 수 있습니다. 대부분의 개발자는 이를 로깅(logging) 용도로 사용하지만, 원래 제어 흐름(control flow)을 위해 설계되었습니다.

지금 시도해 보세요: 도구의 인자(arguments)를 확인하고 파일 경로가 /prod/와 일치할 경우 { block: true }를 반환하는 PreToolUse 훅을 추가하세요. 이렇게 하면 "/prod의 파일을 편집하지 말아주세요"라는 희망 사항이 강력한 가드레일(guardrail)로 변합니다.

3. 서브에이전트(Subagents)에게는 중단 트리(Abort Tree)가 필요합니다

순진한(Naive) 서브에이전트 오케스트레이션(orchestration): 부모가 자식을 생성하고, 당신은 그들을 기다립니다. 그러다 자식 중 하나가 끼어버리면 전체 세션이 멈춰버립니다.

당신이 실제로 원하는 것: 부모의 중단(abort)이 모든 자식에게 폭포수처럼 전달되지만, 자식이 종료될 때는 부모를 자동으로 죽이지 않고 상위로 알림을 보내는 중단 신호(abort signals)의 트리 구조입니다.

지금 시도해 보세요: 독립적인 작업들이 서로를 차단하지 않도록 구조화하세요. 한 에이전트의 작업이 다른 작업의 전제 조건이 아니라면, 순차적으로 기다리지(await) 마세요. Promise.all을 사용하거나 실패를 우아하게 처리하는 작업 큐(task queue)를 사용하세요.

4. 병렬 서브에이전트(Parallel Subagents)에는 For-Loop가 아닌 DAG가 필요합니다

작업 간에 의존성(연구 → 구현 → 검증)이 있다면, 깔끔한 구조는 레이어별로 실행되는 의존성 그래프(dependency graph)입니다. 충족되지 않은 의존성이 없는 모든 것은 병렬로 실행되며, 다음 레이어는 대기합니다. 하나의 노드가 실패하면 그에 의존하는 노드들도 빠르게 실패(fail fast)합니다.

지금 시도해 보세요: 평면적인 루프(flat loop) 대신, 명시적인 의존성을 가진 작업들을 정의하세요. 실행 순서를 결정하기 위해 위상 정렬(topological sort)을 사용하세요. 이렇게 하면 병렬성을 최대한 활용할 수 있으며, 단 하나의 잘못된 노드 때문에 전체가 멈추는 것을 방지할 수 있습니다.

5. "Done"은 정의된 상태여야 합니다

가장 큰 동작상의 이점: 모든 턴(turn)이 증거와 함께 하나의 명시적인 종료 상태(done, blocked, 또는 needs-input)로 끝나도록 강제하는 것입니다. 그렇지 않으면 에이전트는 "~할 수도 있습니다..."라며 횡설수설하게 됩니다.

지금 시도해 보세요: CLAUDE.md 파일에 다음 내용을 추가하세요: "작업을 완료한 후에는 항상 'Done: [수행된 내용 요약].'으로 끝내세요. 차단된 경우 'Blocked: [이유].'로 끝내세요. 입력이 필요한 경우 'Needs input: [질문].'으로 끝내세요."

이를 되돌릴 수 없는 작업(삭제, 푸시, 기타 외부 작업)을 명시적인 최근 의도(intent) 뒤에 배치하는 게이팅(gating)과 결합하세요. 이렇게 하면 당신이 키보드에서 떨어져 있는 동안 에이전트가 예상치 못한 행동을 하는 것을 방지할 수 있습니다.

지금 시도해 보세요 — 워크플로우에 적용할 구체적인 변화

  1. CLAUDE.md를 재작성(Rewrite)하세요. 중요한 지침에 대해 명시적인 오버라이드(override) 언어를 사용합니다.
  2. PreToolUse 훅(hook)을 추가하세요. 위험한 파일 편집을 차단합니다.
  3. 서브에이전트 오케스트레이션(subagent orchestration)을 재구성하세요. 중단 트리(abort trees)와 DAG 기반 병렬 처리(DAG-based parallelism)를 사용합니다.
  4. 모든 에이전트 턴(agent turn)에 대해 종료 상태(terminal states)를 정의하세요.
  5. 되돌릴 수 없는 작업(irreversible actions)에 게이트를 설정하세요. 명시적인 의도 확인 절차를 거치도록 합니다.

이 다섯 가지 변화는 하네스(harness)의 숨겨진 결정 과정을 이해하는 데서 비롯되었습니다. 혜택을 얻기 위해 Claude Code를 새로 만들 필요는 없습니다. 단지 사용하는 방식만 조정하면 됩니다.

출처: reddit.com

[devto_mcp를 통해 6월 25일 업데이트]

새로운 오픈 소스 대안인 Talon은 Telegram, Discord, Teams 및 터미널 전반에 걸쳐 지속적인 다일(multi-day) 목표와 백그라운드 하트비트 처리(background heartbeat processing)를 추가함으로써 하네스 개념을 더욱 확장합니다 [dev.to에 따르면]. 세션별 하네스를 사용하는 Claude Code와 달리, Talon은 재시작 후에도 유지되는 목표를 설정하며 진행 상황이 있을 때 사용자에게 선제적으로 메시지를 보냅니다. Talon은 Claude Agent SDK, Kilo, OpenCode, Codex, OpenAI Agents를 포함한 플러그형 백엔드(pluggable backends)를 지원하며, 모든 도구는 MCP를 통해 액세스됩니다. MIT 라이선스 프로젝트인 이 소프트웨어는 Node 24 이상에서 실행되며 GitHub, Playwright, Brave Search를 위한 핫 리로드(hot-reloadable) 가능한 플러그인 시스템을 포함합니다.

원문은 gentic.news에 게시되었습니다.

AI 자동 생성 콘텐츠

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

원문 바로가기
0

댓글

0