Windows (PowerShell)
March 19, 2026 · View on GitHub
⚡ ContextZip
Claude의 출력은 불필요한 노이즈로 가득하다.
ContextZip이 60-90% 압축한다. npx contextzip → 5초 (첫 실행 시 바이너리 다운로드).
설치 • Before/After • 벤치마크 • English • 한국어 • 日本語 • 中文 • Español • Português • हिन्दी • Français • Deutsch • Русский • Türkçe • Tiếng Việt
30줄 node_modules 스택트레이스 → 3줄
150줄 npm deprecated 경고 → 3줄
50줄 Docker 빌드 해시 → 1줄
ANSI 컬러, 스피너, 프로그레스 바 → 제거
⬇️ 한 줄이면 끝.
npx contextzip
Claude Code 재시작. 모든 명령어가 자동 압축된다. 설정 없음.
macOS · Linux · Windows
다른 설치 방법
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/jee599/contextzip/main/install.sh | bash
brew install jee599/tap/contextzip
# Windows (PowerShell)
npx contextzip
# Rust 개발자
cargo install --git https://github.com/jee599/contextzip
👀 직접 비교하라
💥 Node.js 에러 — 30줄 → 3줄 (92% 절감)
|
❌ Before
|
✅ After
|
📦 npm install — 150줄 → 3줄 (58-95% 절감, 경고 수에 따라 변동)
|
❌ Before
|
✅ After
|
🐳 Docker 빌드 — 50줄 → 1줄 (96% 절감)
|
❌ Before
|
✅ After
|
🐍 Python Traceback — 프레임워크 프레임 숨김 (72% 절감)
|
❌ Before
|
✅ After
|
🦀 Rust Panic — std/tokio 제거 (2-7% 절감, err 필터 기준)
|
❌ Before
|
✅ After
|
🔨 TypeScript 빌드 — 40개 에러 그룹화 (81% 절감)
|
❌ Before
|
✅ After
|
🌐 웹 페이지 — nav/footer/광고 제거 (73% 절감)
|
❌ Before (curl 출력)
|
✅ After
|
🎨 ANSI / 스피너 — 보이지 않는 노이즈 제거 (83% 절감)
|
❌ Before (raw terminal)
|
✅ After
|
🐳 Docker 실패 — 컨텍스트 보존
✗ Docker build failed at step 7/12
Step 5/12 : COPY package*.json ./ (cached ✓)
Step 6/12 : RUN npm install (cached ✓)
Step 7/12 : RUN npm run build ← FAILED
error: Module not found: 'react-dom/client'
Exit code: 1
실패 단계 + 이전 2단계 + 에러 메시지 + 종료 코드. 항상.
☕ Java / 🐹 Go 스택트레이스
Java — java.lang.reflect, sun.reflect, org.springframework, org.apache, jdk.internal 제거:
- java.lang.NullPointerException: Cannot invoke method on null
- at com.myapp.UserService.getUser(UserService.java:42)
- at com.myapp.Controller.handle(Controller.java:15)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(...)
- at org.springframework.web.servlet.FrameworkServlet.service(...)
- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(...)
+ java.lang.NullPointerException: Cannot invoke method on null
+ at com.myapp.UserService.getUser(UserService.java:42)
+ at com.myapp.Controller.handle(Controller.java:15)
+ (+ 4 framework frames hidden)
Go — runtime/, runtime.gopanic, runtime.main 제거:
- goroutine 1 [running]:
- runtime/debug.Stack()
- /usr/local/go/src/runtime/debug/stack.go:24
- runtime.gopanic({0x1234, 0x5678})
- /usr/local/go/src/runtime/panic.go:884
- main.handler()
- /app/handler.go:42 +0x1a4
- main.main()
- /app/main.go:15 +0x58
+ goroutine 1 [running]:
+ (+ 2 framework frames hidden)
+ → main.handler() /app/handler.go:42
+ → main.main() /app/main.go:15
+ (+ 1 framework frames hidden)
📊 숫자가 증명한다
102개 실전 테스트. 체리피킹 없음.
| 카테고리 | 테스트 | 평균 절감 | 🏆 최고 | 💀 최저 |
|---|---|---|---|---|
| 🐳 Docker 빌드 | 10 | 88% | 97% | 77% |
| 🎨 ANSI/스피너 | 15 | 83% | 98% | 0% |
| 💥 에러 트레이스 | 20 | 59% | 97% | -12% |
| 🔨 빌드 에러 | 15 | 56% | 90% | -10% |
| 🌐 웹 페이지 | 15 | 43% | 64% | 5% |
| 💻 CLI 명령어 | 12 | 42% | 99% | -56% |
| 📦 패키지 설치 | 15 | 39% | 99% | 2% |
가중 평균: 61% 절감 → 326K chars in, 127K chars out
Note
음수 = 출력이 늘어남. 입력이 극소량일 때 발생한다. 최저 수치를 숨기지 않고 그대로 공개한다. 전체 벤치마크 →
🏎️ 동작 원리
┌─────────────────────────────────────────────┐
│ Claude Code runs: git status │
│ ↓ │
│ Hook rewrites → contextzip git status │
│ ↓ │
│ ┌──────────────────────────────────────┐ │
│ │ [1] ANSI preprocessor strip junk │ │
│ │ [2] Command router 40+ filters │ │
│ │ [3] Error post-proc compress stack │ │
│ │ [4] SQLite tracker record savings │ │
│ └──────────────────────────────────────┘ │
│ ↓ │
│ Compressed output → Claude's context │
│ 💾 contextzip: 200 → 40 tokens (80%) │
└─────────────────────────────────────────────┘
🆚 RTK와 뭐가 다른가?
RTK (28k⭐) 기반. RTK 34개 명령어 전부 포함. 추가 기능:
| RTK | ContextZip | |
|---|---|---|
| CLI 압축 (git, test, ls) | ✅ | ✅ |
| 에러 스택트레이스 (Node/Python/Rust/Go/Java) | ❌ | ✅ |
| 웹 페이지 콘텐츠 추출 | ❌ | ✅ |
| ANSI / 스피너 / 장식 제거 | 🟡 | ✅ |
| 빌드 에러 그룹화 (tsc/eslint/cargo) | 🟡 | ✅ |
| 패키지 설치 노이즈 (npm/pip/cargo) | ❌ | ✅ |
| Docker 빌드 압축 | 🟡 | ✅ |
| 명령어별 절감량 표시 | ❌ | ✅ |
📈 모든 것을 추적한다
$ contextzip gain
📊 ContextZip Token Savings
════════════════════════════════════════
Total commands: 2,927
Tokens saved: 10.3M (89.2%)
Efficiency meter: █████████████████████░░░ 89%
$ contextzip gain --by-feature
Feature Commands Saved Avg%
cli (RTK) 2,100 6.8M 78%
error 89 1.2M 93%
web 43 0.9M 73%
build 112 0.4M 81%
pkg 34 0.3M 95%
docker 22 0.2M 85%
--graph 일별 차트 • --history 최근 명령어
🛡️ 중요한 건 절대 잃지 않는다
| 🔴 에러 메시지 | 항상 보존 |
| 📍 빌드 에러의 파일:줄번호 | 절대 제거 안 함 |
| 🔒 보안 경고 (CVE, GHSA) | 항상 유지 |
| 🐳 Docker 실패 컨텍스트 | 항상 보존 |
| ⏎ 종료 코드 | 항상 전파 |
Important
ContextZip은 확인된 노이즈만 제거한다. 확신이 없으면 원본을 그대로 통과시킨다.
🔧 명령어
# 자동 (훅이 변환 — 접두사 불필요):
git status npm install cargo test
docker build . pip install flask go test ./...
# 수동:
contextzip web https://docs.example.com # 페이지 → 콘텐츠만
contextzip err node server.js # 에러 중심 출력
# 분석:
contextzip gain # 대시보드
contextzip gain --by-feature # 필터별 통계
contextzip gain --graph # 일별 차트
contextzip gain --history # 최근 명령어
# 관리:
contextzip init --show # 설치 상태 확인
contextzip update # 셀프 업데이트
contextzip uninstall # 깨끗한 제거
🤝 기여
git clone https://github.com/jee599/contextzip.git && cd contextzip
cargo test # 1,056 tests
cargo clippy # lint
📡 텔레메트리
ContextZip은 익명 사용 통계(명령어 수, 절감률)를 수집해 도구 개선에 활용한다. 개인 정보나 명령어 내용은 전송하지 않는다.
비활성화:
export CONTEXTZIP_TELEMETRY_DISABLED=1
# 또는 ~/.config/contextzip/config.toml:
# [telemetry]
# enabled = false
📜 라이선스
MIT — RTK by rtk-ai 포크.
⚡ 노이즈는 줄이고. 코드에 집중하고. 더 빠르게 배포하고.