같은 LLM을 써도 결과가 천차만별인 이유는 모델이 아니라 하네스(harness) — 모델을 둘러싼 루프, 도구, 메모리, 컨텍스트 설계 — 때문이다. 이 글은 프롬프트 엔지니어링(무엇을 말하나) → 컨텍스트 엔지니어링(무엇을 보여주나) → 하네스 엔지니어링(어떤 환경에서 실행하나) 3계층을 구분하고, 각 레이어에서 무엇을 설계해야 좋은 에이전트를 만드는지 체계적으로 다룬다.
핵심 포인트- Agent = Model + Harness. 하네스는 루프 구조, 도구 목록, 실패 복구, 컨텍스트 관리, 세션 간 인수인계 전체를 포함한다.
- Chroma 2025 실험(18개 모델): 입력 길이 증가 시 성능 저하, 무관한 항목 1개만 포함돼도 성능이 유의미하게 하락하고 4개 포함 시 급격히 저하.
- AGENTS.md(또는 CLAUDE.md) + 린터/pre-commit 훅 조합으로 에이전트 실수가 자동 차단되고 에러 메시지로 자기 수정 루프가 형성된다.
- 자기 검증(self-validation)은 실패한다 — 같은 컨텍스트 맹점, 동일 편향, 자기 보호 경향. 별도 세션의 LLM-as-judge + 결정론적 체크를 조합해야 한다.
- Anthropic 엔지니어링 팀 발견 Context Anxiety: 컨텍스트 창이 가득 차면 모델이 미완성 작업도 서둘러 마무리한다.
상세 정리- 3계층 구분: 프롬프트 엔지니어링(짧은 작업에는 충분, 다단계에는 부족) → 컨텍스트 엔지니어링(무엇을 보여줄지) → 하네스 엔지니어링(실행 환경 전체).
- Chroma 2025 실험: 18개 모델 기준, 입력 길이 증가 시 단조 성능 저하, 무관한 항목 1개 포함 시 유의미한 하락, 4개 포함 시 급격한 저하 확인.
- AGENTS.md 구성 원칙: 역할, 빌드/테스트 명령, 코드 스타일, 안티패턴 목록 포함. Mitchell Hashimoto(HashiCorp 공동창업자) 원칙 — 짧게 시작해 실수할 때마다 한 줄 추가.
- 자동화 검증 4종: 린터, pre-commit 훅, 커스텀 검증 스크립트, 테스트 스위트. AGENTS.md + 자동화 = 차단 + 에러 메시지 → 자기 수정 루프.
- LangChain 2026년 2월 실험: 가장 흔한 실패 — 에이전트가 자기 출력을 평가하고 괜찮다고 판단해 멈추는 것.
- 자기 검증 3가지 실패 원인: 같은 컨텍스트의 맹점 지속, 동일 편향 유지, 자기 출력 정당화 경향.
- Single Loop: 같은 모델·세션에서 reviewer 시스템 프롬프트로 전환 — 컨텍스트 공유로 인해 제한적.
- Double Loop(LLM-as-judge): 생성과 리뷰를 완전 별도 세션으로 분리, 출력+스펙만 전달. 다른 모델 사용 시 편향 공유 감소.
- Automated Loop: 생성→리뷰→분기→수정/재생성을 LangGraph, CI 파이프라인, eval 하네스로 자동화. 결정론적 체크 먼저 통과해야 다음 단계 진행.
- Context Anxiety: Anthropic 엔지니어링 팀 발견, 창 한계 접근 시 미완성 작업도 서둘러 마무리하는 모델 행동.
- 컨텍스트 관리 4기법: Compaction(요약 후 새 컨텍스트 시작), Sub-agents(무거운 작업 위임, 결과만 수신), Progress File(외부 파일에 진행 상태 기록), 세션 종료 시 지시 파일 업데이트.
- 실천 5단계: 짧은 AGENTS.md → 검증 외부화 → 컨텍스트 관리 → 측정 지표 정의(완료율/단계수/토큰/지연/자기수정률) → 반복.
왜 읽나AI 에이전트 결과 품질이 들쑥날쑥한 원인을 모델 탓으로 돌리지 않고 하네스 설계로 접근하고 싶은 엔지니어와 AI 시스템 개발자에게 체계적 프레임워크를 제공한다.