볼트 홈: README
비교 — 4대 해결전략: Write · Select · Compress · Isolate 언제 무엇을 쓰나
한 줄 정의
LangChain(2025)의 4대 컨텍스트 엔지니어링 전략 Write(밖에 쓰기) · Select(골라 끌어오기) · Compress(짜내기) · Isolate(분리하기)를 “어떤 실패모드가 보이면 어느 전략을 꺼내는가”라는 역방향 처방의 관점에서 한 표로 묶는다. 전략끼리 겹치고 부딪히는 지점까지 함께 짚는 비교 노트다.
왜 중요한가
06 해결전략은 4전략을 각각 깊게 다루지만, 실무자는 정반대 방향으로 일한다. 전략을 먼저 고르는 게 아니라 증상(실패모드)을 먼저 본다. “응답이 자꾸 옛 사실을 우긴다(오염)”, “툴이 30개라 엉뚱한 걸 부른다(혼란)”, “100K 넘으니 답이 무뎌진다(산만)” 같은 증상에서 곧장 전략으로 건너뛴다.
게다가 4전략은 서로 독립적이지 않다. Compress를 과하게 하면 정보가 소실되어 오히려 오염·충돌을 부르고, Isolate를 과하게 하면 결정이 흩어져 또 다른 충돌을 만든다. 한 전략의 처방이 다른 실패모드의 원인이 되는 이 트레이드오프를 모르면, 약을 쓰다 새 병을 얻는다. 이 노트는 그 경계선을 정리한다.
1. 4전략 정면 비교표 — 정의·막는 실패모드·대표 기법
| 전략 | 한 줄 정의 | 막는 실패모드 | 대표 기법 | 핵심 출처 |
|---|---|---|---|---|
| Write | 컨텍스트 창 밖에 저장한다 | 소실 F1 · 과부하 F3 | 스크래치패드, todo.md 재기록, 파일시스템 외부화, Memory 선저장 | Write |
| Select | 필요한 것만 끌어온다 | 혼란 F4 · 충돌 F5 | RAG·하이브리드 검색, Tool Loadout ~20개, 최신 우선 선택 | Select |
| Compress | 필수 토큰만 남긴다 | 과부하 F3 · 산만 F8 · 비용 F7 | 계층 요약, Provence 프루닝, KV-캐시 최적화, 압축 전용 LLM | Compress |
| Isolate | 컨텍스트를 분리한다 | 혼란 F4 · 충돌 F5 · 암묵적 결정 분산 F6 | 멀티에이전트, Context Quarantine, 서브에이전트 격리 | Isolate |
주의: Isolate는 양날의 검이다. 격리로 충돌(F5)을 막을 수도 있지만, 병렬 격리가 과하면 암묵적 결정 분산(F6)이라는 새로운 충돌을 부른다. 아래 4절에서 자세히 다룬다.
2. 역방향 처방표 — 실패모드를 보면 어느 전략을 꺼내는가
실무의 진입점은 언제나 증상이다. 증상을 보고 1순위, 2순위 전략 순으로 처방한다.
| 보이는 실패모드 | 1순위 전략 | 2순위(보강) 전략 | 왜 이 조합인가 |
|---|---|---|---|
| 오염(잘못된 사실이 반복 참조) | Select | Isolate | Select로 오염 소스를 끌어오지 않고, Isolate로 오염된 컨텍스트를 격리·차단 |
| 산만(100K+ 토큰에서 무뎌짐) | Compress | Write | Compress로 토큰을 짜내고, Write로 핵심을 밖에 빼 컨텍스트 길이 자체를 줄임 |
| 혼란(불필요 정보·툴로 품질 저하) | Select | — | 관련성 필터·Tool Loadout으로 애초에 안 들이는 게 근본 처방 |
| 충돌(상충 정보로 불일치) | Isolate | Select | Isolate로 충돌 주체를 분리하고, Select로 최신·정답 정보만 우선 |
| 부패(길이 누적으로 성능 저하) | Compress | Write | Compress로 길이를 줄이고, Write로 누적분을 외부화해 컨텍스트를 짧게 유지 |
flowchart LR O["오염<br/>F2"] --> SEL1["Select"] O --> ISO1["Isolate"] D["산만<br/>F8"] --> COM1["Compress"] D --> WR1["Write"] C["혼란<br/>F4"] --> SEL2["Select"] K["충돌<br/>F5"] --> ISO2["Isolate"] K --> SEL3["Select"] R["부패<br/>F1·F3"] --> COM2["Compress"] R --> WR2["Write"]
이 표는 06_09-실패모드-전략-매핑표의 정방향(전략→기법) 매핑을 거꾸로 뒤집은 것이다. 둘을 함께 보면 양방향으로 조회할 수 있다. 5대 실패모드의 감별 자체는 09_01-감별진단-5대모드-종합비교를 참고하라.
3. 전략별 “쓰는 순간 / 안 쓰는 순간”
| 전략 | 이럴 때 꺼낸다 | 이럴 때 피한다 |
|---|---|---|
| Write | 세션을 넘겨 기억이 필요할 때, 관측값이 거대할 때, 계획을 잃으면 안 될 때 | 정보가 작고 단발성일 때(외부화 오버헤드만 늘어남) |
| Select | 지식·도구가 많아 다 못 넣을 때, 신선도가 중요할 때 | 후보가 애초에 적을 때(검색 비용·tool call 손익분기 미달) |
| Compress | 길이가 임계(약 100K)에 접근할 때, KV-캐시 비용이 클 때 | 정보 손실이 치명적인 정밀 태스크(요약이 오염·충돌 유발) |
| Isolate | 하위문제가 독립·병렬 가능할 때, 도구 로드아웃을 나눠야 할 때 | 결정이 상호의존적일 때(분산이 충돌을 부름) |
4. 전략 간 중첩·상충 — 약이 병이 되는 경계
4전략은 서로를 보강하기도 하고 서로를 무너뜨리기도 한다. 핵심 트레이드오프는 셋이다.
4-1. Compress 과잉 → 소실·오염·충돌 (가장 흔한 함정)
Compress의 본질은 “무엇을 버릴지”를 결정하는 일이고, Cognition은 이를 두고 “hard to get right”라 못 박았다. 요약이 과하면 이런 일이 벌어진다.
- 버린 토큰에 결정의 근거가 있었다면, 이후 단계가 그 결정과 충돌(F5)한다.
- 요약이 사실을 미세하게 왜곡하면, 그 요약이 반복 참조되며 오염(F2)으로 번진다.
- 중간 핵심을 날리면, 소실(F1) 자체를 Compress가 유발한다.
결국 Compress는 산만(F8)을 막으려다 오염·충돌을 새로 만들 수 있다. 처방은 이렇다. 손실이 치명적인 구간은 요약 대신 Write로 외부화해 원본을 보존하고, 압축은 도메인 특화 모델로 정밀하게 돌린다.
4-2. Isolate 과잉 → 암묵적 결정 분산 (F6)
Isolate로 병렬 서브에이전트를 띄우면, 각자 독립된 컨텍스트에서 암묵적 결정을 내린다. Cognition의 Flappy Bird 사례가 그렇다. 한 워커가 “마리오 아트 스타일”을 골랐다는 걸 다른 워커가 모르면, 결과를 합칠 때 충돌(F6)한다. Isolate가 충돌(F5)을 막으려다 다른 종류의 충돌(F6)을 빚는 역설이다. 도메인별 분기는 09_08-비교-멀티에이전트-격리-찬반에서 다룬다.
4-3. Select ↔ Compress: KV-캐시 상충
Select는 동적 관련성을 좇아 매번 다른 컨텍스트를 만들기 때문에 KV-캐시를 깬다. 이는 캐시를 고정(Append-only)하려는 Compress의 최적화와 충돌한다. 캐시 적중과 미적중은 $0.30 대 $3.00/MTok으로 10배 차이라 무시할 수 없다. 동적 관련성과 캐시 안정성을 동시에 잡는 일은 아직 미해결 과제로 남아 있다.
flowchart TD W["Write<br/>외부화"] -->|보강| C["Compress<br/>짜내기"] C -->|과잉 시| RISK1["소실·오염·충돌<br/>F1·F2·F5"] I["Isolate<br/>분리"] -->|과잉 시| RISK2["암묵적 결정 분산<br/>F6"] S["Select<br/>골라오기"] -->|상충| C2["KV-캐시 안정성<br/>F7"] RISK1 -->|처방| W2["Write로 원본 보존"] RISK2 -->|처방| SEQ["순차·전체 트레이스 공유"]
5. 전략 조합 의사결정 플로우
flowchart TD START(["어떤 증상이 보이는가"]) --> Q1{"길이·비용이<br/>문제인가"} Q1 -->|"예"| Q2{"정보 손실이<br/>치명적인가"} Q1 -->|"아니오"| Q3{"틀린 정보가<br/>섞여 있는가"} Q2 -->|"예"| WC["Write 우선<br/>원본 외부화 후<br/>최소 Compress"] Q2 -->|"아니오"| CMP["Compress 적극<br/>요약·프루닝·KV캐시"] Q3 -->|"예"| Q4{"하위문제가<br/>독립적인가"} Q3 -->|"아니오"| SEL["Select 우선<br/>관련성 필터·Tool Loadout"] Q4 -->|"예 (독립)"| ISO["Isolate<br/>격리·병렬 서브에이전트"] Q4 -->|"아니오 (의존)"| SEQ2["Isolate 자제<br/>순차+전체 트레이스 공유"]
결정의 갈림길은 두 변수다. 하나는 정보 손실 허용도로, Compress와 Write 중 무엇을 앞세울지를 가른다. 다른 하나는 하위문제 상호의존성으로, Isolate를 쓸지 말지를 가른다. 이 둘만 확정하면 4전략의 조합이 거의 자동으로 정해진다.
요약·체크리스트
- 증상부터 본다. 전략을 먼저 고르지 말고, 보이는 실패모드에서 역방향 처방표(2절)로 진입한다.
- 오염은 Select+Isolate, 산만은 Compress+Write, 혼란은 Select, 충돌은 Isolate+Select, 부패는 Compress+Write.
- Compress 과잉을 경계한다. 요약은 소실·오염·충돌을 부를 수 있으니, 손실이 치명적이면 Write로 원본을 보존한다.
- Isolate 과잉을 경계한다. 병렬 격리는 암묵적 결정 분산(F6)을 부르므로, 결정이 의존적이면 순차로 묶고 전체 트레이스를 공유한다.
- Select와 KV-캐시의 상충을 잊지 않는다. 동적 관련성은 캐시를 깬다($0.30 대 $3.00/MTok). 캐시 안정성과 저울질한다.
- 두 분기 변수, 곧 정보 손실 허용도와 하위문제 상호의존성으로 조합을 확정한다.
관련 노트
- 06 해결전략 — 4전략 통합 지형도
- 06_01-Write전략-스크래치패드-파일시스템-크로스세션
- 06_02-Select전략-RAG-하이브리드검색-ToolLoadout
- 06_03-Compress전략-요약-프루닝-KV캐시최적화
- 06_04-Isolate전략-멀티에이전트-서브에이전트-Context격리
- 06_09-실패모드-전략-매핑표 — 정방향(전략→기법) 매핑
- 09_01-감별진단-5대모드-종합비교 — 5대 실패모드 감별
- 09_08-비교-멀티에이전트-격리-찬반 — Isolate 과잉의 핵심 논쟁