저희는 어떤 에이전트 하네스(agent harness)가 작은 로컬 모델에 가장 적합한지 테스트해 왔습니다. 그 결과: 단일 도구의 IPython 하네스가 Terminal-Bench Lite에서 훨씬 더 무거운 프로덕션 하네스와 대등하며, 소형 모델 에이전트의 '무작위성' 대부분은 모델 자체가 아니라 환경 노이즈에서 비롯된다는 것을 알게 되었습니다.
설정 모델: Qwen/Qwen3.5-9B
벤치마크: OpenThoughts TB-Lite. 빠르면서도 Terminal-Bench 2.0을 추적하지만 더 쉬워서 소형 모델에 적합합니다. 저희는 이 벤치마크를 여러 구성(주로 측정하고자 하는 바에 따라 다른 N 반복 또는 하위 집합)에서 실행했습니다.
하네스: QwenCode, OpenHands, opencode, Pi와 bare IPython 세션입니다.
발견 사항
보상 대 토큰 수 대 런타임 측면에서 명확한 승자는 없습니다. QwenCode는 거대한 시스템 프롬프트 때문에 트ิร์น당 훨씬 큰 프롬프트를 가집니다. IPython은 가장 작은 프롬프트로 시작하지만, 히스토리 압축이 없기 때문에 선형적으로 증가합니다. 도구 사용은 모델보다 시스템 프롬프트에 더 영향을 받습니다. 모든 하네스는 호출의 약 25~30%를 파일 읽기에 사용합니다. QwenCode는 그 읽기 작업을 전용 도구를 통해 라우팅하는데, 이는 프롬프트가 cat/grep/find 대신 read_file/grep_search/glob을 사용하도록 명시적으로 지시하기 때문입니다.
하네스들은 매우 확률적(stochastic)입니다. 20번의 시도 × 3가지 작업에서 동일한 작업 간에도 통과율이 크게 변동했습니다. OpenHands가 가장 일관성이 있었는데, 이는 기본 설정에 temperature=0.0을 하드코딩했기 때문입니다. 그럼에도 불구하고, 한 작업에서는 거의 완벽했지만 다른 작업에서는 20개 중 14개였습니다. 최소한의 하네스(IPython, Pi)가 가장 일관성이 떨어졌습니다.
IPython 하네스를 개선하기 (v0): IPython 커널이 작업 환경과 분리되어 있어 모델을 혼란스럽게 했습니다. v1: 이를 수정하고 빈 도구 결과를 처리했습니다. v2: 더 나은 시스템 프롬프트(%%writefile 사용, 완료 전에 검증)를 적용했습니다. 이는 성능과 시도당 비용에서 큰 이득을 가져왔지만, temperature 0에서도 실행이 여전히 비결정적(non-deterministic)이었습니다. 변동성을 해결한 방법은 놀라울 정도로 단순했습니다: 도구 출력을 정규화하는 것이었습니다. 예를 들어 10.8/10.8 MB 150.3 MB/s 대
129.3 MB/s의 pip 출력만으로도 9B 모델을 다른 경로로 유도하기에 충분합니다. 약 40줄 분량의 정규표현식(regex) 정규화기(gist)와 환경 소음 제거가 대부분 문제를 해결했습니다. 대형 모델들은 아마 이를 무시할 것이지만, 소형 모델들은 그렇지 않습니다. 로컬 에이전트 빌더들을 위한 시사점은 다음과 같습니다: 작은 모델들에게는 스캐폴딩(scaffolding)을 줄이는 것이 더 좋을 수 있고, 샘플링 매개변수(sampling parameters)를 제어하며, 도구 출력에서 비결정론적 노이즈(non-deterministic noise)를 제거해야 합니다. 이 하네스(harness)는 오픈 소스입니다: huggingface/ipython-harness 원래의 모든 플롯이 포함된 스레드는 여기 있습니다. 피드백 환영하며, 다른 소형 모델에서도 출력 정규화 효과를 본 사람이 있는지 특히 궁금합니다! submitted by /u/HauntingMoment [link] [comments]