Codex는 Compaction을 어떻게 다르게 풀었나 — 암호화 요약과 세션 넘기기
Claude Code의 'Compacting conversation...' 문제를 Codex는 암호화 요약과 세션 핸드오버 패턴으로 해결했습니다. 맥락 관리 구조를 뜯어봅니다.
핵심 요약
Claude Code의 'Compacting conversation...' 문제를 Codex는 암호화 요약과 세션 핸드오버 패턴으로 해결했습니다. 맥락 관리 구조를 뜯어봅니다.
Claude Code를 오래 쓰다 보면 “Compacting conversation…”이 뜨는 순간이 옵니다. 그 뒤부터 답변이 이상해지기 시작하고, 대기 시간까지 급격히 늘어납니다. 200K 토큰이라는 맥락 범위가 생각보다 금방 차기 때문입니다.
주위에서 OpenAI Codex가 이 문제를 꽤 영리하게 풀었다는 이야기가 계속 돌아서, 공개된 분석 자료를 하나하나 뜯어봤습니다.
요약해도 까먹는 건 구조적 한계다
대화가 길어지면 AI가 앞부분을 잊어버리는 건 어쩔 수 없는 구조적 한계입니다. Context window는 200K 토큰이 상한인데, 코딩 작업 한 세션이면 쉽게 넘어갑니다. 요약을 해도 원본 대화가 날아가니까 정확도가 떨어질 수밖에 없습니다.
실제로 compaction 이후 “아까 말한 그 함수”를 물어보면 엉뚱한 답이 돌아오는 경험을 수십 번 했습니다.
- Claude Code 기본 맥락 범위 200K 토큰 — 대규모 리팩토링 1회면 소진
- 요약 후 원본 삭제 → 세부 맥락 유실 → 답변 품질 하락
- 특히 도구 호출 결과(tool results)가 요약에서 뭉개지면 치명적
Codex의 Compaction은 “암호화된 요약본”이었다
크래프톤 이강욱 CAIO님이 프롬프트 인젝션 2번으로 Codex 내부 파이프라인을 역추적한 결과가 흥미롭습니다.
Codex 모델용 compact() API를 호출하면 서버에서 별도 LLM이 대화를 요약하고, 그 결과를 AES 암호화해서 돌려줍니다. 다음 턴에서 이 암호화 덩어리를 복호화한 뒤 “이전 대화 요약입니다”라는 핸드오프 프롬프트를 앞에 붙여 모델에 전달하는 구조였습니다.
- 오픈소스 Codex CLI의 비-codex 모델용 compaction 프롬프트와 거의 동일한 내용
- 암호화하는 이유는 아직 불명확 — 도구 호출 복원 정보가 추가로 들어 있을 가능성
- Python 35줄이면 재현 가능 (이강욱 CAIO님 스크립트 공개)
- OpenAI 공식 API에서
compact_threshold설정으로 서버 사이드 자동 compaction도 지원
진짜 차이는 세션을 넘기는 방식에서 갈린다
compaction 자체보다 더 흥미로운 건 세션 간 맥락 전달입니다. 한 개발자가 만든 자동화가 인상적이었는데, 이걸 ‘세션 넘기기(hand-over)’ 패턴이라고 부릅니다.
compaction 직전에 쓰기 도구를 차단하고, JSONL 세션 로그에서 사용자 메시지와 사고 블록만 추출합니다. 원본 대비 98% 용량이 줄어듭니다. 그 뒤 서브 에이전트 3개가 요약본의 빈 구멍(gap)을 원본 로그에서 찾아 채우고, resume-prompt.md 파일로 정리합니다.
VS Code 파일 감시가 이 파일을 감지하면 새 세션이 자동으로 열리면서 이전 맥락을 그대로 이어받습니다.
- pre-compact hook으로 compaction 전 쓰기 차단 → 불완전 상태에서 코드 수정 방지
- JSONL → MD 변환 시 사용자 메시지 + 시스템 메시지 + thinking block만 보존
- 서브 에이전트가 gap analysis 후 누락 정보를 원본에서 탐색
- 빌드 효율이 체감상 10배 올랐다는 보고
결국 관건은 세션 로그 검색과 KV 캐시다
세션 데이터가 JSONL로 쌓여 있으니, 거기서 필요한 맥락을 얼마나 정확하게 꺼내오느냐가 승부처입니다. 단순 요약이 아니라 retrieval 기반으로 과거 세션을 탐색하는 방식이 답입니다.
여기에 KV 캐시 히트율까지 고려하면, 같은 프롬프트 접두사를 재사용해서 비용과 응답 대기 시간을 동시에 줄일 수 있습니다. 직접 세션 폴더 구조를 설계해보니 session-id 기반 아카이빙이 검색 속도에 가장 큰 영향을 주었습니다. 어제 소개한 QMD를 연계하여 미리 인덱싱하는 것도 좋은 방향으로 보입니다.
- JSONL 원본 보존 → 필요 시 정밀 검색 가능
resume-prompt.md에 이전 세션 요약 + gap 분석 결과 + 수정 파일 목록 포함- KV 캐시 히트를 높이려면 시스템 프롬프트와 핸드오프 프롬프트 접두사를 고정
- 세션 아카이빙 자동화로 수십 세션 연속 작업도 맥락 유지
AI 코딩의 진짜 병목은 맥락 관리다
AI 코딩 도구의 진짜 병목은 모델 성능이 아니라 맥락 관리입니다. 요약을 잘하는 것보다, 잊어버린 것을 다시 찾아오는 구조를 설계하는 게 지금 가장 먼저 풀어야 할 문제입니다.
compaction은 필연적으로 정보를 잃습니다. 중요한 건 잃어버린 정보를 다시 꺼내올 수 있는 검색 파이프라인과, 세션 간 맥락을 끊김 없이 넘기는 핸드오버 구조를 함께 갖추는 것입니다.
이강욱 CAIO님의 원본 분석을 참고했습니다.
뉴스레터 구독하기
최신 프로젝트, 아티클, AI와 웹 개발 실험에 대한 소식을 받아보세요.