AI 에이전트가 혼자서 뉴스를 수집하고, 디자인하고, 검증까지 한다면?

“오늘의 AI 뉴스 정리해줘.”

이 한 마디에 에이전트가 웹을 검색하고, 뉴스를 요약하고, 예쁜 HTML 페이지까지 만들어준다면 어떨까? 그런데 문제가 있다. 에이전트가 스스로 만든 결과물을 스스로 “잘했다”고 평가하면, 누락된 뉴스, 어색한 한국어, 조잡한 디자인을 그대로 넘기게 된다.

이 글에서는 Anthropic의 Harness Design for Long-Running Application Development 아티클의 핵심 원칙을 실제 Claude Code 스킬로 구현한 과정을 공유한다.


왜 하네스가 필요한가? — 단일 에이전트의 한계

AI에게 “뉴스 모아서 예쁜 페이지 만들어줘”라고 하면, 대부분의 경우 한 번에 모든 것을 처리하려 한다. 얼핏 보면 잘 되는 것 같지만, Anthropic의 실험에서 두 가지 구조적 실패가 반복적으로 관찰되었다.

실패 1: 자기평가 편향 (Self-evaluation Bias)

단일 에이전트 방식의 자기평가 편향 문제
단일 에이전트는 자신이 만든 결과물을 자신이 평가한다 — 항상 “잘했다”고 보고한다.

Anthropic의 원문은 이 현상을 이렇게 설명한다.

“Out of the box, Claude is a poor QA agent. In early runs, I watched it identify legitimate issues, then talk itself into deciding they weren’t a big deal and approve the work anyway.”

에이전트는 자신이 발견한 문제도 “별것 아니다”라고 합리화하며 스스로를 통과시킨다.

실패 2: 컨텍스트 불안 (Context Anxiety)

긴 작업을 하다 보면 에이전트가 컨텍스트 윈도우 한계에 대한 조급함을 느끼고 조기 마무리한다. Anthropic은 이를 “context anxiety”라고 명명했고, 단순히 대화를 요약(compaction)하는 것만으로는 해결되지 않는다고 밝혔다. 압축은 연속성은 유지하지만, 불안 자체는 해소하지 못한다.


해결책: 세 에이전트의 구조적 분리

GAN(Generative Adversarial Network)에서 영감을 받은 이 패턴은, 만드는 사람과 평가하는 사람을 구조적으로 분리한다.

Planner-Generator-Evaluator 3-agent 하네스 흐름도
Planner → Generator → Evaluator: 세 에이전트가 파일을 통해서만 소통하며, 품질을 구조적으로 보장한다.
에이전트역할입력출력
PlannerWebSearch로 실제 AI 뉴스 리서치사용자 요청 + 오늘 날짜spec.md
GeneratorSelf-contained HTML 페이지 제작spec.md (+ 재시도 시 critique.md)ai-news-digest-{datetime}.html
Evaluator루브릭 기반 증거 채점spec.md + HTML + generator_report.mdcritique.md (PASS/FAIL)

파일 기반 핸드오프 — 에이전트 간 유일한 소통 수단

파일 기반 핸드오프: 에이전트 간 유일한 소통 수단
에이전트 A의 추론 과정을 B에게 보여주면, B는 A의 논리에 “설득”당해 독립적 판단을 잃는다.

핵심은 세 에이전트가 서로의 추론 과정을 절대 볼 수 없다는 것이다. 오직 파일을 통해서만 소통한다. 에이전트 A의 추론 과정을 에이전트 B에게 보여주면, B는 A의 논리에 “설득”당해 독립적 판단을 잃기 때문이다.

스프린트 계약 — 만들기 전에 “무엇을 검증할지” 합의

Generator가 코딩을 시작하기 전에, 먼저 Evaluator와 스프린트 계약을 체결한다. 이 계약이 없으면 Generator는 “대충 만들었는데 됐겠지”로 끝내고, Evaluator는 “뭘 검사해야 하지?”로 방황한다.

# Sprint Contract 예시

## 산출물
- ai-news-digest-20260416-143025.html

## 검증 항목 (Evaluator가 확인할 것)
- [ ] spec.md의 모든 뉴스 아이템이 HTML에 포함
- [ ] 다크 모드 토글이 작동
- [ ] 카테고리 필터가 올바르게 동작
- [ ] 한국어 line-height >= 1.7
- [ ] file:// 프로토콜에서 정상 렌더링
- [ ] 모든 소스 URL이 clickable link

평가 루브릭: “괜찮아 보인다”는 통과가 아니다

기준가중치근거
콘텐츠 완성도1xClaude가 잘 하는 영역
요약 품질2x한국어 품질 편차가 큼
디자인 품질2x제네릭 HTML 기본값 탈출 필요
기술적 정확성1x유효한 HTML 안정적 생성
인터랙티비티1x기능 검증 (pass/fail)
접근성 & 완성도1x중요하나 주요 차별화 아님
2x 가중: Claude가 기본적으로 약한 축에 가압한다. 통과: 모든 항목 ≥ 4/5, 2x 항목 둘 다 ≥ 4/5.

가중치 설계의 원칙은 단순하다: 모델이 이미 잘하는 것(기술적 정확성)은 1x, 모델이 약한 것(디자인, 한국어 요약)은 2x로 가압한다.


원문에서 얻은 5가지 운영 교훈

하네스의 구조만 따라하면 절반만 구현한 것이다. 원문의 V2 진화 과정에서 얻은 교훈이 실제 운영에서 차이를 만든다.

교훈 1: 스타일 자석(Style Magnet)을 피하라

구분잘못된 프롬프트올바른 프롬프트
예시“magazine-style layout으로 만들어”“visual coherence: colors, typography, layout이 하나의 정체성을 형성”
결과모든 결과물이 매거진처럼 수렴 (다양성 상실)각 이터레이션에서 독창적 해석 가능
원문에서 “museum quality”라는 문구가 모든 디자인을 미술관풍으로 수렴시킨 경험에서 나온 교훈이다.

교훈 2: 품질은 비선형으로 향상된다

원문: “Later implementations tended to be better as a whole, but I regularly saw cases where I preferred a middle iteration over the last one.”

그래서 각 이터레이션을 ai-news-digest-{datetime}-v{N}.html로 보존하고, Evaluator 점수가 가장 높은 버전을 최종 산출물로 선택한다.

교훈 3: 압축(Compaction) ≠ 리셋(Reset)

방식작동결과
Compaction이전 대화를 요약하여 연속성 유지조급함은 여전히 남아있음
Context Reset새 세션 + handoff.md 전달조급함 자체가 존재하지 않음

교훈 4: Evaluator 튜닝은 반복적 과정

한 번에 완벽한 Evaluator 프롬프트는 없다. Evaluator 로그(critique.md)를 읽고, 판단이 기대와 어디서 갈라지는지 식별하고, 프롬프트를 구체화하고, 다시 실행하는 루프를 여러 라운드 반복해야 한다.

교훈 5: 모든 컴포넌트는 한 번에 하나씩 제거

원문에서 급진적 단순화(한번에 전부 제거)는 실패했다. 한 번에 하나씩 제거하고 결과물 품질에 미치는 영향을 측정한 뒤 다음 컴포넌트를 판단해야 한다.

“Every component in a harness encodes an assumption about what the model can’t do on its own, and those assumptions are worth stress testing.”


활용 시나리오: 뉴스 그 이상의 가능성

이 스킬은 단순한 “뉴스 모음” 도구가 아니다. 하네스 패턴 자체가 다양한 도메인에 이식 가능한 설계 패턴이다.

하네스 패턴의 다양한 도메인 적용 가능성
같은 Planner → Generator → Evaluator 구조로 AI 뉴스, 비즈니스 플랜, LinkedIn 포스트, 기술 문서 등 다양한 도메인에 적용할 수 있다.

시작하기

# GitHub에서 클론
git clone https://github.com/greeun/ai-news-digest-harness.git \
  ~/.claude/skills/ai-news-digest-harness

# Claude Code에서 트리거
"AI 뉴스 정리해줘"
"오늘의 AI 소식"
"최신 AI 뉴스 모아줘"

마무리: 하네스는 불신의 도구가 아니라, 구조적 품질 보장이다

하네스 디자인의 본질은 “AI를 못 믿으니까 감시하자”가 아니다. 모델이 잘하는 건 맡기고, 구조적으로 취약한 곳에만 가드레일을 세우는 것이다. 그리고 모델이 업그레이드되면, 불필요해진 가드레일은 한 번에 하나씩 걷어낸다.

핵심 요약

  • 자기평가 편향은 구조로 해결한다 — 만드는 에이전트와 평가하는 에이전트를 분리한다.
  • 파일 기반 핸드오프가 독립성을 보장한다 — 추론 과정을 공유하면 설득당한다.
  • 가장 단순한 솔루션을 찾고, 필요할 때만 복잡도를 높인다 — 하네스도 과잉 엔지니어링의 대상이 될 수 있다.

GitHub: greeun/ai-news-digest-harness
원문: Harness Design for Long-Running Application Development — Prithvi Rajasekaran, Anthropic (2026)

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤