PART 5 · Harness와 자기 개선

Harness의 세 가지 설계 패턴

잘 설계된 Harness는 명확한 패턴 언어를 갖습니다 — 스크립트를 무작위로 이어 붙인 것이 아닙니다. 세 가지 핵심 패턴이 현재 가장 강력한 Agent 시스템의 아키텍처 결정 90%를 커버합니다.

Design Patterns for Harness Engineering

루프에서 메모리로, 단일체에서 다중 Agent로: Harness의 세 가지 핵심 인프라 패턴

Lilian Weng(2026.07)의 "Harness Engineering for Self-Improvement"는 성공적인 Agent 시스템에서 반복적으로 등장하는 세 가지 설계 패턴을 정리했습니다: 워크플로 자동화, 파일 시스템 영구 메모리, 서브 Agent 및 백그라운드 작업. 이것들은 선택적 최적화가 아닙니다. 모든 프로덕션급 Agent의 구조적 요구 사항입니다.
Pattern 1
1
Workflow Automation
워크플로 자동화
핵심 아이디어: Agent는 목표 지향적 루프이며, 한 번 실행하고 종료되는 스크립트로 취급해선 안 됩니다.
  • Plan → Execute → Observe/Test → Improve → Execute again: 매 생성 라운드는 다음 라운드 최적화의 출발점입니다.
  • 자신의 실행 궤적 분석: 우수한 Agent는 이전 라운드에서 무엇을 했는지, 어디서 실패했는지, 왜 실패했는지를 되돌아보고 전략을 조정해 동일한 Prompt를 반복하지 않습니다.
  • 런타임 반복 강조: 개선은 Agent 실행 중에 일어나며, 사람이 미리 작성한 정적 템플릿에 의존하지 않습니다. Agent는 매 실행에서 학습하고 적응하고 최적화합니다.
  • 실패는 신호이지 종료가 아닙니다: 테스트 실패, 명령어 오류, 예상치 못한 출력 — 이 모든 것이 Agent 자기 수정의 트리거입니다.
Agent 자동화 루프
Agent 워크플로 루프: plan → execute → observe → improve → execute again (출처: OpenAI Codex Agent Loop)
설계 인사이트
Agent를 일회성 답변 머신으로 설계하지 마십시오. 스스로를 감사하는 능력을 부여하십시오: 테스트 실패 시 자동으로 원인을 분석하고, linter 오류 시 자동으로 수정하고, 사용자 피드백에 따라 전략을 조정합니다. 이것이 워크플로 자동화의 핵심입니다: 피드백 루프를 시스템 안에 내재화하는 것입니다.
Pattern 2
2
File System as Persistent Memory
파일 시스템 영구 메모리
핵심 문제: 장기 실행 Agent에서 아티팩트는 컨텍스트 윈도우를 빠르게 초과합니다.
  • 다양한 아티팩트 유형: 실험 로그, 코드 diff, 논문 요약, 오류 추적 기록, 과거 전체 실행 궤적 — 모두 가치 있는 상태이지만 컨텍스트에 넣을 수 없습니다.
  • 올바른 Harness 접근법: 영구 상태를 파일 시스템에 저장하고 Agent가 필요에 따라 읽고 쓰도록 훈련합니다. 전체 작업 히스토리를 Prompt에 억지로 넣으려 하지 마십시오.
  • 파일 I/O는 LLM의 기본 스킬: 파일 시스템 읽기/쓰기에는 복잡한 외부 툴체인이 필요하지 않습니다 — 핵심 모델 능력 향상의 혜택을 받습니다. 더 스마트한 모델일수록 파일 관리가 더 효율적입니다.
  • 구조적 저장: 잘 설계된 Agent는 scratchpad, todo 목록, 실험 기록을 스스로 유지합니다 — 인간 프로그래머처럼 작업 공간을 관리합니다.
컨텍스트 vs 파일 시스템: 무엇을 어디에?
컨텍스트에 넣을 것: 현재 처리 중인 작업 지시, 즉각적인 도구 호출 결과, 최근 2~3라운드 대화 — 즉시 참조가 필요한 정보입니다.

파일 시스템에 넣을 것: 과거 실험 결과, 누적된 오류 로그, 완료된 서브태스크 요약, 장기 전략 및 규칙 — 영구 보존이 필요하지만 항상 시야에 있을 필요는 없는 정보입니다.

핵심 원칙: 컨텍스트는 작업 기억(working memory)이고, 파일 시스템은 장기 기억입니다. 좋은 Harness는 인간의 두뇌처럼 두 곳 사이에서 지능적으로 정보를 이동시킵니다.
Pattern 3
3
Sub-agent and Backend Jobs
서브 Agent 및 백그라운드 작업
핵심 아이디어: Agent 하나로 부족할 때 여러 서브 Agent를 생성해 병렬로 실행하고 장기 백그라운드 작업을 모니터링합니다.
  • 부모 Agent가 프로세스 관리자 역할: 서브태스크를 시작하고, 로그와 진행 상황을 확인하고, 실패한 브랜치를 취소하고, 성공한 결과를 병합합니다. 운영 체제 수준의 사고방식입니다.
  • 병렬성은 명시적이고 검사 가능해야 합니다: "발사 후 방치"는 안 됩니다. 부모 Agent는 각 서브 Agent의 상태, 출력, 오류를 확인할 수 있어야 합니다.
  • 서브 Agent 출력 영속화: 각 서브 Agent의 결과는 파일, 로그 또는 상태 기록으로 저장됩니다(단순히 부모 컨텍스트에 반환되는 것이 아니라), 그래서 중단 후에도 재개할 수 있습니다.
  • 내결함성과 복구: 백그라운드 작업은 타임아웃, 충돌 또는 낮은 품질의 결과가 나올 수 있습니다. Harness는 재시도 전략과 우아한 저하(graceful degradation) 메커니즘이 필요합니다.
핵심 설계 트레이드오프
서브 Agent 패턴의 핵심 트레이드오프: 병렬성은 속도를 가져오지만 복잡성도 함께 옵니다. 성공적인 구현(예: Cursor의 Task 시스템, Claude Code의 서브프로세스 모델)은 모두 같은 원칙을 따릅니다: 각 서브 Agent가 격리된 샌드박스에서 작업하고, 명확한 파일 경로에 출력하며, 부모 Agent가 파일 상태 폴링으로 조율합니다 — 메모리 공유 없이. 이는 동시성 제어를 크게 단순화합니다.
Case Study · 코딩 Agent Harness
주요 코딩 Agent의 핵심 도구 인터페이스
Claude Code, Codex, OpenCode, Cursor — 현재 가장 강력한 코딩 Agent들은 모두 유사한 도구 세트를 중심으로 Harness를 구축합니다. 아래 표는 기능별로 핵심 인터페이스를 비교합니다:
도구 그룹 핵심 기능 대표 도구
File System 파일 읽기·쓰기·검색·편집, 작업 공간 상태 관리 Read, Write, Edit, Glob, Grep, StrReplace
Shell Execution 터미널 명령 실행, 테스트 실행, 의존성 설치 Shell, BashExec, RunCommand
I/O 사용자 상호작용, 작업 확인, 결과 표시 Ask, UserConfirm, ShowResult
External Context 외부 정보, 문서, API 응답 가져오기 WebFetch, ReadURL, DocSearch
Web Search 최신 정보를 인터넷에서 검색 WebSearch, BingSearch
Artifacts 아티팩트 생성·관리·버전 관리 CreateFile, SaveArtifact, VersionControl
Backend Processes 장기 작업 백그라운드 실행, 프로세스 상태 모니터링 BackgroundShell, AwaitProcess, Monitor
Agent Delegation 서브 Agent 생성, 병렬 작업 할당, 결과 병합 Task, Subagent, Fork, ParallelRun
코딩 Agent Harness 루프
코딩 Agent의 Harness 루프: 사용자 의도에서 코드 전달까지, 도구 인터페이스 전체 오케스트레이션 (출처: Lilian Weng, 2026)
인터랙티브: 세 가지 아키텍처 동작 방식
준비됨
Plan
Execute
Observe
Improve
↩ 루프
컨텍스트 윈도우
92% 오버플로 위험
4라운드부터 정보 손실 시작
모든 도구 반환값과 히스토리가 컨텍스트에 쌓여 윈도우가 빠르게 가득 찹니다. Agent가 초기 정보를 잊기 시작하고 출력 품질이 급락합니다.
세 가지 패턴의 상호 작용
세 패턴은 세 레이어로 쌓이는 것 — 하나만 고를 필요 없습니다
워크플로 자동화는 실행의 척추를 제공합니다: 루프 구조와 피드백 메커니즘.

파일 시스템 메모리는 루프에 하드 드라이브를 제공합니다: 컨텍스트가 비워지더라도 각 반복 결과가 손실되지 않습니다.

서브 Agent 병렬 처리는 루프에 멀티코어를 제공합니다: 작업을 분해할 수 있을 때 병렬 가속으로 직렬 대기를 대체합니다.

세 가지를 결합하면 Agent는 반복 최적화 × 장기 기억 × 병렬 확장 능력을 갖추게 됩니다. 이것이 현재 가장 강력한 코딩 Agent들의 공통 아키텍처입니다.
핵심 인사이트: Harness 설계는 도구를 무작위로 조합하는 것이 아닙니다. 세 가지 구조적 패턴을 따릅니다: 목표 지향적 자동화 루프(Agent가 자기 수정 가능), 장기 메모리로서의 파일 시스템(컨텍스트 윈도우 한계 돌파), 병렬 확장을 위한 서브 Agent(직렬 병목을 멀티스레드로 전환). 이 세 가지 패턴을 이해하면 프로덕션급 Agent 시스템 구축의 아키텍처 언어를 마스터한 것입니다.