All posts
Bạn sợ hết token? Tôi cũng thế! Cùng nhau làm người Tiền sử nhé 🙈
claude-codeclaudeaipluginskills

Bạn sợ hết token? Tôi cũng thế! Cùng nhau làm người Tiền sử nhé 🙈

Hieu Tran H.'s avatarHieu Tran H.
Table of Contents17 sections

Tìm hiểu về Caveman trong Claude Code — Hướng dẫn chi tiết

1. Caveman là gì?

Caveman không phải tính năng chính thức của Anthropic, mà là một skill/plugin bên thứ ba (mã nguồn mở, MIT, do Julius Brussee phát triển) dùng cho Claude Code — và hơn 30 agent khác như Codex, Gemini, Cursor, Windsurf, Cline, Copilot.

Triết lý của nó gói gọn trong tagline:

"why use many token when few token do trick" — sao dùng nhiều token khi ít token cũng xong việc.

Ý tưởng cốt lõi: bắt agent trả lời theo kiểu "người tiền sử" — cụt lủn, bỏ hết từ thừa, không lời chào xã giao, không giải thích dài dòng — nhưng giữ nguyên 100% độ chính xác kỹ thuật.

Một câu tóm gọn của repo:

Caveman không làm não nhỏ đi, chỉ làm cái miệng nhỏ đi. Nó nén cái agent nói ra, không nén cái agent biết.

2. Trước / Sau khi dùng

Agent thường (~69 token)

Agent Caveman (~19 token)

"Lý do component React của bạn re-render là vì bạn tạo một object reference mới ở mỗi lần render. Khi truyền inline object làm prop, cơ chế shallow comparison của React coi nó là object khác mỗi lần, gây re-render. Mình khuyên nên dùng useMemo để memoize object..."

"New object ref each render. Inline object prop = new ref = re-render. Wrap in useMemo."

Cùng một lời giải, chỉ còn 1/3 số chữ, không mất gì về mặt kỹ thuật.

3. Cách hoạt động (5 bước)

  1. Trình cài đặt thả một file skill vào agent của bạn.

  2. Skill ra lệnh cho agent: bỏ từ đệm, giữ phần cốt lõi, dùng câu cụt — nhưng tuyệt đối không đụng vào code, câu lệnh và thông báo lỗi (giữ nguyên byte-for-byte).

  3. Trên Claude Code, một hook ghi file cờ mỗi session, nên agent nói kiểu caveman ngay từ tin nhắn đầu, không cần gõ /caveman.

  4. /caveman-stats đọc log session, đếm token tiết kiệm, ghi số lên statusline.

  5. /caveman-compress nén các file memory (như CLAUDE.md) để mọi session sau đều khởi động với context nhỏ hơn.

Về quyền riêng tư: Caveman không "gọi về nhà" — không telemetry, không tài khoản, không backend. Sau khi cài, nó chỉ là một prompt + vài script local, không phát sinh network call nào.

4. Hướng dẫn cài đặt

Cài tự động cho mọi agent (khuyến nghị)

Trình cài đặt sẽ tự dò mọi agent có trên máy và cài cho từng cái. Cần Node ≥ 18, mất khoảng 30 giây, chạy lại nhiều lần vẫn an toàn.

# macOS · Linux · WSL · Git Bash (Tôi đang dùng)
curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.sh | bash
# Windows · PowerShell 5.1+
irm https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.ps1 | iex

Lưu ý cho bạn (macOS/Linux dual-boot): chạy trực tiếp trên terminal đang dùng là được. Script tự bỏ qua các agent bạn không có.

Cài riêng cho Claude Code

claude plugin marketplace add JuliusBrussee/caveman && claude plugin install caveman@caveman

Cài cho agent khác

# Gemini CLI extension
gemini extensions install https://github.com/JuliusBrussee/caveman

Nếu cài lỗi

Mở agent ngay trong repo và nói: "Read CLAUDE.md and INSTALL.md, install caveman for me." — agent tự đọc repo và tự sửa.

5. Hướng dẫn sử dụng

Bật / Tắt

  • Bật:/caveman hoặc nói "talk like caveman".

  • Tắt: nói "normal mode".

  • Trên Claude Code, Codex, Gemini: đã bật sẵn từ tin nhắn đầu tiên, không cần lệnh.

Chọn mức độ nén (6 level)

Đổi bất cứ lúc nào bằng /caveman <level>. Level giữ nguyên đến khi bạn đổi hoặc hết session.

Level

Ví dụ output

normal

You should wrap the object in useMemo, since a new reference is created on every render.

lite

Wrap object in useMemo. New ref created every render.

full (mặc định)

New ref each render. Wrap object in useMemo.

ultra

New ref/render. useMemo it.

wenyan

Nén bằng văn phong Hán cổ — ngắn nhất, dùng cho vui.

Giữ nguyên ngôn ngữ của bạn: viết tiếng Việt thì caveman "grunt" tiếng Việt, viết tiếng Anh thì trả lời tiếng Anh. Nó chỉ nén văn phong, không dịch. Chỉ wenyan là ngoại lệ cố ý (Hán cổ nén được nhiều nghĩa nhất trên mỗi token).

Các lệnh tiện ích

Lệnh

Chức năng

/caveman [lite|full|ultra|wenyan]

Nén mọi phản hồi, giữ level cho cả session.

/caveman-commit

Sinh commit message chuẩn Conventional Commits, subject ≤50 ký tự, ưu tiên "why" hơn "what".

/caveman-review

Comment review PR một dòng, ví dụ: L42: 🔴 bug: user null. Add guard.

/caveman-stats

Xem token thực dùng trong session, tổng tiết kiệm tích lũy, quy ra USD. Thêm --share để có dòng khoe lên mạng.

/caveman-compress <file>

Nén file memory (như CLAUDE.md) sang caveman-speak, cắt ~46% input token cho mọi session sau. Code/URL/path được giữ nguyên.

caveman-shrink

MCP middleware, bọc bất kỳ MCP server nào để nén phần mô tả tool.

cavecrew-*

Các subagent (investigator, builder, reviewer), output nén ~60% nên main context "sống" lâu hơn trong session dài.

Trên Claude Code, statusline hiện [CAVEMAN] ⛏ 12.4k — tổng token bạn đã tiết kiệm. Tắt bằng biến môi trường CAVEMAN_STATUSLINE_SAVINGS=0.

Gợi ý workflow thực tế

  1. Coding hằng ngày, việc bạn đã hiểu rõ → để full (mặc định), tận dụng tốc độ và sự gọn gàng.

  2. Đang debug thứ chưa hiểu / học framework mới → gõ "normal mode" để lấy lại phần giải thích đầy đủ.

  3. Trước khi commit/caveman-commit để có message gọn, đúng chuẩn.

  4. Review PR nhanh/caveman-review cho các nhận xét một dòng.

  5. Dự án dài, nhiều context/caveman-compress CLAUDE.md một lần để nhẹ input token vĩnh viễn.

6. Benchmark — tiết kiệm thật sự bao nhiêu?

Số liệu chính chủ từ Claude API, trung bình giảm ~65% output token trên 10 prompt (dao động 22–87%):

Tác vụ

Normal

Caveman

Tiết kiệm

Giải thích bug re-render React

1180

159

87%

Fix token expiry ở auth middleware

704

121

83%

Set up PostgreSQL connection pool

2347

380

84%

Giải thích git rebase vs merge

702

292

58%

Refactor callback sang async/await

387

301

22%

Kiến trúc microservices vs monolith

446

310

30%

Review PR về bảo mật

678

398

41%

Trung bình

1214

294

65%

7. Cảnh báo trung thực về con số

Đây là phần quan trọng nhất cần hiểu, vì con số headline dễ gây nhầm:

  • Caveman chỉ nén output token, không đụng input và reasoning token.

  • Bản thân skill cộng thêm ~1–1.5k input token mỗi lượt.

  • Vì output thường chỉ chiếm phần nhỏ trong tổng session (phần lớn là input: lịch sử hội thoại, nội dung file, system prompt), nên tiết kiệm toàn session nhỏ hơn nhiều so với con số 65%. Với workload vốn đã ngắn gọn, thậm chí có thể âm (lỗ token).

Lợi ích thật nằm ở tốc độ phản hồi và độ dễ đọc, tiết kiệm chi phí chỉ là phần thưởng thêm. Thú vị là một paper tháng 3/2026 (Brevity Constraints Reverse Performance Hierarchies in Language Models) còn thấy việc buộc model lớn trả lời ngắn tăng độ chính xác ~26 điểm trên một số benchmark — đôi khi ít chữ = đúng hơn.

8. Có nên dùng không?

Nên dùng nếu:

  • Bạn đã vững chuyên môn, phần giải thích của agent với bạn chỉ là "nhiễu".

  • Bạn muốn phản hồi nhanh, gọn, đi thẳng vào code.

Không nên dùng nếu:

  • Bạn đang học ngôn ngữ/framework mới.

  • Bạn đang onboard vào codebase chưa hiểu rõ.

  • Bạn dùng agent như công cụ dạy học.

Với người mới, chính phần giải thích mà Caveman cắt đi lại là bài học giá trị nhất — không phải rác. Lời khuyên hay nhất: bật Caveman khi bạn đã biết đủ để lời giải thích nghe như tạp âm, đừng bật trước đó.

9. Kết luận

Caveman là một skill vui nhưng có ích: cài một lệnh, dùng ngay, phản ánh đúng thực tế rằng LLM sinh ra nhiều "chữ đệm" tốn token và làm chậm mọi thứ. Số token tiết kiệm thực tế khiêm tốn hơn quảng cáo, nhưng tốc độ và sự gọn gàng thì có thật.