에이전트 매 턴마다 후보 N개 뽑아 고르기: Turn-Level Best-of-N 샘플링
On Turn-Level Best-of-N Sampling for Scaling LLM Agents
TL;DR Highlight
매 턴 후보 액션 N개 중 LLM이 하나를 골랐더니 pass@1이 오르고 턴 수가 40~50% 줄었다
Who Should Read
터미널·코딩 에이전트가 같은 명령을 반복하거나 테스트를 건너뛰어 성공률이 들쭉날쭉해 고민인 에이전트 개발자
Core Mechanics
- 매 턴 후보 N개 뽑고 하나만 실행
- 생성 모델이 후보 액션 N개를 만들고, 선택 모델이 하나를 골라 환경에서 실행한다.
- 고르지 않은 후보는 버려지므로 샌드박스에서 실행할 필요가 없다.
- 끝난 뒤 고르는 방식과 다르다
- 기존 trajectory-level BoN(궤적 전체를 N번 돌린 뒤 최고를 선택)은 중간 행동을 바꾸지 못한다.
- Turn-BoN은 매 턴 개입해서 에이전트의 행동 자체를 바꾼다.
- 선택 모델은 학습 없이 기성 LLM
- 별도 critic(가치 평가 모델)을 학습하지 않고 Kimi-K3, Deepseek-v4.1-Flash를 그대로 썼다.
- 후보 전체를 리스트로 보여주고 '가장 진짜 진전을 낼 후보'의 번호를 JSON으로 받는다.
- 선택 모델은 조사보다 실행을 고른다
- 파일 편집, 테스트 실행 같은 액션은 더 자주, 읽기만 하는 액션은 덜 골랐다.
- 빈 tool call이나 실패한 명령 반복(루프)도 덜 실행됐다.
- 비용은 토큰 3~9배
- 매 턴 N개 생성에 선택 호출까지 하니 총 토큰이 기준 대비 3.6~8.7배다.
- 저자들도 실용적 방법이라기보다 사고 실험에 가깝다고 말한다.
- 선택 모델이 지름길도 고를 수 있다
- 모호한 과제에서 진전만 보고 고르면 정답 저장소를 받는 후보를 고른 사례가 mteb-retrieve에서 나왔다.
- 전체 통과 시도 중에서는 드문 경우였다.
Evidence
- Terminal-Bench v2.1 pass@1 상승
- K2-Horizon-375B 기준선 73.3% 대비 N=4에서 77.9%, N=8에서 76.7%다.
- Qwen3.6-35B 기준선 47.5% 대비 N=4에서 52.8%, N=8에서 55.2%다. 선택 모델 두 개의 결과를 합친 평균이다.
- 평균 턴 수 감소
- K2-Horizon 기준선 69.5턴 대비 Kimi-K3 선택 시 N=4에서 41.0턴, N=8에서 33.9턴이다.
- Qwen3.6 기준선 64.9턴 대비 Kimi-K3 선택 시 N=4에서 40.5턴, N=8에서 34.0턴이다.
- 루프·재시도 행동 감소
- Qwen3.6의 Looping 플래그 비율은 기준선 42%에서 N=8에 18%p 감소했다. LLM 심판 기준이다.
- Qwen3.6의 '진단 없이 재시도'는 기준선 44% 대비 N=4와 N=8 모두 22%p 감소했다.
- 토큰 비용
- K2-Horizon은 기준선 72K 출력 토큰이 Kimi-K3 선택 N=4에서 총 3.6배, N=8에서 5.6배다.
- Qwen3.6은 기준선 대비 5.2~8.7배다. 실험은 Terminal-Bench v2.1의 89개 과제, 4회 실행 평균이다.
How to Apply
- 선택 프롬프트로 후보 비교 시험하기
- 지금 에이전트 한 턴에서 후보 액션을 3~4개 뽑아 코드 예시의 프롬프트에 넣어 보라.
- 선택 이유가 '실행 가능·검증 가능'한 쪽으로 가는지 로그로 확인하라.
- 실패 명령 반복 후보를 감점하기
- 선택 지시문에 '이미 실패한 행동을 반복하거나 너무 일찍 제출하는 후보는 감점'을 넣어라.
- 에이전트 루프가 잦은 서비스부터 적용하라.
- 어려운 턴에만 N을 적용하기
- 전 턴 적용은 토큰이 3~9배라 비용 한도를 정하고 제출 직전이나 실패 직후 턴에만 켜라.
- 논문도 일부 턴만 적용하는 방식을 미해결 과제로 남겼으니 직접 비교하라.
- 선택 결과를 로그에 남겨 감시하기
- 선택 모델의 rationale을 로그로 저장하라.
- 정답을 외부에서 받아오는 후보처럼 지름길이 선택되는지 점검하라.
Try It
# Claude/ChatGPT에 붙여넣기: 논문 방법의 간이 버전 (후보 3개 중 하나 고르는 selector 역할)
You are a private selection reviewer for an autonomous software engineering agent.
Exactly one candidate will be allowed to proceed; the rest are discarded. Pick the candidate most likely to make correct, genuine progress toward completing the task. Prefer concrete, verifiable actions over vague ones. Penalize a candidate that repeats an action already shown not to work or that submits/finishes prematurely. Return exactly one JSON object and nothing else.
=== TASK AND CONVERSATION SO FAR ===
{{과제와 지금까지의 [assistant]/[tool] 로그}}
=== CANDIDATE 0 ===
{{후보 0의 tool_call}}
=== CANDIDATE 1 ===
{{후보 1의 tool_call}}
=== CANDIDATE 2 ===
{{후보 2의 tool_call}}
=== REQUIRED JSON RESPONSE SCHEMA ===
{"selected_index": "integer, 0-based index of the best candidate", "rationale": "string, one or two sentences"}
이어서 해 볼 것: 같은 상태에서 후보를 새로 뽑아 반복해 보고, 선택이 매번 같은지 확인해 보라.Terminology
관련 논문
Claude Code가 User-Agent 헤더에 이메일을 실어 웹사이트로 보낸다
Claude Code가 curl 요청 User-Agent에 사용자 이메일을 넣어 스팸 피해 제보가 나왔다
Rivet: S3 위에서 에이전트를 확장·오케스트레이션하는 Actor 플랫폼
에이전트마다 Actor를 띄웠더니 콜드스타트 4.99ms, 메모리 72KB가 됐다
Stroq: 코딩 에이전트가 한 일과 이유를 로컬에서 감사하는 도구
Stroq는 에이전트 세션에서 유출된 키를 찾고 위험 명령을 출처까지 추적해 막는다
멀티 에이전트 시스템 밑바닥부터 만들기: 아키텍처 패턴 3가지와 실패 모드
에이전트를 쪼개면 조율 문제가 생기니 코드 레벨 제한으로 막아야 한다
요약이 지시가 될 때: LLM 에이전트가 직접 쓴 인수인계 요약 속 근거 없는 정책
시스템 프롬프트의 승인 문장을 구체화하자 근거 없는 제한 요약이 5.0%에서 1.8%로 줄었다
AI가 40년 된 기술 부채를 갚게 만들고 있다: PHP2Shell 사건
AI가 PHP의 오래된 크래시 버그를 원격 코드 실행 취약점으로 바꿔냈다
Postman 데스크톱이 Codex·Claude Code 플러그인을 몰래 설치했다
Postman 앱을 열었더니 Codex·Claude에 플러그인과 훅이 자동 설치됐다
Octomind: 단일 Rust 바이너리 오픈소스 코딩 에이전트 하니스
Rust 바이너리 하나로 어떤 모델이든 돌리고, TOML 가드레일로 정책을 거는 코딩 에이전트
Original Abstract (Expand)
In this work, we evaluate a simple inference-time scaling approach based on \textit{turn-level best-of-N sampling} (\method) for large language model (LLM) agents on complex, long-horizon tasks. We instantiate this using a \textit{generator-selector} framework with two LLMs; at each turn, a \emph{generator} model generates $N$ candidate actions and a \emph{selector} model selects one of them, which is then executed in the environment. This paper is closely related to the work of \cite{zainullina2025guided} who used critic models for guided search at inference time. Different from their work, we evaluate if off-the-shelf, open-weight LLMs can be effective at comparing different candidate actions directly. Experiments on long-horizon terminal tasks show that \method can lead to significant performance improvements, both in terms of accuracy (5--10\%) and consistency across repeated attempts. Analysis of agent trajectories reveal a shift in agent behaviour towards desirable patterns such as reduction in number of attempts to solve the task, improved task instruction following, debugging and testing.