Claude Code 스킬로 “AI 뉴스 다이제스트” 자동 생성기를 만들어두었는데, 팀에서 “그럼 암호화폐 뉴스도, 반도체 뉴스도, K-콘텐츠 뉴스도 이렇게 만들어 주면 안 되나?”라는 요구가 나왔다. 주제 하나 바꿔서 카피하면 될 줄 알았는데, 그렇게 단순하지 않았다. 이 글은 그 일반화 스킬 news-digest-harness v1.0.0을 만든 과정과, 왜 이런 구조가 필요한지를 정리한 기록이다.
GitHub: github.com/greeun/news-digest-harness (MIT)
왜 “뉴스 좀 요약해줘”는 반드시 실패하는가
LLM에게 “오늘의 ○○ 뉴스 정리해줘”라고 던지면, 결과는 예외 없이 다음 세 가지 방식으로 망가진다.
중요한 점은, 이 세 가지가 더 나은 프롬프트로 고쳐지지 않는다는 것이다. “주제에서 벗어나지 마” “자연스러운 한국어로 써” “예쁘게 디자인해” 같은 주문을 길게 붙일수록 모델은 모든 지시를 평균화하며 흐려진다. 한 에이전트가 생성과 평가를 동시에 하기 때문이다.
Anthropic의 “Harness Design” 논문이 제시한 해법
2026년 3월, Anthropic의 Prithvi Rajasekaran이 Harness Design for Long-Running Application Development라는 글을 공개했다. 요지는 단순하다: 생성하는 에이전트와 평가하는 에이전트를 물리적으로 분리하라. GAN의 발견을 LLM 파이프라인에 이식한 구조다.
이 스킬은 그 원칙을 뉴스 다이제스트 도메인에 이식했다. 세 에이전트 — Planner → Generator → Evaluator — 는 서로의 추론 과정을 볼 수 없고, 오직 파일을 통해서만 소통한다.
왜 주제를 바꾸는 게 단순 카피로 안 되었는가
기존 ai-news-digest-harness는 AI 도메인에 최적화되어 있었다. 카테고리가 [LLM, Robotics, Research, Industry, Policy, Startup, Open Source, Hardware, Application, People, Korea]로 하드코딩되어 있고, 검색 쿼리도 AI 기업명(OpenAI, Anthropic, Google AI…)에 특화되어 있다. 이것을 주제 불문 일반화하려면 5가지를 전부 뜯어고쳐야 했다.
즉 Planner는 단순히 검색만 하는 게 아니라, 주제를 이해하고 그 도메인에 맞는 분류 체계를 스스로 설계해야 한다. 이게 가능해지니 같은 파이프라인으로 암호화폐·반도체·K-콘텐츠·기후·부동산 뉴스가 모두 커버된다.
루브릭에 “주제 정합성”을 1순위로 박은 이유
일반화하면서 가장 경계해야 할 실패는 주제 드리프트와 AI 템플릿 잔존이다. 전자는 “반도체 뉴스 다이제스트인데 애플이 비전프로 후속작을 발표했다”가 섞여 들어오는 것. 후자는 제목이 아직 “AI 뉴스 다이제스트”라고 남아있거나 카테고리 필터에 “LLM”, “Robotics”가 튀어나오는 것이다.
그래서 평가 루브릭을 6개 → 7개로 늘리고, 주제 정합성(Topic Relevance)을 1번 축으로, 가중치 2배로 박았다. 원문 논문의 경고 — “Claude는 기본적으로 관대한 QA 에이전트다. 스스로 발견한 문제를 ‘별것 아니다’라고 합리화하며 통과시킨다” — 를 구조로 봉쇄하기 위해 Instant-FAIL 조건도 추가했다.
가중치 2배 지점은 “모델이 이 영역에서는 혼자 놔두면 실패한다”는 가정을 인코딩한 것이다. 콘텐츠 완성도와 기술적 정확성은 Claude가 안정적으로 잘하는 영역이라 1배로 충분하다. 반면 한국어 요약의 자연스러움과 디자인이 주제 분위기에 맞는지는 Claude가 기본값으로는 처참하게 실패하는 지점이다. 그래서 압력을 더 건다.
컨텍스트 불안(Context Anxiety) — 원문 논문이 이름 붙여준 버그
Rajasekaran의 논문에서 가장 유용한 개념이 이것이다. 긴 세션에서 에이전트가 “이쯤 하면 됐지”라며 조급하게 마무리하는 현상. 원인은 컨텍스트 창이 차오르는 것에 대한 회피 반응이라고 본다. 압축(compaction)으로는 해결되지 않는다. 대화는 요약되어도 불안 자체는 요약된 요약 속에 남아있기 때문이다.
해법은 컨텍스트 리셋: 완전히 새 세션을 열고, 이전 세션이 남긴 handoff.md만 읽고 계속한다. 이 스킬에서는 Evaluator가 FAIL 판정을 내리면 Generator를 새 세션으로 디스패치한다. 기존 Generator의 대화 히스토리는 완전히 버리고, spec.md + critique.md만 건넨다.
실제 만드는 과정에서 겪은 것들
1. 단순 카피는 안 된다 — 공명 지점을 찾아야 한다
처음에는 ai-news-digest-harness를 복사하고 “AI”를 “{topic}”으로 바꾸면 끝일 줄 알았다. 실패. Generator가 spec.md를 무시하고 이전 AI 템플릿의 카테고리 구조(LLM, Robotics…)를 그대로 써버리는 경우가 나왔다. 모델이 “비슷한 모양”을 기억하는 스타일 자석(style magnet) 현상이다.
해결: Generator 프롬프트에 “AI-news 템플릿을 복붙하지 말 것”을 anti-pattern으로 명시하고, Evaluator의 adversarial probe에 “HTML에서 AI, LLM, Robotics 문자열을 검색해 spec.md의 정당한 뉴스가 아니면 즉시 FAIL”을 추가했다.
2. “디자인이 주제 분위기에 맞는가”를 평가 가능하게 만들기
가장 애매했던 부분이다. “암호화폐 뉴스는 테키하게, K-콘텐츠는 에디토리얼하게, 기후는 그라운디드하게 디자인해라” — 이걸 Evaluator가 어떻게 채점하지?
논문의 교훈을 차용했다: 참조어(magazine-like, Apple-style…)가 아니라 품질 기술어로 쓰라. 참조어는 스타일 자석을 만든다. 대신 “topic-appropriate palette”, “color fit-for-topic” 같은 품질 기준을 루브릭에 박고, 캘리브레이션 노트에 “기후 다이제스트가 뜨거운 빨강 팔레트면 3점 이하, K-POP 다이제스트가 무채색 회색이면 3점 이하” 같은 구체적 실패 예시를 수록했다.
3. 파일명에 주제 슬러그 박기
사소해 보이지만 중요하다. 파일명이 news-digest-{topic_slug}-{YYYYMMDD-HHmmss}.html이면, Evaluator가 slug 누락만 봐도 Generator가 주제를 얼마나 내재화했는지 알 수 있다. 첫 디버깅 신호다. news-digest-crypto-20260417-143025.html은 제대로, ai-news-digest-20260417-143025.html은 오염된 결과.
ai-news-digest-harness와 무엇이 다른가
| 항목 | ai-news-digest-harness | news-digest-harness (이 스킬) |
|---|---|---|
| 주제 | AI로 고정 | 사용자 입력 임의 주제 |
| 카테고리 | 고정 11개 (LLM, Robotics, …) | Planner가 주제별 4–8개 자동 도출 |
| 루브릭 기준 | 6개 | 7개 — 주제 정합성(2×) 추가 |
| Instant-FAIL | — | 5가지 조건 (OOS·AI 잔존·카테고리 잔존·누락·렌더 실패) |
| 디자인 무드 | 고정 | 주제 유도 (crypto→테키, K-content→에디토리얼, …) |
| 파일명 | ai-news-digest-{datetime}.html |
news-digest-{topic_slug}-{datetime}.html |
| 적대적 탐지 | — | AI 템플릿 잔존 문자열 스캔 |
사용법 (설치 → 트리거 → 결과)
# 설치
git clone https://github.com/greeun/news-digest-harness.git \
~/.claude/skills/news-digest-harness
# Claude Code에서 트리거
"암호화폐 뉴스 정리해줘"
"반도체 뉴스 페이지 만들어줘"
"K-콘텐츠 뉴스 다이제스트"
"테슬라 최근 소식 모아줘"
"기후변화 뉴스 요약 페이지"
# 결과물
./news-digest-output/{topic_slug}/
└── news-digest-{topic_slug}-20260417-143025.html
# 브라우저에서 직접 열기 가능 (file:// 프로토콜)
옵션:
- 지역 범위 — global / korea / both (기본: both, 해외 60–70% + 국내 30–40%)
- 수량 — 기본 15–25개 (조정 가능)
- 기간 — 기본 최근 7일
- 추가 카테고리 — “헬스케어 AI도 넣어줘” 같은 런타임 지시 반영
정리 — 왜 이 구조가 앞으로 중요한가
단일 LLM 세션에 복잡한 일을 맡기면 자기평가 편향, 컨텍스트 불안, 스타일 자석 같은 구조적 버그가 반드시 발생한다. 프롬프트 엔지니어링으로 땜질할 수 있는 지점을 이미 지났다. 역할을 물리적으로 분리하고, 파일로만 소통하고, 평가를 적대적으로 만드는 것 — Anthropic의 논문은 이게 장시간 자율 에이전트의 기본 설계라고 주장했고, 이 스킬은 그 주장을 뉴스 다이제스트라는 작은 도메인에서 검증한 사례다.
같은 패턴을 블로그 포스트, 비즈니스 플랜, 마케팅 전략, 리서치 리포트에 이식하는 자매 스킬들이 이미 존재한다 (blog-post-harness, business-plan-harness, linkedin-post-harness). 하네스 패턴은 단일 도메인 트릭이 아니라, “LLM에게 길고 품질이 중요한 일을 시키는 법”의 표준 설계가 되어가고 있다.
전체 소스와 문서는 github.com/greeun/news-digest-harness (MIT 라이선스). 이슈/PR 환영.
참고 자료
- Prithvi Rajasekaran, Harness Design for Long-Running Application Development, Anthropic Engineering, 2026년 3월
- 자매 스킬: ai-news-digest-harness