Claude Code를 프로젝트 관리자로 만들기 — 워크플로우 하네스 설계기
Workflow, Memory, Context 3축으로 AI 코딩 에이전트의 구조적 한계를 해결하는 방법
핵심 요약
- Claude Code의 문제는 도구가 아니라 구조의 부재였다
- Workflow(일하는 순서), Memory(기억 계층), Context(로딩 범위) 3축으로 하네스를 설계했다
- "무엇을 하라"보다 "언제 멈추라", "전부 기억"이 아니라 "언제 꺼낼지"가 핵심이다
배경
Claude Code는 강력하지만 복잡한 프로젝트에서 반복되는 문제가 있었다.
- "어디부터 시작할까?" — 요구사항이 애매한데 바로 코딩으로 돌진
- "이전에 뭘 했더라?" — 세션이 바뀌면 맥락을 잊음
- "이거 검증했나?" — 구현 후 바로 완료 선언
- "3번 시도했는데 또 같은 방법으로 시도한다" — 실패 패턴 미인식
"Claude Code가 문제인 게 아니라 구조가 없는 게 문제"라고 진단했다.
본문
Axis 1: Workflow — 일하는 순서를 강제
Ambiguity Gate — 모든 요청의 구체성을 먼저 확인한다. 파일 경로, 함수명, 에러 메시지, 번호 매겨진 단계 중 하나도 없으면 deep-interview가 발동된다.
Simple vs Complex 분류: - Simple (1-2 스텝): 바로 실행 - Complex (3+ 스텝): brainstorming → writing-plans → execution → verification
작업 유형별 파이프라인도 프리셋으로 정의했다. feature, bugfix, refactor, security 각각 최적화된 단계를 밟는다. 실패가 2회 반복되면 같은 전략 3번째는 금지하고, 다른 접근법 2개를 제시받는다.
Axis 2: Memory — 기억하는 방법을 계층화
Layer 1: docs/ (장기 기억) — 아키텍처 결정, API 패턴, 운영 규칙. 파일당 50줄 제한.
Layer 2: lessons.md (행동 규칙) — 실패 패턴에서 추출한 규칙. 세션 시작 시 자동 주입.
Layer 3: sessions/ (임시 스냅샷) — 현재 작업 상태 저장. 컴팩션 전 핸드오프 문서 작성 필수.
Axis 3: Context — 로딩하는 범위를 최소화
Lazy Loading — CLAUDE.md에 트리거 테이블만 두고, 필요할 때만 스킬 파일을 로딩한다.
Model Routing — 복잡도에 따라 모델 변경: - haiku: 파일 검색, 로그 확인 - sonnet: 코드 작성, 버그 수정 - opus: 아키텍처 설계, 보안 리뷰
Sub-agent 격리 — 세션 히스토리 대신 핸드오프 문서만 전달.
에이전트 3인 체제와 자동화 훅
- main-orchestrator (opus) — 판단과 분류
- executor-agent (sonnet) — 복잡한 코드 작성 전담. 3번 실패 시 STOP
- quality-agent (sonnet) — 읽기 전용 코드 리뷰
훅은 SessionStart(plan.md, lessons.md 자동 주입), PreCompact(핸드오프 문서 작성 리마인드), PostToolUse(파일 수정 후 validation/linting 검사) 세 가지가 동작한다.
시행착오 / 주의사항
가장 큰 교훈 세 가지: 1. "무엇을 하라"보다 "언제 멈추라" — 명확한 중단 조건이 더 중요하다 2. 메모리는 "전부 기억"이 아니라 "언제 꺼낼지" — 필요한 것만 로딩해야 한다 3. 컨텍스트 효율은 "넣지 않는 것"에서 온다 — Lazy Loading이 핵심이다
마무리
하네스는 Claude Code 자체를 바꾸는 것이 아니라, Claude Code가 일하는 틀을 제공하는 것이다. 구조가 있으면 AI는 훨씬 일관되게 동작한다.
GitHub: https://github.com/youngjin39/Claude-Code-Prompt-Harness
댓글
댓글 쓰기