상위: 04_00_MOC
에이전트가 컨텍스트 충돌에 더 취약한 구조적 이유
단일턴 챗봇도 컨텍스트 충돌(Context Clash)에 취약하지만, 에이전트(Agent)에서는 그 취약성이 구조적으로 증폭된다. 에이전트란 애초에 컨텍스트가 폭발적으로 불어나는 시나리오에서 돌아가도록 설계된 시스템이기 때문이다. 이 노트는 에이전트 고유의 다섯 가지 구조적 취약 경로를 하나씩 해부하고, 각각을 뒷받침하는 실증 데이터를 정리한다.
1. 왜 에이전트인가 — 일반 LLM과 다른 전제
일반 LLM 호출은 단발성(stateless)이다. 이전 추론의 오류가 현재 컨텍스트에 남지 않는다. 반면 에이전트는 다음을 반복적으로 수행한다.
- 상태(state)를 컨텍스트에 유지하며 다음 행동을 계획한다.
- 도구를 호출하고 결과를 컨텍스트에 병합한다.
- 서브에이전트를 생성하고 그 출력을 메인 컨텍스트에 합성한다.
- 실패하면 이전 시도의 흔적 위에서 재시도한다.
- 장시간에 걸쳐 초기 가정을 유지하거나 갱신한다.
이 다섯 가지 활동이 모두 컨텍스트 충돌의 토양이 된다. 에이전트는 단순히 LLM을 더 많이 쓰는 것이 아니라, 충돌이 일어나기 좋은 조건을 스스로 쌓아가는 구조인 셈이다.
flowchart TD A[에이전트 시작] --> B[계획 수립<br/>초기 가정 컨텍스트 진입] B --> C{도구 호출} C --> D[결과 1 병합] C --> E[결과 2 병합] D --> F{결과 간 충돌?} E --> F F -->|충돌 발생| G[컨텍스트 내 모순 공존] F -->|일치| H[다음 계획 단계] G --> I[모델이 어느 쪽을 따를지 비결정적] H --> J{서브에이전트 호출} J --> K[서브에이전트 출력 병합] K --> L{출력이 초기 가정과 충돌?} L -->|충돌| G L -->|일치| H style G fill:#ff6b6b,color:#fff style I fill:#ff6b6b,color:#fff
2. 5가지 구조적 취약 경로
2-1. 다중 도구 호출 결과의 누적 (Tool Output Accumulation)
에이전트가 여러 도구를 순차적으로, 또는 병렬로 호출하면 각 도구의 출력이 컨텍스트에 차곡차곡 쌓인다. 문제는 서로 다른 도구가 서로 다른 시점의 데이터, 서로 다른 정보원을 반영한다는 데 있다.
예시 시나리오:
- 웹 검색 도구: “A사 주가 ₩50,000 (9시 기준)”
- DB 조회 도구: “A사 주가 ₩52,300 (11시 기준)”
- 뉴스 요약 도구: “A사 주가 전일 대비 -3% (전일 종가 기준)”
세 값은 모두 ‘사실’이지만 컨텍스트 안에서 직접 충돌한다. 어느 값을 우선할지 명시적 지시가 없는 상태에서 모델은 그대로 추론을 이어간다. 04_04-지시문-충돌-Instruction-Clash가 도구 수준에서 발현되는 형태다.
Berkeley Function-Calling Leaderboard 데이터를 보면, 도구 수가 늘수록 모든 모델에서 성능이 일관되게 떨어진다. 도구 결과의 누적이 단순한 컨텍스트 길이 증가를 넘어 의미론적 모순의 밀도를 높이는 효과를 낸다는 뜻이다.
2-2. 서브에이전트 출력의 메인 컨텍스트 병합 (Subagent Output Merging)
멀티에이전트 아키텍처에서 오케스트레이터(orchestrator) 에이전트는 서브에이전트들의 출력을 수집해 메인 컨텍스트에 병합한다. 이 병합 단계가 구조적 충돌 지점이다.
서브에이전트들은 서로 다른 컨텍스트에서 독립적으로 추론했다. 각자의 결론은 그 서브에이전트의 고립된 정보 환경 안에서는 일관성이 있다. 그러나 오케스트레이터가 이 출력들을 하나의 컨텍스트로 합치는 순간, 서로 다른 전제에서 나온 결론들이 충돌하게 된다.
Morph(2025)는 Anthropic의 멀티에이전트 설정(Opus 4 오케스트레이터 + Sonnet 4 서브에이전트 3~5개)이 단일 에이전트 Opus 4 대비 90.2% 성능 향상을 달성했다고 보고한다. 이 수치의 의미는 역설적이다. 역할 분리와 컨텍스트 분리를 제대로 설계하면 멀티에이전트가 해법이 되지만, 병합 설계가 어긋나면 단일 에이전트보다 오히려 더 많은 충돌 표면(conflict surface)이 생긴다.
flowchart LR subgraph 서브에이전트A["서브에이전트 A<br/>(컨텍스트: 재무 데이터)"] A1["결론: 투자 적합"] end subgraph 서브에이전트B["서브에이전트 B<br/>(컨텍스트: 리스크 데이터)"] B1["결론: 투자 부적합"] end subgraph 서브에이전트C["서브에이전트 C<br/>(컨텍스트: 시장 동향)"] C1["결론: 6개월 후 재평가"] end A1 --> 오케스트레이터 B1 --> 오케스트레이터 C1 --> 오케스트레이터 오케스트레이터["오케스트레이터<br/>세 결론이 하나의<br/>컨텍스트에 공존"] 오케스트레이터 --> 충돌["충돌 발생<br/>어느 결론을<br/>따를 것인가?"] style 충돌 fill:#ff6b6b,color:#fff
2-3. 반복 계획-실행 사이클에서 Contextual Drag 발현
에이전트는 Plan → Act → Observe → Re-plan 사이클을 반복하며 작동한다. 이 사이클에서 실패한 시도(failed attempt)가 컨텍스트에 남아 있으면 다음 시도에 구조적 편향이 생긴다.
Cheng, Zhu, Zhao, Arora(2026, arXiv:2602.04288)는 이 현상을 컨텍스트 드래그(Contextual Drag)로 명명하고 정량화했다.
“subsequent reasoning trajectories inherit structurally similar error patterns from the context.”
트리 편집 거리(tree edit distance) 분석으로 11개 모델 × 8개 추론 태스크에서 10~20% 성능 하락을 확인했다. 가장 심각한 함의는 이렇다.
“Iterative self-refinement in models with severe contextual drag can collapse into self-deterioration.”
자기 개선(self-refinement) 루프는 에이전트 설계의 기본 전제인데, 컨텍스트 드래그가 있으면 그 전제 자체가 역효과를 낸다. 외부 피드백도, 자기 검증도, 파인튜닝도, 컨텍스트 노이즈 제거도 이 효과를 온전히 상쇄하지 못했다. 논문은 이를 “persistent failure mode in current reasoning architectures”로 규정한다.
에이전트가 특히 취약한 까닭은 분명하다. 태스크를 끝낼 때까지 수십 번의 계획-실행 사이클을 반복하고, 그 흔적이 사이클마다 컨텍스트에 쌓이기 때문이다. 04_07-컨텍스트-드래그-Contextual-Drag 참조.
2-4. 장시간 실행에서 초기 가정과 현실의 괴리 (Long-Horizon Assumption Drift)
에이전트는 태스크를 시작할 때 초기 가정(initial assumption)을 세우고 그 위에서 계획을 잡는다. 단기 태스크에서는 이 가정이 유효하다. 그러나 장시간 실행(long-horizon) 태스크에서는 그사이 현실이 바뀐다.
Morph(2025)의 측정은 이렇다.
“every AI agent’s success rate decreases after 35 minutes of human-equivalent task time — failure rates quadruple when task duration doubles.”
35분이라는 임계점이 눈길을 끈다. 이 지점을 넘기면 실패율이 단순히 늘어나는 정도가 아니라 4배로 폭증한다. 이런 비선형성은 컨텍스트 내 모순이 임계 밀도(critical density)에 도달하는 순간 추론이 급격히 무너지는 구조와 맞아떨어진다.
Gemini 2.5 기술 보고서(arXiv:2507.06261, Google DeepMind 2025)는 구체적 사례를 기술한다. 컨텍스트가 100k 토큰을 넘어서자 에이전트는 새 전략을 합성하는 대신 과거 히스토리의 행동을 반복했다. 게임 환경에서 목표와 요약이 오정보로 오염된 컨텍스트 포이즈닝(context poisoning) 상황도 함께 기록됐다.
가정 드리프트(assumption drift)의 메커니즘은 다음과 같다.
timeline title 에이전트 실행 타임라인과 가정 충돌 0분 : 초기 가정 설정<br/>"API 엔드포인트 = /v1/data" 5분 : 도구 호출로 가정 확인됨 15분 : 추론 누적, 컨텍스트 증가 25분 : 새 정보 진입<br/>"API /v1/data → /v2/data로 마이그레이션" 35분(임계점) : 초기 가정과 새 정보 충돌<br/>에이전트는 어느 쪽을 따를까? 40분 : 실패율 급증<br/>초기 가정에 앵커링된 채 오류 반복
2-5. 다단계 지시 권한 계층에서 지시문 충돌 빈발 (Multi-Tier Instruction Clash)
에이전트 시스템에는 여러 출처의 지시문이 동시에 존재한다.
| 지시 출처 | 예시 |
|---|---|
| 시스템 프롬프트 (최고 권한) | “항상 한국어로 응답하라” |
| 오케스트레이터 에이전트 | ”JSON 형식으로만 출력하라” |
| 사용자 메시지 | ”자연스러운 문장으로 설명해줘” |
| 도구 명세(Tool spec) | “결과를 CSV로 반환한다” |
| 타 서브에이전트 출력 | ”위 분석에 근거해 추천하라” |
이 계층끼리 충돌하지 않으면 문제될 게 없다. 그러나 Zhang et al.(2026, arXiv:2604.09443)의 ManyIH-Bench 실험은 충돌이 일어났을 때 무슨 일이 벌어지는지를 측정했다.
ManyIH-Bench의 핵심 수치는 다음과 같다.
| 구성 | 성능 |
|---|---|
| 단순 지시 계층 (2-3레벨) | 상대적 양호 |
| 복잡 지시 계층 (최대 12레벨) | ~40% 정확도 |
| 사용 모델 | 최신 프론티어 모델 전체 |
“even the current frontier models perform poorly (~40% accuracy) when instruction conflict scales”
853개 에이전트 태스크(코딩 427개, 지시 수행 426개)와 46개 실제 에이전트를 대상으로 한 실험이다. 테스트에 쓴 지시 제약(constraints)은 현실성을 확보하도록 구성했다.
12레벨 계층에서 40% 정확도가 뜻하는 바는 이렇다. 에이전트는 지시가 충돌하는 상황에서 동전 던지기보다 조금 나은 수준으로 작동한다. 에이전트 배포의 안전성과 신뢰성을 정면으로 위협하는 결과다.
3. 5가지 경로의 상호 강화 구조
다섯 가지 취약 경로는 따로따로 작동하지 않는다. 서로를 강화하는 복합 메커니즘이다.
flowchart TD T1["①도구 결과 누적<br/>(Inter-Source Clash)"] T2["②서브에이전트 병합<br/>(Subagent Output Clash)"] T3["③Contextual Drag<br/>(오류 구조 반복)"] T4["④초기 가정 드리프트<br/>(Long-Horizon Clash)"] T5["⑤지시문 계층 충돌<br/>(Instruction Clash)"] T1 -->|충돌 데이터가 컨텍스트에 축적| T3 T2 -->|서로 다른 전제의 결론이 공존| T3 T3 -->|오류 반복이 초기 가정을 강화| T4 T4 -->|현실과 괴리된 가정이 지시 해석 왜곡| T5 T5 -->|충돌 지시를 따르다 새 오류 시도 생성| T3 T3 --> 붕괴["추론 붕괴<br/>(Reasoning Collapse)"] T4 --> 붕괴 T5 --> 붕괴 style 붕괴 fill:#cc0000,color:#fff style T3 fill:#ff8c00,color:#fff
가장 위험한 조합은 Contextual Drag(③) 위에서 장시간 실행(④)을 이어가는 에이전트에 다단계 지시 충돌(⑤)이 겹치는 경우다. 세 요인이 맞물리면 오류가 구조적으로 재생산되고, 에이전트는 컨텍스트가 가리키는 방향으로 계속 달려간다.
4. 실증 수치 총람
| 연구 | 조건 | 핵심 수치 |
|---|---|---|
| Zhang et al. 2026 (ManyIH-Bench) | 12레벨 지시 계층, 최신 프론티어 모델 | ~40% 정확도 |
| Cheng et al. 2026 (Contextual Drag) | 11모델 × 8추론 태스크 | 10–20% 성능 하락 |
| Morph 2025 (context-rot) | 에이전트 실행 시간 2배 | 실패율 4배 |
| Morph 2025 (context-rot) | 35분 임계점 초과 | 성공률 급락 시작 |
| Morph 2025 (Anthropic 멀티에이전트) | Opus 4 오케스트레이터 + Sonnet 4 서브에이전트 | 단일 에이전트 대비 90.2% 향상 |
| Gemini 2.5 보고 (arXiv:2507.06261) | 100k 토큰 초과 시 | 과거 행동 반복, 전략 합성 실패 |
| Morph 2025 (위치 편향, Chroma 인용) | 관련 문서가 위치 5–15에 있을 때 vs. 위치 1/20 | 30%+ 정확도 하락 |
5. 완화 전략 — 에이전트 관점
5-1. 효과가 확인된 전략
컨텍스트 분리(Context Isolation) — 가장 유효
서브에이전트에 태스크를 나눠줄 때 각 서브에이전트의 컨텍스트를 의도적으로 최소화하고 독립적으로 유지한다. 병합할 때는 원시 히스토리가 아니라 구조화된 요약만 오케스트레이터 컨텍스트에 넘긴다. Morph의 90.2% 향상 사례가 이 원칙에서 나온 결과다.
지시 계층 명시화(Instruction Hierarchy Clarification)
시스템 프롬프트에 지시가 충돌할 때의 우선순위를 명시한다. Zheng et al.(2025, arXiv:2511.04694)의 강화학습 기반 VerIH 접근법은 지시 계층 해소를 추론 과제로 재정의해, IHEval 충돌 설정에서 약 20% 성능 향상과 프롬프트 인젝션 공격 성공률 최대 20% 감소를 달성했다. 06_해결전략_멀티에이전트 참조.
컨텍스트 프루닝(Context Pruning)
장시간 실행 에이전트에서는 타임스탬프가 오래된 정보나 현재 단계와 무관한 도구 출력을 능동적으로 걷어낸다. 35분 임계점 전에 컨텍스트를 정리하는 루틴을 끼워 넣으면 충돌 밀도를 눌러둘 수 있다.
오류 시도 명시적 폐기(Failed Attempt Eviction)
Contextual Drag를 막는 가장 직접적인 방법이다. 실패한 계획이나 코드, 추론 블록을 컨텍스트에서 아예 들어내거나, 후속 단계에서 무시하도록 메타 지시를 넣는다. 다만 지금 대부분의 에이전트 프레임워크는 이 자동화를 아직 구현하지 않았다.
교차세션 검토(Cross-Context Review, CCR)
에이전트의 최종 출력을 히스토리 없는 새 컨텍스트에서 다시 본다. Song(2026, arXiv:2603.12123)에서 CCR의 F1은 28.6%로 동일 세션의 24.6%를 웃돈다. 컨텍스트 분리 그 자체가 이점을 만든다. 04_08-교차세션-검토-전략 참조.
5-2. 주의해야 할 전략
자기 개선 루프(Self-Refinement Loop): Contextual Drag가 심한 컨텍스트에서는 오히려 역효과를 낸다. 루프를 걸기 전에 컨텍스트 상태부터 점검해야 한다.
더 많은 도구 병렬 호출: Berkeley Function-Calling Leaderboard에서 도구 수가 늘수록 성능이 일관되게 떨어졌다. 도구 로드아웃(tool loadout)을 태스크에 꼭 필요한 최소한으로 묶어야 한다.
더 큰 컨텍스트 윈도우(1M 토큰): Morph(2025)의 결론은 “context engineering(not capacity) solves the problem”이다. 윈도우를 키우면 충돌 기회만 늘 뿐 해법이 되지 못한다.
6. 멀티에이전트가 해결책이 될 수 있는 조건
에이전트 취약성을 다룰 때 한 가지 역설이 있다. 멀티에이전트 아키텍처가 문제의 원인이자 해결책이라는 점이다.
원인으로 보면, 서브에이전트 출력이 오케스트레이터 컨텍스트에서 충돌한다(2-2절). 에이전트가 많아질수록 충돌 표면도 넓어진다.
해결책으로 보면, 역할 분리(role separation)와 컨텍스트 분리(context isolation)를 제대로 설계할 경우 각 서브에이전트가 다루는 컨텍스트의 크기와 복잡도가 줄어 충돌 밀도가 낮아진다. Morph(2025)의 90.2% 향상 사례가 이를 보여준다.
해결책이 되려면 다음 조건이 필요하다.
- 서브에이전트끼리 컨텍스트를 공유하지 않는다(독립 스레드).
- 오케스트레이터에는 구조화된 결론만 병합한다(원시 히스토리 제외).
- 지시 계층을 사전에 명시하고 충돌 해소 규칙을 함께 둔다.
- 에이전트 실행 시간을 35분 임계점 안으로 단계 분할한다.
이 조건이 채워지지 않으면 멀티에이전트는 문제를 푸는 대신 충돌 표면을 기하급수적으로 늘리는 역효과를 낸다.
7. 미해결 질문 및 논쟁점
Q1. 추론 모델(reasoning model)은 지시 계층 충돌에 강한가?
ManyIH-Bench는 “최신 프론티어 모델 전체”를 테스트했고 모두 약 40%에 그쳤다. o1, o3 계열이 포함됐는지는 논문에서 따로 확인해야 한다. 다만 04_02-멀티턴-성능-하락-실증에서 o3도 단일턴 98.1%에서 멀티턴 64.1%로 떨어진 선례를 보면, 면역을 주장하기에는 이르다.
Q2. 35분 임계점은 도메인과 무관한가?
Morph(2025)의 수치는 코딩 태스크 위주로 측정한 것으로 보인다. 연구, 분석, 창작 같은 다른 도메인에서도 임계점이 같은지는 추가 실증이 필요하다.
Q3. 컨텍스트 분리와 병렬 처리는 트레이드오프인가?
컨텍스트를 완전히 분리하면 충돌은 줄지만, 서브에이전트들이 서로의 결과를 참조하지 못해 중복 작업이 생긴다. 최적의 분리 수준은 태스크 구조에 따라 달라지며 아직 일반론이 없다.
Q4. 지시 계층 RL 훈련(Zheng et al. 2025)은 12레벨 계층에서도 효과적인가?
VerIH는 약 20% 개선을 달성했으나, ManyIH-Bench의 12레벨 충돌에서는 여전히 약 40% 정확도에 머문다. RL 훈련이 충돌 계층이 깊어지는 만큼 선형으로 대응하는지는 확인되지 않았다.
Q5. 에이전트의 기억(memory) 모듈은 충돌을 줄이는가?
외부 메모리(벡터DB, 그래프DB)를 쓰면 컨텍스트 안의 중복·모순 정보를 줄일 수 있다. 그러나 메모리 자체에 모순이 들어 있으면 오래된 충돌을 영구화하는 역효과가 난다. 이 문제를 체계적으로 다룬 연구는 아직 없다.
8. 강의 설계 노트 (AI 전문강사용)
핵심 메시지: “에이전트는 더 강력하지만, 바로 그 강력함 때문에 컨텍스트 충돌에 더 취약하다. 성능과 취약성은 동전의 양면이다.”
도입 훅: 35분 임계점과 실패율 4배 수치로 연다. “에이전트에게 35분은 하나의 장벽이다. 이 장벽은 어디서 오는가?”
핵심 프레임: 다섯 가지 경로를 ‘에이전트 활동의 부산물’로 제시한다. 에이전트가 나빠서가 아니라, 에이전트의 본질적 작동 방식이 충돌을 빚는 구조임을 강조한다.
반직관 포인트
- 멀티에이전트는 해결책이면서 동시에 새로운 문제의 원인이다.
- 자기 개선 루프는 컨텍스트 드래그 앞에서 역효과를 낸다.
- 1M 토큰 윈도우는 충돌 기회를 늘린다.
체크리스트 실습: 수강생이 자기 에이전트 설계를 다섯 가지 취약 경로 기준으로 점검하는 워크시트를 제공한다.
참고문헌
- Many-Tier Instruction Hierarchy in LLM Agents (ManyIH-Bench) — Zhang, Jingyu et al., 2026, arXiv
- Gemini 2.5: Pushing the Frontier with Advanced Reasoning, Multimodality, Long Context, and Next Generation Agentic Capabilities — Comanici, Gheorghe et al. (Google DeepMind), 2025, arXiv
- Context Rot: How Long Contexts Degrade AI Performance — Morph, 2025, morphllm.com
- Contextual Drag: How Errors in the Context Affect LLM Reasoning — Cheng, Yun; Zhu, Xingyu; Zhao, Haoyu; Arora, Sanjeev, 2026, arXiv
- VerIH: Verifying Instruction Hierarchy via Reinforcement Learning — Zheng et al., 2025, arXiv (보강 출처)
- MACR: Multi-Agent Conflict Resolution in RAG — Peng et al., 2026, arXiv (보강 출처)