← 목록으로

하네스 엔지니어링이란?

같은 AI 모델이라도, 어떤 하네스 위에서 돌리느냐에 따라 결과가 완전히 달라집니다

하네스 엔지니어링 도구 멀티 에이전트 소환
개념

하네스 엔지니어링이란 AI가 일하는 환경 전체를 설계하는 것

한 줄 정의

하네스는 모델을 감싸 일을 시키는 구조 전체입니다. 무엇을 알려주고(맥락), 누가 만들고 채점하며(역할·기준), 어떤 도구를 쥐여줄지를 정해 둔 판. 모델은 그 안에서 돌아가는 엔진 하나일 뿐입니다.

🐎
비유 1: 말과 마구

말의 (근육, 속도)는 AI 모델에 해당합니다.
말에게 씌우는 마구, 달리는 길, 신호 체계는 하네스에 해당합니다.

아무리 좋은 말이라도 올바른 마구 없이는 원하는 방향으로 달리지 못합니다. AI도 마찬가지입니다.

모델 = 말의 근육·속도 하네스 = 마구·길·신호 체계
🧑‍💼
비유 2: 신입사원과 온보딩

아무리 똑똑한 신입사원도 업무 매뉴얼 없이 첫날부터 혼자 일하면 실수투성이입니다.
업무 범위, 보고 체계, 사용 도구, 금지 사항을 정리해 둔
온보딩 시스템 전체가 바로 하네스입니다.
AI에게 "이렇게 일해"라고 알려주는 회사 시스템이 곧 하네스입니다.

모델 = 신입의 머리(지능) 하네스 = 온보딩 시스템 전체

경쟁력은 누가 더 좋은 모델을 쓰느냐가 아니라,
누가 더 좋은 하네스를 설계했느냐에서 나옵니다.

SYSTEM MAP

LLM은 코어, 하네스는 코어를 감싸는 업무 환경

핵심: LLM은 엔진이고, 하네스는 엔진을 업무에 투입하는 운전석·계기판·도로·안전장치입니다.

하네스 엔지니어링 =
LLM 모델
ENGINE
×
Role·Rubric
1역할 분리
×
Context
2컨텍스트 인수인계
×
Tools
3도구
×
Workflow
4작업 흐름
×
Guardrail
5가드레일

하네스 엔지니어링을 하나의 공식으로 묶으면 이렇습니다. 모델은 곱해지는 한 항일 뿐, 다섯 요소 중 하나라도 0이면 결과도 0이 됩니다.
이 페이지는 ① 역할 분리 · ② 컨텍스트 인수인계를 깊게 다루고, ③ 도구 · ④ 작업 흐름 · ⑤ 가드레일은 다음 장으로 다루어집니다.

하네스 설계가 중요한 이유
왜 중요한가 혼자 일하는 AI는 두 가지 이유로 무너집니다
📄
Anthropic이 직접 공개한 하네스 설계 보고서
2026년 3월 24일, Anthropic Labs의 Prithvi Rajasekaran 발표

"장기 실행 앱 개발을 위한 하네스 설계"에서 Anthropic은 하네스 없이 AI에게 긴 작업을 맡겼을 때 반복적으로 나타나는 두 가지 근본 문제를 짚었습니다.

01
자기 평가의 함정 Self-Evaluation Trap

자기 결과물을 스스로 채점하면 항상 후하게 나옵니다

자신이 생성한 작업물을 평가하라고 하면, 에이전트는 자신감 있게 칭찬하는 경향을 보입니다. 인간 관찰자에게는 품질이 명백히 평범한 수준인데도 말입니다.

Prithvi Rajasekaran, Anthropic Labs
일상 비유

학생이 자기 시험지를 직접 채점하면 점수가 후하게 나오는 것과 같습니다.

02
컨텍스트 불안 Context Anxiety

긴 작업 도중에 갑자기 대충 마무리합니다

모델은 긴 작업에서 컨텍스트 윈도우가 차오르면 일관성을 잃습니다. 일부 모델은 "컨텍스트 불안"을 보이며, 한계에 가까워졌다고 인지하면 작업을 조기에 마무리해 버립니다.

Prithvi Rajasekaran, Anthropic Labs
일상 비유

10페이지짜리 보고서를 시켰는데 7페이지에서 갑자기 "이상 마치겠습니다"라고 끝내버리는 셈입니다.

원칙 1
역할 분리 Role·Rubric
↳ 자기 평가의 함정을 해결

"만드는 사람"과 "검토하는 사람"은 반드시 분리해야 합니다. 만드는 AI(Generator·생성자)와 평가하는 AI(Evaluator·채점자)를 따로 두고, 합격 기준(Rubric)을 채점자가 외부에서 쥔 채 냉정하게 채점하게 만듭니다.

원칙 2
컨텍스트 리셋 Context
↳ 컨텍스트 불안을 해결

이전 상태를 "구조화된 MD 파일"로 인수인계해야 합니다. 작업 기억(컨텍스트 윈도우)을 완전히 비우고, 교대 근무자에게 인수인계서를 넘기듯 새 세션을 시작합니다.

만드는 자와 검토하는 자를 분리하고, 이전 맥락은 문서로 넘깁니다.
이 두 원칙이 긴 작업을 끝까지 무너지지 않게 만듭니다.

사례 1: Generator-Evaluator 구조

네덜란드 미술관 웹사이트 디자인

"이 디자인 괜찮아?"라는 주관적 질문을 점수로 바꾼 결과

Anthropic은 Generator-Evaluator 구조로 랜딩 페이지를 반복 개선했습니다. 9회차까지 전형적인 다크 테마였던 페이지가, 10회차에서 CSS perspective로 구현된 3D 공간 네비게이션으로 완전히 바뀌었습니다. 체크무늬 바닥, 벽에 걸린 작품, 문을 통한 페이지 이동까지 포함된 공간적 경험입니다.

네덜란드 미술관 웹사이트, 반복 10회차 결과물. CSS perspective를 활용한 3D 공간 네비게이션이 구현되었습니다.
출처: Anthropic Engineering Blog
놀라운 발견

"첫 번째 반복에서도, 아무런 기준 없이 만든 결과물보다 눈에 띄게 나은 품질이 나왔습니다. 채점 기준의 문구 자체가 결과물의 성격을 직접 형성합니다."

어떻게 가능했는가: 두 원칙의 적용

원칙 1 적용

역할 분리

만드는 AI와 채점하는 AI를 완전히 분리한다

  • Generator는 만들고, Evaluator는 실제 페이지를 보고 채점
  • Evaluator는 4가지 채점 기준으로 분해 (시각적 계층, 색상 일관성, 여백, CTA 명확성)
  • 5~15회 반복하며 개선
원칙 2 적용

컨텍스트 리셋

에이전트끼리 직접 대화하지 않고 파일로만 주고받는다

  • 같은 메시지 창에서 대화하지 않음
  • Generator는 코드를 page.html에, Evaluator는 채점 결과를 score.md에 기록
  • 매 반복마다 컨텍스트를 처음부터 새로 시작
원칙 1 풀어보기
두 에이전트는 입력·출력·임무가 정확히 이렇게 다릅니다
Generator역할 1 · 제작자

채점 기준에 맞춰 페이지를 만들고, 부족한 항목만 다시 고친다

  • 입력디자인 브리프 + 직전 회차의 score.md
  • 출력page.html (단일 HTML 파일)
  • 임무9.5점 미만 항목만 골라 다시 작성
  • 안 함자기 결과물 채점, 점수 변경
Evaluator역할 2 · 채점자

실제 페이지를 열어보고 4가지 기준으로 냉정하게 점수를 매긴다

  • 입력page.html (Generator가 방금 만든 결과)
  • 출력score.md (점수표 + 개선 사항)
  • 임무시각적 계층, 색상 일관성, 여백, CTA 명확성을 각 10점으로 평가
  • 안 함코드 직접 수정, 다음 회차 만들기

프롬프트 예시

간략 버전으로 간단하게 실습을 하고, 상세 버전으로 설계하세요

간략 버전 (한계점: 한 모델이 두 역할을 흉내내 진짜 분리는 아님)
# 이 프롬프트가 하려는 일
랜딩 페이지 한 장을 자동으로 디자이너 수준까지 끌어올린다.
같은 AI에게 만들기와 채점을 모두 맡기면 자기 결과에 후해지는 문제가 있다.
그래서 두 역할을 나눈다. 만드는 Generator, 채점하는 Evaluator.

# 등장 인물
Generator (제작자)
  · 입력: 디자인 브리프 + (있으면) 직전 회차 채점표
  · 출력: 단일 HTML 파일 한 페이지
  · 임무: 4가지 채점 항목을 모두 9.5점 이상으로 끌어올리기
  · 안 함: 자기 결과 채점, 점수 임의 변경

Evaluator (채점자)
  · 입력: 방금 Generator가 만든 HTML
  · 출력: 항목별 점수 + 개선 사항
  · 임무: 냉정하게 채점하되 점수보다 개선 사항을 먼저 적기
  · 안 함: 코드 직접 수정, 다음 회차 만들기

# 합격 기준 (각 10점 만점)
1. 시각적 계층: 제목·본문·소제목이 한눈에 구분되는가
2. 색상 일관성: 주조색 1개·보조색 1개만 일관되게 쓰는가
3. 여백 활용:   요소 간 간격이 충분한가
4. CTA 명확성: "다음 행동" 버튼이 눈에 띄는가

# 입력
디자인 브리프: (한두 문장)

# 진행 순서
한 회차 = Generator 출력 → Evaluator 출력.
2회차부터 Generator는 직전 채점표에서 9.5점 미만 항목만 손본다. 나머지는 절대 건드리지 않는다.

# 종료 조건
4개 항목 모두 9.5점 이상이면 종료. 아니면 다음 회차로. 최대 5회까지.
상세 버전
# 이 프롬프트가 하려는 일
랜딩 페이지 한 장을 자동으로 디자이너 수준까지 끌어올린다.
간략 버전과 달리, Claude Code의 Task 도구로 GeneratorEvaluator를 별도의 서브에이전트로 띄운다.
두 에이전트는 매 회차 새 컨텍스트에서 시작하고, 같은 메시지 창에서 대화하지 않고 파일로만 주고받는다.

# 작업 디렉토리
./design-loop/
  ├─ page.html   (Generator의 출력)
  └─ score.md    (Evaluator의 출력)

# 합격 기준 (각 10점 만점, 총 40점)
1. 시각적 계층:  제목·소제목·본문의 크기·굵기가 명확히 구분되는가
2. 색상 일관성:  주조색 1개, 보조색 1개만 사용하는가
3. 여백 활용:    요소 간 간격이 충분히 확보되어 있는가
4. CTA 명확성:   행동 유도 버튼이 눈에 띄는 위치에 있는가

# 입력
디자인 브리프: (한두 문장으로 무엇을 위한 페이지인지)

# 메인 에이전트 절차 (최대 10회)
회차마다 다음 3단계를 순서대로 수행한다.

1. Task 도구로 generator-agent를 호출한다.
   입력: 디자인 브리프 + (있으면) ./design-loop/score.md
   산출물: ./design-loop/page.html

2. Task 도구로 evaluator-agent를 호출한다.
   입력: ./design-loop/page.html
   산출물: ./design-loop/score.md

3. score.md를 읽는다.
   모든 항목이 9.5점 이상이면 STATUS: COMPLETED를 선언하고 종료.
   아니면 다음 회차로 넘어간다.

# generator-agent 시스템 프롬프트
너는 랜딩 페이지를 만드는 Generator다.
- 디자인 브리프를 읽는다. 직전 score.md가 있으면 함께 읽는다.
- 4가지 합격 기준을 목표로 단일 HTML 파일을 ./design-loop/page.html에 저장한다.
- 직전 score.md가 있으면 9.5점 미만 항목만 수정한다. 나머지는 절대 건드리지 않는다.
- 수정한 영역에는 다음 주석을 단다.
  /* 수정 (N회차): [항목명] - [변경 내용] */

# evaluator-agent 시스템 프롬프트
너는 랜딩 페이지를 채점하는 Evaluator다.
- ./design-loop/page.html을 실제 브라우저로 열어서 본다.
- 4가지 항목을 각 10점 만점으로 채점하고, 결과를 ./design-loop/score.md에 다음 형식으로 기록한다.

  | 회차 | 시각적 계층 | 색상 일관성 | 여백 활용 | CTA 명확성 | 총점 |
  |  N   |    X점      |    X점      |   X점     |    X점     | XX점 |

  표 다음에 9.5점 미만 항목별로 "무엇이 부족한가, 무엇을 바꿔야 하는가"를 구체적으로 적는다.
- 9점 이상은 거의 완벽할 때만 준다. 점수보다 개선 사항을 먼저 적는다.
- 코드를 직접 수정하지 않는다.
사례 2: Planner-Generator-Evaluator 구조

브라우저 기반 DAW (디지털 오디오 워크스테이션)

"이 앱이 실제로 작동하는가"라는 질문을 PASS/FAIL로 바꾼 결과

단순화된 3-Agent 하네스 (Planner, Generator & Evaluator)로 브라우저에서 돌아가는 DAW를 만들었습니다. 어레인지먼트 뷰, 믹서, 트랜스포트가 모두 포함되어 있고, AI가 프롬프트로 간단한 곡을 자동 작곡하는 기능까지 들어 있습니다.

브라우저 기반 DAW 데모 영상. 단순화된 3-Agent 하네스로 만든 결과물입니다. AI가 프롬프트로 간단한 곡을 자동 작곡하는 기능이 포함됩니다.
출처: Anthropic Engineering Blog
어떻게 가능했는가: 두 원칙의 적용 (3-Agent로 확장)

풀스택 앱은 디자인보다 한 단계 더 복잡합니다. Anthropic은 사례 1의 2-Agent 구조에 Planner(기획자)를 추가해 3-Agent로 확장했고, 구현 전에 "무엇이 성공인지"를 먼저 합의하는 스프린트 계약을 도입했습니다.

원칙 1 적용

역할 분리

Planner를 더해 만들기·검증·기획을 모두 분리한다

  • Planner가 1~4문장 브리프를 완전한 기획서로 확장
  • Generator가 기획서대로 코드 작성, Evaluator가 실제 사용자처럼 앱을 테스트
  • Evaluator는 합격/불합격을 판정만 한다 (구현은 안 함)
원칙 2 적용

컨텍스트 리셋

합격 기준을 먼저 합의하고 모든 소통은 파일로 한다

  • 스프린트 계약: 시작 전에 합격 기준을 plan.md로 합의 ("좋아 보인다" 대신 측정 가능한 조건)
  • Generator는 코드를, Evaluator는 판정 결과를 feedback.md로 남김
  • 매 회차 컨텍스트를 새로 시작
원칙 1 풀어보기
세 역할의 분담: 누가 무엇을 하나

사례 1의 2-Agent 구조에 Planner를 더해, 기획·제작·검증을 모두 다른 에이전트로 띄웁니다. 셋은 같은 메시지 창에서 대화하지 않고 파일로만 주고받습니다.

Planner역할 1 · 기획자

시작 전에 "무엇이 성공인지" 합격 기준을 먼저 합의한다

  • 입력1~4문장의 짧은 브리프
  • 출력plan.md (기획서 + 합격 기준)
  • 임무"좋아 보인다" 대신 PASS/FAIL로 판정 가능한 기준 설계
  • 안 함코드 작성, 합격 판정
Generator역할 2 · 제작자

기획서대로 앱을 짜고, 직전 피드백에서 FAIL인 항목만 고친다

  • 입력plan.md + 직전 회차의 feedback.md
  • 출력동작하는 앱 코드
  • 임무합격 기준 항목을 PASS로 바꾸는 데 집중
  • 안 함합격 기준 변경, 자기 코드 판정
Evaluator역할 3 · 채점자

실제 사용자처럼 앱을 써보고 PASS/FAIL을 판정한다

  • 입력Generator가 방금 만든 동작하는 앱
  • 출력feedback.md (기준별 PASS/FAIL + 근거)
  • 임무합격 기준대로 사용자처럼 동작 검증
  • 안 함코드 수정, 합격 기준 변경
단계 소요 시간 비용
기획 (Planner)4.7분$0.46
1차 Build (Generator)2시간 7분$71.08
1차 QA (Evaluator)8.8분$3.24
2차 Build (Generator)1시간 2분$36.89
2차 QA (Evaluator)6.8분$3.09
3차 Build (Generator)10.9분$5.88
3차 QA (Evaluator)9.6분$4.06
합계 약 3시간 50분 $124.70
주목할 패턴

Build 횟수가 거듭될수록 소요 시간과 비용이 급격히 줄어들었습니다. 3차 Build는 1차와 비교하면 시간은 1/12, 비용도 1/12 수준으로 끝났습니다. Evaluator가 남은 문제만 정확히 짚어주었기 때문입니다.

프롬프트 예시

간략 버전으로 간단하게 실습을 하고, 상세 버전으로 설계하세요

간략 버전 (한계점: 한 모델이 세 역할을 흉내내 진짜 분리는 아님)
# 이 프롬프트가 하려는 일
브라우저에서 동작하는 풀스택 앱을 자동으로 만든다.
"좋아 보인다"라는 주관에서 벗어나 PASS/FAIL로 판정 가능한 합격 기준을 먼저 합의하고,
그다음에 만들기와 검증을 반복한다.

# 등장 인물
Planner (기획자)
  · 입력: 1~4문장의 짧은 앱 브리프
  · 출력: 측정 가능한 합격 기준 5개 이상이 적힌 기획서
  · 임무: "좋아 보인다" 대신 PASS/FAIL로 판정 가능한 기준 설계
  · 안 함: 코드 작성, 합격 판정

Generator (제작자)
  · 입력: 기획서 + (있으면) 직전 회차 피드백
  · 출력: 동작하는 단일 HTML 앱
  · 임무: 합격 기준 항목을 PASS로 바꾸기
  · 안 함: 합격 기준 변경, 자기 코드 판정

Evaluator (채점자)
  · 입력: 방금 Generator가 만든 앱
  · 출력: 기준별 PASS/FAIL + 근거
  · 임무: 실제 사용자처럼 앱을 써보고 기준대로 판정
  · 안 함: 코드 수정, 합격 기준 변경

# 입력
앱 브리프: (한두 문장)

# 진행 순서 (최대 3회차)
1회차에만 Planner를 호출한다.
  · Planner: 측정 가능한 합격 기준 5개 이상을 작성. 주관적 표현 금지.
  · Generator: 합격 기준을 만족하는 단일 HTML 앱을 출력.
  · Evaluator: 기준별 결과를 | 기준 | 판정 | 근거 | 표로 출력. 점수보다 근거를 먼저 적는다.

2회차부터:
  · Generator: 직전 회차에서 FAIL인 기준만 손본다. 나머지는 그대로 둔다.
  · Evaluator: 다시 판정한다.

# 종료 조건
모든 기준 PASS면 종료. 아니면 다음 회차로. 최대 3회까지.
상세 버전
# 이 프롬프트가 하려는 일
브라우저에서 동작하는 풀스택 앱을 PASS/FAIL 기반으로 자동 구축한다.
"이게 정말 작동하는가"를 측정 가능한 합격 기준으로 바꾼 뒤,
Claude Code의 Task 도구로 Planner / Generator / Evaluator를 별도 서브에이전트로 띄운다.
세 에이전트는 매 단계 새 컨텍스트에서 시작하고, 같은 메시지 창에서 대화하지 않고 파일로만 주고받는다.

# 작업 디렉토리
./app-build/
  ├─ plan.md       (Planner의 기획서 + 합격 기준)
  ├─ code/         (Generator의 앱 코드)
  └─ feedback.md   (Evaluator의 PASS/FAIL + 근거)

# 입력
앱 브리프: (한두 문장)

# Phase 1. 기획·합의 (최대 3회)
구현을 시작하기 전에 합격 기준을 먼저 굳힌다.

1. Task 도구로 planner-agent를 호출한다.
   입력: 앱 브리프
   산출물: ./app-build/plan.md

2. Task 도구로 evaluator-agent를 호출해 plan.md를 검토한다.
   합격 기준이 측정 가능하면 plan.md 하단에 STATUS: APPROVED 추가.
   아니면 1번으로 돌아가서 기준을 다시 작성한다.

# Phase 2. 구현·검증 (최대 N회차)
기준이 굳어지면 그제서야 코드를 만들기 시작한다.

회차마다 다음 3단계를 순서대로 수행한다.

1. Task 도구로 generator-agent를 호출한다.
   입력: plan.md + (있으면) feedback.md
   산출물: ./app-build/code/

2. Task 도구로 evaluator-agent를 호출한다.
   입력: plan.md + ./app-build/code/
   산출물: ./app-build/feedback.md

3. feedback.md를 읽는다.
   모든 기준이 PASS면 STATUS: COMPLETED를 추가하고 종료.
   아니면 다음 회차로.

# planner-agent 시스템 프롬프트
너는 앱 기획자다. 1~4문장 브리프를 받아 plan.md를 작성한다.
- 합격 기준은 번호가 매겨진 측정 가능한 조건 5개 이상.
- 주관적 표현 금지. ("좋아 보인다" X, "버튼 클릭 시 X 발생" O)
- 기술 제약과 우선순위도 함께 명시한다.

# generator-agent 시스템 프롬프트
너는 코드 작성자다. plan.md만을 진실의 원천으로 보고 ./app-build/code/에 앱을 작성한다.
- (있으면) 직전 feedback.md에서 FAIL인 기준 번호만 수정한다. 나머지는 절대 건드리지 않는다.
- 수정한 영역에는 변경 내용을 코드 상단 주석으로 명시한다.

# evaluator-agent 시스템 프롬프트
너는 검증자다. plan.md의 합격 기준만을 근거로 ./app-build/code/를 판정한다.
- 실제 코드를 실행하거나 브라우저로 열어서 확인한다.
- 결과를 feedback.md에 다음 형식으로 기록한다.

  | 기준 번호 | 판정 (PASS/FAIL) | 근거 |

- 근거는 재현 가능하게 구체적으로 적는다.
- 코드를 직접 수정하지 않는다.
출처

이 페이지의 모든 인용문, 이미지, 동영상, 데이터 테이블은 위 Anthropic 엔지니어링 블로그 원문에서 발췌한 것입니다.
본 자료는 교육 및 강의 목적으로 정리되었으며, 원문의 저작권은 Anthropic에 있습니다.

하네스 설계, 직접 해보세요

Anthropic이 증명한 핵심은 이것입니다. 같은 모델이라도 하네스가 다르면 결과가 완전히 달라집니다.
CLAUDE.md, 스킬, 훅, MCP로 여러분만의 하네스를 만들어 보세요.