하네스: 같은 모델, 다른 점수
앞 절의 루프 그림에서 「에이전트」 상자에는 LLM 하나만 그려져 있었다. 그런데 같은 모델을 쓰는 코딩 도우미들이 일을 해내는 정도가 서로 다르다. 그 차이는 상자 안 어디에서 나올까? 모델이 같다면, 모델이 무엇을 보고 무엇을 할 수 있는지를 정하는 쪽이 다른 것이다.
역사: 생각과 행동을 번갈아 쓰게 한 틀
언어모델이 루프 안으로 들어온 대표적인 계기는 2022년 10월 프린스턴과 구글의 야오(Shunyu Yao)와 동료들이 낸 ReAct다. 그때까지 언어모델의 추론(답 전에 생각을 적는 것)과 행동 계획은 따로 연구됐다. 생각만 적는 모델은 위키백과를 찾아볼 수 없어 사실을 지어냈고, 행동만 하는 모델은 지금까지 본 것을 정리하지 못해 엉뚱한 행동을 되풀이했다. ReAct는 모델의 파라미터를 건드리지 않았다. 모델에게 「생각」과 「행동」을 번갈아 쓰게 하고, 행동으로는 위키백과에 search[개체](첫 다섯 문장 받기), lookup[문자열](그 문자열이 든 다음 문장 받기), finish[답] 세 가지만 허락했다. 예시 한두 개를 보여 주는 것만으로 집안일 게임 환경(ALFWorld)과 쇼핑 사이트 흉내(WebShop)에서 모방 학습·강화학습으로 훈련한 방법보다 성공률이 각각 34%p, 10%p 높았다. 바뀐 것은 모델이 아니라, 모델에게 무엇을 쓰게 하고 무엇을 할 수 있게 하는 틀이었다.
같은 GPT-4 Turbo, 세 가지 점수
2024년 프린스턴의 양(John Yang)과 히메네스(Carlos Jimenez)와 동료들은 이 틀의 차이를 숫자로 쟀다. 실제 오픈소스 저장소의 이슈를 고치게 하는 벤치마크 SWE-bench에서 300문제를 뽑은 SWE-bench Lite를, 같은 GPT-4 Turbo로 세 가지 방식으로 풀게 했다.
- 한 번에 고치기: 이슈 글로 관련 파일을 찾아 붙여 주고, 모델이 고친 내용을 한 번에 써 낸다. 2.67%.
- 셸만 주기: 리눅스 셸을 열어 주고 여러 번 주고받게 한다. 11.00%.
- 모델용으로 만든 명령(SWE-agent): 파일을 100줄씩 보여 주는 창, 검색 결과를 요약해 주는 검색 명령, 고친 뒤 문법 검사를 돌려 틀리면 되돌리는 편집 명령. 18.00%.
모델의 파라미터는 하나도 바뀌지 않았는데 해결률이 일곱 배 가까이 벌어졌다. 이처럼 모델을 감싸고, 모델에게 무엇을 보여 주고 무엇을 하게 하며 무엇을 쌓아 두는지를 정하는 실행 틀을 하네스(모델을 감싼 실행 틀 / harness)라 부른다. 말에 씌우는 마구(馬具)를 뜻하는 영어 낱말에서 왔다. 같은 말이라도 마구에 따라 끌 수 있는 수레가 달라진다.
2026년 2월 LangChain 팀은 같은 일을 최신 모델로 되풀이했다. GPT-5.2-Codex를 고정해 두고 지시문, 도구, 중간 점검만 바꿨다. 끝내기 전에 과제 조건대로 확인했는지 점검시키고, 시작할 때 폴더 구조와 쓸 수 있는 도구를 알려 주고, 같은 파일을 여러 번 고치며 맴돌면 접근을 바꾸라고 일러 주는 식이었다. 터미널 작업 벤치마크 Terminal Bench 2.0에서 52.8%가 66.5%가 되었다.
하네스를 이루는 것
앞 절 루프 그림의 「에이전트」 상자를 연 모습. 모델은 하네스가 고른 관찰만 보고, 하네스가 허락한 도구로만 행동한다. 환경과 직접 주고받는 것은 하네스다.
하네스의 부품 가운데 세 가지를 보자. 셋 다 같은 모델을 두고 부품 하나만 바꿔 잰 결과가 있다.
자기 경험의 스킬화 — 해 보고 통과한 방법을 다시 쓸 수 있는 꼴로 저장해 두고, 비슷한 일에서 꺼내 쓴다. 마인크래프트 에이전트 Voyager(2023, GPT-4)는 검증을 통과한 행동 프로그램만 「스킬 라이브러리」에 쌓았다. 라이브러리를 뺀 같은 에이전트는 다이아몬드 도구를 세 번 모두 만들지 못했고, 라이브러리가 있으면 세 번 중 한 번 만들었다. 이 라이브러리를 다른 에이전트(AutoGPT)에 옮겨 주자 그 에이전트도 처음 보는 과제(나침반 만들기 등)를 풀기 시작했다.
도구 호출 — 모델이 어떤 행동을 어떤 꼴로 할 수 있는지, 행동의 결과를 어떤 꼴로 돌려받는지를 정한다. SWE-agent에서 문법 검사가 붙은 편집 명령을 빼고 셸 명령으로만 고치게 하자 18.0%가 10.3%로 떨어졌다. 파일을 한 번에 100줄 대신 전부 보여 주면 12.7%였다.
도구 선택의 분기. 도구가 생기면 행동 공간에 "어떤 도구를 부를 것인가"가 들어간다. 초반의 잘못된 도구 선택 하나가 이후 모든 스텝을 무효로 만들 수 있고, 탐색 공간이 조합적으로 커진다. 토큰 확률을 조금씩 조정하는 것과는 결이 다른 문제다. 하네스가 어떤 도구를 어떤 이름과 설명으로 내놓느냐가 이 갈림길의 모양을 정한다.
기억 — 쌓인 관찰 가운데 무엇을 다음 입력에 남길지 정한다. 같은 SWE-agent에서 지난 관찰을 모두 들고 가면 15.0%, 최근 다섯 개만 남기고 앞의 것은 한 줄로 줄이면 18.0%였다. 더 많이 기억시킨다고 나아지지 않았다.
문제 2 — 계산기를 허용한 시험
두 학생 A, B가 같은 수학 시험 20문제를 두 번 푼다. 맨손으로 풀었을 때 A는 12문제, B는 10문제를 맞혔다. 계산기와 공식표를 허용하자 A는 14문제, B는 18문제를 맞혔다. (가) 계산기와 공식표가 각 학생에게 보탠 문제 수를 구하시오. (나) 「누가 수학을 더 잘하나」를 맨손 시험으로만 판정한 사람과 도구 허용 시험으로만 판정한 사람은 각각 누구를 고르는가? (다) 두 학생을 공정하게 견주려면 무엇을 같게 두어야 하며, 그것만으로 충분한가?







정리 (가) A +2, B +8. (나) 맨손으로만 보면 A, 도구 허용으로만 보면 B. (다) 조건(도구)을 같게 두어야 하지만, 도구가 보태는 몫이 사람마다 다르면 어느 조건으로 같게 두느냐에 따라 순위가 뒤집힌다. 점수와 함께 조건을 적는다.
문제 3 — 하네스가 바꾼 모델 순위
DGM(Darwin Gödel Machine, 2025)은 Claude 3.5 Sonnet을 고정해 두고 코딩 에이전트의 하네스 코드를 스스로 고쳐 나가게 한 시스템이다. 처음 하네스와 DGM이 찾아낸 하네스에 다른 모델 둘을 끼워 SWE-bench Verified 200문제를 풀렸다. o3-mini는 23.0% → 33.0%, Claude 3.7 Sonnet은 19.0% → 59.5%였다. (가) 모델마다 하네스를 바꿔서 오른 점수는 몇 %p인가? (나) 처음 하네스로만 두 모델을 비교한 사람과 찾아낸 하네스로만 비교한 사람은 각각 어느 모델이 낫다고 보고하는가? (다) 「모델 X의 SWE-bench 점수는 몇 점」이라는 문장에는 무엇이 빠져 있는가?








정리 (가) o3-mini +10.0%p, Claude 3.7 Sonnet +40.5%p. (나) 처음 하네스로는 o3-mini(23.0 > 19.0), 찾아낸 하네스로는 Claude 3.7 Sonnet(59.5 > 33.0). (다) 어느 하네스에서 쟀는지가 빠졌다. 하네스가 보태는 몫이 모델마다 다르므로, 에이전트의 점수는 모델과 하네스 짝의 점수다.