logoTomalab
홈블로그소개

Built with Next.js, Bun, Tailwind CSS and Shadcn/UI

AI

하네스 엔지니어링(Harness Engineering) 완전 가이드

Toma
2026년 4월 10일
목차
🔩 하네스 엔지니어링(Harness Engineering) 완전 가이드
🤔 하네스 엔지니어링이란 무엇인가?
🚨 왜 지금 주목받는가?
📈 AI 상호작용의 3세대 진화
⚡ 핵심 개념: Agent = Model + Harness
🧭 Martin Fowler의 Guides & Sensors 프레임워크
🗺️ Guides (가이드) — 사전 제어(Feedforward Control)
📡 Sensors (센서) — 사후 제어(Feedback Control)
⚙️ 두 가지 실행 유형
🚗 CAR 프레임워크: Control · Agency · Runtime
🛠️ Claude Code에서의 하네스 엔지니어링 적용
📄 ① CLAUDE.md / Rules 파일 (가이드)
🧩 ② Skills (스킬)
🪝 ③ Hooks (훅)
🔌 ④ MCP 서버 (에이전시)
🤖 ⑤ Sub-agents (서브에이전트)
🏗️ 하네스 아키텍처
🔺 3-에이전트 아키텍처 (최신)
📐 실전 하네스 설계 원칙
1️⃣ 가능한 한 단순하게 시작하라
2️⃣ 하네스는 모델의 가정을 인코딩한다
3️⃣ 계층별 책임을 명확히 분리하라
✅ 빠른 시작 체크리스트
📚 참고 자료

목차

🔩 하네스 엔지니어링(Harness Engineering) 완전 가이드
🤔 하네스 엔지니어링이란 무엇인가?
🚨 왜 지금 주목받는가?
📈 AI 상호작용의 3세대 진화
⚡ 핵심 개념: Agent = Model + Harness
🧭 Martin Fowler의 Guides & Sensors 프레임워크
🗺️ Guides (가이드) — 사전 제어(Feedforward Control)
📡 Sensors (센서) — 사후 제어(Feedback Control)
⚙️ 두 가지 실행 유형
🚗 CAR 프레임워크: Control · Agency · Runtime
🛠️ Claude Code에서의 하네스 엔지니어링 적용
📄 ① CLAUDE.md / Rules 파일 (가이드)
🧩 ② Skills (스킬)
🪝 ③ Hooks (훅)
🔌 ④ MCP 서버 (에이전시)
🤖 ⑤ Sub-agents (서브에이전트)
🏗️ 하네스 아키텍처
🔺 3-에이전트 아키텍처 (최신)
📐 실전 하네스 설계 원칙
1️⃣ 가능한 한 단순하게 시작하라
2️⃣ 하네스는 모델의 가정을 인코딩한다
3️⃣ 계층별 책임을 명확히 분리하라
✅ 빠른 시작 체크리스트
📚 참고 자료

🔩 하네스 엔지니어링(Harness Engineering) 완전 가이드

🤔 하네스 엔지니어링이란 무엇인가?

**하네스 엔지니어링(Harness Engineering)**은 AI 에이전트를 감싸는 환경, 도구체인, 안전 제약, 피드백 루프 전체를 설계하는 엔지니어링 실천법이다.

💬 하네스는 AI 에이전트를 둘러싼 스캐폴딩(scaffolding), 제약(constraints), 피드백 루프(feedback loops)의 전체 환경이다. 에이전트가 사용할 수 있는 도구, 부여된 권한, 유지되는 상태, 통과해야 하는 테스트, 수집되는 로그, 시스템이 표류하지 않도록 막는 재시도·체크포인트·가드레일·리뷰·평가가 모두 포함된다.

🚨 왜 지금 주목받는가?

2026년 3월 31일, Anthropic이 npm 업데이트 패키지에 실수로 Claude Code의 전체 소스코드(TypeScript 512,000줄 이상, 약 2,000개 파일)를 포함하여 배포하는 사고가 발생했다. 버전 2.1.88의 npm 패키지에 소스맵 파일(*.map)이 포함된 것이 원인이었다.

이 유출 사건은 AI 제품의 경쟁력이 모델보다 하네스에서 나온다는 사실을 업계에 각인시키며 "하네스 엔지니어링"이라는 개념을 급속히 확산시켰다.

Claude Code는 2025년 5월 공개 출시 후 6개월 만인 2025년 11월에 연간 **10억 달러(ARR)**를 돌파했는데, 그 비결은 더 나은 프롬프트가 아니라 스트리밍 에이전트 루프, 권한 제어 도구 디스패치 시스템, 긴 세션에 걸쳐 모델의 집중력을 유지하는 컨텍스트 관리 레이어라는 올바른 하네스 구축에 있었다.


📈 AI 상호작용의 3세대 진화

javascript
[2022~2023]          [2024~2025]           [2026~]
프롬프트 엔지니어링  →  컨텍스트 엔지니어링  →  하네스 엔지니어링
"무엇을 말하는가"       "무엇을 보내는가"        "어떻게 작동하는가"
세대핵심 질문주요 기법
🗣️ 프롬프트 엔지니어링모델에게 무엇을 말하는가?Few-shot, Chain-of-Thought, Role prompting
📦 컨텍스트 엔지니어링모델에게 무엇을 보내는가?RAG, 메모리 시스템, 문서 주입
🔩 하네스 엔지니어링시스템이 어떻게 작동하는가?Hooks, 권한 제어, 도구 체인, 피드백 루프

💡 하네스 엔지니어링은 컨텍스트 엔지니어링을 포함하고, 컨텍스트 엔지니어링은 프롬프트 엔지니어링을 포함한다. 각 레이어는 이전 레이어를 없애는 것이 아니라 범위를 확장한다.


⚡ 핵심 개념: Agent = Model + Harness

하네스 엔지니어링의 가장 핵심적인 공식:

javascript
Agent = Model + Harness

**하네스(Harness)**는 모델 자체를 제외한 에이전트를 구성하는 모든 것이다.

  • 🔧 에이전트가 사용하는 도구(Tools)
  • 🔐 에이전트에 부여된 권한(Permissions)
  • 💾 세션에 걸쳐 유지되는 상태(State)
  • ✅ 통과해야 하는 테스트(Tests)
  • 📋 캡처되는 로그(Logs)
  • 🛡️ 시스템을 안정적으로 유지하는 재시도·체크포인트·가드레일

🎯 동일한 모델이라도 하네스 설계에 따라 결과물의 품질과 신뢰성이 극적으로 달라진다. OpenAI의 내부 실험에서 에이전트 주변 환경을 올바르게 구조화했을 때, 수동으로 작성된 코드 없이 AI가 약 100만 줄의 프로덕션 소프트웨어를 생성하는 결과를 얻었다.


🧭 Martin Fowler의 Guides & Sensors 프레임워크

마틴 파울러(Martin Fowler)는 하네스의 두 가지 핵심 제어 메커니즘을 정의했다.

🗺️ Guides (가이드) — 사전 제어(Feedforward Control)

에이전트가 행동하기 전에 방향을 잡아주는 제어 장치.

  • 목표: 에이전트가 처음부터 좋은 결과물을 만들 확률을 높인다
  • 예시: CLAUDE.md의 코딩 컨벤션 명시, 허용/금지 도구 목록, 프로젝트 구조 가이드

📡 Sensors (센서) — 사후 제어(Feedback Control)

에이전트가 행동한 후에 관찰하고 자기 수정을 돕는 장치.

  • 목표: 에이전트가 실수를 감지하고 스스로 교정하도록 한다
  • 핵심 포인트: 센서는 LLM이 소비하기 좋은 형태의 신호(예: 자기 수정 지침이 포함된 커스텀 린터 메시지)를 생성할 때 특히 강력하다

⚙️ 두 가지 실행 유형

유형특성예시
⚡ Computational (계산형)결정론적, 빠름, 저렴린터, 테스트 러너, 정규식 검사
🤖 Inferential (추론형)AI 기반, 의미론적 검토, 느림LLM 기반 코드 리뷰 훅, Agent 훅

🚗 CAR 프레임워크: Control · Agency · Runtime

실무에서 하네스를 설계할 때 유용한 또 다른 프레임워크다.

영역역할구성 요소
🎛️ Control (제약 정의)에이전트의 행동 범위를 결정CLAUDE.md, 린터, 테스트, 코드 리뷰
🤝 Agency (도구·인터페이스)에이전트가 할 수 있는 일을 확장MCP 서버, 서브에이전트, 외부 API
🔄 Runtime (실행·복구)안정적 실행과 오류 복구를 담당Hooks, 재시도 로직, 롤백, 체크포인트

🛠️ Claude Code에서의 하네스 엔지니어링 적용

Claude Code는 사용자가 하네스를 구성할 수 있는 5가지 레이어를 제공한다.

javascript
┌──────────────────────────────────────────────┐
│              Claude Code Harness              │
│                                              │
│  ① CLAUDE.md / Rules  ← 가이드 (사전 제어)    │
│  ② Skills             ← 모듈형 지침           │
│  ③ Hooks              ← 센서 (사후 제어)      │
│  ④ MCP 서버           ← 에이전시 확장         │
│  ⑤ Sub-agents         ← 태스크 위임           │
│                                              │
│              [Claude Model]                  │
└──────────────────────────────────────────────┘

📄 ① CLAUDE.md / Rules 파일 (가이드)

세션마다 자동으로 로드되는 에이전트의 영구 메모리이자 가이드다.

javascript
~/.claude/CLAUDE.md          # 전역 규칙 (모든 프로젝트 적용)
~/.claude/rules/             # 전역 규칙 파일들
프로젝트/.claude/CLAUDE.md   # 프로젝트별 규칙

효과적인 CLAUDE.md 작성 전략:

markdown
# 프로젝트 컨벤션
- 언어: TypeScript strict mode
- 테스트: Jest, 커버리지 80% 이상 유지
- 커밋: Conventional Commits 형식 준수

# 금지 사항
- console.log 직접 사용 금지 (logger 유틸리티 사용)
- any 타입 사용 금지
- 테스트 없이 비즈니스 로직 수정 금지

# 아키텍처 원칙
- 계층: Controller → Service → Repository
- 사이드 이펙트는 반드시 Service 계층에서 처리

💡 팁: 규칙은 에이전트가 처음부터 올바른 방향으로 행동하도록 사전에 방향을 잡아주는 가이드 역할을 한다. 구체적이고 명확할수록 효과적이다.

🧩 ② Skills (스킬)

CLAUDE.md를 분할한 모듈형 지침 조각이다. 태스크가 매칭될 때만 로드되어 컨텍스트 윈도우를 효율적으로 사용할 수 있다.

javascript
~/.claude/skills/
├── testing.md       # 테스트 작성 시에만 로드
├── git-commit.md    # 커밋 시에만 로드
├── review.md        # 코드 리뷰 시에만 로드
└── deploy.md        # 배포 작업 시에만 로드

✅ 장점: 거대한 CLAUDE.md 하나를 매번 전체 로드하는 대신, 필요한 지침만 선택적으로 불러와 컨텍스트 윈도우를 아낄 수 있다.

🪝 ③ Hooks (훅)

Claude Code 라이프사이클의 특정 시점에 자동 실행되는 사용자 정의 스크립트다. 가장 강력한 센서(Sensor) 메커니즘이다.

훅 이벤트 유형:

이벤트발생 시점
PreToolUse도구 실행 직전
PostToolUse도구 실행 직후
Stop에이전트 응답 완료 후
SessionStart세션 시작 시

훅 핸들러의 4가지 종류:

종류특성활용 사례
command셸 명령어 실행린터, 테스트, 포매터
httpHTTP POST 전송외부 서비스 알림, 로깅
promptClaude 모델로 평가AI 기반 코드 품질 검토
agent서브에이전트 생성Read/Grep/Glob으로 복잡한 검증

실전 훅 설정 예시 (~/.claude/settings.json):

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "npm run lint --fix"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "npm test -- --passWithNoTests"
          }
        ]
      }
    ]
  }
}

⚠️ 주의: 훅이 생성하는 에러 메시지는 단순한 오류 코드가 아니라, 에이전트가 자기 수정에 사용할 수 있는 구체적인 지침을 포함해야 한다. 그래야 에이전트가 스스로 문제를 교정할 수 있다.

좋은 훅 피드백 메시지 예시:

bash
# ❌ 나쁜 예
echo "Error: lint failed"
exit 1

# ✅ 좋은 예
echo "ESLint 오류: 'any' 타입 사용이 금지되어 있습니다.
해결 방법: 구체적인 타입을 명시하거나, unknown을 사용하세요.
관련 파일: src/utils/parser.ts:42"
exit 1

🔌 ④ MCP 서버 (에이전시)

에이전트의 도구 세트를 외부 시스템으로 확장하는 연결 레이어다. MCP 서버를 활용하면 Claude Code가 단순한 코딩 도우미를 넘어 전체 개발 워크플로우를 자율 처리하는 에이전트가 된다.

javascript
Claude Code
    │
    ├─→ GitHub MCP      # PR 생성, 이슈 관리
    ├─→ Jira MCP        # 티켓 읽기/업데이트
    ├─→ Slack MCP       # 팀 알림
    └─→ Database MCP    # 쿼리 실행

💡 통합 워크플로우 예시: Jira 티켓 읽기 → 코드 구현 → GitHub PR 생성 → 티켓 상태 업데이트 → Slack 알림까지 단일 명령으로 처리할 수 있다.

🤖 ⑤ Sub-agents (서브에이전트)

특정 태스크를 위임받아 독립적으로 실행하는 격리된 Claude 인스턴스다.

  • 메인 컨텍스트 윈도우를 오염시키지 않음
  • 병렬 실행 가능
  • 각 서브에이전트는 자체 도구 접근 권한 설정 가능

🏗️ 하네스 아키텍처

긴 작업에서 단일 컨텍스트 윈도우를 초과하는 문제를 해결하기 위해 Anthropic이 개발한 멀티에이전트 패턴이다.

🔺 3-에이전트 아키텍처 (최신)

javascript
① Planning Agent  → 태스크 분해, 우선순위 결정
        ↓
② Generation Agent → 실제 구현
        ↓
③ Evaluation Agent → 품질 검증, 피드백 생성

💡 핵심: 각 세션 종료 시 다음 세션을 위한 명확한 아티팩트(진행 상황, 결정 사항, 다음 단계)를 생성해야 한다. 새 세션은 이전 세션의 메모리가 없기 때문이다.


📐 실전 하네스 설계 원칙

1️⃣ 가능한 한 단순하게 시작하라

복잡한 멀티에이전트 시스템을 처음부터 구축하지 말고, 단일 에이전트 + 훅 + 규칙 파일부터 시작하라.

javascript
Phase 1: CLAUDE.md 작성 (기본 가이드)
    ↓
Phase 2: 핵심 훅 추가 (린터, 테스트)
    ↓
Phase 3: 스킬로 모듈화
    ↓
Phase 4: MCP 서버로 외부 연동
    ↓
Phase 5: 필요시 멀티에이전트 아키텍처 고려

2️⃣ 하네스는 모델의 가정을 인코딩한다

하네스의 모든 컴포넌트는 "모델이 스스로 할 수 없는 것"에 대한 가정을 담고 있다. 모델이 발전하면 하네스도 단순화된다. 정기적으로 각 컴포넌트가 여전히 필요한지 검토하라.

3️⃣ 계층별 책임을 명확히 분리하라

레이어책임
📄 Rules/CLAUDE.md"무엇을 해야 하는가" (지식, 제약)
🧩 Skills"어떻게 해야 하는가" (절차, 패턴)
🪝 Hooks"제대로 했는가" (검증, 피드백)
🔌 MCP"무엇을 할 수 있는가" (도구, 권한)

✅ 빠른 시작 체크리스트

  • ~/.claude/CLAUDE.md — 전역 규칙 작성 (코딩 스타일, 금지 사항)
  • 프로젝트 .claude/CLAUDE.md — 프로젝트별 컨벤션 작성
  • PostToolUse 훅 — Edit/Write 후 린터 자동 실행
  • Stop 훅 — 세션 종료 전 테스트 자동 실행
  • 핵심 워크플로우에 스킬 파일 생성
  • 필요한 MCP 서버 연결 (GitHub, Jira 등)

📚 참고 자료

  • Harness engineering for coding agent users — Martin Fowler
  • Harness design for long-running application development — Anthropic Engineering
  • Effective harnesses for long-running agents — Anthropic Engineering
  • Hooks reference — Claude Code 공식 문서
  • Skill Issue: Harness Engineering for Coding Agents — HumanLayer
  • Why harness engineering is becoming the new AI moat — TechTalks