Hướng dẫn bộ đệm mã Claude của kỹ sư Anthropic tiết kiệm 300 triệu Token mỗi tuần

原文标题:How Anthropic Engineers Actually Save Tokens
Original Title: Các kỹ sư của Anthropic thực sự tiết kiệm Token như thế nào
原文作者:Nate Herk
Tác giả: Nate Herk
编译:Peggy,BlockBeats
Dịch: Peggy, BlockBeats

编者按:很多人使用 Claude Code 时,最直观的感受是 Token 消耗太快、长会话很容易吃额度。但从 Anthropic 工程师的视角看,真正影响成本的,往往不是你写了多少代码,而是系统有没有持续复用已经处理过的上下文。

Bài viết này chia sẻ cốt lõi là làm thế nào để tiết kiệm Token thông qua cơ chế cache. Trong vòng một tuần, tác giả đã tái sử dụng hơn 3 tỷ Token nhờ cache, với lượng cache trong ngày đạt tới 91 triệu. Vì chi phí cho Token cache chỉ bằng 10% của Token nhập bình thường, điều này có nghĩa là 91 triệu Token cache thực tế tính phí tương đương khoảng 9 triệu Token thông thường. Việc Claude Code có thể duy trì các cuộc hội thoại dài hơn không phải vì mô hình hoạt động miễn phí, mà là do nhiều ngữ cảnh lặp lại đã được tái sử dụng thành công.

Chìa khóa của prompt caching là 「đừng làm gián đoạn cache」. Claude Code sẽ phân lớp cache các phần như lời nhắc hệ thống, định nghĩa công cụ, CLAUDE.md, quy tắc dự án và đối thoại lịch sử; chỉ cần phần tiền tố của yêu cầu sau giữ nguyên, Claude có thể đọc trực tiếp cache mà không cần xử lý lại toàn bộ ngữ cảnh. Nội bộ của Anthropic cũng theo dõi tỷ lệ tái sử dụng prompt cache, vì nó không chỉ ảnh hưởng đến hạn mức của người dùng mà còn liên quan trực tiếp đến chi phí dịch vụ mô hình và hiệu quả vận hành.

Đối với người dùng thông thường, không cần hiểu tất cả các chi tiết nền tảng, chỉ cần nắm vài thói quen quan trọng: đừng để cuộc hội thoại bị bỏ quên quá 1 giờ; khi chuyển đổi nhiệm vụ, thực hiện chuyển giao phiên làm việc; tránh thay đổi mô hình quá thường xuyên; các tài liệu lớn nên bỏ vào Projects thay vì dán đi dán lại trong đối thoại.

Bài viết này, thay vì nói về mẹo tiết kiệm Token, lại cung cấp một phương pháp sử dụng Claude Code theo tư duy kỹ sư hơn: coi ngữ cảnh như một tài sản, giữ cache liên tục tái sử dụng, giảm thiểu tính toán lặp lại trong các cuộc hội thoại dài.

Dưới đây là nguyên bản:

Tuần này tôi đã tiết kiệm được 3 tỷ Token, trong ngày đạt 91 triệu, trong một tuần vượt quá 3 tỷ.

Tôi không thay đổi bất kỳ cài đặt nào. Chỉ là prompt caching hoạt động bình thường ở nền phía sau.

Nhưng khi tôi thực sự hiểu cache là gì, và làm thế nào để tránh làm gián đoạn cache, thì trong cùng hạn mức sử dụng, các cuộc hội thoại của tôi có thể kéo dài hơn. Vì vậy, tôi tổng hợp một hướng dẫn nhập môn 80/20 về prompt caching của Claude Code, không đi sâu vào chi tiết API.

TL;DR

Chi phí cho Token cache chỉ bằng 10% của Token nhập bình thường. 91 triệu Token cache, thực tế tính phí tương đương khoảng 9 triệu Token.

Phiên bản đăng ký Claude Code có TTL cache là 1 giờ; API mặc định là 5 phút; Sub-agent luôn là 5 phút.

Cache gồm ba lớp: lớp hệ thống, lớp dự án, lớp đối thoại.

Chuyển đổi mô hình giữa chừng sẽ phá vỡ cache, kể cả khi bật chế độ 「opus plan」.

Cache tính phí như thế nào?

Mỗi Token được cache đều có chi phí bằng 10% của Token nhập.

Vì vậy, khi dashboard của tôi hiển thị có 91 triệu Token trúng cache trong một ngày, thì thực tế tính phí chỉ khoảng 9 triệu Token đã xử lý. Đây cũng là lý do khi dùng Claude Code lâu dài, cảm giác như hội thoại gần như 「miễn phí」 kéo dài.

Trong dashboard có hai con số đáng chú ý:

Cache create:Chi phí phát sinh khi ghi nội dung vào cache, sẽ có tác dụng trong các lượt hội thoại tiếp theo.
Cache read:Claude tái sử dụng Token từ cache, như CLAUDE.md, định nghĩa công cụ, các tin nhắn trước đó. Chi phí thấp hơn xử lý lại toàn bộ như nhập mới 10 lần.

Nếu số lượng Cache read của bạn cao, chứng tỏ bạn đang tận dụng cache hiệu quả; nếu thấp, nghĩa là bạn đang trả phí cho cùng một ngữ cảnh nhiều lần.

Thariq của Anthropic có câu rất ấn tượng: 「Chúng tôi thực sự theo dõi tỷ lệ trúng cache prompt, một khi tỷ lệ này thấp quá, sẽ có cảnh báo, thậm chí kích hoạt sự cố cấp SEV.」

Anh ấy còn viết một bài X rất hay. Khi tỷ lệ trúng cache cao, sẽ đồng thời xảy ra bốn điều: Claude Code cảm giác nhanh hơn, chi phí dịch vụ của Anthropic giảm, hạn mức của bạn bền hơn, các cuộc mã hóa dài trở nên khả thi hơn.

Nhưng nếu tỷ lệ trúng cache thấp, ai cũng thiệt.

Vì vậy, động lực của hai bên thực ra là thống nhất: Anthropic muốn tỷ lệ trúng cache cao hơn, còn bạn cũng muốn như vậy. Những thói quen nhỏ tưởng chừng vô hại, nhưng âm thầm reset cache, mới là thứ gây cản trở lớn nhất.

Cache tăng trưởng như thế nào trong mỗi vòng đối thoại?

Cache dựa vào 「so khớp tiền tố」, hay còn gọi là 「prefix matching」.

Bạn không cần đi sâu vào kỹ thuật, chỉ cần hiểu một điểm: miễn là nội dung trước một vị trí nào đó trùng khớp hoàn toàn với nội dung đã cache, Claude có thể tái sử dụng phần cache Token đó.

Một cuộc hội thoại mới bắt đầu như thế này:

Theo tài liệu của Claude Code, một cuộc hội thoại mới thường diễn ra như sau:

Vòng hội thoại đầu tiên: chưa có cache nào. Lời nhắc hệ thống, ngữ cảnh dự án (ví dụ CLAUDE.md, memory, quy tắc), và tin nhắn đầu tiên của bạn sẽ được xử lý lại và ghi vào cache.

Vòng hội thoại thứ hai: tất cả nội dung của vòng đầu đã được cache. Claude chỉ cần xử lý phản hồi mới của bạn và tin nhắn tiếp theo. Chi phí của vòng này sẽ thấp hơn nhiều.

Vòng hội thoại thứ ba: tương tự. Các nội dung của hội thoại trước vẫn còn trong cache, chỉ cần xử lý lại phần mới nhất.

Cache có thể phân thành ba lớp:

Từ bài X của Thariq:

Lớp hệ thống (System layer): bao gồm lệnh cơ bản, định nghĩa công cụ (read, write, bash, grep, glob) và phong cách xuất. Đây là cache toàn cục.

Lớp dự án (Project layer): bao gồm CLAUDE.md, memory, quy tắc dự án. Lớp này cache theo dự án.

Lớp đối thoại (Conversation): bao gồm phản hồi và tin nhắn, sẽ tăng dần theo từng vòng.

Nếu trong quá trình hội thoại, nội dung của lớp hệ thống hoặc lớp dự án thay đổi, toàn bộ nội dung đó phải được cache lại từ đầu. Đây là thao tác đắt nhất. Tưởng tượng bạn đã nói đến tin nhắn thứ 16, rồi đột nhiên thay đổi lời nhắc hệ thống hoặc tạm dừng một giờ, thì tất cả Token từ tin nhắn đầu tiên đều phải xử lý lại.

1 giờ và 5 phút: sự nhầm lẫn dễ xảy ra

Đây là phần dễ gây hiểu lầm nhất.

Claude Code phiên bản đăng ký: TTL mặc định là 1 giờ.

Claude API: TTL mặc định là 5 phút. Bạn có thể trả phí để nâng lên 1 giờ.
Sub-agent của mọi kế hoạch: luôn là 5 phút.

Claude.ai chat trên web: không có ghi chính thức. Có thể giống phiên bản đăng ký, nhưng chưa xác nhận.

Vài tháng trước, nhiều người phàn nàn về việc hạn mức Claude tiêu hao quá nhanh. Có người nghĩ rằng Anthropic đã âm thầm giảm TTL từ 1 giờ xuống 5 phút mà không thông báo. Nhưng thực tế, TTL của Claude Code vẫn là 1 giờ.

Vấn đề là, tài liệu của Claude Code và API được phân tách riêng, vốn dĩ là hai thứ hoàn toàn khác nhau, dẫn đến nhiều nhầm lẫn.

Nếu bạn chạy nhiều workflow Sub-agent hoặc dùng API trực tiếp, thì con số 5 phút rất quan trọng. Nhưng đối với 95% người dùng Claude Code, điều cần chú ý thực sự là khoảng thời gian 1 giờ.

Ba thói quen giúp 95% người dùng

Dưới đây là những điều tôi thấy thực sự hữu ích trong sử dụng hàng ngày.

Đừng để quá lâu

Nếu bạn đã rảnh quá 1 giờ, nội dung cũ gần như đã hết hạn trong cache. Lần tiếp theo gửi tin nhắn, cache sẽ bị làm mới. Trong trường hợp này, thay vì tiếp tục duy trì một hội thoại đã nguội, tốt hơn là làm rõ ràng chuyển giao rồi bắt đầu hội thoại mới, thường sẽ tiết kiệm chi phí hơn.

Chuyển nhiệm vụ, bắt đầu lại ngay

/compact hoặc /clear vốn đã phá cache rồi, nên cứ tận dụng thời điểm này để reset hoàn toàn.

Mình đã tạo một kỹ năng chuyển giao phiên làm việc, thay thế /compact. Nó sẽ tổng hợp những gì đã làm, còn lại những quyết định chưa rõ, các file quan trọng, và điểm tiếp theo cần làm. Sau đó, mình chạy /clear, dán bản tóm tắt vào, như thể không có gì bị gián đoạn, rồi tiếp tục.

Lệnh /compact đôi khi chạy chậm, còn kỹ năng chuyển giao này thường chỉ mất chưa tới một phút.

Trong chat Claude, nên bỏ các tài liệu lớn vào Projects

Cơ chế cache của Claude.ai chưa có hướng dẫn chính thức rõ ràng, nhưng Projects rõ ràng có tối ưu khác so với các cuộc đối thoại thông thường. Vì vậy, nếu dán tài liệu lớn, tốt nhất là bỏ vào Project, chứ không dán trực tiếp vào đối thoại.

Những thao tác nào âm thầm phá vỡ cache?

Có vài việc sẽ làm reset cache mà không báo trước.

Chuyển đổi mô hình: vì cache dựa vào tiền tố, mỗi mô hình có cache riêng. Chuyển mô hình, lần tiếp theo yêu cầu sẽ không có cache nào, phải đọc lại toàn bộ lịch sử.

Chế độ 「opus plan」: chế độ này dùng Opus trong giai đoạn lập kế hoạch, dùng Sonnet trong thực thi. Mình đã từng giới thiệu trong các video tối ưu token, có lý do. Nhưng cần hiểu rằng, mỗi lần chuyển plan, về bản chất là chuyển mô hình, đồng nghĩa phải xây dựng cache mới. Về lâu dài, vẫn giúp kéo dài hạn mức, nhưng bạn cần hiểu rõ chuyện gì đang xảy ra phía dưới.

Chỉnh sửa CLAUDE.md giữa chừng là được: việc này không ảnh hưởng ngay lập tức, phải đợi lần khởi động tiếp theo mới áp dụng. Cache đang chạy sẽ không bị ảnh hưởng.

Bảng điều khiển Token miễn phí của mình

Ảnh chụp trước là từ một dashboard token.

https://github.com/nateherkai/token-dashboard

Đây là một kho lưu trữ GitHub rất đơn giản. Bạn cung cấp liên kết cho Claude Code, nó sẽ triển khai trên localhost, đọc tất cả các hội thoại cũ của bạn, không bắt đầu từ con số trống. Bạn sẽ thấy dữ liệu input, output, cache create, cache read hàng ngày.

Chỉ cần lưu ý: dashboard này thống kê Token trên thiết bị của bạn. Nếu chuyển từ desktop sang laptop, số liệu sẽ không hoàn toàn khớp. Mỗi thiết bị có bộ thống kê riêng.

Tổng kết

Prompt caching là một lĩnh vực có thể nghiên cứu sâu. Bài của Thariq còn đầy đủ hơn, nếu muốn xem toàn diện, đáng để đọc.

Nhưng bạn không cần hiểu hết tất cả chi tiết để hưởng lợi. Chỉ cần nắm 80/20 điều quan trọng nhất: cache Token rẻ hơn 10 lần Token bình thường; TTL của Claude Code là 1 giờ; chuyển đổi mô hình sẽ phá cache; chuyển giao rõ ràng giữa các nhiệm vụ thường tiết kiệm hơn so với để hội thoại cũ hết hạn rồi tiếp tục.

[Link bài gốc]

Nhấn để biết thêm về các vị trí tuyển dụng của BlockBeats

Tham gia cộng đồng chính thức của BlockBeats:

Telegram nhóm theo dõi: https://t.me/theblockbeats

Telegram nhóm trao đổi: https://t.me/BlockBeats_App

Twitter chính thức: https://twitter.com/BlockBeatsAsia

Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • 8
  • 2
  • Retweed
Bình luận
Thêm một bình luận
Thêm một bình luận
RouterWhisperer
· 7giờ trước
Việc tái sử dụng bộ đệm mới là cốt lõi để giảm chi phí, 300 triệu Token trong một tuần quá là phóng đại.
Xem bản gốcTrả lời0
YieldGoblin
· 17giờ trước
Chất lượng biên dịch của BlockBeats luôn duy trì ở mức cao, bài viết hữu ích này
Xem bản gốcTrả lời0
GateUser-047cb6fc
· 17giờ trước
Tiết kiệm Token = Tiết kiệm tiền, thao tác này học ngay đi
Xem bản gốcTrả lời0
Mint-ColoredSlippage
· 17giờ trước
Không phải Token đắt, mà là dùng ngu, cache không ngon sao
Xem bản gốcTrả lời0
TheWindOnTheBridgeIsTooStrong.
· 17giờ trước
Kinh nghiệm nội bộ do chính nhân viên của Anthropic viết, giá trị tham khảo cực cao
Xem bản gốcTrả lời0
0xSecondThought
· 17giờ trước
Cuối cùng tôi cũng hiểu tại sao hóa đơn Claude Code của tôi lại khủng khiếp như vậy
Xem bản gốcTrả lời0
MetalKeyInsomnia
· 17giờ trước
Kẻ giết chết cuộc trò chuyện dài cuối cùng đã được tìm ra
Xem bản gốcTrả lời0
SoftRugDetective
· 17giờ trước
Hệ thống tái sử dụng ngữ cảnh, chẳng phải là Redis phiên bản LLM sao?
Xem bản gốcTrả lời0
  • Đã ghim