Động cơ
- Trong ghi chú phát hành Claude Opus 4.7, phần nổi bật nhất là “mức sử dụng token tăng lên”.
- Khi chúng ta bước vào thời kỳ có quá nhiều việc có thể làm nếu có đủ token và thời gian, hiệu suất token cũng tiếp tục trở thành một vấn đề đáng quan tâm.
- Từ khoảng tháng 3, cộng đồng đã dậy sóng vì việc Claude Code lặng lẽ giảm caching TTL từ 1 giờ → 5 phút.
- Khi đo thử với Opus 4.7 thì có phân tích cho thấy mức tiêu thụ token cao hơn gần 1,5 lần so với 4.6.
- Cũng có một kho nghiên cứu về hiệu suất cache của Claude Code.
- Tôi nảy ra câu hỏi: “Liệu có cách nào tăng hiệu suất token bằng cách thay đổi các giá trị cấu hình trong Claude Code và Codex không?” Sau khi phân tích tài liệu chính thức của Claude Code (cấu hình/biến môi trường/IDE), tài liệu chính thức của Codex (cấu hình/biến môi trường/MCP), cùng mã nguồn Codex, tôi đã thu được những kết quả có ý nghĩa.
- Không chỉ với chế độ interactive thường dùng hằng ngày, tôi còn biết thêm nhiều cách để cải thiện hiệu suất token/tốc độ khởi động/độ ổn định trong chế độ non-interactive có thể lập trình được.
Prompt để phân tích trạng thái hiện tại của tôi
Đi thẳng vào vấn đề, đây là prompt dành cho những ai muốn kiểm tra thiết lập coding agent của mình đang ở mức nào:
https://gist.github.com/spilist/c468cbf1ed0ffc91100f813aabdcd520/… 를 읽고 그대로 실행해줘
Thứ gì thực sự đang ngốn token
Trong coding agent, nhìn chung có ba con đường khiến token bị rò rỉ:
- Văn bản bổ sung được tự động gắn vào ở mỗi phiên hoặc mỗi lượt
- Kết quả đầu ra của các lệnh gọi công cụ quá dài còn lưu lại trong lịch sử hội thoại
- Các lệnh gọi bổ sung phát sinh do kết nối bên ngoài như tìm kiếm, connector, tích hợp IDE
Dưới đây là các đòn bẩy có thể dùng để giảm ba yếu tố trên trong Claude Code và Codex. (Bỏ qua những thứ cơ bản như tắt MCP server/plugin không dùng đến, điều chỉnh model và mức reasoning.)
- Giải thích cho từng thiết lập, các trade-off là gì, v.v. đều đã được viết chi tiết trong blog.
Claude Code (phiên bản xác nhận cuối cùng: 2.1.114)
-
includeGitInstructions: false
-
autoConnectIde: false
-
CLAUDE_CODE_GLOB_NO_IGNORE=false
-
Thiết lập giới hạn đầu ra (BASH_MAX_OUTPUT_LENGTH, CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS, MAX_MCP_OUTPUT_TOKENS)
-
Các biến môi trường và cờ cho tác vụ ngắn, đơn giản, hoặc cho chế độ không hội thoại
ENABLE_CLAUDEAI_MCP_SERVERS=false: tắt MCP serverCLAUDE_CODE_DISABLE_AUTO_MEMORY=1: không tải các ghi nhớ đã được lưu tự độngCLAUDE_CODE_DISABLE_CLAUDE_MDS=1: bỏ quaCLAUDE.mdtoàn cục/dự ánCLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS=1: loại các built-in sub-agent và định nghĩa kỹ năng khỏi system prompt--tools: bật có chọn lọc các native tool. Nếu--tools ""thì vô hiệu hóa toàn bộ. Với worker thực sự chỉ dùng trí tuệ của model thì có thể tắt hết, nhưng nếu giao việc đơn giản ở chế độ interactive mà tắt hết thì gần như không làm được gì, nên hãy chỉ bật những thứ cần thiết như"Bash,Edit,Glob,Grep,Read,Write"--strict-mcp-config: chỉ dùng cấu hình MCP được chỉ định bằng CLI và bỏ qua cấu hình MCP toàn cục. Có thể tiêm gọn gàng chỉ những connector cần cho từng worker.--disable-slash-commands: loại các định nghĩa slash command như/help,/clearkhỏi system prompt--no-session-persistence: không dùng đường dẫn lưu/khôi phục phiên, nên dấu vết của các lần chạy một lần sẽ biến mất--exclude-dynamic-system-prompt-sections: loại bỏ các phần thay đổi theo từng máy/môi trường để tăng tỷ lệ tái sử dụng prompt cache--system-prompt: ngoài tất cả những thứ trên, bạn thậm chí có thể thay thế hoàn toàn system prompt của Claude
-
Để trống attribution
Codex CLI (phiên bản xác nhận cuối cùng: 0.121.0 + mã nguồn Github Codex của phiên bản đó)
- Tắt MCP (app/connector) được kết nối với ChatGPT (
features.apps = false) - web_search = "disabled"
- Thiết lập giới hạn đầu ra (tool_output_token_limit)
- Các cờ giúp chạy tốt trong chế độ không hội thoại
--profile: gom một số cấu hình cụ thể (web_search = "disabled",tool_output_token_limit = 2000, v.v.) lại để có thể chọn áp dụng--json+--output-last-message FILE: giúp việc parse/trích xuất trong pipeline dễ hơn, giảm tiêu hao token ở bước hậu xử lý--sandbox read-only: trong các quy trình tự động hóa chỉ cần đọc, chặn vòng lặp thử ghi ngoài ý muốn → retry loop → lãng phí token--skip-git-repo-check: vẫn có thể chạy ngay cả khi không phải thư mục đáng tin cậy--ephemeral: không lưu file phiên xuống đĩa--color never: làm đầu ra pipe gọn gàng hơn
- Để trống attribution
Kết lời
Tôi đã kiểm chứng rất kỹ, nhưng dĩ nhiên vẫn có thể có chỗ sai. Nếu bạn phát hiện và báo lại một cách thoải mái thì tôi sẽ rất cảm kích.
4 bình luận
Đây có vẻ sẽ là một bài viết tham khảo rất tốt. Nếu phần chính của bài viết là cách tiếp cận khóa van của “token đầu vào”,
thì tôi lại thường gặp nhiều trường hợp vấn đề nằm ở chỗ “chính những thứ đã được đăng ký” ngày càng nhiều lên, nên đã thử làm một công cụ tên là claude-slim.
Đây là một CLI quét, phân loại và sắp xếp các tình huống như: trong 60 skill thì có đến một nửa chưa từng được dùng lần nào, hoặc CLAUDE.md bị phình to do plugin. Token counting dựa trên js-tiktoken,
không xóa hẳn mà chuyển sang
skills.disabled/nên có thể restore bất cứ lúc nào.https://github.com/iops-leo/claude-slim
Hướng đi này bổ sung chính xác cho các thiết lập trong bài viết, nên có vẻ sẽ rất tốt nếu dùng song song.
Ồ, cảm ơn vì đã chia sẻ!
Cảm ơn bạn đã chia sẻ thông tin hữu ích. Về cơ bản, tôi đang cảm nhận rõ rằng lượng token sử dụng bản thân nó đã giảm đi quá nhiều, nên mong là phía Claude sẽ tăng lên một chút. Vì khi harness chạy thì lại bị ngắt giữa chừng...
Cảm ơn. Claude cũng tiêu tốn nhiều token, mà hiệu quả công việc thì tôi cũng hơi không hài lòng so với Codex, nên dạo này tôi làm việc với Codex nhiều hơn.