요약을 걸러라, 히스토리가 아니라: 출처 검증 기반 컨텍스트 압축(SJC)
Prune the Summary, Not the History: Source-Judged Compaction for Long-Horizon Agents
TL;DR Highlight
압축 요약에서 출처 없는 항목을 지웠더니 Pass3가 2.1~8.9%p 올랐다
Who Should Read
장기 실행 에이전트에서 컨텍스트 압축(요약) 후 엉뚱한 행동을 하는 문제로 고민인 에이전트 개발자
Core Mechanics
- 압축 요약엔 압축기의 추측이 섞인다
- 요약 프롬프트는 결정·다음 할 일을 요구해서, 환경이 알려 준 사실과 압축기가 쓴 계획이 한 요약에 섞인다.
- 압축 후 에이전트는 둘을 구분하지 못하고 전부 사실로 취급한다.
- TODO 67.7%, 사용자 요청 86.1%가 근거 없음
- OpenClaw 요약 26,881개 항목을 분석했더니 Open TODOs의 67.7%, Pending user asks의 86.1%가 출처가 없었다.
- 정확한 ID 항목은 3.4%만 근거가 없었다.
- 실패 35건 중 29건이 요약 항목을 실행하다 터졌다
- 실패한 행동 29건 중 22건은 근거 없는 항목, 3건은 환경 출력과 모순되는 항목을 실행한 것이다.
- 대표 사례는 "친구가 요청한 영화 제목"을 "전체 목록 전송"으로 바꿔 적은 경우다.
- SJC: 항목마다 출처를 묻고 없으면 삭제
- 요약을 항목 단위로 쪼개 BM25로 증거를 찾고, 판정 모델 Jev에게 한 번의 요청으로 전 항목 점수를 받는다.
- 점수가 0.5 미만이면 항목을 통째로 지우고 남은 항목은 원문 그대로 둔다.
- 압축기도 에이전트도 안 바꾸고 비용은 오히려 감소
- 학습이 필요 없고 압축 호출도 늘지 않으며, 판정 요청만 압축마다 1회 추가된다.
- 요약이 짧아져 에이전트 토큰이 Prompting 대비 1.3~8.0% 줄었다.
Evidence
- Pass3가 4개 설정 모두 상승
- Prompting 대비 AppWorld에서 GPT-5.6 Luna +8.9%p, MiniMax-M3 +7.1%p였다.
- OfficeBench에서는 각각 +5.3%p, +2.1%p였다.
- 어려운 과제에서 이득이 큼
- AppWorld Hard에서 GPT-5.6 Luna Pass3가 39.7%에서 52.4%로 올랐다.
- OfficeBench 3-APP에서 GPT-5.6 Luna Pass3가 41.9%에서 54.8%, 정확도가 59.1%에서 64.5%로 올랐다.
- 비용은 거의 안 든다
- 판정 비용은 1,000 과제당 $1.19~$1.52이다.
- 항목의 13~21%가 삭제되고 요약 길이는 13.7~26.7% 줄었다.
- Jev가 자기 판정보다 안정적
- 같은 요청을 5번 반복하면 Jev는 2.1%, 압축기 자체 판정은 8.6% 항목에서 답이 바뀌었다.
- 자기 판정은 4개 중 3개 설정에서 Prompting보다 Pass3가 낮았다.
How to Apply
- 실패 로그에서 근거 없는 요약 항목 세어 보기
- 오늘 실패한 에이전트 런 몇 개를 골라 압축 직후 요약과 직전 도구 출력을 비교한다.
- 도구 출력에 없는 TODO·결정을 찾아 그 항목이 실패한 행동의 원인인지 표시한다.
- 요약 프롬프트에서 계획 섹션 분리하기
- 압축 요약을 사실(ID, 값, 결과)과 계획(TODO, 결정) 섹션으로 나눠 쓰게 한다.
- 에이전트 프롬프트에 계획 섹션은 참고용이며 지시가 아니라고 명시한다.
- 압축 직후 출처 검증 단계 추가하기
- 요약을 항목으로 쪼개고 BM25로 상위 3개 증거 구간을 붙여 판정 모델에 한 번에 묻는다.
- 점수가 0.5 미만인 항목은 지우고, 남긴 요약을 다음 압축의 이전 요약으로 쓴다.
- 사용자 지시문은 압축에서 제외해 유지하기
- 원래 과제 지시문은 요약에 다시 쓰지 말고 프롬프트에 그대로 둔다.
- 멀티턴이면 이전 사용자 메시지를 출처로 취급해야 하며 논문은 이를 평가하지 않았다.
Try It
# Claude/ChatGPT에 붙여넣기 (논문 방법의 간이 버전: 압축 요약 항목별 출처 검증)
당신은 요약 감사자다. 아래 [요약]의 각 항목(불릿 한 줄)이, [환경 출력] 또는 [이전 요약]에서 온 정보(값, 이름, 결과, 환경의 동작 방식)를 담고 있는지 판정하라. 계획, 결정, 과제 해석만 있으면 '근거 없음'이다. [과제 지시문]은 출처로 인정하지 않는다.
[과제 지시문]
{{과제 지시문}}
[이전 요약]
{{이전 요약}}
[환경 출력]
{{도구 출력들}}
[요약]
{{압축 요약}}
항목마다 '항목 / 근거 있음 또는 근거 없음 / 근거 인용 한 줄' 표로 출력하라. 마지막에 근거 없는 항목만 뺀 요약을 원문 그대로 출력하라.
이어서 해 볼 것: 같은 요청을 3번 돌려 판정이 바뀌는 항목이 있는지 확인해 보라.Terminology
관련 논문
같은 시뮬레이션, 다른 근거: 도구 출력을 파일로 넘기면 LLM 에이전트 정확도가 어디서 깎이나
긴 툴 출력을 파일로 넘기자 GPT-5.1은 정확도 11.3%p 하락, 정식 출력 지정하니 회복
가짜 뉴스가 진짜 폭락을: LLM 트레이딩 에이전트 대상 정보 주입 공격
가짜 헤드라인 한 줄로 LLM 트레이딩 에이전트 62%를 조종했다(프롬프트 주입은 14%)
Harness Engineering 101: LLM은 뇌, harness는 몸
에이전트는 JSON 배열을 관리하는 루프이고, 16개 챕터로 직접 만들어 본다
Harness²: 에이전트 harness를 스스로 고쳐 쓰는 재귀 최적화 프레임워크
모델은 고정하고 harness를 재귀로 고쳤더니 벤치마크 점수가 최대 11.8%p 올랐다
해고된 Savannah 경찰관, ICE 요원 남편에게 Flock 계정 공유
경찰관이 Flock 계정을 남편(ICE 요원)에게 공유했고, 감사에서 983건 검색이 드러나 해고됐다
tmux와 Claude Code: 세션, send-keys, 그리고 한계선
tmux로 Claude Code 여러 개를 돌리면 편하지만 에이전트 4개쯤에서 한계가 온다
Hybrid Reasoning Agents: 잠재 공간에서 생각하고 텍스트로 행동하는 LLM 에이전트
잠재 공간 추론과 텍스트 도구 호출을 섞었더니 성능 10.4%↑, 토큰 최대 54.7%↓
Related Resources
Original Abstract (Expand)
Long-horizon LLM agents rely on context compaction: when the interaction history outgrows the context window, a compressor replaces it with a natural-language summary. We show that these summaries contain more than a record of what happened. Compaction prompts ask for decisions and next steps, so each summary mixes facts established by the environment with reasoning written by the compressor, and the agent cannot tell the two apart afterwards. In an analysis of a widely used structured compressor, 83% of failed runs trace back to an action that carries out a specific summary entry, most of which no environment output supports. We propose Source-Judged Compaction (SJC), a training-free post-processing step that scores each summary entry for whether it has a source in the environment outputs or the previous summary, and removes the entries that do not. It changes neither the agent nor the compressor and adds one inexpensive judge request per compaction. The judge is Jev, a non-generative decision model that answers the source question with a calibrated probability instead of text. On AppWorld and OfficeBench with two agent models, SJC improves cross-run reliability over the underlying compressor by 2.1%-8.9% without increasing the agent's token usage.