billion-context: 컨텍스트 압축 플러그인
요약
본 문서는 대규모 컨텍스트 윈도우를 필요로 하는 장기간의 코딩 에이전트 운영을 위한 'billion-context' 플러그인을 소개합니다. 이 도구는 Anthropic/OpenAI 스트림 사이에 위치하여, 소비된 대화를 증분적이고 가역적인 방식으로 압축하고 관리합니다. 이를 통해 단일 컨텍스트 윈도우로 수십억 개의 토큰을 처리할 수 있게 합니다.
핵심 포인트
- 대화 내용을 계층적으로 요약/압축하여 장기간 세션 유지 가능
- 요약은 증분적이고 가역적이어서 디테일 복원 및 prefix-cache 친화적임
- 에이전트와 모델 API 사이에 위치하는 프록시 형태로 작동함
- compress, decompress, search_context 등 4가지 컨텍스트 관리 도구 제공
컨텍스트 압축 플러그인 — billion-context가 필요한 모든 것입니다.
작은 컨텍스트 윈도우(100K로 충분) · 토큰 사용량 5배 감소 · 장기간의 단일 세션 (수십억 개의 토큰) · 높은 압축 품질
npm install -g billion-context --prefix=~/.local
캐시 상태 한눈에 확인: 건강한 세션은 a95–97%의 prefix-cache hit rate를 유지합니다. 압축 자체 비용은 ≤2%입니다. 지속적으로 낮은 수치가 관찰되면 /acp 또는 /acp-cache로 출처를 확인하세요.
(FAQ 참조); 일반적인 원인 순서: 상위 캐시 TTL 만료 · 모델 전환 · acp의 버그 (보고 요망) · 기타/알 수 없음.
QQ Group: 1056132097 (전체) 1108730198 (오픈)
모델 기반 증분 계층적 압축: 장기간 운영 코딩 에이전트를 위한 학습 불필요 다중 세대 컨텍스트 관리(English, v0.2)
📝
해당 논문은 코드베이스의 일부로 MIT 라이선스 하에 오픈 소스로 공개되었습니다 (paper/). 살아있는 문서이며, 누구나 편집할 수 있고 개선 사항은 풀 리퀘스트(pull request)를 통해 환영합니다.
생산 규모의 종단 연구: 4.5개월 동안 세 대의 호스트에서 총 174,327개의 모델 호출, 18.76B 누적 입력 토큰량 (~모든 호스트에 걸쳐 24.7B), 204,800 토큰 모델에서 창(window) 위반 없음, 8,584–12,049회 호출의 마라톤 세션.
billion-context
어떤 에이전트와 그 모델 API 사이에 위치하여 Anthropic/OpenAI 스트림을 acp-kernel 압축으로 재작성합니다. 모델은 하드 트렁케이션 제한이 아니라, 언제 그리고 무엇을 고충실도 요약(high-fidelity summaries)으로 압축할지 결정합니다.
긴 코딩 세션은 컨텍스트를 폭발시킵니다. 각 제공업체는 토큰당 비용을 부과하며, 컨텍스트 윈도우를 넘어서면 세션이 저하되거나 종료됩니다. billion-context는 소비된 대화를 계층적 요약으로 압축하여 하루 동안 단일 세션을 실행할 수 있게 하며, 하나의 컨텍스트 윈도우로 수십억 개의 토큰을 처리합니다.
호스트의 내장 요약 기능과 달리, 여기서의 압축은 증분적(incremental)이고, 가역적(reversible)이며, prefix-cache 친화적입니다: 요약은 작은 범위로 작성되어 필요할 때 디압축될 수 있으며, 캐시 접두사(prefix cache)는 온전하게 유지됩니다.
Agent (Claude Code / Codex / Cursor / Aider 등)
│ 에이전트의 기본 URL을 프록시로 지정합니다.
▼
...
프록시는 대화에 네 가지 컨텍스트 관리 도구를 주입합니다. 모델은 컨텍스트가 증가함에 따라 이 도구들을 스스로 호출하며, 프록시는 compress를 서버 측에서 실행하여 접힌 범위(folded ranges)가 복원될 때까지 기록 내에서 요약된 상태로 유지되게 합니다:
— 메시지 범위를 상세한 요약으로 접기. compress
— 정확한 세부 정보가 다시 필요할 때 압축된 범위를 복원하기. decompress
— 압축된 요약 및 보이는 메시지에 대한 키워드 검색. search_context
— 컨텍스트 사용 개요와 여전히 압축 가능한 범위. acp_status
클라이언트에 따라 선택하세요:
| 클라이언트 | 용도 |
|---|---|
| pi | billion-context — bili pi (런처) 또는 bili plugin install pi (네이티브); 독립형 billion-context-pi는 사용 가능 — 세부 정보: CLIENTS.md |
| opencode (1.x / 2.x) | billion-context — bili opencode (런처) 또는 bili plugin install opencode (네이티브); 독립형 opencode-acp는 1.x에서 사용 가능 — 전체 가이드: OpenCode |
| omp | bili omp를 통한 billion-context (내장 플러그인) 또는 bili plugin install omp (자체 생성 네이티브 플러그인, 런처 없음) |
| dsh | bili dsh (런처 — --patch를 통한 전체 네이티브 플러그인) 또는 bili plugin install dsh ≡ dsh plugin --profile <name> add billion-context (통합된 경로) — 세부 정보: CLIENTS.md |
| kimi | bili plugin install kimi (자체 생성 네이티브, Kimi Code ≥ 2.0.0) 또는 bili kimi (cert-MITM) 또는 /bili/ 접두사 — 세부 정보: CLIENTS.md |
| hermes | bili plugin install hermes (자체 생성 네이티브, Python 플러그인 #958) 또는 bili hermes (cert-MITM) |
| zcode (Z.ai / bigmodel coding plan) | bili plugin install zcode (자체 생성 네이티브, #1145) 또는 GUI의 Settings → Network를 통한 cert-MITM 또는 /bili/ 접두사 — 세부 정보: CLIENTS.md |
| claude | bili claude (런처) 또는 bili plugin install claude (네이티브 자세, #964 — 관리 설정 블록 + 세션 소유 프록시; 아래 참고 사항 참조) |
| codex |
bili codex (런처 — 완전한 제로 설정 자세) 또는 bili plugin install codex (MCP-shell 도구 동반: 먼저 bili를 시작해야 함 — 셸은 절대 프록시를 생성하거나 codex 자체 트래픽을 라우팅하지 않음) — 세부 정보: CLIENTS.md | jcode | billion-context는 bili jcode (cert-MITM) 또는 /bili/ 접두사를 통해 사용 — 네이티브 모드 없음 (컴파일된 Rust 바이너리, 플러그인 연결점 없음, #962) | gemini (Gemini CLI) | bili gemini (런처, GOOGLE_GEMINI_BASE_URL /bili/ 리라이트) 또는 /bili/ 접두사 — 런처 전용 (in-loop 도구 연결점 없음, #1043) | iflow (iFlow CLI) | bili iflow (런처, IFLOW_BASE_URL /bili/ 리라이트) 또는 /bili/ 접두사 | qwen (Qwen Code) | bili qwen (런처, cert-MITM) 또는 /bili/ 접두사 | antigravity (Antigravity CLI / agy, Google) | bili antigravity (런처, CLOUD_CODE_URL의 cloudcode-pa.googleapis.com을 /bili/로 리라이트) 또는 /bili/ 접두사 — 플러그인 연결점 없음 (폐쇄된 Go 언어 서버; 사용자 플러그인 표면은 추가 전용, #2115) — 세부 정보: CLIENTS.md | mcode (MiniMax Code) | billion-context는 bili mcode (cert-MITM) 또는 /bili/ 접두사를 통해 사용 — 네이티브 모드 없음 (이벤트 후크만, 모델 요청 연결점 없음, #1050) | aider | billion-context는 bili aider (cert-MITM) 또는 /bili/ 접두사를 통해 사용 — 네이티브 모드 없음 (셸 명령 전용 후크, 도구 주입 연결점 없음, #1048) | copilot (GitHub Copilot CLI) | bili copilot (런처, cert-MITM) — 폐쇄된 Go 바이너리, 플러그인 연결점 없음 (#1049) | amp (Amp CLI) | bili amp (런처, cert-MITM) — 폐쇄된 Go 바이너리, 플러그인 연결점 없음 (#1049) | goose (Goose CLI) | bili goose (런처) — rustls가 CA 파일을 신뢰하지 않으므로 cert-MITM 불가: openai/anthropic은 OPENAI_HOST /ANTHROPIC_HOST를 통해, 사용자 지정 제공업체는 재생성된 GOOSE_PATH_ROOT 오버레이를 통해 (#1049) | everything else (컨텍스트 후크 없음) | billion-context — bili <client> (런처, 선호됨) 또는 /bili/ 접두사 | 네이티브 모드 대 독립형 확장. 호스트 네이티브 플러그인 (bili plugin install …)과 독립형 인프로세스 확장 (billion-context-pi)
, opencode-acp)는 **상호 배타적(mutually exclusive)**입니다. 둘 다 활성화되면 이중 압축이 발생합니다. 설치 프로그램은 전환을 수행합니다: 레거시 항목들(순수 이름, npm:alias, 버전 지정, 경로 형식; 배열 또는 객체 모양)을 교체하고 원래 설정을.bili-bak에 스냅샷으로 저장합니다. **프로젝트 로컬(project-local)** 설치는 건드리지 않습니다 — 이 항목은 수동으로 제거해야 합니다. 수동 설치에 대한 런타임 안전장치로, 네이티브 항목들은 BILLION_CONTEXT_NATIVE=<host>를 로드 시 동기적으로 설정하여 독립형 확장 프로그램이 액션 시간에 작동할 수 있도록 합니다. pi 측에서는 마커가 billion-context-pi**0.1.72+**를 필요로 하며, pi-네이티브 항목은 프록시가 준비되면 두 개의 pi 설정 파일을 모두 스캔하고 설치 프로그램이 본 적 없는 공존하는 레거시 항목을 발견하면 크게 경고합니다 — 이 경고만이 오래된billion-context-pi`가 조용히 이중 압축하고 있다는 유일한 가시적 신호입니다.
Linux / macOS — 사용자 수준 접두사로 설치합니다 (sudo나 npm config 변경 불필요, 그리고 bili의 자체 업데이트가 권한 오류를 일으키지 않음):
npm install -g billion-context --prefix=~/.local
bili 명령어는 ~/.local/bin에 위치하게 되며 — 대부분의 배포판에서 이미 PATH에 포함되어 있습니다; 그렇지 않다면, export PATH="$HOME/.local/bin:$PATH"를 ~/.bashrc 또는 ~/.zshrc에 추가합니다. nvm이나 Homebrew Node의 경우 기본 접두사는 이미 사용자 소유이므로 — 단순하게 npm install -g billion-context만 작동합니다. Windows의 경우 기본 접두사 (%APPDATA% pm) 역시 사용자가 쓰기 가능하므로 — 단순하게 npm install -g billion-context가 작동합니다.
이렇게 하면 bili 명령어( bili-proxy는 별칭으로 유지됨)가 설치됩니다. 오래된 루트 소유 접두사에서 EACCES 오류가 발생했나요? --prefix=~/.local로 재설치하세요 (향후 bili의 모든 npm 재설치 시 플래그를 다시 전달하십시오) — 이것이 영구적인 해결책입니다; sudo 사용을 피하세요.
사용하는 세 가지 방법 — 하나를 선택하세요:
네이티브 플러그인 (가장 네이티브):bili plugin install <client>
— bili가 클라이언트 내부의 플러그인이 됩니다; 평소처럼 클라이언트를 시작합니다.
런처 (설정 불필요):bili <client>
이 세 가지 옵션(플러그인 생명 주기, 런타임 정보 프로토콜, 주입 우선순위)의 메커니즘 상세 내용은 TECHNICAL-NOTES.md에 있습니다.
포트 관련 내용 (간략히 #1660):
bili start (수동)
소유 포트: 8787
애플리케이션이 생성하는 모든 것(네이티브 훅, 런처 레인)은 18787부터 시작하는 별도의 자체 관리 영역에 있습니다.
— 충돌 시 +1을 건너뛰고 각 레인은 자신의 드리프트(drift)를 기억하므로, zero-config 설치는 포트를 두고 당신과 싸우지 않으며, 의도적인 bili start 데몬은 기본적으로 연결됩니다. 이전 빌드가 여전히 레인의 포트에서 사용 중인 upgrade-restart가 감지되면, 이를 해제할 때까지 기다린 후 (최대 5초) 드리프트하는 대신 동일한 포트를 재바인딩하고 (#1723), 진정으로 점유된 포트만 +1을 건너뛰며 — 그 건너뜀은 이제 크게 기록됩니다.
프록시는 클라이언트 내부에 존재합니다: 한 번 설치하면, 항상 하던 대로 클라이언트를 시작하기만 하면 됩니다. 런처 명령어, 환경 변수, 고정 포트, URL 편집이 필요 없습니다. 현재 pi, omp, opencode (1.x 및 2.x), dsh, kimi, hermes, 그리고 zcode를 지원합니다:
bili plugin install pi # pi의 설정에
프로필당 드라이브(drives per profile)는 어쨌든 같은 최종 상태입니다(pnpm을 프로필에 설치하고, dsh가 자체적으로 마운트하는 번들된 패치 레이어). 동일한 채널을 통해 제거하세요. 아래의 dsh 섹션을 참고하십시오.**opencode:** 실제 설정 파일의 플러그인 목록에 베어 npm 이름을 추가합니다 —`"plugin": ["billion-context"]`
(npm 형식만 가능; git 체크아웃은 게시된 항목이 없습니다). 이 패키지는 `exports["./server"]`를 게시합니다
→`dist/agent/opencode-native.js`
따라서 opencode는 자체 Npm.add 메커니즘을 통해 이를 로드하고, 플러그인은 bili-설치 형식과 정확히 동일하게 자체적으로 실행됩니다. 또한 bili 설치 프로그램이 수행했을 두 가지 작업(동일한 설정에 `
플러그인은 bili 설치 형식과 정확히 동일하게 자체적으로 실행됩니다. 또한 bili 설치 프로그램이 수행했을 두 가지 작업(동일한 설정에 `
block would force API-key auth and drop subscription login`), 그리고 MCP 서버가 부모 환경 변수에 값을 주입할 수 없는 상황을 설명합니다.
`bili plugin install codex`는 네 개의 ACP 도구를 노출하기 위해 `~/.codex/config.toml`에 단일 `[mcp_servers.bili]` 블록을 작성하고 (command = node, args = dist/mcp.js), 세션 시작 시 셸은 프록시 환경 변수 — `BILI_MCP_PROXY`를 해석합니다. 이 값은 라이브 인스턴스 기록(어떤 레인도 프록시이거나 `bili start` 데몬)을 가리키며, 기본 사용자 영역(#1660에서 설치 시 원점 베이크를 제거함, #403)의 8787 포트를 사용합니다. 아무것도 도달할 수 없으면 →`tools/list`는 -32003 오류로 실패합니다. 따라서: 먼저 bili를 시작하거나 (`bili start` 또는 어떤 클라이언트 레인의 프록시), 압축 기능도 원한다면 직접 HTTPS_PROXY를 내보내거나, 제로-설정의 완전한 자세(full posture)를 위해 `bili codex`를 사용해야 합니다. 메커니즘: CLIENTS.md.
`claude`는 네이티브 자세(#964): 관리형 설정 블록 + `SessionStart` 훅 + MCP 셸을 가지고 있습니다. 이 훅은 자체 관리 포트 영역(#1660)을 타고 이동하며, 매 세션마다 관리되는 URL을 라이브 원점으로 재고정하여 포트 드리프트를 스스로 치유합니다. 비활성화하려면 `BILI_NATIVE_CLAUDE=0`을 사용하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending TypeScript (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기