Claude Code로 구현하는 자율 에이전트 하네스(Harness): 자기비평과 지식 진화의 루프

[인공지능 / AI 에이전트]

Claude Code로 구현하는 자율 에이전트 하네스(Harness): 자기비평과 지식 진화의 루프

최근 AI 에이전트 분야의 화두는 단연 '자율성(Autonomy)''자가 수정(Self-Correction)'입니다. 단순히 사용자의 명령을 받아 일회성 코드를 짜거나 글을 쓰는 단계를 넘어, AI가 스스로 목표를 세우고 결과물을 검증하며 오류를 고쳐나가는 '루프(Loop)' 구조로 진화하고 있습니다.

오늘은 Anthropic의 터미널 기반 개발 도구인 Claude Code를 활용하여, 스스로 비평하고 수정하며 심지어 세션을 거듭할수록 '기술을 축적·진화'시키는 자율 에이전트 하네스(Harness)의 설계 원칙과 구현 메커니즘을 공유하고자 합니다.

1. 단일 모델의 한계와 Maker-Checker 분리 원칙

자율 에이전트를 설계할 때 가장 먼저 마주하는 벽은 AI의 확증 편향(Confirmation Bias)환각(Hallucination)입니다. 하나의 AI 인스턴스에게 "초안을 쓰고 스스로 검토해봐"라고 요청하면, 자기가 쓴 숙제에 스스로 후한 점수를 주며 버그나 논리적 오류를 그냥 지나치기 일쑤입니다.

이를 해결하기 위해 하네스 아키텍처는 "만드는 에이전트(Maker)""검증하는 에이전트(Checker)"를 철저히 분리합니다.

[ Orchestrator (Claude Code 메인 에이전트) ]
┌───────────────┴───────────────┐
▼                               ▼
[ Maker 서브에이전트 ]
──(결과물)──>
[ Checker 서브에이전트 ]
▲                               │
└──────────(피드백 Loop)────────┘
  • Orchestrator (메인 Claude Code): 전체 루프의 진행 상황을 관리하고, 중단 조건을 체크하며 전체 분기를 결정합니다.
  • Maker 서브에이전트: 문헌 검색, 데이터 분석 코드 작성, 그림/표 생성, 원고 집필 등 '생산'에 집중합니다.
  • Checker 서브에이전트 (독립 인스턴스): 저널 심사위원(Reviewer)의 관점에서 코드가 실제로 구동되는지, 통계나 유효숫자에 오류는 없는지, 인용 무결성이 깨지지 않았는지를 혹독하게 검증합니다.

2. 결정론적 게이트: Hooks(훅)의 활용

아무리 Checker 에이전트가 검증을 잘하더라도, AI의 판단에만 의존하면 한계가 있습니다. 이때 Claude Code의 Hooks(훅) 메커니즘을 활용해 결정론적 게이트(Deterministic Gate)를 설치해야 합니다.

💡 핵심 포인트

프롬프트와 달리, 훅(Hooks)은 모델의 해석에 의존하지 않고 100% 명확한 시스템 코드를 실행하므로 환각(Hallucination)을 일으키지 않습니다.

  • "분석 코드가 에러 없이 실제로 런타임에서 돌아가는가?"
  • "시각화된 데이터 그림(그래프)이 파일로 정상 렌더링되었는가?"
  • "인용된 참고문헌의 DOI나 링크가 실제로 존재하는가?"

이처럼 모델의 주관적 판단이 아닌 실제 시스템 스크립트 실행 결과로 루프의 통과 여부를 강제함으로써 안정성을 확보합니다.

3. 에이전트가 '진화'한다는 것: 지식 축적 메커니즘

AI 모델 자체는 가중치(Weights)가 고정되어 있어 세션이 끝나면 기억을 잃습니다. 그렇다면 어떻게 에이전트를 '실행할수록 똑똑해지게' 진화시킬 수 있을까요? 하네스 시스템은 명시적인 파일 시스템 지식 축적을 통해 이를 해결합니다.

.claude/agent-memory/를 통한 피드백 누적

Checker 에이전트에게 반복적으로 지적당한 실패 패턴이나 교정 사항은 메모리 디렉토리에 텍스트로 축적됩니다. 다음 세션이 시작될 때 오케스트레이터는 이 메모리를 가장 먼저 읽어 같은 실수를 반복하지 않습니다.

② 성장하는 스킬 라이브러리 (Dynamic Skill Library)

자율 루프를 거쳐 최종 검증을 통과한 고난도 작업(예: "기상 데이터 분석 및 저널 표준 포맷 시각화 파이프라인")은 독립적인 재사용 가능 스킬(Skill)로 승격되어 라이브러리에 등록됩니다. 다음 수행 시 에이전트는 바닥부터 코딩하는 대신 이 라이브러리를 직접 호출합니다.

③ 회고(Retrospective) 단계와 오답 노트

하나의 대형 프로젝트가 끝나면 에이전트는 스스로 회고 단계를 거쳐 /lessons 파일에 기록을 남깁니다. "이번에 자주 발생한 런타임 에러 라이브러리 버전 문제", "심사위원 거부 스타일" 등이 누적되어 시스템의 강력한 사전점검 체크리스트가 됩니다.

4. 실제 적용 시 주의해야 할 냉정한 현실 (Limitation)

이러한 하네스 시스템이 만능처럼 보이지만, 실제 고도의 전문 연구·개발 영역에 적용할 때는 몇 가지 한계를 명확히 인지해야 합니다.

  • 형식적 검증 ≠ 과학적 타당성: 이 시스템은 "코드가 잘 돌고, 문장이 매끄러우며, 형식이 일치한다"는 것을 보장할 뿐, 핵심 아이디어가 가진 과학적 신규성과 정당성까지 평가하진 못합니다. 최종 게이트키퍼는 항상 인간 전문가(Human-in-the-loop)여야 합니다.
  • 비용 및 과금 체계의 변화: 백그라운드 스크립트로 자동 구동하는 헤드리스(claude -p)나 Agent SDK 사용량은 월간 SDK 별도 크레딧에서 차감됩니다. 무한 루프 예방을 위해 연속 실패 한계(max_consecutive_failures) 같은 서킷 브레이커(Circuit Breaker) 장치가 필수적입니다.
  • 컨텍스트 윈도우의 한계: 방대한 소스코드, 문서, 참고문헌이 한 번에 들어가기 어렵습니다. 상태는 항상 파일 기반으로 쪼개어 관리하고, 서브에이전트별로 컨텍스트를 철저히 격리해야 병목이 생기지 않습니다.

결론: 지치지 않는 AI 연구 파트너를 만드는 과정

결국 자율 에이전트 하네스 설계는 인터랙티브 Claude Code 세션을 컨트롤 타워로 두고, Maker/Checker 서브에이전트로 자가수정 루프를 돌리며, 파일 기반 메모리로 진화시키는 구조적 예술입니다.

여기에 모바일 원격 제어(Remote Control) 환경까지 연동해 두면, 연구자는 퇴근길 지하철 안이나 카페에서도 AI가 스스로 수천 번 비평하고 수정한 연구 초안과 분석 결과를 스마트폰으로 감독하고 개입할 수 있게 됩니다. 단순한 자동화 툴을 넘어, 나와 함께 성장하는 '지치지 않는 연구 파트너'를 만드는 일. Claude Code와 자율 루프 아키텍처라면 지금 바로 시작할 수 있습니다.

#AI #ClaudeCode #AI에이전트 #자율에이전트 #소프트웨어공학

댓글