Cài chồng nhiều tool cho Claude Code mà không tốn gấp đôi
Mấy tool tiết kiệm token với plugin hỗ trợ thì dùng riêng từng cái đều ổn. Vấn đề bắt đầu khi bạn cài cùng lúc ba cái rồi nghĩ là tiết kiệm sẽ cộng dồn. Tháng 11/2026 mình chạy thử bốn tool trên chính setup của mình, và tiết kiệm không hề cộng dồn.
Xem mỗi tool thật ra chạm vào phần nào
Mỗi tool chỉ hook vào một phần nhỏ của Claude Code, và các phần này ít khi trùng nhau như bạn nghĩ.
- rtk viết lại output của shell qua một Bash hook. Read và Grep không đi qua Bash nên nó không thấy. Ngày 6/11/2026 mình tự A/B: mỗi bên 10 lần chạy headless, cùng một bộ task, xếp theo thứ tự ABBA. Bật rtk thì tốn $4.20, tắt thì $2.94, câu trả lời giống nhau. Tức là đắt hơn từ 7% tới 43%, tuỳ cách tính một lần chạy bị lệch. Mười lần mỗi bên mới là gợi ý thôi chứ chưa phải bằng chứng. Cùng ngày đó nó còn trả output sai hai lần:
wc -lra 0 cho một file 65 dòng, còngrep -vthì in ra đúng những dòng lẽ ra phải bỏ. - terse nén JSON mà MCP server trả về. Playwright trả snapshot dạng text nên terse không đổi được gì, 0% (5/11/2026). Một fetch server chèn một dòng text trước JSON, thế là 48 KB JSON của GitHub đi qua nguyên vẹn. Nó cũng hoàn toàn không thấy Read, Bash, WebFetch hay WebSearch.
- headroom là một proxy. Đặt sau rtk thì thứ duy nhất nó nén được là output grep mà rtk đã nén một lần rồi. Trên một task code, phần nó tự tiết kiệm được chỉ khoảng 3 tới 4% token input (hai lần chạy mỗi setup, Haiku, 5/11/2026).
Hai tool cùng đụng vào một output thì cái sau gần như không còn gì để làm. Còn nếu chúng đụng vào các output khác nhau, bạn kiểm tra xem output bạn quan tâm có nằm trong phần nào không.
Chạy thêm một nhánh đối chứng, đừng chỉ bật với tắt
Có một setup chạy qua headroom làm token input giảm 43%. Nhưng phần giảm đó không đến từ headroom. Khi bạn trỏ Claude Code sang một địa chỉ khác Anthropic, nó tự tắt tool search, chỉ riêng chuyện đó đã bớt khoảng 16.000 token mỗi request. Nhánh thứ tư chứng minh điều này: vẫn proxy đó nhưng tắt nén, và token vẫn giảm y như vậy.
Nên bạn test ba thứ: chạy trơn, chạy đủ bộ, và chạy đủ bộ nhưng tắt đúng tính năng đang test. Đây là lệnh mình dùng cho nhánh chạy trơn:
claude -p "$(cat task.txt)" --model haiku --output-format json --setting-sources "" \
--strict-mcp-config --no-session-persistence
--setting-sources "" để hook và file rule của bạn không chen vào, nên khác biệt giữa các nhánh chỉ còn là cái tool đang test.
Đừng tin con số tiết kiệm do tool tự báo
Sau hai lần chạy mà headroom thật sự tiết kiệm khoảng 3.600 token, bảng tổng kết của nó báo 115.832 token, tức 55,65%. Phần lớn số đó là tool schema mà chính thống kê của nó ghi là chưa thực sự tiết kiệm. Tắt nén đi rồi mà nó vẫn báo tiết kiệm 112.920. Bạn xem hoá đơn, đừng xem bộ đếm.
Tool thay thế tool có sẵn có thể làm hỏng những cái bạn giữ lại
ashlr-plugin thay Read, Grep và Bash bằng 54 tool riêng của nó và chặn bản gốc. Search của nó lỗi "ripgrep (rg) is not installed", vì rg trên máy mình là một shell function mà nó không nhìn thấy. Khi mình load tool của nó mà không có hook, Haiku không gọi tool nào cả, vậy mà 54 cái tool definition vẫn làm session đắt hơn 50%. Qua hai session đầy đủ, kết quả là -22% và +16%, và một trong hai lần trả lời sai hai trên sáu câu. Ở lần đó model không hề thấy đoạn giữa của một file dài, vì lúc đọc nó đã bị cắt mất.
Hai tool cùng làm một việc thì so sánh rồi giữ một cái
Một skill dọn văn thứ hai (humanizer) làm đúng việc của skill mình đang có. Cách có ích là chạy cả hai trên cùng một đoạn text, rồi gộp những pattern còn thiếu vào cái bạn giữ lại, chứ không load cả hai cho mọi prompt. Mình chưa chạy phép so sánh đó.
Search cũng vậy. Với task "hàm này được gọi ở đâu" có sẵn 7 chỗ gọi, grep tìm đủ 7/7. Một tool code graph tìm được 1/7 kèm 7 kết quả sai, tool graph thứ hai tìm được 0 (1/8/2026). Đặt terse trước tool graph thì câu trả lời ngắn đi 28% mà vẫn sai.
English