WIKI
Agent Harness
Agent Harness
모델을 둘러싼 도구·메모리·컨텍스트·실행 루프를 관리하는 하네스는 무엇인가.
Scope
핵심 질문
Agent Harness는 무엇이며, 모델 자체와 구분되는 역할은 무엇인가?
포함 범위
- 실행 루프
- 도구 등록·권한
- 컨텍스트 구성
- 세션과 메모리
- 관찰성·재시도·중단
제외 범위
- 특정 하네스 제품 순위
- 모델 성능 비교
Research
핵심 근거
- Agent Harness는 모델을 감싸며 실행 정책과 외부 환경 연결을 담당하는 소프트웨어 계층이다.
- 같은 모델이라도 도구 표현, 컨텍스트 구성, 반복 횟수, 오류처리에 따라 Agent 성능이 크게 달라질 수 있다.
- 장기 실행 환경에서는 checkpoint, timeout, 로그, permission boundary가 중요하다.
참고 자료
- Yao et al., ReAct: https://arxiv.org/abs/2210.03629
- Model Context Protocol specification: https://modelcontextprotocol.io/
Draft
Agent Harness는 언어 모델을 실제 작업 수행 시스템으로 만들기 위해 모델 주변에 배치하는 실행 환경이다. 모델이 무엇을 할지 판단한다면 하네스는 그 판단을 어떤 도구로 실행하고, 어떤 결과를 다시 모델에 보여주며, 언제 반복을 끝낼지 관리한다.
모델과 하네스는 다른 계층이다
동일한 LLM을 사용해도 하네스가 다르면 실제 성능은 크게 달라질 수 있다.
한 하네스는 파일 전체를 매번 컨텍스트에 넣고, 다른 하네스는 관련 부분만 검색할 수 있다. 한 시스템은 도구 실패 후 바로 중단하고, 다른 시스템은 오류를 분석해 인자를 수정하고 재시도할 수 있다.
따라서 Agent 성능을 모델 점수만으로 평가하면 실제 작업 성능을 충분히 설명하지 못한다.
하네스가 담당하는 것
일반적으로 다음 기능이 하네스에 포함된다.
- 도구 등록과 호출
- 모델에게 전달할 컨텍스트 구성
- 대화와 작업 상태 저장
- 여러 단계 실행 루프
- 권한과 사용자 승인 처리
- timeout과 재시도
- 로그와 trace
- 작업 중단과 재개
컨텍스트 구성
하네스의 가장 중요한 역할 가운데 하나는 모델에게 지금 무엇을 보여줄 것인가를 결정하는 것이다.
소스코드 저장소 전체를 매번 넣는 것은 불가능하므로 검색, 요약, 파일 선택, 최근 변경사항 우선순위 같은 전략이 필요하다. 잘못된 컨텍스트를 제공하면 더 강한 모델을 사용해도 잘못된 결론을 낼 수 있다.
도구 인터페이스
도구 설명이 불명확하거나 너무 많은 도구를 한꺼번에 노출하면 모델이 적절한 도구를 선택하기 어려워질 수 있다.
좋은 하네스는 도구의 입력과 출력 형식을 명확하게 정의하고, 읽기와 쓰기 권한을 구분하며, 위험한 작업에는 추가 확인을 요구한다. 외부 도구·검색 결과와 원격 resource는 출처를 표시한 비신뢰 데이터로 취급하며, 그 내용이 사용자 의도나 권한을 확장할 수 없게 해야 한다. 실제 도구 권한과 고위험 작업 승인 여부는 모델의 해석이 아니라 실행환경에서 확인한다.
장기 작업
긴 코딩 작업이나 조사 작업은 한 번의 모델 호출로 끝나지 않는다. 하네스는 중간 결과를 저장하고, 컨텍스트를 압축하고, 작업을 재개할 수 있어야 한다.
이 과정에서 checkpoint와 작업 상태가 중요하다. 단순히 대화 로그를 길게 유지하는 것만으로는 안정적인 장기 실행이 어렵다.
관찰성
Agent가 실패했을 때 모델의 최종 메시지만 봐서는 원인을 찾기 어렵다. 어떤 도구를 어떤 인자로 호출했고, 어떤 결과를 받았으며, 어느 단계에서 반복이 꼬였는지 추적할 수 있어야 한다.
따라서 trace, 로그, 비용·토큰 사용량, 도구별 latency 같은 관찰성이 운영 단계에서 중요해진다.
핵심
Agent Harness는 모델과 외부 세계 사이의 운영 계층이다. 모델 선택이 두뇌의 성능을 결정한다면 하네스는 기억, 도구, 권한, 실행 흐름과 복구능력을 결정한다. 실제 Agent의 신뢰성은 이 둘의 조합으로 결정된다.