토큰 65% 깎는다는 농담이 게이트웨이까지 커졌다: JuliusBrussee/caveman v4.0.1의 6개 rock·Engine·proxy·CCR 심층 해부

테크부터 경제, 생활까지. 복잡한 소식을 쉽게 풀어봅니다.

한 줄 요약: JuliusBrussee/caveman은 “에이전트가 더 짧게 말하고, 덜 읽고, 가능하면 싼 모델·낮은 effort로 같은 일을 하게” 만드는 Apache-2.0 스택입니다. 밈으로 시작했지만 v4.0.1에서는 응답 스킬(Say less), 로컬 Engine+proxy(Read less), Auto 라우팅, Blocks 코드 모드, warm cache·learn, browse까지 여섯 개 rock이 한 설치로 켜집니다. Adobe Research CAVEWOMAN(arXiv 2606.24083)·JetBrains A/B·Elastic MCP 시나리오가 외부에서 효과를 재측정했고, 저장소는 docs/HONEST-NUMBERS.md에서 “언제 지는지”까지 공개합니다. 오늘은 GitHub Trending 전체 일간 4위·Go 일간 1위(별 112,644)인 이 저장소를 레이어 맵·proxy 경로·압축기 레지스트리·CCR 복구·측정 라벨까지 해부하고, 박스에서 직접 빌드한 caveman-engine으로 로그 42,399→315 토큰(ratio 0.993)·원문 바이트 복구까지 확인한 결과를 적습니다.

일반 에이전트 답변 63토큰 vs Caveman 음성 20토큰 — 같은 수정(useMemo), 군더더기만 제거
일반 에이전트 답변 63토큰 vs Caveman 음성 20토큰 — 같은 수정(useMemo), 군더더기만 제거

왜 지금 이 저장소인가

코딩 에이전트 비용의 대부분은 “똑똑한 한 줄”이 아니라 반복해서 모델에 다시 넣는 로그·JSON·테스트 출력·도구 스키마에 있다. 출력만 짧게 하라는 “Be concise”는 이미 모델이 알고 있고, Adobe 논문은 사용자 프롬프트를 캐브맨식으로 줄이면 답이 나빠진다고 본다. Caveman의 선택은 그 반대다. 사용자 프롬프트는 건드리지 않고, (1) 응답 스타일 규칙으로 군더더기를 걷고, (2) 에이전트가 읽는 컨텍스트를 타입별 압축기로 줄이며, (3) 쉬운 질문은 싼 모델로 돌린다. vercel-labs/skills·mksglu/context-mode가 “스킬 배포·도구 출력 샌드박스”에 가깝다면, caveman은 음성(voice)+게이트웨이+복구 가능한 압축이라는 다른 축이다.

항목 확인한 값 (2026-10-16 KST) 해석
저장소 JuliusBrussee/caveman · Go(+JS CLI/스킬) · 기본 브랜치 main 토픽: ai, anthropic, claude-code, llm, prompt-engineering, skill, tokens
스타 / 포크 112,644 / 6,525 (2026-10-16 ~12:00 KST, GitHub API) 2026-04-04 생성 → 약 6개월 반, HN #1·Trending 이력
Trending 전체 일간 4위, Go 일간 1위 오늘 상위 rea·scientific-agent-skills·VoiceStudio·context-mode는 이미 다룬 저장소
라이선스 Apache-2.0 (전체 저장소). Caveman·로고는 상표 LICENSING.md·NOTICE 확인
최신 릴리스 GitHub v4.0.1 (2026-10-14 03:34 KST) = npm @caveman-ai/cli@4.0.1 직전 v4.0.0 같은 날, v3.2.0은 10-08
런타임 Go 1.26.9 모듈 · CLI는 Node.js 22.13+ 권장 (패키지 engines ≥18) 엔진·프록시는 Go 바이너리, 설치/래퍼는 JS
문서 README·INSTALL·HONEST-NUMBERS·docs/technical/* 30여 개 제품 모델·아키텍처·보안·벤치 방법이 코드와 분리 문서화

제품 모델: 스킬과 런타임은 독립 레이어

docs/technical/product-model.md가 선을 분명히 긋는다. 응답 스킬만 깔면 출력이 짧아지고, 로컬 런타임(Engine+proxy)을 켜면 모델로 가는 입력이 줄어든다. 계정은 Auto·Cloud 쪽만 필요하고, 로컬 압축·계측은 계정 없이 돈다. 증거 라벨도 섞지 않는다. 로컬 토큰 추정은 항상 inferred(오프라인 o200k_base)이고, verified는 연결된(connected) 증적 상태에서만 나온다.

레이어 역할 계정 라이선스
Skill / hooks / plugins 답변을 짧게, 기술 텍스트는 유지 불필요 Apache-2.0
CLI (@caveman-ai/cli) 설치·에이전트 런치·로컬 명령 로컬 명령은 불필요 Apache-2.0
Engine 타입 감지·압축·토큰 추정·CCR 저장 불필요 Apache-2.0
Local proxy (:8787) provider 요청을 Engine 경유, 사용량 SQLite 불필요 Apache-2.0
MCP / mem / browse / shrink 복구·메모리·브라우저 압축 도구 불필요 Apache-2.0
SDKs / middleware 앱 코드에 같은 압축·라우팅 로컬은 불필요 Apache-2.0
Connected / Auto / Cloud 호스트 게이트웨이·라우팅·관측 필요 CLI는 여전히 Apache-2.0
Caveman v4의 여섯 rock: Say less · Read less · Auto · Blocks · Waste fixes · Browse
Caveman v4의 여섯 rock: Say less · Read less · Auto · Blocks · Waste fixes · Browse

Six rocks: v4.0이 한 설치로 켜는 여섯 조각

README 표의 숫자는 마케팅 슬로건이 아니라 각각 방법론 문서(WRAP-BENCHMARK.md, AUTO-BENCHMARK.md, blocks 저장소)에 묶여 있다. 중요한 건 “65%” 한 숫자가 전부가 아니라는 점이다. 출력 스킬의 중앙값 이득은 “Be concise” 대비 작을 수 있고, 세션 절감의 본체는 Read less(입력 압축)와 Auto(모델·effort 선택) 쪽에 있다.

Rock 하는 일 측정(저장소/외부) 한계
Say less 응답 음성 규칙 (/caveman·ultra·mega) 63→20 토큰 예시; 10문항에서 concise 대비 caveman 3% / ultracave 35% (3.1.0 규칙, 재측정 전) 규칙 자체 ~1,160 입력 토큰 오버헤드
Read less Engine이 로그·JSON·CSV·테스트 출력 축소 6파일 세션 합 885,793→591,673 (−33.2%), 18/18 정답 HTML은 압축기 미비로 세션이 오히려 악화한 행을 그대로 공개
Auto 질문마다 모델·effort 선택 Opus 5.5 xhigh 대비 비용 0.46×(−54%), 점수 44.3%→43.7% (85과제, 중간 결과) ±7 오차, 쉬움에 effort를 낮춘 효과가 큼
Blocks 에이전트가 매번 다시 쓰는 스크립트를 저장소에 고정 go test 요약 397→76 토큰 pre-release, Python only, 샌드박스 없음
Waste fixes 토큰 소비 순위·warm cache 측정 전 프롬프트 캐시 유지는 Anthropic 세션에서
Browse 웹 페이지 접근성 스냅샷 압축 Playwright 15,704→121 토큰 사례 작은 폼은 2.3× 손해 가능

Say less: 음성이지 깨진 문법이 아니다

skills/caveman/SKILL.md는 ASD-STE100식 통제 영어를 코딩 에이전트용으로 옮긴 규칙 집합이다. Answer first, 문장당 한 생각, 부정어·숫자·단위는 절대 삭제, 코드·경로·에러는 바이트 단위로 유지, 보안 경고·되돌릴 수 없는 작업·혼란한 사용자는 풀 문장으로 돌아간다. Adobe가 지적한 “프롬프트 캐브맨화의 역효과”를 피하려고 사용자 프롬프트는 재작성하지 않는다. JetBrains가 본 것처럼 에이전트 세션의 대부분은 코드와 도구 호출이라, 음성만으로는 청구서를 크게 못 줄인다 — 그래서 Read less가 붙었다.

규칙 의미 절대 지우면 안 되는 것
규칙 의미 절대 지우면 안 되는 것
Answer first [thing] [action] [reason]. [next step]. 기술 사실·다음 행동
One idea / ≤20 words 능동태, 용어 하나 부정어 not/never/no/only
Payload verbatim 코드·명령·경로·에러 문자 단위 유지 식별자 한 글자
No theater 도구 호출 사이 잡담 금지 짧지 않으면 평문 승리
Know when to stop 보안·비가역·혼란 → 풀 문장 경고 문구
로컬 경로: Agent/SDK → caveman-proxy(:8787) → Engine(타입별 압축) → CCR 원문 복구 → provider
로컬 경로: Agent/SDK → caveman-proxy(:8787) → Engine(타입별 압축) → CCR 원문 복구 → provider

아키텍처: base-URL-swap proxy와 Engine 계약

로컬 요청 경로는 docs/technical/architecture.md의 다이어그램 그대로다. 기존 코딩 에이전트(또는 provider SDK) → loopback caveman-proxy → provider 라우트·자격 증명 → Engine → CCR SQLite → (원문 또는 복구 가능 변환) → 선택한 모델 제공자. 에이전트 루프를 교체하지 않는다. base URL만 바꾼다. 변환에 문제가 있으면 원문 바이트를 그대로 전달하고, standalone 모드의 savings 라벨은 항상 inferred다.

프로세스 전송 책임
caveman CLI 터미널 설치·설정·런치·점검
caveman-proxy loopback HTTP 라우팅·변환·사용량·네이티브 런타임
caveman-engine stdin/stdout 압축·감지·복구·TOON·Pixel·evals
caveman-mcp MCP stdio 에이전트 안 Engine 도구 5개
cavemem CLI/MCP 내구 메모리·순위 회상
caveman-browse MCP + CDP 접근성 스냅샷·브라우저 액션
caveman-shrink stdin/stdout 도구 카탈로그 압축

Engine의 안정 API는 Compress / Retrieve / Detect / Stats 네 개다(Simulate는 저장 없는 드라이런). CCR 스토어가 없으면 손실 압축은 실행되지 않는다 — 복구 불가능한 손실을 계약 위반으로 보기 때문이다. 기본 레지스트리 README는 16종을 말하고, 박스에서 caveman-engine registry로 받은 CapabilityManifest는 14개 transform_id를 노출했다(a11y, code, config, diff, html, json, log, repetition, search-result, tabular, terminal, text, toolschema, toon). 공통 속성: deterministic, recovery=exact_ccr, not_smaller_fallback=original, safety_classes S4.

경로 역할 눈여겨볼 것
경로 역할 눈여겨볼 것
engine/ 압축 코어·레지스트리·CCR·토큰 카운터 engine.go fail-closed Compress
engine/compressors/ 타입별 순수 바이트 변환 네트워크·스토리지 접근 없음
proxy/ 공개 게이트웨이·provider 어댑터 Bedrock BYOK, Codex /chatgpt zstd
skills/ caveman·ultracave·megacave·compress·review… Agent Skills 표준 SKILL.md
packages/ cli·sdk·middleware·device-auth TS/Python middleware
docs/technical/ 제품·보안·벤치·배포 accounting-and-evidence.md
evals/ · benchmarks/ 출력 길이·충실도 하네스 HONEST-NUMBERS와 연결

Read less: 세션 −33.2%와 fail-closed

파일 단독 압축률(CSV 98.9%, 로그 98.5% …)과 전체 세션 절감(−33.2%)이 다른 이유를 README가 바로 설명한다. 세션에는 시스템 프롬프트·도구 정의가 같이 실려서 파일만의 이득이 희석된다. HTML 행은 “아직 압축기 없음 → 세션 9.9% 악화”를 빨간 줄로 남긴다. 원문은 디스크(CCR)에 남고, 에이전트는 handle로 언제든 가져온다. 파싱 실패·용량 부족·토큰이 안 줄면 원문 통과 — 우리가 박스에서 본 작은 JSON(195→195, ratio 0)이 그 경로다.

파일 유형 파일 단독 세션 절감 비고
파일 유형 파일 단독 (before→after) 세션 절감 비고
CSV 28,041 → 314 (−98.9%) −55.1%
Logs 22,810 → 348 (−98.5%) −50.2%
YAML 20,447 → 178 (−99.1%) −46.2%
Test output 18,806 → 203 (−98.9%) −27.8%
JSON 18,837 → 281 (−98.5%) −26.4%
HTML 21,670 → 21,670 (none) +9.9% 악화 압축기 미비 — 정직하게 공개
합계 6종 130,611 → 22,994 세션 −33.2% (18/18 정답) 구엔진(2026-08) 세션 수치
박스 스모크: caveman-engine이 합성 로그 42,399→315 토큰(ratio 0.993)으로 줄이고 CCR로 원문 바이트 복구
박스 스모크: caveman-engine이 합성 로그 42,399→315 토큰(ratio 0.993)으로 줄이고 CCR로 원문 바이트 복구

박스 스모크: 직접 빌드한 engine으로 확인

얕은 클론 후 go build -o smoke/caveman-engine ./engine/cmd/caveman-engine(Go 1.26.9). 샘플 JSON 587B는 detect=json, compress는 ratio 0으로 원문 통과(작아서 이득 없음 → fail-closed). 800줄 합성 INFO 로그(116,651B)는 detect=log, 42,399 → 315 토큰(o200k_base, ratio 0.9926, basis=inferred, method=log), recovery_handle 발급. retrieve로 원문 116,651B 바이트 일치. 즉 “마케팅 숫자”가 아니라 로컬 바이너리의 계약이 동작한다.

항목 결과
항목 결과
바이너리 caveman-engine ~35.7 MiB, 소스 engine/cmd/caveman-engine
registry CapabilityManifest schema_version 1, transform 14개
JSON 스모크 195→195 tok, ratio 0, 원문 통과
로그 스모크 42,399→315 tok, ratio ≈0.993, CCR handle
retrieve handle → 116,651 bytes exact
stats count 1, tokens_before 42399, tokens_after 315

Auto·Blocks·외부 검증

Auto는 모델 picker에 새 항목을 넣고, 어려운 질문은 큰 뇌·쉬운 질문은 낮은 effort로 보낸다. Claude only Auto $3.59 vs Opus xhigh $7.83, 중간 시간 15.9 vs 35.2분. 점수 격차 0.6pp는 표본에서 구분 불가(±7)라고 스스로 적는다. Blocks는 Cloudflare/Anthropic이 말한 code mode의 재사용 문제(같은 스크립트 주 394회 재작성)를 저장소에 고정해 풀고, grep-defs가 bare grep보다 지는 행도 표에 남긴다.

주체 설정 결과 한계
주체 설정 결과 한계
Adobe CAVEWOMAN 캐브맨식 출력, 8모델 5데이터셋 비용 1.4–2.4×(최대 3×) 절감 이 저장소를 인용; 프롬프트 축소는 역효과
JetBrains 86 코딩 과제 paired A/B 품질 손실 없음(p=0.82), 출력 −8.5% 세션 청구 대부분 입력
Elastic elastic-caveman, 8 MCP 시나리오 응답 토큰 −63.6%, zero information loss Elasticsearch Labs 재구현
LemonCrow (#727) 300 runs/arm, opus-4-8 출력 −44.1%, 총비용 +0.06% 캐시 컨텍스트 +1,532 tok/run
이슈 #145·#506·#550 실사용자 A/B 짧은 Q&A·요청당 과금·Cursor에서 순손실 사례 HONEST-NUMBERS가 끄라고 명시

설치·연동 표면과 비교

진입점이 많다. npx @caveman-ai/cli@latest 한 방, npx skills add JuliusBrussee/caveman -g 스킬만, Claude plugin marketplace, Gemini extension, install.sh/install.ps1. proxy는 Docker로 팀 공유 가능(CAVEMAN_AUTH_TOKEN 없으면 non-loopback listen 거부). vercel-labs/skills·obra/superpowers가 “스킬 프레임워크”라면 caveman은 그 위에 전송 경로를 가로채는 게이트웨이까지 가져간다. context-mode가 도구 출력을 샌드박스해 98% 줄인다면, caveman Engine은 콘텐츠 타입별 압축+CCR로 같은 문제를 다른 계약으로 푼다.

도구 핵심 축 토큰 절감 방식 에이전트 교체 계정
도구 핵심 축 토큰 절감 방식 에이전트 교체 계정
caveman voice + proxy + CCR 출력 규칙 + 입력 압축 + Auto 아니오 (base URL) 로컬 불필요 / Auto만
vercel-labs/skills 스킬 배포 표준 간접(프롬프트 품질) 아니오 불필요
mksglu/context-mode 도구 출력 샌드박스·라우팅 출력 98%↓, MCP+hooks 아니오 불필요
xerj-org/xerj 검색/인덱싱 grep 대비 40× (검색 경로) 별도 검색 엔진 불필요

프라이버시·운영 주의

스킬은 기본적으로 아무것도 안 보낸다(/caveman-compress만 지정 provider로 파일 전송). CLI 텔레메트리는 명령·토큰 카운트·설치 ID·OS·IP(프롬프트·코드·경로·스크립트 제외) — caveman telemetry off 또는 DO_NOT_TRACK=1. Auto 로그인 시 최근 질문·직전 답·도구 이름 등이 Cloud로 간다. 팀 proxy는 서버에 provider 키를 두고 x-cave-api-key로 게이트한다. CCR 기본 상한 512 MiB, 초과 시 새 손실 변환은 원문 통과(기존 handle은 유지).

위험 / 한계 대응
위험 / 한계 대응
짧은 코딩 Q&A에서 규칙 오버헤드 > 출력 절감 워크로드 A/B 후 caveman off / 스킬 제거
요청·크레딧 과금(예: Copilot premium request) 짧은 답이 같은 요청이면 절감 0 — HONEST-NUMBERS 명시
HTML·일부 Blocks가 손해 해당 rock off; 표의 빨간 행을 그대로 신뢰
Auto가 프롬프트·첨부를 Cloud로 전송 로그인·Auto 선택 전에 정책 검토, caveman off routing
공유 proxy 자격 증명 CAVEMAN_AUTH_TOKEN 필수, upstream 키와 분리
‘65%’를 청구서에 그대로 대입 provider 청구 페이지 A/B가 최종 권위; 로컬은 inferred

실무적으로 어떻게 넣을까

가장 작은 경로부터. (1) 스킬만: npx skills add JuliusBrussee/caveman -g → /caveman. (2) 입력 압축이 필요하면 npx @caveman-ai/cli@latest 후 caveman claude(또는 codex/gemini/opencode). (3) 앱 코드면 provider SDK base URL을 http://127.0.0.1:8787로, 또는 middleware 패키지. (4) 효과는 caveman trial -- <agent>와 provider 사용량 페이지로 같은 과제 A/B. 숫자가 나쁘면 끄고, 좋은 rock만 남긴다. caveman status / caveman on|off <rock>이 그 스위치다.

목표 명령 / 구성
목표 명령 / 구성
짧은 답만 스킬 설치 + /caveman
복구 가능 입력 압축 caveman <agent> (proxy+Engine+CCR)
계측만 (변환 없음) caveman wrap --off <agent>
Pixel(비전용 밀집 텍스트) caveman wrap --pixel <agent>
SDK 연동 base URL 변경 또는 @caveman-ai/sdk / middleware
토큰 소비 진단 caveman learn → 승인 후 implement
팀 공유 게이트웨이 Docker + CAVEMAN_AUTH_TOKEN + docs/technical/deploy.md

정리

Caveman은 “말 짧게 하기” 밈에서 시작해, v4에서 응답 규칙·컨텍스트 압축·모델 라우팅·스크립트 재사용을 한 CLI로 묶은 로컬 우선 스택이 됐다. 아키텍처의 핵심은 에이전트 교체가 아니라 base-URL-swap과 fail-closed Engine, 그리고 손실 변환마다 exact CCR 핸들을 남기는 계약이다. 외부 논문·벤치가 효과를 뒷받침하는 만큼, 저장소가 스스로 공개한 패배 조건(짧은 Q&A, 요청당 과금, HTML, 재주입 오버헤드)도 같이 읽어야 한다. 오늘 Trending 상단에 다시 오른 이유보다, 팀 청구서에서 provider A/B로 남는 rock만 고르는 쪽이 실무적으로 맞다.