TL;DR
현대 코딩 에이전트는 외부 도구 반환값을 받아 이를 기반으로 추론을 이어가야 하는데, 일반적인 좌→우 사전학습은 이러한 '행동→관측→계속' 구조를 충분히 노출하지 못한다는 문제가 존재한다. 논문은 함수 호출부가 에이전트의 행동-관측-계속 루프와 구조적으로 동형임을 규명하고, 인터넷 규모의 코드에서 이 구조를 활용해 에이전트 친화적 사전편향을 설치하는 새로운 중간학습 단계를 도입했다. 이 접근은 에이전트 전용 후속 학습과 결합했을 때 목표 벤치마크 성능을 올리는 동시에 후속 학습으로 인해 약화되던 비목표 능력을 회복시키는 효과를 보였다.
왜 중요한가
현대 코딩 에이전트는 외부 도구 반환값을 받아 이를 기반으로 추론을 이어가야 하는데, 일반적인 좌→우 사전학습은 이러한 '행동→관측→계속' 구조를 충분히 노출하지 못한다는 문제가 존재한다. 논문은 함수 호출부가 에이전트의 행동-관측-계속 루프와 구조적으로 동형임을 규명하고, 인터넷 규모의 코드에서 이 구조를 활용해 에이전트 친화적 사전편향을 설치하는 새로운 중간학습 단계를 도입했다. 이 접근은 에이전트 전용 후속 학습과 결합했을 때 목표 벤치마크 성능을 올리는 동시에 후속 학습으로 인해 약화되던 비목표 능력을 회복시키는 효과를 보였다.
핵심 기여
함수 호출부와 에이전트 행동-관측-계속 루프의 구조적 동형성 규명
함수의 호출 전후 맥락, 호출 자체, 반환값, 반환값 소비라는 네 단계가 에이전트의 히스토리·행동·관측·계속 단계와 일대일 대응한다는 관찰을 근거로 코드에서 얻은 구조적 신호가 도구-사용 에이전트 능력으로 전이될 수 있음을 제시했다.
프로그램 의존성 그래프 기반의 함수-인지형 FIM 목표 선정 알고리즘 도입
파일별 AST에서 PDG를 구성하고 각 함수에 대해 LoC·McCabe CC·중첩 깊이를 결합한 복잡도 점수와 호출·시그니처·문서화 등으로 산출한 추론가능성 점수를 조화평균 형태의 FIM 점수로 결합하여 마스킹 대상을 자동 선택하는 파이프라인을 설계했다.
중간학습 단계에서 CoT를 FIM 중간(span)에 삽입하는 학습 포맷
선택된 함수 본문 대신 중간에 Chain-of-Thought(자연어 추론 근거)와 함수 본문 후보를 함께 배치하고 그 중간 스팬을 목표로 모델을 학습시켜 '생각-행동' 순서를 재연하도록 구성함으로써 단순 텍스트 채우기 이상의 추론 신호를 전달했다.
다중 실험 축에서의 강건성 검증
Qwen2.5-Coder-Instruct(7B/14B)와 Qwen3-8B에 대해 R2E-Gym, SWE-Smith, SWE-Lego 같은 서로 다른 후속 파이프라인과 조합해 실험을 수행하여 SWE-Bench 계열에서 일관된 성능 향상과 후속 학습으로 인한 비목표 능력 손실의 상당 부분 복구를 확인했다.
핵심 아이디어 이해하기
에이전트가 외부 도구로부터 관측을 수신하고 그 결과를 바탕으로 다음 행동을 선택하는 과정은 코드의 함수 호출 패턴과 구조적으로 동일한 네 단계로 분해된다. 호출 전 맥락은 에이전트의 히스토리에 해당하고, 호출은 에이전트의 행동에 해당하며, 반환값은 외부 관측에 대응하고, 이후의 코드 흐름은 관측을 반영한 에이전트의 계속 행동과 대응한다. 이 때문에 함수 본문을 주변 문맥으로부터 재구성하도록 학습된 표현은 도구 반환을 조건으로 한 추론과 행동 선택 능력으로 전이될 가능성이 크다.
방법론
데이터 수집 단계에서는 968개의 Python GitHub 리포지토리를 엄선하여 약 400K개의 FIM 샘플(약 2.6B 토큰)을 확보했고, SWE-Bench 원소스와 시간상 중복이 없도록 커밋 타임스탬프 기준으로 데컨타미네이션을 수행했다. 목표 선정 파이프라인은 파일별로 AST를 파싱해 함수 노드 집합과 호출·형제 엣지를 구성하는 PDG를 만든 다음, 각 함수에 대해 복잡도 점수(LoC, McCabe CC, 제어흐름 중첩 깊이)와 추론가능성 점수(호출자·피호출자 신호, 시그니처·타입, 문서화, 클래스 연관성)를 계산해 조화평균 유사의 FIM 점수로 필터링하는 방식으로 설계했다. 각 선정 대상은 함수 단일 혹은 연결된 2~3개 함수 그룹으로 확장 가능하게 처리되며 그룹화 토폴로지(호출사슬·허브·클래스-삼각 등)를 고려한 그룹 점수로 다중함수 마스킹을 결정했다.
주요 결과
주요 벤치마크인 SWE-Bench-Verified와 SWE-Bench-Lite에서 mid-training을 도입한 모델은 Qwen2.5-Coder-Instruct 7B에서 Verified +2.8, 14B에서 +3.0, Qwen3-8B에서는 +3.2 포인트의 개선을 보였고 동일한 추세가 Lite에서도 관찰되었다. 후속 학습(R2E-Gym, SWE-Smith, SWE-Lego)과 결합했을 때 이득이 일관되었으며 특히 7B에서 SWE-Smith 결합 시 Verified에서 +5.3포인트의 큰 향상을 기록한 실험이 보고되었다. 능력 보존 관점에서 보면 후속 에이전트 전용 학습은 비목표 코딩·도구 사용 능력을 저하시켰으나 FIM 중간학습을 추가하면 LiveCodeBench에서 +11.1, τ-bench와 BFCL에서 각각 +3.9, +2.4 포인트 복구가 관찰되어 중간학습이 후속 학습으로 인한 역기능을 상당 부분 완화했다.
기술 상세
전체 아키텍처 측면에서 mid-training은 기존의 좌→우 next-token 기반 코드 사전학습과 후속 에이전트 트래젝토리 기반 포스트트레이닝 사이에 위치하는 추가 학습 단계로, 모델의 표준 FIM sentinel 토큰과 네이티브 컨텍스트 길이를 그대로 사용해 중간 스팬(사고 근거+함수 본문)을 목표로 학습을 수행했다. 함수 선택은 파일 단위 AST 파싱과 PDG 구성으로 시작하며, PDG는 호출 엣지와 클래스 내 형제 엣지를 포함하여 함수 간 구조적 연관성을 포착한다. 핵심 메커니즘의 수학적 정의 중 하나인 복잡도 점수는 다음과 같이 정식화되었다. 원문 수식: Ĥ(v)=w_ℓ φ(LoC(v),c_ℓ)+w_c φ(CC(v),c_c)+w_d φ(D(v),c_d). 변수 의미: LoC는 함수의 코드 줄 수, CC는 McCabe cyclomatic complexity로 분기 수를 나타내고, D는 제어흐름의 최대 중첩 깊이이며 φ(x,c)=min(x/c,2)로 정규화 상한을 적용한다. 계산 흐름은 각 측정치를 사전 설정된 캡(c_ℓ,c_c,c_d)으로 나누어 ϕ로 정규화한 뒤 가중치(w_ℓ,w_c,w_d)를 곱해 합산하는 방식으로 복잡도를 산출한다. 작은 숫자 예시는 LoC=120, c_ℓ=100이면 φ(120,100)=min(1.2,2)=1.2이고 해당 항에 w_ℓ=0.4를 곱하면 0.48이 된다. 해석은 이 점수가 함수가 단순 문자열 치환 수준을 넘어 구조적·논리적으로 복잡해 학습 신호로 유의미하다는 것을 수치화하는 역할을 하며, 높은 Ĥ는 마스킹 후보로 우선 고려되는 근거가 된다.
한계점
논문에서 명시한 첫 번째 한계는 데이터와 실험이 Python 코드에 국한되어 있어 Java·C++·Rust 등으로의 직관적 일반화가 아직 검증되지 않았다는 점이다. 두 번째 한계는 CoT 생성과 필터링에 Gemini-3-Flash를 사용한 의존성이 있어 완전한 오픈소스 복제에는 동등한 수준의 공개 교사 모델이 필요하다는 점이 실험 섹션에서 지적되었다. 세 번째 한계는 교차 베이스 모델 검증이 제한적이라는 점으로, Qwen3-8B 결과는 포스트트레이닝 파이프라인을 동시에 변경한 단일 비교이므로 모든 프리트레인 계열에서 동일한 이득을 보장하지 않는다고 명시되었다. 네 번째로 함수 단위의 모듈성 가정을 전제로 하므로 모노리식 스크립트나 노트북처럼 모듈성이 낮은 코드베이스에서는 마스킹 후보가 제한되어 본 기법의 적용 범위가 줄어드는 문제가 있다.
실무 활용
논문은 중간학습 단계와 관련 파이프라인 코드를 공개하여 연구자와 엔지니어가 동일한 절차로 함수-인지형 FIM을 재현할 수 있게 만들었다. 공개 저장소는 마스킹 대상 선정 파이프라인, 필터링된 CoT+본문 샘플, 그리고 중간학습 체크포인트를 포함하여 바로 실무 실험에 투입 가능한 자산을 제공한다.
- 코딩 에이전트를 위한 베이스 모델을 후속 에이전트-특화 학습 전에 구조적 사전편향으로 보정하는 파이프라인 구성
- 코드 자동 수정·패치 생성 시스템에서 함수 간 제어·데이터 의존성에 민감한 변경을 높은 확률로 생성하도록 모델 초기화
- 사전학습 기반 코드 모델을 도구 호출을 포함하는 멀티스텝 작업에 적용할 때 비목표 능력 손실을 줄이는 안전 장치로서 중간학습 도입
코드 공개 여부: 공개
코드 저장소 보기키워드
용어 해설
- Fill-in-the-Middle
- — 문서나 코드의 중간 구간을 마스킹하고 해당 중간 내용을 조건부로 예측하도록 학습하는 목적함수로, 함수 단위의 FIM은 함수 본문을 주변 문맥(호출부와 사용부)으로부터 재구성하도록 모델을 유도하여 도구 호출과 유사한 조건부 추론 능력을 키운다.
- Program Dependency Graph
- — 추출된 AST에서 함수 노드와 이들 간의 호출·형제 관계를 엣지로 구성한 그래프로, 함수 수준의 의존 관계를 수치적으로 표현하여 마스킹 후보 선정과 그룹화(호출체인·허브·fan-in 등)를 가능하게 한다.
- Chain-of-Thought
- — 모델이 출력을 생성하기 전 중간 논리적 근거를 자연어 형태로 생성하게 하는 구성으로, FIM 중간(span)에 CoT를 포함하면 '생각한 뒤 행동하는' 구조가 재현되어 도구 반환값을 활용한 계속성 예측 능력이 향상된다.
- Complexity–Inferability Criterion
- — 함수 후보의 학습 적합도를 판단하는 메트릭 조합으로, LoC·McCabe CC·중첩 깊이로 계산되는 복잡도와 호출·시그니처·문서화 등으로 계산되는 추론가능성 점수를 조화평균 형태로 결합하여 FIM 마스킹 대상으로 선택한다.
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
