Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung)
88

Thủ thuật

Cách giảm 90% chi phí token cho Claude Code bằng AiKA Modes từ Spotify

(giờ Việt Nam)

Tóm tắt AI

Tác giả đã tích hợp AiKA Modes của Spotify vào Claude Code để điều hướng các tác vụ đọc file và tạo code mẫu sang Gemini 2.5 Flash, giúp tiết kiệm tới 90% lượng token tiêu thụ.

Bản dịch AI

Portal by Spotify cut my Claude Code token usage by 90% | Spotify Engineering

Hầu hết những gì một AI coding agent làm cho tôi không phải là tư duy. Đó là I/O (nhập/xuất dữ liệu).

Đọc năm tệp tin để trả lời một câu hỏi về một phương thức. Tạo một tệp kiểm thử tuân theo chính xác mẫu của hai mươi tệp kiểm thử bên cạnh nó. Cập nhật tài liệu sau cuộc họp. Hàng nghìn token đã mất đi mà gần như không có sự suy luận nào. Thứ gây đau ví không phải là phí bản quyền, mà là số lượng token. Và bạn đang nạp tất cả những thứ đó vào một mô hình frontier (tiên tiến) vốn đã quá dư thừa năng lực. Sẽ ra sao nếu bạn có thể chuyển hướng những công việc chân tay đó cho thứ gì đó rẻ hơn mà vẫn xử lý tốt, và để dành mô hình đắt tiền cho những vấn đề thực sự cần đến nó?

Đây không chỉ là vấn đề của riêng tôi. Đến năm 2028, chi phí cho AI coding dự kiến sẽ vượt xa mức lương trung bình của một lập trình viên. Một phần tư các nhà lãnh đạo kỹ thuật đã tiêu tốn từ 200–500 USD mỗi tháng cho mỗi lập trình viên chỉ để trả phí token. Một số thậm chí đã vượt quá 2.000 USD. Các công cụ này sẽ tự hoàn vốn, nhưng chỉ khi bạn ngừng lãng phí các token của mô hình frontier cho những công việc không cần đến chúng.

Hóa ra, giải pháp không cần đến một đội ngũ nền tảng hay một gói đăng ký mới. Chỉ cần hai chế độ (mode).

Hai chế độ, không cần viết code

Đây chính xác là loại trường hợp sử dụng mà AiKA Modes trong Portal của Spotify được xây dựng để phục vụ. Một mode là một agent khai báo chạy trên một runtime tạm thời - hãy hình dung giống như AWS Lambda, nhưng dành cho các agent. Bạn định nghĩa các chỉ dẫn, chọn mô hình, thiết lập các tham số như temperature và đính kèm các công cụ MCP. Portal sẽ xử lý phần còn lại. Không cần quản lý hạ tầng, không cần API key, không cần các máy chủ chạy dài hạn. Các mode có thể được gọi từ Portal CLI hoặc API. Chúng có thể ở chế độ công khai (chia sẻ với toàn bộ công ty) hoặc riêng tư.

Để bộ định tuyến (router) này hoạt động, tôi đã tạo hai mode. Cả hai đều sử dụng Gemini 2.5 Flash làm mô hình xử lý trong các ví dụ dưới đây, nhưng trường model chấp nhận bất kỳ mô hình nào bạn đã cấu hình trong instance Portal của mình. Hãy chọn bất cứ thứ gì phù hợp với bạn.

Mode 1: bulk-reader

Dành cho những lúc Claude phải đọc nhiều tệp tin lớn chỉ để trả lời một câu hỏi.

name: bulk-reader description: Trình đọc tệp hàng loạt để phân tích mã nguồn - ủy quyền I/O từ Claude Code instructions: Bạn là một chuyên gia phân tích mã nguồn chính xác. Hãy đọc các tệp được cung cấp và trả lời câu hỏi một cách súc tích. Chỉ xuất ra các gạch đầu dòng có cấu trúc. Không chào hỏi, không văn xuôi, không lời dẫn. Bắt đầu mỗi gạch đầu dòng bằng tên, loại hoặc số dòng chính xác. Sử dụng các gạch đầu dòng lồng nhau để biết chi tiết. Bỏ qua bất cứ điều gì mà người gọi không yêu cầu. visibility: public model: gemini-2.5-flash resourceLimits: temperature: 0.2 tags: - coding - delegation

Mode 2: code-writer

Dành cho các bài kiểm thử, khung cấu hình, type stub hoặc bất cứ thứ gì mà kết quả có thể dự đoán được từ các mẫu hiện có.

Chỉ dẫn "chỉ xuất ra mã nguồn" đó rất quan trọng. Nếu không có nó, mô hình sẽ bao bọc mọi thứ trong các khối markdown và văn xuôi giải thích, khiến Claude sau đó phải mất công phân tích cú pháp.

Định tuyến (Routing)

Phiên bản đầu tiên của việc này là một khối các quy tắc định tuyến trong CLAUDE.md. Nó hoạt động theo kiểu: Claude sẽ đọc các chỉ dẫn và tự định tuyến đến Portal. Nhưng nó có vấn đề. Các quy tắc chỉ mang tính chất tham khảo, không bắt buộc. Claude có thể phớt lờ chúng. Và mỗi dự án lại cần một bản sao riêng của các chỉ dẫn đó.

Phiên bản hiện tại là một plugin của Claude Code có tên là shunt. Việc ủy quyền đi qua registry hành động của Portal CLI, vì vậy plugin này hoạt động với bất kỳ instance Portal nào đã bật plugin AiKA.

Lớp 1: Hooks

Các hook của Claude Code được kích hoạt trước mỗi lần gọi công cụ. Shunt đăng ký hai hook PreToolUse:

check-file-size kích hoạt trên mỗi lệnh gọi Read. Nếu tệp vượt quá ngưỡng dòng có thể cấu hình (mặc định: 350), hook sẽ chặn việc đọc và yêu cầu Claude sử dụng kỹ năng /bulk-reader thay thế. Các lệnh đọc có mục tiêu cụ thể vẫn được thông qua - vì Claude đã biết phần nào nó cần.

check-bash-read bắt các lệnh cat, head, tail, less và more trên các tệp lớn. Các lệnh pipe (cat file | grep) vẫn được thông qua vì đó là các lệnh đọc có mục tiêu.

Ngưỡng này có thể cấu hình thông qua biến môi trường SHUNT_MIN_LINES. Hãy thiết lập nó trong shell profile của bạn hoặc trong.claude/settings.json:

{ "env": { "SHUNT_MIN_LINES": "500" } }

Lớp 2: Scripts

Tôi có hai tập lệnh bash bao bọc các lệnh gọi Portal CLI. Claude gọi một tập lệnh với các đối số được đặt tên. Các tập lệnh xử lý mọi thứ bên trong: xây dựng yêu cầu, gọi các hành động, giải mã lỗi và báo cáo mức sử dụng token ra stderr.

Các mode được gọi bằng tên và được Portal phân giải: không phân biệt chữ hoa chữ thường, ưu tiên mode của bạn, sau đó đến của nhóm bạn, và cuối cùng là các mode công khai. Hãy fork mode bulk-reader công khai thành một phiên bản tùy chỉnh và của bạn sẽ tự động được ưu tiên - không cần cấu hình gì thêm.

bulk-read bao bọc mỗi tệp trong các thẻ XML để phân định ranh giới rõ ràng và gửi chúng đến mode bulk-reader cùng với câu hỏi.

Mỗi lần ủy quyền là một lần thực thi (one shot). Việc gọi này là tạm thời (không có gì được lưu trữ phía máy chủ) và việc gửi lại các tệp trong lần hỏi tiếp theo là miễn phí ở những nơi cần thiết, vì nội dung tệp được gửi đến mô hình xử lý và không bao giờ đi vào ngữ cảnh của Claude.

code-write gửi một đặc tả và một tệp tham chiếu đến mode code-writer, loại bỏ các khối markdown khỏi đầu ra và có thể ghi trực tiếp vào đĩa. Claude không bao giờ nhìn thấy mã nguồn đã tạo. Tệp tham chiếu là bắt buộc: nếu không có tệp để đối chiếu mẫu, mô hình xử lý sẽ tạo ra mã nguồn không có ngữ cảnh, không khớp với bất kỳ thứ gì trong dự án của bạn.

Lớp 3: Skills

Hai tệp kỹ năng (skill) cho Claude biết khi nào và làm thế nào để gọi các tập lệnh. Skills là các tệp markdown chứa mô tả và ví dụ sử dụng. Khi hook chặn một lệnh đọc, thông báo chặn sẽ hướng Claude đến kỹ năng /bulk-reader, hiển thị cú pháp gọi chính xác.

Việc phân lớp này có nghĩa là hệ thống sẽ suy giảm hiệu năng một cách nhẹ nhàng (graceful degradation). Ngay cả khi Claude không đọc mô tả kỹ năng, hook vẫn chặn lệnh đọc đắt đỏ đó. Kỹ năng chỉ làm cho việc chuyển hướng trở nên mượt mà hơn.

Các bài kiểm chuẩn (Benchmarks)

Đã thử nghiệm trên một monorepo Java qua bốn kịch bản, đo lường số token Claude sẽ tiêu thụ khi đọc tệp trực tiếp so với việc tiêu thụ bản tóm tắt của bulk-reader hoặc viết mã qua code-writer. Mức tiết kiệm trung bình của bulk-read là khoảng 90%.

Kịch bản code-write khó đo lường bằng token hơn vì nếu không có shunt, Claude vừa đọc các tệp tham chiếu vừa tạo ra đầu ra dưới dạng các token đầu ra đắt đỏ. Với shunt, mã nguồn đi thẳng vào đĩa, Claude không bao giờ nhìn thấy nó.

Những gì không hiệu quả

Bạn không thể ủy quyền việc chỉnh sửa. Các bản tóm tắt của mô hình xử lý không bao gồm số dòng đáng tin cậy. Nếu Claude cần thực hiện chỉnh sửa dựa trên phân tích, nó vẫn phải đọc trực tiếp phần cụ thể đó. Các hook cho phép đọc có mục tiêu (với offset/limit) chính vì lý do này, vì vậy việc ủy quyền giúp tiết kiệm token trong khâu tìm hiểu.

Bạn không thể ủy quyền việc suy luận. Mô hình xử lý tìm thấy các mẫu ở bề mặt nhưng đã bỏ lỡ một lỗi an toàn luồng (thread-safety) tinh vi trong quá trình thử nghiệm của tôi. Claude đã phát hiện ra nó trong vài giây khi được cung cấp đúng ngữ cảnh. Việc định tuyến loại trừ rõ ràng các tác vụ gỡ lỗi, quyết định kiến trúc và mã nguồn quan trọng về an toàn.

Độ trễ sẽ cộng dồn. Mỗi lần ủy quyền là một vòng lặp mạng: Claude Code đến backend của Portal, đến mô hình xử lý và quay lại. Các phản hồi thường mất 10–30 giây, và Portal giới hạn một lần gọi ở mức 30 giây, vì vậy các lần tạo mã rất lớn cần được chia nhỏ thành các lệnh gọi nhỏ hơn. Điều này chấp nhận được đối với các lệnh đọc lớn, nhưng phản tác dụng đối với các lệnh nhỏ. Ngưỡng dòng tồn tại chính vì lý do này, dưới ngưỡng đó, chi phí cho việc ủy quyền sẽ vượt quá mức tiết kiệm được.

Tiết kiệm token chỉ là điểm khởi đầu.

Feature Image
Đọc bài gốc

Bài viết được AI dịch và tổng hợp tự động từ Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung). Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.