하루 만에 15개 LLM의 코딩 성능을 개선했다 — 바꾼 건 Harness뿐
Improving 15 LLMs at Coding in One Afternoon. Only the Harness Changed
TL;DR Highlight
Edit tool 포맷 개선이 LLM 코딩 에이전트의 성능 병목을 해결하여 15개 모델에서 5~14점 향상과 토큰 20% 절감을 달성한다.
Who Should Read
LLM 기반 코딩 에이전트를 만들거나, Claude Code·Cursor·Codex 같은 AI 코딩 도구의 한계를 느끼고 있는 개발자. 자체 에이전트 harness를 개선하고 싶은 사람.
Core Mechanics
- 현재 AI 코딩 도구 논의는 '어떤 모델이 최고냐'에 집중되지만, 실제 실패의 대부분은 모델이 아니라 harness(모델과 코드 사이의 인터페이스)에서 발생한다. 모델은 뭘 바꿔야 하는지 알지만, 그걸 표현하는 도구가 엉망이면 실패한다.
- 기존 edit 방식들은 각각 치명적 문제가 있다. Codex의 apply_patch는 OpenAI 전용 diff 포맷이라 다른 모델(Grok 4: 50.7%, GLM-4.7: 46.2%)에서 패치 실패율이 극심하고, Claude Code의 str_replace는 공백·들여쓰기까지 완벽히 재현해야 해서 'String to replace not found' 에러가 GitHub 이슈 메가스레드가 될 정도로 흔하다.
- Cursor는 이 문제가 너무 어려워서 아예 별도의 70B 파인튜닝 모델을 edit 전용으로 훈련시켰다. 그런데도 400줄 이하 파일은 전체 재작성이 diff보다 낫다고 자사 블로그에서 인정했다.
- Aider 벤치마크에서 edit 포맷만 바꿨더니 GPT-4 Turbo 성능이 26%→59%로 뛰었다. 반면 GPT-3.5는 같은 포맷에서 19%밖에 못 냈는데, 유효한 diff를 생성하는 능력 자체가 부족해서다. 포맷이 모델만큼 중요하다는 직접적 증거.
- 저자가 제안하는 'Hashline' 방식은 파일을 읽을 때 각 줄에 해시 태그를 붙여 반환하는 것이다. 모델이 수정할 줄을 해시로 안정적으로 식별할 수 있어서, 내용을 완벽히 재현할 필요 없이 '어떤 줄을 바꿀지' 정확히 지정할 수 있다.
- 이 해시 기반 edit 포맷 하나만 바꿨더니 15개 모델에서 5~14점 성능 향상, 출력 토큰 약 20% 절감이 나왔다. 모델 자체는 전혀 안 건드렸다.
- JetBrains의 Diff-XYZ 벤치마크도 '모든 모델과 유스케이스에서 지배적인 단일 edit 포맷은 없다'고 확인했고, EDIT-Bench에서는 현실적 편집 태스크에서 pass@1 60% 넘는 모델이 단 하나뿐이었다.
- 저자는 oh-my-pi라는 오픈소스 코딩 에이전트를 1,300+ 커밋 유지하며, 모델을 파라미터로 두고 harness를 실험하는 테스트베드로 사용 중이다. Claude Code가 서브에이전트 출력에서 raw JSONL을 누출해 수십만 토큰을 낭비하는 문제도 직접 해결했다고 한다.
Evidence
- 한 댓글은 이 글의 성과가 과장됐다고 지적했다. 5% 개선은 저자가 직접 만든 find-and-replace 벤치마크 기준이지 상위 레벨 벤치마크가 아니며, 실제 일상 사용에서 editing이 전체 토큰의 1/3 미만이라 전체 효율 개선은 1% 미만일 수 있다고 계산했다. Google이 API 접근을 차단한 걸 '천재를 억누르려는 것'처럼 묘사하는 과대망상적 톤도 비판받았다.
- Codex가 실제로 constrained sampling용 스키마를 사용한다는 반론이 있었다(GitHub 소스 링크 제공). 저자가 이를 모르고 벤치마크했기 때문에, apply_patch 테스트에서 constrained sampling을 활성화했어야 공정하다는 지적. 실제로 Codex 모델 두 개만 저자의 새 포맷에서 성능이 떨어졌다.
- OpenRewrite의 Lossless Semantic Tree(LST) 개념을 언급하며, 텍스트가 아닌 AST/시맨틱 트리 위에서 모델이 직접 작업하면 포맷팅 같은 부수적 토큰 낭비를 없앨 수 있다는 의견이 있었다. Emacs에서 tree-sitter 기반으로 노드 해시를 사용한 edit 도구를 직접 구현해 성공했다는 경험담도 공유됐다.
- Damerau-Levenshtein 거리(편집 거리)를 써서 유사도가 임계값 이상이면 edit을 통과시키는 fuzzy matching 방식을 쓰고 있다는 개발자가 있었다. 정확한 매칭을 요구하면 절대 안 되고, 에러 메시지에 'Content mismatch. Reread the file' 같은 구체적 해결 액션을 넣는 게 핵심이라고 했다. 4B 소형 모델에서도 작동한다고.
- CORE 벤치마크에서 Opus 점수가 자체 harness에서 Claude Code로 바꿨을 때 거의 2배가 됐다는 사례가 공유되며, harness가 얼마나 중요한지 추가 증거로 제시됐다.
How to Apply
- 자체 코딩 에이전트를 만들고 있다면, 파일 읽기 결과에 줄별 해시를 붙여 반환하고 edit 시 해시로 대상 줄을 지정하는 방식을 도입해보라. 저자의 oh-my-pi(github.com/can1357/oh-my-pi)나 tilth(npx tilth → tilth install claude-code --edit)를 참고하면 바로 테스트 가능하다.
- str_replace 기반 edit에서 실패율이 높다면, 정확한 문자열 매칭 대신 Damerau-Levenshtein 같은 fuzzy matching을 임계값과 함께 적용하고, 실패 시 'Content mismatch. Reread the file'처럼 모델이 자동 복구할 수 있는 구체적 에러 메시지를 반환하도록 수정하라.
- Claude Code나 Cursor를 쓰면서 edit 실패가 잦다면, tilth를 설치해서(cargo install tilth 또는 npx tilth) 해시 기반 edit 모드를 활성화해볼 수 있다. tilth install claude-code --edit로 바로 적용 가능.
- 에이전트의 서브에이전트 출력이 raw 텍스트로 흘러 토큰을 낭비하고 있다면, 구조화된 데이터(JSON 등)로 반환하도록 변경하라. 모델 성능을 안 건드리고도 비용과 정확도를 동시에 개선할 수 있다.
Code Example
# tilth 설치 및 Claude Code에 해시 기반 edit 적용
cargo install tilth # 또는 npx tilth
tilth install claude-code --editTerminology
관련 논문
OpenKnowledge – Obsidian/Notion의 오픈소스 AI-first 대안
Git 기반 동기화와 Claude/Codex/Cursor 연동을 내장한 로컬 우선 마크다운 에디터로, AI 에이전트의 두 번째 뇌(LLM Wiki)로 활용할 수 있는 오픈소스 도구다.
Unfireable Safety Kernel: AI 에이전트를 위한 Execution-Time AI Alignment
AI 에이전트가 자신의 안전장치를 우회할 수 없도록, 에이전트 프로세스 바깥에 수학적으로 증명된 강제 통제 게이트를 배치하는 아키텍처
RubyLLM: 주요 AI 프로바이더를 모두 지원하는 Ruby 프레임워크
OpenAI, Claude, Gemini 등 주요 AI 프로바이더를 단일 인터페이스로 통합한 Ruby 프레임워크로, Rails 통합과 에이전트 기능까지 지원해 Ruby 개발자가 AI 기능을 빠르게 붙일 수 있다.
Qwen-AgentWorld: 범용 에이전트를 위한 Language World Model
Alibaba Qwen 팀이 AI 에이전트가 행동 결과를 미리 시뮬레이션할 수 있는 'Language World Model'을 공개했다. 에이전트 훈련과 실행 경로 검증에 새로운 패러다임을 제시하는 연구다.
SHERLOC: Code Repair Agent를 위한 구조화된 Diagnostic Localization 프레임워크
버그 위치만 알려주는 게 아니라 '왜, 어떻게 고쳐야 하는지'까지 진단 리포트를 생성해서 코드 수정 에이전트의 성능을 높이는 training-free 프레임워크
peerd – 브라우저에서 완전히 실행되는 AI Agent Harness
백엔드 서버 없이 Chrome/Firefox 확장 프로그램으로만 동작하는 AI 에이전트 실행 환경으로, 브라우저 탭을 직접 조작하고 WASM Linux VM까지 구동할 수 있어 프라이버시와 보안을 동시에 챙길 수 있다.