77.5k stars chỉ với một ý tưởng: bắt AI agent nói chuyện như người tiền sử

77.5k stars chỉ với một ý tưởng: bắt AI agent nói chuyện như người tiền sử
⛏️ “Why use many token when few do trick.”
Cái bookmark 80 đô
Hồi tháng 4 vừa rồi, mình đang xào mấy cái PR cho vụ refactor service layer ở chỗ làm. Mỗi lần chạy Claude Code để review hay generate một đoạn code, output nó trả về toàn:
“Sure! I’d be happy to help you with that. The issue you’re experiencing with the Go context cancellation in your handler is likely caused by…”
Đọc cũng thấy ổn, đúng technical sense. Nhưng mở tab API dashboard lên thì cay vcl. Mỗi session 20-50K output tokens, và Claude API tính $15/1M output tokens. Tính nhẩm: một ngày mình chạy cỡ 20-30 task nhỏ. Một tháng dễ bay cái bookmark 80 đô chỉ cho mấy cái câu chào lịch sự của AI.
Ngồi cafe với thằng bạn, nó khoe: “Tao mới thấy cái repo trên GitHub, 70K stars. Bắt Claude nói như người tiền sử — tiết kiệm cả đống token.” Mình tưởng nó nói đùa, vô xem thử thì thấy cái tagline để đời:
“why use many token when few do trick”
Repo tên Caveman. Tác giả JuliusBrussee. Lúc mình viết bài này đã 77.5k stars, 4.4k forks, MIT license. Con số ảo vcl cho một cái skill chỉ làm đúng một việc: bắt AI agent nói ngắn lại. Bài này mình sẽ mổ xẻ từ setup, kiến trúc, benchmark, cho tới hệ sinh thái của nó — và tại sao mình nghĩ nó là cái plugin chân ái cho bất kỳ ai đang đốt output tokens vào mấy câu filler vô thưởng vô phạt. 🪨
First Look: Cài đặt và ấn tượng đầu
Caveman là một skill/plugin. Cơ bản là nó là một cái system prompt template. Không cần docker, không cần API key riêng, không cần pip install lằng nhằng.
Cài đặt cho Claude Code:
claude mcp add caveman -- npx @caveman/mcpHoặc đơn giản hơn: copy cái system prompt vào Claude Code CLI config. GitHub repo có hướng dẫn cho từng agent: Codex, Gemini, Cursor, Windsurf, Cline, Copilot, OpenClaw, Continue.dev… tổng cộng 40+ agents. Đây là điểm cộng đầu tiên — không có vendor lock-in.
Sau khi cài xong, chạy một câu query bất kỳ:
claude "Explain Go context.WithCancel vs context.WithTimeout"Output trước khi có Caveman:
“Great question! Let me explain the difference between context.WithCancel and context.WithTimeout in Go. context.WithCancel creates a new context derived from a parent context with a cancel function that you can call to signal cancellation. It’s useful when you want to manually control when a goroutine should stop. On the other hand, context.WithTimeout creates a context that automatically cancels after a specified duration. This is particularly helpful for deadline-based operations…” → ~150 tokens, zero code
Output sau khi Caveman activated:
WithCancel: manual cancel(). WithTimeout: auto-cancel after N. Use WithCancel for goroutine lifecycle, WithTimeout for ops with deadline. → ~25 tokens, vẫn đủ info để làm việc.
Mình đọc xong lần đầu thì cười vcl. Cảm giác như AI bỗng nhiên bị đưa về thời kỳ đồ đá. Nhưng mà nó works và saves money. Cái tagline không phải để troll đâu — nó treat đúng cái pain point: LLM thì thích nói nhiều, developer thì thích nghe đúng cái cần nghe.
Architecture Deep Dive: Sao nó hoạt động được?
Caveman không phải là một model mới. Cũng không phải một wrapper API. Nó là system prompt + một vài rule được thiết kế rất tinh tế để exploit cách LLM generate text.
Layer 1: BPE Tokenizer exploitation
Cái này mới đọc thấy đơn giản, nhưng ngẫm mới thấy sâu. LLM tokenizer (Byte Pair Encoding — BPE) phân tách text thành token dựa trên tần suất xuất hiện của các sub-word. Mấy câu filler như “I’d be happy to help”, “Sure, let me explain that” là những cụm từ cực kỳ phổ biến → được token hóa rất hiệu quả thành 1-2 tokens mỗi cụm.
Nhưng cái nguy hiểm là: một khi LLM sinh mấy cái token đó, nó sẽ kéo theo cả loạt text polite-mode tiếp theo. Đó là self-reinforcing loop — sinh “Sure!” đầu câu thì xác suất nó chọn giọng văn lịch sự formal cho nguyên đoạn tiếp theo rất cao.
Caveman chặn từ gốc. System prompt nói rõ: không dùng filler, không chào hỏi, đi thẳng vào vấn đề. Mỗi token không bị phí hoài.
Layer 2: Self-reinforcing generation
Đây là observation thú vị. Cái first token quyết định cả tone của paragraph:
| First token | System prompt activation | Expected length |
|---|---|---|
| “Sure!” | Polite, explanatory mode | Dài |
| “Bug” | Direct, factual mode | Ngắn |
| “The” | Neutral, could go either way | Trung bình |
| “Actually” | Defensive/correcting mode | Ngắn-trung bình |
Caveman exploit cái này bằng cách force first word là noun hoặc verb trực tiếp. Một khi token đầu là nội dung chứ không phải thủ tục, cả câu sau đó sẽ giữ tone đó.
Layer 3: System prompt privilege
System prompt trong LLM có highest priority. User message có thể nói gì thì nói, nhưng instruction trong system prompt gần như không thể bị override bởi user context (trừ khi user đặc biệt jailbreak). Caveman tận dụng cái này: rule “không filler” được đặt ở cuối system prompt, nơi mà LLM attention có xu hướng tập trung cao nhất.
Kết hợp 3 layers này, cơ chế là:
User query → System prompt rules (no filler, be direct) + context
→ Tokenizer (first token forced to be content, not greeting)
→ Generation loop (self-reinforcing: short → short → short)
→ Output (65% fewer tokens, same information density)Không dùng internet, không fine-tune model, không proxy. Chỉ một vài dòng system prompt nhưng tận dụng được cách LLM hoạt động. Design ngon vcl.
Feature Walkthrough: Hệ sinh thái Caveman
Ban đầu Caveman chỉ là một system prompt. Nhưng sau đó cộng đồng và tác giả mở rộng thành cả một toolchain.
/caveman [lite|full|ultra|wenyan — 4 levels của nén
- lite: Chỉ drop filler, giữ nguyên cấu trúc câu. Giống kiểu viết email work nhưng bỏ mấy câu wind-up. Giảm ~40%.
- full (default): Caveman style. “Why use many token when few do trick”. Bỏ luôn mạo từ, giới từ không cần thiết. Giảm ~65%.
- ultra: Telegraphic. Dạng note chấm bi, gần như chỉ còn keywords. “context.WithCancel: manual cancel. context.WithTimeout: auto timeout.” Giảm ~80%.
- wenyan: Văn ngôn — cổ văn Trung Quốc. Vì văn ngôn cực kỳ condensed (mỗi chữ bao hàm nhiều nghĩa). Giảm ~85%. Cái này mình chưa thử vì đọc còn phải tra từ điển. 😅
/caveman-commit — Conventional Commits ≤50 ký tự
Cái này hay. Khi bạn git log toàn mấy cái message:
feat: add user authentication middleware with JWT token validation and role-based access controlCaveman-commit biến thành:
feat: auth middleware + JWT + RBAC50 ký tự, đủ nghĩa. Và nó tuân theo Conventional Commits spec. Mình đang dùng cái này cho mấy commit refactor vặt — tiết kiệm thời gian nghĩ message hơn.
/caveman-review — PR review kiểu “gạch đầu dòng”
Pull request mà AI review dài quá? Mỗi comment 3-4 dòng? Caveman-review cho bạn 1 dòng per comment.
LGTM except: line 42 nil check missing → add guardNếu code thực sự có vấn đề, nó vẫn phát hiện được. Chỉ là bỏ hết mấy cái “This is a good attempt but I think there’s a potential issue here…”.
/caveman-stats — Token tracking
> /caveman-stats
[CAVEMAN ⛏ 12.4k tokens saved
───────────────────────────────
Total saved output: 12,472 tokens
Total saved input: 3,180 tokens
Total saved: $0.21 USD
Session lifetime: 47 calls
Active since: 2026-06-25Có chạy rồi, mới cỡ 2 ngày đã $0.21. Nếu scale lên một team 10 người, mỗi tháng dễ tiết kiệm $200+. Nghe không nhiều, nhưng $200/tháng là tiền cloud của con database rồi đó.
/caveman-compress <file> — Memory compression tool
Cái này mình thích nhất. File memory là thứ mà các AI agent dùng để nhớ context giữa các session. Dần dần mỗi file memory có thể lên 5-10K tokens. Càng nhiều token → càng đắt và càng chậm.
Caveman-compress nén file memory, giảm 46% input tokens trung bình. Mỗi lần agent đọc memory file nén này, context của nó nhẹ hơn gần một nửa.
# Before: 2,134 tokens
/caveman-compress ~/.claude/memory-context.mdCơ chế: nó parse memory → detect cái nào là filler, cái nào là real context → re-write theo caveman style → overwrite file. Vẫn giữ nguyên cấu trúc và thông tin, chỉ drop redundant phrasing.
caveman-shrink — MCP middleware
Đây là cái mới và mình nghĩ là ứng dụng trong team nhiều nhất. Nó là MCP middleware tự động nén tool descriptions trước khi gửi lên LLM.
Tool descriptions thường bị viết dài: “This tool enables you to search through the codebase for files matching a specific pattern. It uses ripgrep under the hood…” Mỗi câu description dễ tốn 10-15 tokens, nhân với 20-30 tools trong MCP → 300-500 tokens mỗi request.
Caveman-shrink nén tool descriptions thành:
Tool: search_files. Uses ripgrep. Pattern + path params.Tiết kiệm ~70% tokens tool description. Trong một team devops có 5-10 MCP server, số token tiết kiệm được mỗi ngày là đáng kể.
cavecrew-* — Multi-agent orchestration
Đây là cái mới trong release gần đây. cavecrew cho phép bạn tạo một team các sub-agents, tất cả đều nói caveman style. Junior agent nhận task, phân rã thành subtask, assign cho các agent khác. Tác giả claim 60% fewer tokens so với crewAI tương tự.
Genshijin (原始人) — Bản tiếng Nhật
Cái này mới đọc qua thấy buồn cười. Một developer tên InterfaceX fork Caveman ra bản tiếng Nhật gọi là Genshijin (原始人 — dịch ra là “người nguyên thủy”).
Vì sao cần? Tiếng Nhật vốn dĩ có nhiều cấu trúc redundancy: 敬語 (keigo — kính ngữ), 冗長助詞 (zyocho joshi — trợ từ dài dòng), các loại ぼかし (bokashi — làm mờ ý). Một câu lịch sự trong tiếng Nhật dễ gấp 2 lần câu cùng ý trong tiếng Anh.
Genshijin drop hết mấy cái đó. Kết quả: 80% savings (so với 65% của bản English). Con số này cho thấy: LLM không chỉ nói dài trong tiếng Anh, nó nói dài trong mọi ngôn ngữ, và những ngôn ngữ có nhiều structural redundancy còn bị phí nhiều hơn.
Genshijin có 3 mode:
| Mode | Giải thích | Savings |
|---|---|---|
| 丁寧 (Teinei) | Polite — bỏ kính ngữ tối đa nhưng vẫn lịch sự | ~60% |
| 通常 (Tsuujou) | Default — caveman style | ~80% |
| 極限 (Kyokugen) | Extreme — telegraphic + loại bỏ hết trợ từ | ~90% |
Bài học rút ra: nếu bạn làm việc với LLM bằng tiếng Nhật, bạn đang bị charge quá cao cho mấy cái kính ngữ. 😂
Benchmark: 65% — Ai nói cũng phải có số
Repo có benchmark khá đầy đủ trên 10 tasks engineering khác nhau. Mỗi task chạy 3 lần với nhiệt độ 0.3, lấy trung bình token count.
| Task | Loại | Before (tokens) | After (tokens) | Savings |
|---|---|---|---|---|
| Explain React re-render | Giải thích | 350 | 46 | 87% |
| Fix auth middleware | Debug + code | 480 | 82 | 83% |
| PostgreSQL connection pool | Giải thích | 290 | 46 | 84% |
| Git rebase vs merge | So sánh | 220 | 92 | 58% |
| Refactor callback to async | Code generation | 380 | 296 | 22% |
| Architecture comparison | Analysis | 510 | 357 | 30% |
| PR review security audit | Review | 890 | 525 | 41% |
| Docker multi-stage | Explain + code | 410 | 115 | 72% |
| Debug race condition | Debug + explain | 560 | 106 | 81% |
| React error boundary | Explain + code | 380 | 49 | 87% |
| Average | — | 1,214 | 294 | 65% |
Mấy observation từ benchmark:
Giải thích concept (React re-render, PostgreSQL pool, Docker multi-stage): savings cao nhất, 72-87%. Vì mấy task này LLM hay dùng pattern giảng giải dài.
Code generation (refactor callback): savings thấp nhất, 22%. Code thì ngắn rồi — không thể bỏ dòng code đi được, không thì syntax error.
Analysis/architecture (so sánh, review): trung bình, 30-41%. LLM vẫn cần analysis depth.
Có vài task savings âm? Repo không report, nhưng cá nhân mình thấy đôi khi code-heavy task mà force ultra mode có thể làm LLM bỏ qua details → phải chạy lại. Đó là cái cost tiềm ẩn.
Bottom line: nếu task của bạn là “giải thích”, Caveman là chân ái. Nếu task là “viết code”, tác dụng thấp hơn — nhưng cũng chẳng mất gì.
DX (Developer Experience): Dùng có sướng không?
Ngon:
- Zero config setup. Copy-paste một file system prompt. Chạy được ngay. Mất 30 giây.
- Statusline badge. CLI agent hiển thị badge
[CAVEMAN ⛏ 12.4k— nhìn vào biết đang tiết kiệm được bao nhiêu. - Auto-activation. Với Claude Code và Codex, nó auto-activate dựa vào config. Không cần gõ lệnh mỗi lần.
- Safety valve. Nếu query liên quan đến destructive operations (delete, drop, force push), nó tự động revert về normal tone. Không bị “mất mạng” vì câu trả lời quá ngắn.
- Modes switch nhanh.
/caveman ultranếu cần tối ưu,/caveman litenếu cần đọc hiểu dễ hơn. Không cần restart.
Không ngon:
- Đôi khi quá ngắn. Cái này là trade-off rõ nhất. Với
fullmode, thỉnh thoảng output chỉ 1-2 dòng, không đủ context để hiểu. Bạn phải hỏi lại “explain more” — thế là phí thêm request. - English-centric. System prompt được tối ưu cho tiếng Anh. Dùng với tiếng Việt hoặc tiếng Nhật, bạn phải tự điều chỉnh. (Trừ khi dùng Genshijin cho Nhật.)
- Không có guốc blocking. Có thể bị silent fail trong một số edge cases. Ví dụ, vài lần mình thấy nó giữ nguyên output như không có Caveman — hình như do LLM attention không bắt được rules. Phải chạy lại command mới đúng.
- Codex integration còn lỏi. Với Claude Code và Gemini thì seamless, nhưng với Codex (Amazon) thì config hơi lòng vòng.
- Ultra mode nguy hiểm. Nếu dùng
ultracho task generation code, nó có thể omit import statements, hoặc viết function signature thiếu params. Check cẩn thận.
Friction tổng thể rất thấp. Với mức tiết kiệm 65% output tokens, mấy cái minor pain trên hoàn toàn chấp nhận được.
Weaknesses: Bug và Edge Case
Mình không tán dương một chiều. Mấy cái mình gặp khi dùng thực tế:
1. Context-dependent instructions bị mất
Caveman rules có thể làm LLM “quên” giải thích context. Ví dụ prompt “Explain the auth middleware in this code” — output chỉ “Middleware checks JWT in header. Returns 401 if invalid.” Mà không giải thích tại sao cần middleware ở đây. Với junior dev trong team, câu trả lời này là chưa đủ.
Fix: Thêm explicit_context: true vào prompt khi cần giải thích đầy đủ. Caveman có cái flag này. Nhưng hầu hết không biết.
2. Inconsistent formatting
Thỉnh thoảng output thiếu closing backticks, hoặc code block không có language specifier. Thường panel, nhưng mấy lần copy code ra bị sai syntax vì thiếu line breaks.
3. Non-English struggle
Dùng với tiếng Việt, output của Caveman full mode hơi kỳ. “Fix bug user không login được → check token trong header, nếu không có trả 401.” Tiếng Việt không phải là ngôn ngữ “caveman-friendly” — bỏ hết từ nối làm câu khó đọc.
Gợi ý: Tạo “Caveman cho tiếng Việt” — chắc cũng là một ý hay cho ai đó muốn contribute.
4. LLM hallucination tăng nhẹ
Cái này chưa được benchmark chính thức, nhưng mình có impression rằng output ngắn hơn dễ hallucinate hơn. Khi LLM viết dài, nó có cơ hội self-correct — nó có thể viết một câu sai, rồi 2 câu sau sửa lại. Với Caveman, output ngắn nên mỗi câu đều phải đúng, hoặc sai là sai luôn.
Comparison: So với alternatives
Caveman không phải là tool duy nhất trong làng tối ưu token.
| Tool | Approach | Savings | Setup complexity | Agent support |
|---|---|---|---|---|
| Caveman | System prompt + rules | 65% output | Cực thấp (30s) | 40+ agents |
| GPT-4o Mini | Model thay thế | ~10x rẻ hơn API | Trung bình | Chỉ OpenAI |
| Prompt compression (LLMLingua) | Nén input | ~40% input | Cao (cần model riêng) | Limited |
| Manual prompt engineering | Viết prompt tay | Variable | Thấp | Universal |
| Claude 3.5 Haiku | Model cheaper | ~5x rẻ hơn Sonnet | Thấp | Chỉ Claude |
| Skeleton-of-Thought | Output template | ~30% | Trung bình | Experimental |
Caveman vs dùng model rẻ hơn:
Nếu bạn đang dùng Claude Sonnet và chuyển xuống Haiku, bạn tiết kiệm ~5x. Nhưng quality giảm đáng kể. Caveman giữ nguyên model, chỉ nén output — bạn vẫn dùng Sonnet nhưng trả ít hơn 65%.
Caveman vs LLMLingua (prompt compression):
LLMLingua nén input tokens, không phải output. Hai tool bổ trợ nhau. Nếu bạn combine cả hai: nén input 40% + nén output 65% → tổng savings có thể lên 70-75% tùy workload.
Caveman vs tự viết prompt:
Tự viết “hãy trả lời ngắn” cũng được, nhưng không tối ưu bằng Caveman vì nó exploit được cơ chế BPE tokenizer và self-reinforcing generation. Hiệu quả chênh lệch khoảng 20-30%.
Bottom line: Caveman không thay thế model rẻ. Nó là layer bổ sung trên model bạn đã dùng. Combine với model rẻ + input compression → ra tổ hợp tối ưu nhất.
Verdict: Ai nên dùng? Khi nào không nên dùng?
Nên dùng nếu:
- 🟢 Bạn đang dùng Claude Code, Codex, Cursor, Windsurf, Cline, hoặc bất kỳ agent nào có output cost. Nếu bạn trả tiền cho output tokens, Caveman là no-brainer.
- 🟢 Team > 5 người dùng AI agents. Chi phí nhân lên nhanh. Mỗi developer $20/tháng token → 5 người đã $100. Caveman giảm còn $35.
- 🟢 Bạn làm review code automation. PR review truyền thống tốn 500-800 tokens. Caveman-review giảm xuống 100-200. Vẫn catch được bug.
- 🟢 Bạn dùng Git commit message tự động. Caveman-commit cho bạn message dưới 50 ký tự, đúng chuẩn Conventional Commits.
- 🟢 Bạn muốn minimal output. Có những người thích đọc câu trả lời ngắn. Caveman là cho bạn.
Không nên dùng nếu:
- 🔴 Bạn là junior dev, cần AI giải thích cặn kẽ. Output ngắn có thể bỏ qua context mà bạn chưa biết. Học qua AI với Caveman là không hiệu quả.
- 🔴 Bạn viết content (blog, docs, email) bằng AI. Caveman design cho code, không phải content writing. Output bị “stone age” vibe.
- 🔴 Bạn dùng non-English ngôn ngữ nhiều. Tiếng Việt, Thái, Ả Rập — Caveman cần custom prompt thêm. Phiên bản gốc chỉ tối ưu cho tiếng Anh.
- 🔴 Task của bạn là analysis sâu. Architecture comparison, trade-off analysis, security audit — những task cần depth. Caveman có mode
litecho việc này, nhưng không tối ưu bằng prompt viết tay.
Kết
77.5k stars không phải là ngẫu nhiên. Một cái repo làm đúng một việc, làm tốt, và giải quyết được nỗi đau thật của developer. “Why use many token when few do trick” — câu tagline đơn giản tới mức ai cũng hiểu, nhưng để implement thành tool có benchmark 65% savings, có hệ sinh thái commit/review/compress/shrink, có multi-language support — đó là cả một engineering effort đằng sau.
Mình đã dùng Caveman được gần 2 tháng, trên Claude Code và Codex. Tổng tiết kiệm cho cá nhân khoảng $8-10/tháng output tokens. Không nhiều, nhưng $10/tháng mua được một bữa lẩu cuối tuần. 🦞
À, còn cái cảm giác nữa. Mỗi lần Claude trả lời ngắn gọn kiểu:
Bug: line 42. ctx cancelled before DB query. Move query before select {}.…mình thấy nó giống như đang pair programming với một senior dev khó tính nhưng cực kỳ hiệu quả. Không small talk, không lịch sự, chỉ có code.
Thử đi, cài 30 giây. Nếu thấy không hợp thì tắt cũng 30 giây. 🔥
Link repo: [github.com/JuliusBrussee/caveman(https://github.com/JuliusBrussee/caveman)
Genshijin (bản tiếng Nhật): [github.com/InterfaceX/genshijin(https://github.com/InterfaceX/genshijin)
Caveman cho Claude Code: [Claude Code + Caveman setup guide(https://github.com/JuliusBrussee/caveman#claude-code)
Có ai dùng Caveman trong team chưa? Thấy thế nào? Hoặc có cái alternatives nào ngon hơn không? Comment hoặc DM mình nhé. 🪨⛏️