mksglu/context-mode — Context window optimization for AI coding agents. Sandboxes tool output (98% reduction), persists session memory, and enforces routing across 17 platforms via MCP + hooks.
AI 코딩 에이전트의 컨텍스트 절약 도구 Context Mode — 도구 출력 샌드박싱과 세션 복원
Context Mode는 MCP 도구의 대량 출력을 샌드박스에서 처리하고, 필요한 결과만 모델 컨텍스트에 전달하는 MCP 서버입니다. SQLite와 FTS5로 작업 기록을 저장해 대화 압축 뒤에도 세션을 복원하며, 17개 플랫폼에서 MCP와 훅을 활용한 도구 라우팅을 지원합니다.
- 주제
에디터 노트
컨텍스트 절약의 핵심은 데이터를 덜 읽는 게 아니라 LLM을 데이터 처리기로 쓰지 않는 것입니다. Context Mode는 MCP 도구 출력을 샌드박스에서 처리해 315KB를 5.4KB로 줄이고, 세션 기록은 SQLite+FTS5에 넣어 압축 뒤에도 BM25로 필요한 것만 복원합니다. 파일 50개를 직접 읽는 대신 스크립트로 계산한 결과만 가져옵니다. 다만 98%는 KB 기준이라 토큰 절감과 다르다는 HN 지적이 있었고, 라이선스도 HN 당시 MIT에서 ELv2로 바뀌었습니다. 답변 문체를 강제하지 않는 선택은 현명해 보입니다.
AI 요약
AI 코딩 에이전트는 MCP 도구가 반환한 원시 데이터를 컨텍스트 창에 그대로 쌓으면서 작업 공간을 빠르게 소모합니다. 프로젝트 설명에 따르면 Playwright 스냅샷 하나가 56KB, GitHub 이슈 20개가 59KB, 접근 로그 하나가 45KB에 이릅니다. 대화가 압축되면 편집 중인 파일이나 진행 중인 작업, 마지막 사용자 요청을 놓치는 문제도 생깁니다. Context Mode는 도구 출력 절약, 세션 연속성, 분석 작업의 코드 실행, 플랫폼별 라우팅을 한데 묶은 MCP 서버입니다.
도구 출력을 샌드박스에서 처리합니다
Context Mode의 샌드박스 도구는 별도 프로세스에서 코드를 실행하고 표준 출력(stdout)만 대화에 전달합니다. 원본 로그나 API 응답, 파일 내용은 그대로 모델 컨텍스트에 들어가지 않습니다. 프로젝트는 315KB 데이터를 5.4KB로 줄인 사례를 제시하며, 전체적으로 최대 98% 절감을 내세웁니다. 도구별 예시로는 ctx_execute가 56KB를 299바이트로, ctx_execute_file이 45KB를 155바이트로 줄입니다.
분석이 필요할 때는 모델이 데이터를 직접 읽고 계산하는 대신 스크립트를 작성합니다. 예를 들어 50개 파일에서 함수 수를 세려고 파일 전체를 컨텍스트에 넣지 않고, 스크립트로 계산한 결과만 출력합니다. README는 47번의 Read() 호출로 700KB를 읽던 작업을 ctx_execute() 한 번으로 3.6KB에 처리하는 예를 듭니다. JavaScript, TypeScript, Python, Shell, Ruby, Go, Rust, PHP, Perl, R, Elixir, C# 등 12개 런타임을 지원하며, Bun을 감지하면 JavaScript와 TypeScript 실행을 맡깁니다. 인증 정보를 사용하는 gh, aws, gcloud, kubectl, docker 같은 CLI도 환경 변수와 설정 경로를 물려받습니다.
출력이 5KB를 넘고 검색 의도가 지정되면 전체 결과를 지식 베이스에 색인하고, 의도와 맞는 부분만 검색해 반환합니다. ctx_batch_execute는 여러 명령과 검색어를 한 번에 처리하며, ctx_index와 ctx_fetch_and_index는 파일이나 URL 내용을 저장소에 색인합니다.
FTS5 검색으로 필요한 세션 기록을 복원합니다
파일 편집, Git 작업, 작업 항목, 오류, 사용자 결정 등 세션 이벤트를 프로젝트별 SQLite 데이터베이스에 기록합니다. 대화 압축 때 이 기록을 통째로 컨텍스트에 다시 넣지는 않습니다. FTS5(Full-Text Search 5)에 색인한 뒤 BM25 순위로 관련 이벤트를 찾습니다. 제목과 헤딩은 BM25 점수 계산에서 5배 가중치를 받습니다. Porter 형태소 분석과 부분 문자열 검색용 trigram 검색 결과를 Reciprocal Rank Fusion(RRF)으로 합치고, 오타 교정과 검색어 근접도에 따른 재정렬도 적용합니다.
압축 직전에는 이벤트에서 우선순위가 높은 정보를 뽑아 최대 2KB의 스냅샷을 만듭니다. 활성 파일, 미완료 작업, 프로젝트 규칙, 사용자 결정 같은 항목을 먼저 보존하고, 공간이 부족하면 세션 의도나 MCP 호출 횟수 같은 낮은 우선순위 정보를 제외합니다. 세션 시작 단계에서는 스냅샷을 복원하고, 관련 이벤트를 다시 검색할 수 있도록 색인합니다. 마지막 요청, 작업 진행 상태, 수정한 파일, 해결되지 않은 오류, 제약 조건, Git 작업 등을 담은 Session Guide도 제공합니다.
색인한 URL은 기본 24시간 동안 캐시합니다. 캐시가 유효하면 다시 가져오지 않고 캐시 안내만 반환하며, 만료되면 새로 가져옵니다. ttl: 0이나 force: true로 캐시를 건너뛸 수 있고, 14일이 지난 데이터베이스와 출처는 시작 시 정리합니다. 세션 저장과 검색 방식은 플랫폼마다 훅 지원 수준이 달라 차이가 있습니다. Claude Code, Gemini CLI, VS Code Copilot, JetBrains Copilot, OpenCode, KiloCode 등은 압축 전 기록과 복원 기능을 제공합니다. Cursor는 세션 시작 훅이 검증 단계에서 거부돼 압축 후 복원은 지원하지 않습니다. Antigravity IDE와 Zed는 훅이 없어 세션 추적 대신 MCP 도구와 규칙 파일을 사용합니다.
17개 플랫폼에서 도구 라우팅을 지원합니다
Claude Code, Gemini CLI, GitHub Copilot CLI, Cursor, OpenCode, Codex CLI, Kiro, Zed 등 여러 코딩 에이전트와 IDE에 맞춰 MCP 서버와 훅을 제공합니다. 훅을 지원하는 환경에서는 도구 호출 전후에 실행을 가로채거나 이벤트를 기록하고, 세션 시작 시 라우팅 지침을 넣습니다. 훅이 없는 환경은 AGENTS.md나 GEMINI.md 같은 규칙 파일을 복사해 모델에 사용할 도구를 안내합니다. 이 방식은 프로그램으로 호출을 차단하는 훅보다 준수 수준이 낮다고 문서는 설명합니다. Antigravity IDE와 Zed의 수동 라우팅 준수율은 약 60%로 제시합니다.
설치 방식은 플랫폼마다 다릅니다. Claude Code는 플러그인 마켓플레이스에서 설치하면 훅과 도구가 등록됩니다. OpenCode와 KiloCode는 TypeScript 플러그인을 프로세스 안에서 실행해 별도의 MCP 자식 프로세스를 띄우지 않습니다. 일부 플랫폼은 MCP 도구만 설치할 수 있지만, 자동 라우팅은 제공하지 않습니다. Codex CLI도 MCP 설치만으로는 훅이 동작하지 않으며, 기능 플래그 활성화와 플러그인 훅 승인 여부를 따로 확인해야 합니다.
프로젝트는 최종 답변의 문체를 강제하지 않습니다. 데이터 전달 경로를 정리하는 데 초점을 두며, 답변의 간결성이나 형식은 모델 설정이나 사용자가 관리합니다. 라이선스나 성능 비교에 관한 정보는 제공된 설명에 포함되지 않습니다.
원문: GitHub / 번역·요약: Trawling