23. 에이전틱 AI — 행동하는 모델을 정렬하기

하네스: 같은 모델, 다른 점수

앞 절의 루프 그림에서 「에이전트」 상자에는 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로 세 가지 방식으로 풀게 했다.

같은 GPT-4 Turbo · SWE-bench Lite 300문제 한 번에 고치기 (파일을 찾아 붙여 줌) 2.67% 셸만 주고 여러 번 주고받기 11.00% 모델용 명령 (SWE-agent) 18.00% 해결률. 논문 표 1의 값을 다시 그림 (Yang et al., NeurIPS 2024)

모델의 파라미터는 하나도 바뀌지 않았는데 해결률이 일곱 배 가까이 벌어졌다. 이처럼 모델을 감싸고, 모델에게 무엇을 보여 주고 무엇을 하게 하며 무엇을 쌓아 두는지를 정하는 실행 틀을 하네스(모델을 감싼 실행 틀 / 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네요.
김민준 (자신만만)
김민준
(다)는 쉽죠. 조건을 같게 두면 돼요. 둘 다 맨손으로 보면 공정하잖아요.
선생님 (질문)
선생님
민준 학생, 그 시험으로 A가 낫다고 적었어요. 그런데 이 학생들이 나중에 일할 때는 계산기를 쓸 수 있다면, 그 판정은 무엇을 잰 거죠?
김민준 (난처함)
김민준
맨손일 때의 실력이요… 일할 때 실력은 B가 위인데요. 같게 두기만 하면 끝나는 게 아니네요. 어느 조건으로 같게 두느냐에 따라 순위가 뒤집혀요.
이서연 (평상)
이서연
도구가 보탠 몫이 학생마다 다르니까 그런 거야. 모두에게 똑같이 +2를 줬다면 어느 조건에서 재도 순위가 같았을 거고.
선생님 (평상)
선생님
그래요. 공정하려면 조건을 같게 두고, 그 조건이 무엇이었는지까지 점수와 함께 적어야 해요.
김민준 (평상)
김민준
조교님이 과제 공지마다 「계산기 사용 가능」 「코드 실행 불가」를 꼭 적어 두시는 게 그래서였네요. 같은 점수라도 조건이 다르면 다른 점수니까요.

정리 (가) 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, Claude 3.7이 +40.5요.
이서연 (평상)
이서연
처음 하네스에서는 o3-mini가 23.0 대 19.0으로 4점 앞서고, 찾아낸 하네스에서는 Claude 3.7이 59.5 대 33.0으로 26.5점 앞서.
김민준 (자신만만)
김민준
그럼 Claude 3.7이 원래 더 좋은 모델이었는데 처음 하네스가 실력을 가리고 있었던 거네요.
선생님 (질문)
선생님
민준 학생, 그 「원래」라는 말이 가리키는 점수는 어느 하네스에서 잰 거죠? 하네스 없이 잰 SWE-bench 점수가 있나요?
김민준 (난처함)
김민준
하네스 없이는 저장소를 열 수도 없으니… 그런 점수는 없네요. 「원래 실력」은 어느 하네스에서 재느냐를 빼고는 말할 수 없는 거였어요.
이서연 (깨달음)
이서연
아까 계산기 시험이랑 같은 모양이야. 하네스가 보태는 몫이 모델마다 달라서, 어느 하네스로 같게 두느냐에 따라 순위가 뒤집혀.
선생님 (평상)
선생님
그래요. 그래서 (다)의 문장에는 하네스가 빠져 있어요. 에이전트의 점수는 모델 하나의 점수가 아니라 모델과 하네스 짝의 점수예요.
이서연 (평상)
이서연
함수 f(x, y)에서 y를 정하지 않고 「f(x)의 값」을 묻는 거랑 같네요. y를 하나 고정하면 값은 나오지만, 그 값은 y를 고른 결과이기도 하고요.

정리 (가) 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). (다) 어느 하네스에서 쟀는지가 빠졌다. 하네스가 보태는 몫이 모델마다 다르므로, 에이전트의 점수는 모델과 하네스 짝의 점수다.