TL;DR
- Tám repo Claude Code phổ biến được cài ở phạm vi project trên cùng một codebase thật và đo: token lúc bắt đầu phiên, token đầu ra trên ba tác vụ code, và mỗi repo ghi gì ra ngoài project.
- Chỉ một trong tám repo thay đổi được kết quả: anti-slop, chạy như một linter, bắt được cùng một lần ép kiểu không an toàn trong cả 3 lượt chạy T3, với +95 token lúc bắt đầu phiên và không tốn gì cho mỗi lượt.
- Các bộ quy tắc ép đầu ra ngắn không trụ được với công việc có dùng tool: mức 52% so với baseline mà Chisle quảng cáo hóa ra là 94% token đầu ra của baseline, và nhánh của nó tốn hơn baseline ở hai trên ba tác vụ khi tính cả đầu vào.
- Ba MCP server không được gọi lần nào trong 63 lượt chạy. Cài đặt không có nghĩa là được dùng.
- Stack này cộng dồn: cả tám cùng nhau thêm +6,804 token lúc bắt đầu phiên, chỉ lệch 63 token so với tổng các phần riêng lẻ.
- Hai bản cài đặt đã chạm ra ngoài project. Một codemod tự đăng ký vào cấu hình toàn cục của 8 agent khác; một tool hardcode
--dangerously-skip-permissionsvà sao chép file credentials, nên không bao giờ được chạy.
Các phép đo cho thấy gì
Token lúc bắt đầu phiên thì tái lập được, chi phí đô la thì không: mọi điều kiện đều trả về đúng tổng token đầu vào giống nhau ở cả hai lượt, trong khi chi phí của cùng một điều kiện dao động từ $0.0183 đến $0.0035 tùy trạng thái prompt cache, nên token là thước đo xuyên suốt. Project baseline bắt đầu ở 17,378 token s4.
Schema của MCP tool được hoãn tải ở phiên bản Claude Code này, và chi phí giờ tỷ lệ với số tên tool mà server quảng bá, không phải kích thước schema. 39 tool của ouroboros tốn +1,642 token, 19 tool của reticle tốn +895, 2 tool của ui-skills tốn +37: khoảng 42 đến 47 token cho mỗi tên tool. Mặc định mọi MCP tool đều được hoãn và chỉ tải khi cần, và chế độ auto của ENABLE_TOOL_SEARCH sẽ hoãn chúng khi định nghĩa đạt 10% context window s4.
img2threejs có SKILL.md nặng 32,902 byte cùng 352 file, nhưng chỉ tốn +107 token lúc bắt đầu phiên, vì chỉ phần mô tả trong frontmatter được tải. Tài liệu skills giới hạn mỗi mô tả trong danh sách ở 1,536 ký tự và rút gọn mô tả cho vừa ngân sách danh sách khi có nhiều skill; sau khi compaction, các skill đã gọi được gắn lại ở mức 5,000 token mỗi skill trong một ngân sách chung 25,000 token s5. Ngân sách danh sách đó là lý do 40 skill có thể tốn 3,060 token mỗi lượt trong một setup không gọi skill nào s10, và là lý do mô tả bị cắt thay vì skill bị loại s11.
Hook UserPromptSubmit của Chisle thêm 287 byte additionalContext ở mỗi lượt; qua một tác vụ 22 lượt, đó là lý do nhánh của nó tốn thêm +41,539 token đầu vào tổng trên T3 so với baseline. caveman, đo làm tham chiếu, không chèn gì trừ khi prompt bắt đầu bằng /caveman. Khi nhiều hook trên cùng một event đều trả về additionalContext, Claude nhận tất cả, nối lại với nhau, với giới hạn 10,000 ký tự cho mỗi hook s15. Khi nối Chisle, caveman và ouroboros với nhau, có 3 đăng ký trên SessionStart, 3 trên UserPromptSubmit và 2 trên PostToolUse, tốn +4,269 token lúc bắt đầu s15.
README của Chisle tuyên bố hóa đơn 20 tác vụ chỉ bằng 52% baseline, và chính README giới hạn con số đó cho prompt một lượt không dùng tool s3. Trên ba tác vụ với một repo thật, mỗi tác vụ chạy 3 lần, tổng trung bình token đầu ra của Chisle là 9,007 so với baseline 9,615, tức 94%; của caveman là 10,820, tức 113%, trên một mẫu mà độ lệch T3 là 2,014 token, nên không hướng nào vượt qua được nhiễu s3. Bộ nén đầu ra của Chisle chưa bao giờ ghi một bản ghi tiết kiệm nào trong 63 lượt chạy.
anti-slop được vendor vào tools/oxlint/ với cả 18 rule chung cộng oxc/no-accumulating-spread tìm ra 109 vấn đề trong project 4,775 dòng còn nguyên, 83% trong số đó đến từ hai rule house-style (require-readable-spacing 50, require-safety-comment-for-type-assertion 41) s8. Trên code Claude viết, nó bắt được maxLength={field.maxLength as number} trong cả 3 lượt T3, khi Claude sao chép đúng cú ép kiểu không an toàn của codebase s8. Plugin này là ESM, nên project chủ cần "type": "module" nếu không oxlint sẽ lỗi Cannot use import statement outside a module.
Codemod init của Reticle, chạy với RETICLE_STATE_DIR được đặt và telemetry tắt, báo rằng nó đã đăng ký MCP server với 8 agent khác (VS Code user scope, GitHub Copilot CLI, Warp, Factory Droid, Kiro, Amazon Q Developer CLI, Cline CLI, Amp) và phê duyệt trước các tool của nó trong Gemini CLI; sau đó bước pairing thất bại với ERR_OSSL_EVP_UNSUPPORTED s6. Caliper bị từ chối: claude_code.py:106 hardcode --dangerously-skip-permissions và seed_files() sao chép ~/.claude/.credentials.json với Keychain làm phương án dự phòng s2. Hook UserPromptSubmit của ouroboros trả lời một prompt bình thường như write prd for reading time bằng REQUIRED SKILL: /ouroboros:setup, một bước mà bản cài ở phạm vi project không thể đáp ứng s7.
Một bài báo trên 2,545 trajectory qua các thư viện 52, 102 và 202 skill ghi nhận mức giảm pass-rate gộp là .08, .14 và lên đến 21%, trong đó các mô tả giống nhau che khuất lẫn nhau chiếm tỷ trọng ngày càng lớn trong phần hao hụt s20.
Số liệu đo
Giao thức: một project TypeScript thật, mọi repo chỉ cài ở phạm vi project. Bắt đầu phiên: prompt Reply with OK ở chế độ JSON -p với cờ giống hệt nhau, 2 lượt cho mỗi điều kiện, con số = input_tokens + cache_creation_input_tokens + cache_read_input_tokens của lượt đầu. Ablation: ba tác vụ code (T1 ngắn, T2 vừa, T3 là tác vụ UI dài) có kiểm tra pass và cổng type-check, 3 lượt cho mỗi ô, điều kiện = baseline, từng repo always-on riêng lẻ, cả tám xếp chồng. anti-slop: oxlint 1.78.0 với bộ rule đã vendor, chạy trên project còn nguyên và trên code được viết trong 9 lượt baseline.
| repo | cài ở phạm vi project | token thêm lúc bắt đầu phiên | chi phí mỗi lượt |
|---|---|---|---|
| baseline | không có gì | 17,378 | không có |
| Chisle | 4 skill, 4 command, 3 hook | +3,496 | +287 byte additionalContext mỗi lượt |
| ouroboros | MCP server, 39 tên tool | +1,642 | chèn có điều kiện |
| reticle | MCP server, 19 tên tool | +895 / +903 | không quan sát thấy |
| fwc-swiftui-skills | 2 skill | +304 | không có |
| caliper | 2 skill | +172 | không có |
| img2threejs | 1 skill, 352 file, SKILL.md = 32,902 B |
+107 | không có |
| anti-slop | 1 skill + bộ rule đã vendor | +95 | không có |
| ui-skills | MCP từ xa, 2 tool | +37 | không có |
| cả tám xếp chồng | tất cả những gì ở trên | +6,804 | chỉ phần per-turn của Chisle |
| caveman (tham chiếu) | 4 skill, 2 hook | +744 | 0 |
| tác vụ | điều kiện | pass | lỗi type mới | token đầu ra trung bình | đầu ra min đến max | tổng đầu vào trung bình | chi phí trung bình | số lượt | số lần gọi MCP |
|---|---|---|---|---|---|---|---|---|---|
| T1 | baseline | 3/3 | 0 | 1,668 | 1,619 to 1,739 | 95,462 | $0.0519 | 7.0 | 0 |
| T1 | Chisle | 3/3 | 0 | 1,434 | 1,341 to 1,502 | 106,001 | $0.0576 | 7.7 | 0 |
| T1 | ui-skills | 3/3 | 0 | 1,756 | 1,644 to 1,885 | 96,279 | $0.0535 | 7.3 | 0 |
| T1 | reticle | 3/3 | 0 | 1,899 | 1,653 to 2,177 | 107,263 | $0.0594 | 8.0 | 0 |
| T1 | ouroboros | 3/3 | 0 | 1,729 | 1,655 to 1,787 | 97,166 | $0.0549 | 7.0 | 0 |
| T1 | stack | 3/3 | 0 | 1,462 | 1,460 to 1,465 | 128,221 | $0.0646 | 7.7 | 0 |
| T2 | baseline | 3/3 | 0 | 2,128 | 2,105 to 2,164 | 74,286 | $0.0540 | 9.0 | 0 |
| T2 | Chisle | 3/3 | 0 | 2,184 | 2,150 to 2,230 | 87,462 | $0.0624 | 10.0 | 0 |
| T2 | ui-skills | 3/3 | 0 | 2,348 | 2,224 to 2,504 | 74,869 | $0.0604 | 10.0 | 0 |
| T2 | reticle | 3/3 | 0 | 2,614 | 2,312 to 2,824 | 78,664 | $0.0635 | 10.7 | 0 |
| T2 | ouroboros | 3/3 | 0 | 2,441 | 2,152 to 2,815 | 80,819 | $0.0622 | 10.0 | 0 |
| T2 | stack | 3/3 | 0 | 2,136 | 2,015 to 2,216 | 89,378 | $0.0661 | 9.7 | 0 |
| T3 | baseline | 3/3 | 0 | 5,819 | 5,423 to 6,063 | 198,217 | $0.1551 | 22.0 | 0 |
| T3 | Chisle | 3/3 | 0 | 5,389 | 5,206 to 5,500 | 239,756 | $0.1565 | 20.3 | 0 |
| T3 | ui-skills | 3/3 | 0 | 5,279 | 4,860 to 5,567 | 214,691 | $0.1477 | 21.0 | 0 |
| T3 | reticle | 3/3 | 0 | 4,664 | 4,008 to 5,776 | 198,740 | $0.1293 | 19.0 | 0 |
| T3 | ouroboros | 3/3 | 0 | 5,456 | 4,324 to 7,093 | 232,763 | $0.1544 | 21.0 | 0 |
| T3 | stack | 3/3 | 0 | 5,331 | 4,787 to 5,843 | 241,576 | $0.1591 | 19.7 | 0 |
63/63 lượt chạy đạt và 0/63 lượt gây ra lỗi type mới. Chỉ có hai ô vượt qua độ lệch giữa các lượt của chính nó: Chisle trên T1 (−234, −14.0%) và stack trên T1 (−206, −12.3%). Trên T2 và T3, mọi chênh lệch đều nằm trong độ lệch; các lượt T3 của ouroboros dao động từ 4,324 đến 7,093 token đầu ra với cùng một prompt, chênh 64%.
| repo | kết luận | bằng chứng |
|---|---|---|
| anti-slop | thay đổi đầu ra, như một bước kiểm tra | bắt cùng một lần ép kiểu không an toàn trong 3/3 lượt T3, +95 token, 0 mỗi lượt |
| Chisle | không đo được gì, tốn hơn | 94% đầu ra của baseline so với mức 52% tuyên bố; +3,496 lúc bắt đầu, +287 byte mỗi lượt |
| ui-skills | không thay đổi gì | 0 lần gọi tool trong 9 lượt chạy, +37 token |
| reticle | xung đột | init ghi vào ~/.claude/settings.json và cấu hình của 8 agent khác; pairing không bao giờ hoàn tất |
| ouroboros | xung đột | đòi /ouroboros:setup ở các prompt bình thường; 39 tên tool, 0 lần gọi |
| caliper | không chạy | hardcode --dangerously-skip-permissions, sao chép file credentials |
| img2threejs | ngoài stack | +107 token, không có gì để va chạm |
| fwc-swiftui-skills | ngoài stack | +304 token, Markdown tĩnh |
Việc cần làm vào thứ Hai
- Chạy
/context alltrong một phiên mới của project chính và ghi lại con số lúc bắt đầu. - Chạy
claude plugin details <name>trên mọi plugin đã cài; dòng always-on là con số duy nhất tính phí ở mọi lượt. - Liệt kê hook của bạn theo từng event. Mọi hook trả về
additionalContexttrênUserPromptSubmitcho mọi prompt đều là một khoản thuế mỗi lượt; chỉ giữ những hook có điều kiện theo từ khóa hoặc matcher. - Đếm số tên tool mà mỗi MCP server quảng bá, ngân sách khoảng 42 đến 47 token mỗi tên, rồi kiểm tra transcript xem có bao nhiêu tool từng được gọi.
- Trước khi cài bất cứ thứ gì có script
inithoặc setup, hãy đọc xem nó ghi gì ra ngoài repo:~/.claude/settings.json, thư mục cấu hình của agent khác, file credentials,--dangerously-skip-permissions. - Gắn các bước kiểm tra chất lượng code do AI sinh ra như một linter trong bước verify, không phải một skill nằm trong context: một lint rule không tốn gì mỗi lượt.
- Trước khi tin bất kỳ tuyên bố tiết kiệm token nào, hãy chạy cùng một tác vụ 3 lần có và không có tool đó rồi so chênh lệch với độ lệch min-max của chính bạn.
- Lưu trữ những gì bạn gỡ bỏ thay vì xóa, để workflow nào cần đến có thể lấy lại.
Đọc thêm
- Ngân sách danh sách skill và giới hạn mô tả 1,536 ký tự giải thích vì sao một setup đông đúc xuống cấp mà không skill nào lỗi tải. Hãy đọc các mục "Skill descriptions are cut short" và "Skill content lifecycle" s5.
- Bài viết về
/skill-doctorcho thấy 40 skill tốn 3,060 token mỗi lượt và nên cắt skill nào trước; điểm mù của nó, các skill tốn kém nằm trong một plugin đang được dùng, được để lại cho phần tiếp theo s10. - Bài báo đứng sau quy tắc ngón tay cái "hơn 30 skill": 2,545 trajectory qua các thư viện 52, 102 và 202 skill, với hiệu ứng che khuất được tách riêng s20, và bản tóm tắt dễ đọc đã phổ biến nó s12.
- Việc nối các hook và giới hạn 10,000 ký tự của
additionalContext, cùng cú pháp matcher cho phép một hook chỉ kích hoạt trênWrite|Edits15. - Thread gỡ bỏ 63%, gồm một bearer token hardcode được tìm thấy trong cấu hình MCP đã gỡ, một chuyện bảo mật ngoài lề mà video bỏ qua s13.
- README của chính Chisle, dòng 229 và 262, giới hạn con số 52% cho prompt một lượt không dùng tool và nhường ô code ngắn cho caveman. Hãy đọc phần chữ nhỏ trước khi trích dẫn con số tiêu đề s3.
- Hai repo ngoài stack không được chấm điểm vì chúng được gọi thủ công và không tốn gì lúc bắt đầu: img2threejs cho các cảnh Three.js s21 và fwc-swiftui-skills cho các bề mặt Liquid Glass s22.
Sources
- Plugins reference, Claude Code docs. Vì sao nên đọc:
plugin details, phạm vi cài đặt và việc hoãn tải MCP tool khiến số tên tool trở thành chi phí thật. - Extend Claude with skills, Claude Code docs. Vì sao nên đọc: giới hạn mô tả, ngân sách danh sách và ngân sách gắn lại sau compaction trong một trang.
- Hooks reference, Claude Code docs. Vì sao nên đọc: chuyện gì xảy ra khi hai hook chèn vào cùng một event, và cách matcher giữ một hook khỏi phần lớn các lượt.
- dmmulroy/anti-slop, GitHub. Vì sao nên đọc: repo duy nhất trong tám repo thay đổi được kết quả; hãy vendor các rule, bỏ qua skill.
- JayPokale/Chisle, GitHub. Vì sao nên đọc: một README tự giới hạn tuyên bố 52% của mình một cách trung thực nếu bạn đọc quá phần tiêu đề.
- edonadei/caliper, GitHub. Vì sao nên đọc: một công cụ đánh giá skill đáng biết, và bài học về việc đọc
claude_code.pytrước khi chạy bất cứ thứ gì. - reticlehq/reticle, GitHub. Vì sao nên đọc: codemod
initlà ví dụ rõ nhất về một trình cài đặt ghi ra rất xa ngoài project của bạn. - Q00/ouroboros, GitHub. Vì sao nên đọc: một workflow dựa trên hook chỉ hợp lý khi cài toàn cục, với một bước setup mà bản cài ở project không thể đáp ứng.
- ibelick/ui-skills, GitHub. Vì sao nên đọc: bản cài rẻ nhất ở đây với +37 token, và chưa từng được gọi lần nào.
- /skill-doctor: 40 skills, 3,060 tokens a turn, dev.to. Vì sao nên đọc: bảng phân tích chi phí theo từng skill trên một setup thật.
- Too many Claude Code skills? How the listing budget decides, dev.to. Vì sao nên đọc: cơ chế khiến các mô tả bị cắt ngắn.
- Why More Than 30 Skills Kill Your AI Agent, dev.to. Vì sao nên đọc: phiên bản dễ đọc của bài báo về hiệu ứng che khuất.
- Skill shadowing paper, arXiv. Vì sao nên đọc: mức giảm pass-rate gộp theo kích thước thư viện, kèm khoảng tin cậy.
- I removed 63% of my Claude Code setup, Reddit r/ClaudeCode. Vì sao nên đọc: từ ~235 thành phần xuống ~87, lưu trữ chứ không xóa.
- My fresh Claude Code sessions were starting at ~35K tokens, Reddit r/ClaudeCode. Vì sao nên đọc: quy trình audit
/context allbảy bước bạn có thể chép dùng ngay chiều nay. - img2threejs/img2threejs, GitHub. Vì sao nên đọc: bằng chứng rằng một
SKILL.md32,902 byte chỉ tốn 107 token cho đến khi bạn gọi nó. - FloWritesCode/fwc-swiftui-skills, GitHub. Vì sao nên đọc: skill Markdown tĩnh, hình mẫu của một bản cài không thể xung đột với bất cứ thứ gì.
FAQ
MCP server có còn tốn hàng nghìn token schema lúc khởi động không?
Không, trên phiên bản đã đo. Schema được hoãn tải và chi phí tỷ lệ với số tên tool được quảng bá, khoảng 42 đến 47 token mỗi tên. Một server có 39 tool tốn +1,642 token; một server có 2 tool tốn +37.
Vì sao Chisle tốn hơn baseline dù tạo ra ít token đầu ra hơn?
Bộ quy tắc của nó được tải lúc bắt đầu phiên (+3,496 token) và hook của nó chèn 287 byte ở mỗi lượt. Trên T2 và T3, phần đầu vào dôi ra đó lớn hơn mức tiết kiệm đầu ra vốn chưa bao giờ vượt qua nhiễu giữa các lượt chạy.
AIDive