Blog
GitHub - IsuruMaduranga/harness-engineering-101: Harness Engineering 101 — building AI agents from first principles. The LLM is the brain; the harness is the body.
IsuruMaduranga
2026.10.20
·GitHub·by Homin.Lee#AI Agents#Harness Engineering#LLM#Python#RAG
핵심 포인트
- 1이 문서는 LLM을 단순한 통계적 언어 모델이 아닌, 상태가 없는 API와 이를 구동하는 프로그램(Harness)의 결합체로 정의하며 에이전트 구축의 첫 원칙을 다룹니다.
- 2책은 총 16개의 장을 통해 LLM API 통신부터 컨텍스트 관리, 도구 호출, 가드레일 등 에이전트 개발 과정에서 발생하는 구체적인 문제들을 최소한의 코드 패치 방식으로 해결하는 방법을 설명합니다.
- 3본 프로젝트는 단순한 코드 예제와 개념적 프레임워크를 넘어, 실제 프로덕션 환경인 One Code 개발 경험을 바탕으로 실무적인 AI 에이전트 시스템 설계 지침을 제공합니다.
이 문서는 "Harness Engineering 101"이라는 제목의 기술 서적으로, AI 에이전트를 근본적인 원리(First Principles)에서부터 구축하는 과정을 다룹니다. 저자 Isuru Wijesiri는 LLM API가 상태가 없는(stateless) 단순한 JSON 배열 입출력 시스템임을 강조하며, 에이전트란 결국 이 배열을 관리, 유지, 보호하기 위한 코드의 집합(harness)임을 정의합니다.
핵심 개념 및 방법론
이 책의 핵심 방법론은 "모든 에이전트 프레임워크는 Chapter 1(JSON 배열 기반 통신)을 감싸는 래퍼(Wrapper)에 불과하다"는 관점입니다. 저자는 에이전트의 복잡성을 해결하기 위해 문제 상황을 식별하고 이를 최소한의 패치(patch)로 해결하는 과정을 16개의 챕터로 구성했습니다.1. 기술적 구조 (The Harness)
- stateless loop: LLM은 매 턴마다 전체 대화 기록을 JSON 배열 형태로 전송받습니다. 하네스(Harness)는 이 배열의 생성, 관리, 도구(Tools) 호출 매핑을 담당하는 제어 구조입니다.
- Agentic Patching: 에이전트 개발에서 발생하는 문제들(예: 컨텍스트 제한, 제어 이탈, 비동기 작업 등)을 독립적인 패치 단위로 해결합니다.
- Context Window Management: (여기서 는 대화, 는 시스템 프롬프트/도구 정의)와 같이 컨텍스트 예산을 효율적으로 관리합니다.
- Subagents: 단일 배열이 모든 작업을 수행할 수 없을 때, 컨텍스트를 분기(Fork)하여 병렬적인 하위 에이전트 구조를 형성합니다.
- RAG as a Harness Pattern: RAG(Retrieval-Augmented Generation)를 별도의 기술이 아닌, 대규모 컨텍스트를 하네스가 관리하는 하나의 패턴으로 통합하여 이해합니다.
2. 주요 섹션별 체계
- Part I (The Wire): LLM 통신의 기초와 도구 호출(Tool Calling), 캐싱의 중요성을 다룹니다.
- Part II (Running Long): 컨텍스트 예산 최적화, 서브 에이전트(Subagents) 설계, 루프 제어 및 비동기 환경 처리를 다룹니다.
- Part III (The Ecosystem): 기존 프레임워크들의 추상화 계층을 파헤치고, MCP(Model Context Protocol)와 같은 외부 확장 기능을 다룹니다.
- Part IV (Trust & Data): 가드레일(Guardrails), 코딩 에이전트의 도메인 특화 구조, 그리고 RAG를 하네스 관점에서 재해석합니다.