Portal của Spotify giúp tôi cắt giảm 90% lượng token tiêu thụ của Claude Code
Bài viết chia sẻ giải pháp tối ưu chi phí AI coding bằng cách sử dụng Portal và chế độ AiKA Modes của Spotify để định tuyến các tác vụ đọc file, tạo code đơn giản sang mô hình rẻ hơn (Gemini Flash) thay vì dùng Claude Code cho mọi thứ. Kết quả đo được giảm tới 90% token tiêu thụ mà không mất chất lượng, giúp giảm áp lực tài chính cho đội ngũ phát triển.

Portal của Spotify giúp tôi cắt giảm 90% lượng token tiêu thụ của Claude Code – bí quyết nằm ở việc “định tuyến” mô hình
Trong bối cảnh chi phí AI coding dự kiến vượt cả lương trung bình của lập trình viên vào năm 2028, việc tối ưu token đang trở thành bài toán sống còn. Thay vì đầu tư hạ tầng phức tạp, kỹ sư của Spotify đã tìm ra giải pháp đơn giản: dùng Portal với cơ chế AiKA Modes để giao việc “cơ bắp” cho mô hình rẻ hơn, chỉ giữ lại phần tư duy cho Claude Code. Kết quả đo được là mức tiết kiệm token ấn tượng lên tới 90% trong các tác vụ đọc hiểu mã nguồn.
Vấn đề: Token bị đốt vào “I/O” thay vì tư duy
Phần lớn những gì một AI coding agent làm cho tôi không phải là suy nghĩ, mà là nhập/xuất dữ liệu (I/O). Đọc năm file chỉ để trả lời một câu hỏi về một method cụ thể. Tạo file test theo đúng pattern của hai mươi file test bên cạnh. Cập nhật tài liệu sau cuộc họp. Hàng ngàn token tiêu tốn nhưng gần như không có chút suy luận nào.
Chi phí giấy phép chỗ ngồi (seat license) không đau bằng chi phí token. Vấn đề là bạn đang đưa toàn bộ công việc này cho một mô hình “sân bay” (frontier model) cực kỳ đắt đỏ và quá “overqualified”. Câu hỏi đặt ra: Nếu có thể định tuyến phần việc chân tay sang một mô hình rẻ hơn xử lý tốt tương đương, và giữ mô hình đắt tiền cho những bài toán thực sự cần nó thì sao?
Vấn đề này không chỉ của riêng tôi. Đến năm 2028, chi phí AI coding được dự báo sẽ vượt mức lương trung bình của một lập trình viên. Một phần tư lãnh đạo kỹ thuật đã đốt từ 200 đến 500 USD mỗi tháng cho mỗi lập trình viên, có người lên tới hơn 2.000 USD. Công cụ này tự trang trải chi phí, nhưng chỉ khi bạn ngừng đốt token cao cấp vào những việc không cần đến chúng.
Giải pháp: AiKA Modes trong Portal của Spotify
Hóa ra cách khắc phục không đòi hỏi một đội ngũ platform hay một gói đăng ký mới. Chỉ cần hai chế độ. Đây chính xác là loại use case mà AiKA Modes trong Portal của Spotify được xây dựng để giải quyết.
Mode là một agent khai báo (declarative) chạy trên môi trường nhất thời (ephemeral runtime) – giống như AWS Lambda nhưng dành cho 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ư nhiệt độ (temperature) và gắn các công cụ MCP. Portal 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 server chạy lâu dài. Mode có thể được gọi từ CLI hoặc API của Portal, có thể là public (dùng chung toàn công ty) hoặc private.
Để bộ định tuyến này hoạt động, tôi tạo ra hai mode:
- bulk-reader: Dùng khi Claude có ý định đọc nhiều file lớn chỉ để trả lời một câu hỏi.
name: bulk-reader
description: Bulk file reader for code analysis - delegates I/O from Claude Code
instructions: You are a precise code analyst. Read the provided files and answer the question concisely. Output structured bullets only. No greetings, no prose, no preambles. Lead every bullet with the exact name, type, or line number. Use nested bullets for details. Skip anything the caller did not ask for.
visibility: public
model: gemini-2.5-flash
resourceLimits:
temperature: 0.2
tags:
- coding
- delegation
- code-writer: Dành cho việc tạo test, scaffolding cấu hình, type stubs hoặc bất cứ thứ gì có output dễ đoán từ các pattern hiện có.
Cả hai mode đều dùng Gemini 2.5 Flash làm mô hình worker (có thể đổi sang bất kỳ mô hình nào đã cấu hình trong Portal). Câu chỉ dẫn “output only the code” rất quan trọng, vì nếu thiếu nó, mô hình sẽ bao bọc mọi thứ trong các khối markdown và lời giải thích mà Claude sau đó phải parse qua.
Portal của Spotify giúp tối ưu hóa việc sử dụng AI coding agents
Plugin shunt và cơ chế hoạt động
Phiên bản đầu tiên là một khối quy tắc định tuyến trong file CLAUDE.md. Nó hoạt động “tàm tạm”: Claude đọc chỉ dẫn và tự định tuyến tới Portal. Nhưng có vấn đề: các quy tắc chỉ mang tính tư vấn, không bắt buộc – Claude có thể bỏ qua. Và mỗi dự án đều cần bản sao riêng của chỉ dẫn.
Phiên bản hiện tại là một plugin Claude Code tên shunt. Việc delegation đi qua registry hành động CLI của Portal, nên plugin hoạt động trên mọi instance Portal có bật plugin AiKA.
Các hook của Claude Code kích hoạt trước mỗi lần gọi công cụ. Shunt đăng ký hai PreToolUse hooks:
- check-file-size: Kích hoạt trên mỗi lượt Read. Nếu file vượt ngưỡng dòng cấu hình (mặc định 350), hook sẽ chặn việc đọc và bảo Claude dùng kỹ năng /bulk-reader. Các lượt đọc có chủ đích (targeted reads) vẫn đi qua vì Claude đã biết phần nó cần.
- check-bash-read: Phát hiện các lệnh
cat,head,tail,less,moretrên file lớn. Các lệnh pipe (cat file | grep) được đi qua vì đó là các lượt đọc có chủ đích.
Ngưỡng dòng có thể cấu hình qua biến môi trường SHUNT_MIN_LINES.
Tôi có hai script bash bọc các lệnh gọi CLI của Portal. Claude gọi script với các tham số có tên. Script tự xử lý: xây dựng request, gọi action, xử lý lỗi và báo cáo token sử dụng ra stderr. Mode được gọi theo tên và Portal giải quyết theo thứ tự ưu tiên: mode của bạn, rồi team, rồi public. Nếu fork mode public bulk-reader thành bản tuỳ chỉnh, bản của bạn tự động được ưu tiên mà không cần cấu hình thêm.
bulk-read bọc mỗi file trong thẻ XML để phân ranh giới rõ ràng, gửi chúng cùng câu hỏi tới mode bulk-reader. Mỗi delegation là một lần gọi duy nhất, mang tính nhất thời (không lưu trữ phía server). Việc gửi lại file trong các lần hỏi tiếp theo là miễn phí, vì phần nội dung đi thẳng tới worker model và không bao giờ lọt vào context của Claude.
code-write gửi spec và một file tham chiếu tới mode code-writer, loại bỏ các khung markdown khỏi kết quả và có thể ghi trực tiếp ra đĩa. Claude không bao giờ nhìn thấy code được sinh ra. File tham chiếu là bắt buộc: nếu không có file để đối chiếu pattern, worker sẽ sinh code “phi ngữ cảnh” chẳng khớp gì với project của bạn.
Hai file kỹ năng (skill) hướng dẫn Claude khi nào và làm sao gọi các script. Khi hook chặn một lượt đọc, thông báo chặn sẽ chỉ Claude tới kỹ năng /bulk-reader với cú pháp gọi chính xác. Hệ thống phân lớp này cho phép xuống cấp một cách duyên dáng: ngay cả khi Claude không đọc mô tả kỹ năng, hook vẫn chặn lượt đọc đắt đỏ. Kỹ năng chỉ làm cho việc redirect mượt mà hơn.
Kết quả và giới hạn
Khi thử nghiệm trên một Java monorepo ở bốn kịch bản, đo lường token mà Claude sẽ tiêu thụ khi đọc trực tiếp file so với khi dùng tóm tắt của bulk-reader hoặc viết code qua code-writer, mức tiết kiệm trung bình của bulk-read lên tới con số 90% đáng kinh ngạc.
Kịch bản code-write khó đo lường hơn vì nếu không có shunt, Claude vừa đọc file tham chiếu vừa sinh output bằng token output đắt đỏ. Còn với shunt, code đi thẳng ra đĩa, Claude không bao giờ nhìn thấy nó.
Tuy nhiên, có những việc không thể delegation:
- Không thể delegate việc chỉnh sửa: Các bản tóm tắt của worker model không bao gồm số dòng đáng tin cậy. Nếu Claude cần chỉnh sửa dựa trên phân tích, nó vẫn phải đọc phần cụ thể đó trực tiếp.
- Không thể delegate suy luận: Worker model chỉ tìm thấy các pattern bề mặt và đã bỏ sót một bug về thread-safety tinh vi trong thử nghiệm của tôi. Claude phát hiện ra trong vài giây sau khi có context phù hợp. Quy tắc định tuyến loại trừ hoàn toàn việc gỡ lỗi, quyết định kiến trúc và code nhạy cảm về bảo mật.
- Độ trễ tăng dần theo số lần gọi: Mỗi delegation là một chuyến đi mạng khứ hồi, thường mất 10–30 giây. Portal giới hạn một lần gọi ở 30 giây, nên các thế hệ rất lớn cần tách thành nhiều lần gọi nhỏ. Điều này chấp nhận được cho việc đọc file lớn, nhưng phản tác dụng với file nhỏ. Ngưỡng dòng tồn tại vì lý do này.
Sức mạnh thực sự: Biến bài toán hạ tầng thành bài toán cấu hình
Plugin này là một artifact Claude Code, nhưng ý tưởng bên dưới là định tuyến mô hình được hỗ trợ bởi AiKA modes. Các mode chính là phần chịu lực:
- Tái sử dụng được: Cùng một bộ bulk-reader và code-writer hoạt động trên mọi dự án và mọi công cụ có thể gọi ra CLI của Portal.
- Chia sẻ được: Cả hai mode đều public trong AiKA. Bất kỳ ai cũng có thể dùng chúng ngay hôm nay mà không cần tự tạo.
- Kết hợp được: Bạn có thể tạo mode doc-writer cho tài liệu, mode reviewer cho tóm tắt code review, mode translator cho i18n. Mỗi cái chỉ mất vài cú nhấp chuột.
- Tách biệt quyết định định tuyến khỏi worker: Plugin quyết định khi nào delegation, mode quyết định cách phản hồi. Đổi Gemini Flash sang mô hình rẻ hơn, thay đổi system prompt, thêm công cụ MCP – plugin không thay đổi.
Đây là sức mạnh thực sự của AiKA Modes: chúng biến model routing từ một bài toán kỹ thuật hệ thống thành bài toán cấu hình. Bạn không xây hạ tầng, bạn mô tả thứ mình muốn và đặt tên cho nó.
Hướng dẫn cài đặt
claude plugin marketplace add spotify/portal-ai-plugins
Sau đó trong session Claude Code mới, chạy /portal:setup để xác thực CLI của Portal với instance của bạn. Các mode bulk-reader và code-writer đã public sẵn nên không cần tạo thêm. Nếu muốn tùy chỉnh (đổi worker model, chỉ dẫn khác), chỉ cần fork chúng trong Portal và bản của bạn sẽ tự động được ưu tiên.
Các mode này hoạt động chung cho mọi dự án và có thể chia sẻ với team. Plugin thực thi việc định tuyến để bạn không phải nghĩ về nó. Hãy tìm hiểu thêm về modes để áp dụng ngay hôm nay – nhất là với các đội ngũ đang phát triển phần mềm tại Việt Nam, nơi việc tối ưu chi phí AI đang trở thành yếu tố cạnh tranh quan trọng.


