SWE-Pruner: Self-Adaptive Context Pruning for Coding Agents
SWE-Pruner 는 명시적인 에이전트 목표에 기반하여 관련 없는 코드를 동적으로 필터링하는 작업 인식 신경 스키머를 활용하는 자기 적응형 컨텍스트 가지치기 프레임워크로, 다양한 벤치마크에서 코딩 에이전트의 성능을 유지하거나 향상시키면서 토큰 사용량과 비용을 크게 줄입니다.
원저자:Yuhang Wang, Yuling Shi, Mo Yang, Rongrui Zhang, Shilin He, Heng Lian, Yuting Chen, Siyu Ye, Kai Cai, Xiaodong Gu
당신은 거대하고 먼지 투성이의 도서관에서 복잡한 사건을 해결하려는 형사라고 상상해 보세요. 이 도서관은 컴퓨터 프로그램의 코드베이스이며, 당신의 임무는 특정 버그를 찾거나 새로운 기능을 추가하는 것입니다.
문제: "너무 많은 정보"의 함정 과거에, 당신이 이 코딩 미스터리를 해결하라고 초지능형 AI 형사 (LLM 에이전트) 에게 요청했을 때, 당신은 도서관 전체를 한 번에 건네주곤 했습니다. AI 는 필요한 단서를 찾기 위해 모든 책, 모든 페이지, 모든 주석을 읽으려 했습니다.
이로 인해 두 가지 큰 문제가 발생했습니다:
압도당함: AI 의 "두뇌" (컨텍스트 창) 에는 한계가 있습니다. 너무 많은 텍스트를 주면 이야기의 시작 부분을 잊어버리거나 관련 없는 세부 사항들 (자동차 매뉴얼을 찾으려다 요리책을 읽는 것과 같은) 에 혼란을 겪기 시작합니다.
비싼 비용: AI 가 읽고 쓰는 모든 단어는 돈과 시간을 소모합니다. 모든 단서를 찾기 위해 도서관 전체를 읽는 것은 전화번호 하나를 찾기 위해 백과사전 전체를 읽는 데 비용을 지불하는 것과 같습니다.
기존의 해결책들은 공간을 절약하기 위해 책들을 요약하거나 무작위로 단어를 삭제하려 했습니다. 하지만 이는 "엔진"이나 "브레이크"라는 단어를 제거하여 자동차 매뉴얼을 요약하려는 것과 같습니다. 이는 논리를 파괴하여 코드를 읽을 수 없거나 무용지물로 만들었습니다.
해결책: SWE-Pruner (지능적인 사서) 이 논문의 저자들은 당신과 도서관 사이에 서 있는 매우 숙련된 자기 적응형 사서 역할을 하는 SWE-Pruner를 소개했습니다.
간단한 용어로 작동 원리는 다음과 같습니다:
구체적인 질문을 하다: 단순히 "이 파일을 읽어라"라고 말하는 대신, AI 에이전트는 먼저 "목표 힌트"와 같은 구체적인 질문을 하도록 훈련됩니다. 예를 들어: "사용자 로그인 오류를 처리하는 코드 부분을 찾아야 합니다."
사서가 훑어보다: SWE-Pruner(작고 빠른 AI 모델) 는 거대한 파일과 구체적인 질문을 받습니다. 이는 모든 단어를 깊이 있게 읽지 않고, 인간 프로그래머가 디버깅할 때처럼 텍스트를 "훑어봅니다". 어떤 줄이 "로그인 오류"와 관련이 있고, 어떤 줄이 "데이터베이스 설정"이나 "색상 테마"에 불과한지 정확히 알고 있습니다.
불필요한 부분을 잘라내다: 사서는 관련 없는 페이지들을 잘라내고 AI 에이전트에게 구체적이고 관련 있는 문단들만 건넵니다. 중요한 점은 이를 줄 단위로 수행한다는 것입니다. 문장을 잘라내거나 무작위로 키워드를 제거하지 않습니다. 앞의 문단을 제거하더라도 전체 문단을 유지하듯 코드의 구조를 온전하게 유지합니다.
결과: AI 에이전트는 짧고 집중적이며 깔끔한 퍼즐 조각을 얻습니다. 이는 문제를 더 빠르게 해결하고, 실수를 줄이며, 비용을 크게 절감할 수 있게 합니다.
비유: "건초더미 속의 바늘" 대 "체"
옛 방식: 당신은 건초더미 전체를 테이블 위에 쏟아붓고 AI 에게 바늘을 찾게 합니다. AI 는 지치고 혼란스러워하며 엄청난 비용을 치릅니다.
나쁜 압축: 당신은 건초더미를 으깨서 줄이려 합니다. 이제 바늘은 작고 부서진 짚 더미에 묻혀 있으며, 어느 방향이 위인지 알 수 없습니다.
SWE-Pruner: 당신은 바늘 모양으로 정교하게 만들어진 체를 사용합니다. 건초더미를 흔들어 바늘 (그리고 바늘에 붙은 작은 짚 조각) 만이 통과되게 합니다. 나머지 건초는 뒤에 남습니다. 바늘은 완벽하게 온전하며 사용 준비가 되어 있습니다.
그들이 발견한 것 이 논문은 GitHub 에서 버그 수정과 같은 실제 코딩 작업에 이를 테스트했습니다.
비용 및 속도: AI 가 읽어야 하는 텍스트 양을 **23% 에서 54%**까지 줄였습니다. 이는 AI 가 작업을 더 빠르고 저렴하게 해결했음을 의미합니다.
더 현명한 결정: AI 가 관련 없는 코드에 방해받지 않았기 때문에 실제로 더 나은 결정을 내렸습니다. 일부 테스트에서는 AI 가 더 집중할 수 있었기 때문에 버그 수정 성공률이 약간 상승했습니다.
파괴 없음: 코드의 문법을 파괴한 다른 방법들과 달리, SWE-Pruner 는 코드 구조를 완벽하게 유지하여 AI 가 조각들이 어떻게 맞물리는지 여전히 이해할 수 있게 했습니다.
요약하자면, SWE-Pruner 는 코딩 에이전트들이 책 전체를 읽는 것을 멈추고 중요한 장들만 읽도록 가르쳐 시간, 돈, 정신 에너지를 절약합니다.
"코드 에이전트를 위한 자기 적응형 컨텍스트 가지치기 (SWE-Pruner)"논문에 대한 상세한 기술적 요약입니다.
1. 문제 제기
대형 언어 모델 (LLM) 에이전트는 코드 이해부터 자율적 패치 생성에 이르기까지 소프트웨어 엔지니어링 작업에서 놀라운 잠재력을 보여주었습니다. 그러나 그 효과는"컨텍스트 벽 (Context Wall)"에 의해 심각하게 저해받고 있습니다.
토큰 누적: 실제 세계의 소프트웨어 저장소는 방대합니다. 이러한 저장소를 탐색하는 에이전트는 긴 상호작용 기록과 원시 파일 내용을 누적하여, 긴 컨텍스트를 지원하는 모델조차도 컨텍스트 창을 빠르게 소진합니다.
비용 및 지연 시간: 방대한 양의 코드를 무작위로 주입하는 것은 막대한 API 비용과 높은 추론 지연 시간을 초래합니다.
주의 희석: 과도한 컨텍스트는 노이즈를 유발하여"주의 희석 (attention dilution)"및 환각을 초래하며, 이로 인해 모델이 중요한 구현 세부 사항에 집중력을 잃게 됩니다.
기존 솔루션의 한계: 현재 컨텍스트 압축 방법 (예: LongLLMLingua, Selective-Context) 은 Perplexity(PPL) 나 자기 정보 (self-information) 와 같은 정적 지표에 의존합니다. 이러한 방법들은 **작업 무관 (task-agnostic)**하며 주로 토큰 수준에서 작동하여 코드의 구문 및 논리적 구조를 파괴하므로 디버깅이나 컴파일에 사용할 수 없게 만듭니다. 또한 다중 턴 에이전트 상호작용의 역동적이고 진화하는 목표에 적응하지 못합니다.
2. 방법론: SWE-Pruner
저자들은 코드 에이전트를 위해 특별히 설계된 자기 적응형 컨텍스트 가지치기 프레임워크인 SWE-Pruner를 제안합니다. 이는 에이전트와 환경 사이의 미들웨어로 작동하여, LLM 에 도달하기 전에 원시 컨텍스트를 필터링하기 위해 파일 읽기 명령 (예: cat, grep) 을 가로챕니다.
핵심 구성 요소
목표 힌트 생성:
정적 압축 대신, 에이전트는 현재 정보 요구 사항에 대한 자연어 설명인 **목표 힌트 (Goal Hint)**를 생성하도록 지시받습니다 (예: "Auth 모듈의 오류 처리 로직에 집중").
이 힌트는 가지치기 시스템에 선택적 매개변수 (context_focus_question) 로 전달되어 작업 인식 (task-aware) 필터링을 가능하게 합니다.
경량 신경 스키머 (Neural Skimmer):
아키텍처:Qwen3-Reranker-0.6B를 기반으로 한 0.6B 파라미터 모델로, 낮은 지연 시간과 높은 효율성을 위해 설계되었습니다.
메커니즘: 스키머는 컨텍스트 가지치기를 재순위화 (reranking) 문제로 취급합니다. 쿼리 (목표 힌트) 와 컨텍스트 (원시 파일 내용) 가 주어지면 관련성 점수를 계산합니다.
라인 단위 세분성: 토큰 단위 가지치기와 달리, SWE-Pruner 는 토큰 점수를 라인 단위로 집계합니다. 이는 함수 정의나 클래스 블록과 같은 구문 구조가 온전하게 유지되도록 하여 코드 파괴를 방지합니다.
학습 목표: 모델은"유지"및"가지치기"결정 간의 순차적 의존성을 모델링하기 위해 조건부 랜덤 필드 (CRF) 손실을 사용하여 훈련되며, 일관된 라인 단위 유지를 보장합니다. 또한 전역 관련성을 유지하기 위해 문서 단위 재순위화 헤드가 포함됩니다.
학습 데이터 구축:
코드 에이전트를 위한 라인 단위 관련성 주석이 포함된 데이터셋이 존재하지 않기 때문에, 저자들은 교사 - 학생 패러다임을 사용하여 61K 샘플 다언어 (polyglot) 코퍼스를 구축했습니다.
교사 LLM(Qwen3-Coder-30B) 은 GitHub 저장소에서 작업 지향 쿼리와 라인 단위 유지 마스크를 합성하여 디버깅, 리팩토링, 기능 추가 등 9 가지 다양한 에이전트 작업을 포괄했습니다.
"LLM-as-a-Judge"메커니즘을 통해 데이터가 고품질 주석을 갖도록 필터링되었습니다.
통합 워크플로우:
이 프레임워크는 에이전트 루프 (예: Mini SWE Agent, OpenHands) 에 통합됩니다. 에이전트가 파일을 읽을 때, 원시 출력은 목표 힌트와 함께 스키머로 전송됩니다. 스키머는 관련 라인만 포함된 **가지치기된 컨텍스트 (Pruned Context)**를 반환하며, 에이전트는 이를 처리합니다.
3. 주요 기여
작업 인식 가지치기 프레임워크: 에이전트의 특정 추론 목표에 기반하여 컨텍스트 압축을 역동적으로 적응시키는 새로운 접근 방식을 도입하여, 정적이고 콘텐츠 중심의 압축을 넘어섰습니다.
라인 단위 구조 보존: 구문 유효성과 논리적 구조를 보존하는 라인 단위에서 작동하는 경량 신경 스키머를 설계하여 코드 정확성에 필수적인 요소를 유지했습니다.
효율적인 아키텍처: 실질적인 토큰 감소를 달성하면서 무시할 수 있는 지연 시간 (<100ms) 을 도입하는 0.6B 파라미터 모델을 개발하여 실시간 에이전트 워크플로우에 실용적으로 만들었습니다.
합성 데이터 파이프라인: 코드 가지치기를 위한 고품질 라인 단위 지도 학습 데이터를 생성하는 엄격한 파이프라인을 만들어, 해당 분야의 중요한 데이터 격차를 해소했습니다.
4. 실험 결과
저자들은 SWE-Pruner 를 SWE-Bench Verified 및 SWE-QA(다중 턴 에이전트 작업) 와 Long Code Completion 및 Long Code QA(단일 턴 작업) 라는 네 가지 벤치마크에 걸쳐 평가했습니다.
다중 턴 에이전트 작업 (SWE-Bench Verified):
토큰 감소: 총 토큰 소비량을 23~38% 감소시켰습니다.
성공률: 놀랍게도 성공률이 1.2~1.4% 포인트 향상되었습니다 (예: Claude Sonnet 4.5 사용 시 70.6% 에서 72.0% 로).
효율성: 상호작용 라운드를 18~26% 감소시켜, 에이전트가 집중된 컨텍스트로 더 결정적인 결정을 내린다는 것을 나타냈습니다.
비용: API 비용을 크게 절감했습니다 (최대 약 36% 절감).
단일 턴 작업 (Long Code QA/Completion):
압축 비율: 엄격한 제약 하에 Long Code QA 에서 최대 14.84 배 압축을 달성하여 LLMLingua2 및 RAG 와 같은 베이스라인을 크게 능가했습니다.
성능: 전체 컨텍스트에 비해 정확도를 유지하거나 약간 향상시켰습니다 (예: 14.84 배 압축 시 58.71% 정확도). 반면 토큰 단위 베이스라인은 고압축 하에서 심각한 성능 저하를 겪었습니다.
효율성 및 지연 시간:
0.6B 스키머는 최소한의 오버헤드 (첫 번째 토큰 지연 시간 <100ms) 를 추가하며, 이는 다운스트림 LLM 디코딩 비용의 막대한 감소로 상쇄됩니다.
AST 정확도: SWE-Pruner 는 87.3% 의 AST 정확도(구문 유효성) 를 유지하여 토큰 단위 방법 (0% 또는 13% 미만으로 급락) 을 크게 능가했습니다.
5. 의의
컨텍스트 벽 해결: SWE-Pruner 는 코드 에이전트의 컨텍스트 창 제한에 대한 확장 가능한 솔루션을 제공하여, prohibitive 한 비용 없이도 집중력을 잃지 않고 크고 복잡한 코드베이스를 탐색할 수 있게 합니다.
패러다임 전환: 컨텍스트 관리를 정적 압축에서 동적이고 목표 주도적인 선택으로 전환시켜, 인간 개발자가 특정 디버깅 또는 기능 목표에 따라 코드를"스킴 (skim)"하는 방식을 모방합니다.
실용적 타당성: 이 프레임워크는 경량이며 모델에 구애받지 않으며 (Claude, GLM, Qwen 등과 호환), 미들웨어로 원활하게 통합되어 기존 에이전트 인프라에 즉시 적용 가능합니다.
양보다 질: 결과는 더 적은 컨텍스트가 구조적으로 온전하고 현재 작업과 의미적으로 관련이 있다면 코드 에이전트에게 종종 더 낫다는 것을 보여줍니다. 이는 장기 컨텍스트 LLM 연구에서 지배적인"더 많은 컨텍스트가 더 좋다"는 가정에 도전합니다.