볼트 홈: README
비교·감별 — 오염(Poisoning) vs 충돌(Clash)
한 줄 정의
오염(Poisoning)은 하나의 거짓·악의 정보가 컨텍스트에 박혀 신뢰된 선례로 반복 참조되며 자기강화되는 실패다. 충돌(Clash)은 서로 모순되는 둘 이상의 정보가 한 컨텍스트에 공존해 모델이 일관된 판단을 못 내리는 실패다. 둘 다 “컨텍스트 내용(WHAT)“이 문제라는 점에서 형제지만, 오염은 한 정보가 틀린 것이고 충돌은 정보들이 서로 안 맞는 것이다.
왜 중요한가
오염과 충돌은 둘 다 내용(content) 축의 실패라서 진단 현장에서 가장 자주 혼동된다. 부패의 분류표가 구분하듯, 부패는 길이(length) 축, 위치 편향은 위치(position) 축인 반면 오염과 충돌은 같은 내용 축에 있다. 그래서 “정보가 잘못됐다”는 똑같은 증상에서 출발하지만 처방은 정반대다. 오염은 틀린 정보를 제거·격리해야 하고, 충돌은 모순되는 정보 중 무엇을 우선할지 규칙을 부여해야 한다. 진단을 틀리면, 가령 충돌 상황에서 한쪽 정보를 “오염”이라 단정하고 삭제하면, 정답일 수도 있는 정보를 버리게 된다. 변별의 실익이 가장 큰 한 쌍이다.
1. 헷갈리는 이유 — 둘 다 내용 축 형제
Breunig 4분류에서 오염과 충돌은 나란히 등장한다. 두 현상 모두:
- 컨텍스트 안의 정보가 잘못됐다는 표면 증상을 공유한다.
- 길이나 위치가 아니라 무엇이 들어있는가(WHAT)가 직접 원인이다.
- 롱런 에이전트·RAG처럼 컨텍스트가 누적되는 환경에서 잘 발생한다.
그러나 결정적 차이가 하나 있다. 04_01-정의-컨텍스트충돌-4분류체계가 명시하듯 오염은 “정보 내부 모순 없음”이다. 오염된 컨텍스트는 일관성 있는 오류라 모델이 그 위에서 거리낌 없이 추론을 쌓는다. 반면 충돌은 “정보 간 직접 부정(direct negation)“이다. 두 정보가 동시에 참일 수 없는 구조라 모델이 둘 사이에서 선택을 강요받는다.
flowchart TD subgraph 오염["오염 Poisoning"] P1["거짓 정보 1개"] --> P2["신뢰된 선례로 반복 참조"] P2 --> P3["자기강화 루프<br/>내부 모순 없음 → 조용히 누적"] P3 --> P2 end subgraph 충돌["충돌 Clash"] C1["정보 A: 참 X"] --> C3{"직접 모순<br/>A와 B 양립 불가"} C2["정보 B: 참 Y"] --> C3 C3 --> C4["판단 마비<br/>길을 잃고 회복 못함"] end style P3 fill:#e74c3c,color:#fff style C3 fill:#9b59b6,color:#fff
2. 결정적 구분 질문
진단 현장에서 다음 순서로 자문하면 둘을 가른다.
-
컨텍스트 안에 “서로 부정하는” 정보 쌍이 실재하는가?
- 있다 → 충돌. (예: 도구 A가 “파일 없음”, 도구 B가 “파일 내용 반환”)
- 없고 단지 한 정보가 사실과 다를 뿐이다 → 오염.
-
모델이 거리낌 없이 일관되게 추론하는가, 아니면 갈팡질팡하는가?
- 일관되게 틀린 방향으로 밀고 나간다 → 오염(일관성 있는 오류, 자기강화).
- 두 전제 사이에서 길을 잃고 회복 못 한다 → 충돌.
-
잘못된 정보 하나를 제거하면 해결되는가?
- 그 하나만 빼면 컨텍스트가 정상화된다 → 오염.
- 어느 쪽을 빼야 할지 자체가 문제다(양쪽 다 그럴듯하다) → 충돌.
한 문장 직관
오염은 “한 정보가 틀린 것”, 충돌은 “정보들이 서로 안 맞는 것”. 오염은 내부가 일관하고, 충돌은 내부가 모순한다.
3. 나란히 비교표
| 변별 축 | 오염 (Poisoning) | 충돌 (Clash) |
|---|---|---|
| 발생 원인 | 거짓·악의·구식 정보 1건이 컨텍스트에 진입 | 서로 모순되는 정보 2건 이상이 공존 |
| 정보 내부 모순 | 없음 (일관성 있는 오류) | 있음 (직접 부정 관계) |
| 시간성 | 진입 후 시간이 갈수록 강화(스노우볼) | 모순이 공존하는 즉시 판단 마비 |
| 자기강화 여부 | 예 — 반복 참조로 어텐션 가중 ↑, “very long time to undo” | 아니오 — 누적될수록 충돌 빈도는 늘지만 개별 충돌은 강화 안 됨 |
| 모델 거동 | 틀린 방향으로 일관되게 추론 | 두 전제 사이에서 길을 잃고 회복 불가 |
| 탐지 | 어려움 — 출처 추적 부재, 컨텍스트 역추적 필요 | 상대적으로 쉬움 — 모순 쌍을 명시적으로 검출 가능 |
| 처방 | 오염원 격리·제거, 메모리 위생, 컨텍스트 리셋 | 우선순위 규칙 부여, 컨텍스트 격리, 교차세션 검토 |
핵심 비대칭은 이렇다. 오염은 “어느 정보가 틀렸는지”를 모르는 게 문제이고(탐지가 병목), 충돌은 “어느 정보를 따를지”를 모르는 게 문제다(해소 규칙이 병목).
4. 오염 → 충돌 전이 시나리오
둘은 독립적이지 않다. 오염이 충돌의 씨앗이 되는 전형 경로가 있다.
- 오염 진입: 에이전트가 환각으로 “파일 A는 존재하지 않는다”를 목표·요약에 기록한다(오염 정의의 진입 단계).
- 자기강화: 이 거짓이 자기강화 루프를 타고 여러 차례 반복 참조되며 “신뢰된 사실”로 굳는다. 이 단계까지는 컨텍스트가 내부적으로 일관하므로 순수 오염이다.
- 반증 도착: 이후 검색 도구가 “파일 A의 실제 내용”을 반환한다. 이제 컨텍스트에 “A 없음”(오염된 선례)과 “A 있음”(새 사실)이 동시에 존재하면서, 충돌 유형의 시간적 충돌·자가생성 충돌이 발생한다.
- 전이 완료: 단일 정보의 오류였던 문제가 모순 쌍의 충돌로 성격이 바뀐다. 처방도 “오염원 제거”에서 “우선순위 규칙(최신 도구 출력 우선)“으로 바뀌어야 한다.
flowchart LR A["오염 진입<br/>거짓 1건 기록"] --> B["자기강화<br/>내부 일관 → 순수 오염"] B --> C["반증 정보 도착"] C --> D["모순 쌍 공존<br/>오염된 선례 ↔ 새 사실"] D --> E["충돌로 전이<br/>처방 성격 변화"] style B fill:#e74c3c,color:#fff style E fill:#9b59b6,color:#fff
역방향도 가능하다. 충돌 상황에서 모델이 틀린 쪽을 골라 요약에 기록하면, 그 결정이 새로운 오염원이 되어 다음 사이클부터 자기강화된다. 충돌을 잘못 해소하면 오염으로 이어지는 셈이다. 둘은 멀티턴에서 서로를 먹이며 악순환할 수 있다.
5. 공존 시나리오 — 동시에 작동할 때
오염과 충돌이 한 세션에서 함께 나타나면 진단이 까다롭다. 감별의 핵심은 각 증상이 어느 메커니즘에서 왔는지 분리하는 것이다.
- 에이전트가 일관되게 불가능한 목표를 추구하는 부분 → 오염(목표 고착, 01_02-메커니즘-자기강화-루프의 Gemini 포켓몬 패턴).
- 동시에 새로 들어온 도구 출력과 그 오염된 목표가 충돌해 에이전트가 갈팡질팡하는 부분 → 충돌.
처방은 둘 다 필요하다. 오염된 선례를 격리·리셋하고(오염 처방), 살아남은 정보들 사이에 우선순위 규칙을 명시한다(충돌 처방). 한쪽만 하면 재발한다. 오염원을 안 지우면 충돌이 계속 재생성되고, 우선순위 규칙이 없으면 깨끗한 정보끼리도 다시 충돌한다.
요약·체크리스트
- 내부 모순 쌍이 실재하는가? 있으면 충돌, 없고 한 정보만 틀렸으면 오염.
- 모델이 일관되게 틀리나, 갈팡질팡하나? 일관 → 오염, 갈팡질팡 → 충돌.
- 시간성 확인: 시간 갈수록 강화되면 오염(스노우볼), 모순 공존 즉시 마비면 충돌.
- 자기강화 여부: 반복 참조로 점점 굳으면 오염. 충돌은 빈도만 늘 뿐 개별 강화 없음.
- 처방 선택: 오염=격리·제거·리셋 / 충돌=우선순위 규칙·격리·교차세션 검토.
- 전이 경계 주시: 오염에 반증이 도착하면 충돌로 전이 — 처방을 바꿔라.
- 공존 시 둘 다 처방: 오염원 제거 + 우선순위 규칙을 함께 적용해야 재발을 막는다.
관련 노트
- 01 오염 — 오염 챕터 전체
- 04 충돌 — 충돌 챕터 전체
- 01_01-정의-컨텍스트-오염 — 오염의 정의와 진입·반복·영속화 3요소
- 01_02-메커니즘-자기강화-루프 — 오염의 자기강화(내부 일관) 메커니즘
- 04_01-정의-컨텍스트충돌-4분류체계 — 충돌의 “직접 부정” 정의, 4분류 매트릭스
- 04_03-유형-분류-5종 — 시간적·출처간·지시문·파라메트릭·자가생성 충돌 5종
- 09_01-감별진단-5대모드-종합비교 — 5대 실패모드 종합 감별표