Cách Claude Code quyết định tuyến đường nào sẽ đi đến đâu
🔄 Từ bài học trước: Bạn đang sử dụng cửa sổ ngữ cảnh 1M cho các workflow quy mô monorepo. Bây giờ, chúng ta sẽ tìm hiểu sâu hơn về những gì đang xảy ra bên trong Claude Code khi nó phân phối công việc — và cách tinh chỉnh trình phân phối để tiết kiệm chi phí thực sự.
Claude Code không phải là một lệnh gọi LLM đơn lẻ. Nó là một trình điều phối. Khi bạn yêu cầu nó "tái cấu trúc chức năng này và thêm các bài kiểm tra", nó sẽ đưa ra hàng tá quyết định nội bộ về việc công việc nào sẽ đi đến đâu. Bài học này sẽ nói về cách thức phân phối đó hoạt động trong thiết lập kết hợp V4-Pro + V4-Flash của bạn và cách tinh chỉnh nó.
Những gì bạn sẽ học được
Đến cuối bài học này, bạn sẽ hiểu mô hình trình phân phối nội bộ của Claude Code, cách xác minh việc định tuyến sub-agent của bạn có thực sự hiệu quả hay không, tính năng tư duy xen kẽ của V4 làm gì và khi nào nên bật chế độ Think-Max, và mẫu @prayag_sonar giúp tiết kiệm hơn 70% số lần chạy agent thực tế.
Mô hình điều phối
Trong một phiên Claude Code duy nhất, trình điều phối của mô hình thực hiện các cuộc gọi ở 3 "cấp độ" khác nhau tùy thuộc vào nhiệm vụ:
Cấp độ
Tên Anthropic
Biến môi trường của bạn
Nó xử lý những gì
Căn bản
Opus
ANTHROPIC_DEFAULT_OPUS_MODEL
Suy luận phức tạp, nhiệm vụ chính
Công việc nặng
Sonnet
ANTHROPIC_DEFAULT_SONNET_MODEL
Các tác vụ tầm trung, bản nháp, lập trình thông thường
Rẻ
Haiku
ANTHROPIC_DEFAULT_HAIKU_MODEL
Đọc file, tóm tắt, điều phối nội bộ
Khi Claude Code tự hỏi "Tôi có cần đọc file này không?" — đó là một lần gọi ở cấp độ Haiku. Khi nó tạo ra code được tái cấu trúc thực tế — đó là một cuộc gọi ở cấp độ Opus. Trình điều phối định tuyến dựa trên độ phức tạp được nhận biết.
Trong cấu hình của bạn từ Bài học 2, bạn đã thiết lập:
Tầng Sonnet → V4-Pro (có thể là Flash nếu bạn muốn rẻ hơn nữa, nhưng Sonnet là lựa chọn tốt nhất — hãy tiếp tục dùng Pro)
Tầng Haiku → V4-Flash (cuộc gọi nội bộ giá rẻ)
Điều phối sub-agent → V4-Flash một cách rõ ràng
Đây là lý do tại sao chi phí phiên được tiết kiệm từ 60-80%.
Xác minh tính hiệu quả của định tuyến sub-agent
Truy cập platform.deepseek.com/usage. Sau khi chạy một phiên Claude Code thực tế trong hơn 30 phút, hãy xem phân tích số token được tiêu thụ bởi từng mô hình:
Dấu hiệu
Chẩn đoán
20-40% token V4-Pro, 60-80% V4-Flash
✅ Hoạt động tốt — định tuyến sub-agent đang hoạt động
95%+ token V4-Pro, <5% V4-Flash
⚠️ Định tuyến sub-agent không có hiệu lực
100% token V4-Pro
❌ Các biến môi trường Haiku/sub-agent chưa được thiết lập
Nếu bạn thấy hàng dưới cùng, lệnh echo `$ANTHROPIC_DEFAULT_HAIKU_MODEL sẽ xuất ra deepseek-v4-flash. Nếu nó trống, biến môi trường chưa được load — hãy load lại cấu hình shell hoặc mở một cửa sổ terminal mới.
Nếu bạn thấy hàng giữa (95%+ Pro), hãy kiểm tra xem CLAUDE_CODE_SUBAGENT_MODEL cũng đã được thiết lập chưa. Một số tác vụ nội bộ của Claude Code sử dụng biến này thay vì biến mặc định của Haiku.
Kiểm tra nhanh
Hãy chạy một phiên làm việc thực tế 30 phút ngay bây giờ (bất kỳ công việc lập trình thông thường nào). Sau đó, kiểm tra bảng điều khiển sử dụng DeepSeek của bạn. Tỷ lệ Pro/Flash của bạn là bao nhiêu? Nếu nó không phải là 20-40 / 60-80, hãy gỡ lỗi các biến môi trường của bạn trước khi tiếp tục.
Tư duy xen kẽ — Bước đột phá kiến trúc lớn của V4
DeepSeek V4 có một tính năng gọi là "tư duy xen kẽ" — ngữ cảnh suy luận được bảo toàn khi mô hình thực hiện các lệnh gọi công cụ và kết hợp kết quả.
Tại sao điều này lại quan trọng: Các vòng lặp agent cũ (và nhiều thiết lập dựa trên proxy) đã "xóa" quá trình suy luận giữa những lần gọi công cụ. Mỗi lần gọi đều phải thiết lập lại ngữ cảnh. Trong một phiên agent dài với hàng trăm lần gọi công cụ, chi phí thiết lập lại đó sẽ tích lũy dần.
V4 giữ cho trạng thái suy luận được duy trì xuyên suốt các lần gọi. Mô hình có thể suy nghĩ "Tôi đang điều tra lỗi X. Tôi đọc file A. Hàm liên quan là process(). Bây giờ, cần kiểm tra độ phủ kiểm thử. Hãy đọc file test…" — và toàn bộ chuỗi suy luận vẫn được duy trì.
Đối với Claude Code nói riêng, điều này quan trọng nhất trong:
Tái cấu trúc nhiều file (mô hình giữ ý định tái cấu trúc của bạn trên tất cả các lần chỉnh sửa file)
Các phiên gỡ lỗi dài (suy luận về bằng chứng tích lũy thay vì thiết lập lại)
Điều tra kiến trúc (mô hình xây dựng mô hình hệ thống của bạn khi nó đọc)
Bài đánh giá V4 của Simon Willison đã chỉ ra đây là một trong những lựa chọn kiến trúc mang tính quyết định của mô hình, và các nhà điều hành đã xác nhận lợi ích thực tiễn trong những bài đăng tuần ra mắt.
Chế độ Think-Max
V4 hỗ trợ hai chế độ tư duy mặc định:
Max Thinking — cho phép suy luận đầy đủ. Chậm hơn mỗi lần gọi, kỹ lưỡng hơn, tiêu tốn nhiều token hơn trong quá trình suy luận. Tốt nhất cho các bài toán khó, nơi chất lượng quan trọng hơn tốc độ.
Non-Thinking — suy luận tối thiểu, nhanh hơn, ít token hơn. Tốt nhất cho các tác vụ cơ học (đọc file, tóm tắt đơn giản, chuyển đổi định dạng).
Bạn có thể ưu tiên V4-Pro cho chế độ Max bằng lệnh:
export CLAUDE_CODE_EFFORT_LEVEL=max
Điều này nằm trong cấu hình Bài học 2 của bạn. Nó cho trình điều phối biết nên ưu tiên Max Thinking cho các lần gọi cấp căn bản.
Điều kỳ diệu thực sự, theo @prayag_sonar:
"Bật chế độ 'Think Max' để suy luận code chuyên sâu, sau đó chuyển sang Flash nếu muốn. Tiết kiệm hơn 70% số lần chạy agent."
Mô hình được giải mã:
Quá trình suy luận chính chạy trên V4-Pro với Max Thinking được bật — thận trọng, chất lượng cao, tốn kém mỗi lần gọi
Các lệnh điều phối công cụ phát sinh từ quá trình suy luận đó được chuyển đến V4-Flash — rẻ, tự động, nhanh
Tóm lại: Quá trình cân nhắc tốn kém chỉ diễn ra một lần ở đầu vòng lặp agent, nhưng hàng chục lần đọc file/tóm tắt/gọi sub-agent phát sinh đều phải trả phí Flash. Thiết lập biến môi trường của bạn đã thực hiện điều này; CLAUDE_CODE_EFFORT_LEVEL=max củng cố thêm điều đó.
Khi nào nên hạ cấp xuống EFFORT_LEVEL?
Có những workflow mà Max Thinking là quá mức cần thiết:
Các câu hỏi cú pháp nhanh ("làm thế nào để viết một hàm chung trong TypeScript")
Các script ngắn (những tiện ích một file dưới 100 dòng)
Chuyển đổi định dạng (CSV sang JSON, markdown sang HTML, v.v...)
Đối với những trường hợp này, Max Thinking làm tăng độ trễ và chi phí token suy luận mà không giúp cải thiện chất lượng đầu ra. Hạ xuống:
export CLAUDE_CODE_EFFORT_LEVEL=normal
Hoặc bỏ thiết lập (mặc định là normal). Đối với công việc thông thường, normal là đủ. Hãy dành max cho những bài toán khó, nơi bạn muốn sử dụng chế độ "tư duy mở rộng" của Anthropic.
Một mô hình định tuyến hiệu quả
Đây là mô hình mà các kỹ sư cấp cao đã thống nhất sau một tuần sử dụng V4 trong Claude Code:
Đối với cấu hình Claude Code sử dụng hàng ngày, hãy dùng:
- ANTHROPIC_DEFAULT_OPUS_MODEL=deepseek-v4-pro[1m]
- ANTHROPIC_DEFAULT_SONNET_MODEL=deepseek-v4-pro[1m]
- ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-v4-flash
- CLAUDE_CODE_SUBAGENT_MODEL=deepseek-v4-flash
- CLAUDE_CODE_EFFORT_LEVEL=normal (mặc định cho công việc hàng ngày)
Đối với các vấn đề cụ thể khó khăn (xem xét kiến trúc, tái cấu trúc phức tạp,
phiên gỡ lỗi chuyên sâu), hãy mở phiên với:
- export CLAUDE_CODE_EFFORT_LEVEL=max
- chạy phiên Claude Code của bạn
- khi hoàn tất, hãy hủy thiết lập CLAUDE_CODE_EFFORT_LEVEL hoặc reset về bình thường
Đối với công việc khách hàng cần Opus 4.7 cụ thể (tái cấu trúc API tùy chỉnh, hành vi điều chỉnh từ chối, v.v.), hãy sử dụng các shell alias trong Bài học 2:
- alias claude-deepseek='...'
- alias claude-opus='ANTHROPIC_BASE_URL="" claude'
Chọn cho mỗi phiên. Theo dõi chi phí cho mỗi tác vụ trên mỗi engine. Cập nhật cây quyết định của bạn hàng tuần.
Cách sử dụng prompt này:
Nơi dán: Mở terminal — đây là một giao thức workflow, hãy đọc nó như một kế hoạch cấu hình và áp dụng nó vào cấu hình shell của bạn (.zshrc hoặc .bashrc). Các alias nằm cùng với những lần xuất biến môi trường.
Cách sao chép: Nhấp vào block code, Cmd+A / Ctrl+A, Cmd+C / Ctrl+C — dán vào file cấu hình shell của bạn.
Điền thông tin chi tiết của bạn: Các alias cần được điền đầy đủ những biến môi trường thực của bạn. Alias claude-deepseek nên bao gồm bốn biến cốt lõi từ Bài học 2; alias claude-opus nên khôi phục Anthropic bằng cách xóa ANTHROPIC_BASE_URL và sử dụng key Anthropic của bạn.
Những gì bạn sẽ thấy: Sau khi load lại shell, cả claude-deepseek và claude-opus đều có sẵn dưới dạng lệnh. Mỗi lệnh sẽ mở Claude Code được định tuyến đến công cụ tương ứng.
Những việc cần làm với đầu ra: Sử dụng claude-deepseek cho công việc hàng ngày. Chuyển sang claude-opus cho các khối lượng công việc cụ thể từ cây quyết định của Bài học 4 (tái cấu trúc API tùy chỉnh, những phiên rất dài, công việc phụ thuộc vào điều chỉnh từ chối).
Nếu nó trông không đúng: Nếu cả hai alias đều định tuyến đến cùng một công cụ, bạn đã bỏ sót việc xóa ANTHROPIC_BASE_URL trong alias Opus — hãy đặt nó thành trống một cách rõ ràng: ANTHROPIC_BASE_URL="". Nếu các alias không được lưu lại sau khi khởi động lại, chúng cần được lưu trong file cấu hình shell của bạn, chứ không chỉ được xuất ra trong một terminal.
Phát hiện sớm sự sai lệch trong suy luận
Ngay cả với định tuyến phù hợp và chế độ Think-Max, các phiên dài tích lũy trạng thái mà V4-Pro có thể mất dấu vết khi vượt quá ~500K token. Hãy chú ý đến những tín hiệu này:
Tín hiệu
Ý nghĩa của nó là gì
Nên làm gì
V4 đọc lại một file mà bạn đã thấy nó đọc trước đó
Sự trôi dạt của trạng thái bắt đầu
Dừng phiên làm việc; tóm tắt; bắt đầu lại từ đầu
V4 mâu thuẫn với một quyết định trước đó trong cùng phiên họp
Sự trôi dạt lý luận chủ động
Dừng phiên làm việc; tóm tắt; bắt đầu lại từ đầu
Các lệnh gọi công cụ của V4 trở nên ít cụ thể hơn (nhiều dạng "để tôi kiểm tra" hơn)
Sự tự tin giảm sút
Cung cấp hướng dẫn rõ ràng hơn hoặc khởi động lại
V4 khẳng định điều gì đó đang nằm trong ngữ cảnh trong khi thực tế không phải vậy
Ảo giác do nhầm lẫn ngữ cảnh
Khởi động lại với bối cảnh tập trung
Chi phí khởi động lại rất nhỏ (vài phút làm việc + tóm tắt). Chi phí để vượt qua sự sai lệch là kết quả đầu ra không chính xác mà bạn phải làm lại, cộng thêm lượng token bị tiêu tốn trong quá trình này.
Một thói quen hữu ích: Cứ sau 2-3 giờ tích lũy trạng thái phiên làm việc, hãy viết một bản tóm tắt ở đầu phiên làm việc mới. "Trong phiên làm việc trước, tôi đã điều tra X, tìm thấy Y, và quyết định Z." Sau đó, bắt đầu lại với bản tóm tắt đó cộng với 2-3 file quan trọng nhất.
Những điểm chính cần ghi nhớ
Trình điều phối của Claude Code định tuyến các cuộc gọi qua ba tầng (Opus/Sonnet/Haiku); Các biến môi trường của bạn hiện định tuyến chúng qua V4-Pro và V4-Flash
Một phiên hoạt động bình thường cho thấy 20-40% token V4-Pro, 60-80% V4-Flash — hãy xác minh trên platform.deepseek.com/usage
Tư duy xen kẽ là tính năng kiến trúc nổi bật của V4: Ngữ cảnh suy luận được bảo toàn giữa các lệnh gọi công cụ
Chế độ Think-Max (CLAUDE_CODE_EFFORT_LEVEL=max) dành cho các bài toán khó, chế độ bình thường cho công việc hàng ngày
Mẫu của @prayag_sonar: Max Thinking trên Pro để suy luận chính + Flash để điều phối công cụ giúp tiết kiệm ~70% mỗi lần chạy agent
Hiện tượng trôi lệch suy luận bắt đầu xảy ra khi tích lũy được khoảng 500K token — hãy khởi động lại các phiên mới sau mỗi 2-3 giờ thay vì tiếp tục chạy
Sử dụng alias shell (claude-deepseek và claude-opus) để chuyển đổi giữa các engine cho mỗi phiên
Câu 1:
Một phiên agent dài sắp đạt mốc 3 giờ và bạn nhận thấy V4 đang thực hiện các lệnh gọi công cụ dư thừa (đọc lại các file mà nó đã đọc). Bước đi đúng đắn là gì?
GIẢI THÍCH:
Các lệnh gọi công cụ dư thừa (đọc lại các file, tóm tắt lại những phần đã thảo luận) là dấu hiệu sớm của sự trôi dạt suy luận — mô hình mất dấu những gì đã được thực hiện. Tiếp tục sẽ làm trầm trọng thêm vấn đề và tiêu tốn token. Bước đi đúng đắn là dừng lại, tóm tắt những gì đã học được trong 1-2 đoạn văn và bắt đầu lại một phiên mới chỉ với 2-3 file liên quan nhất cộng với bản tóm tắt của bạn. Việc chuyển sang sử dụng V4-Flash cho phần còn lại không giải quyết được vấn đề trôi lệch, mà chỉ làm cho nó rẻ hơn.
Câu 2:
@prayag_sonar báo cáo rằng Think-Max + Flash-fallback giúp tiết kiệm hơn 70% số lần chạy agent. Mô hình này thực sự làm gì?
GIẢI THÍCH:
Mô hình của @prayag_sonar: bật EFFORT_LEVEL=max trên V4-Pro cho quá trình suy luận chính (tư duy sâu về vấn đề khó), sau đó định tuyến các yêu cầu công cụ và những lần gọi sub-agent nội bộ đến V4-Flash để thực thi với chi phí thấp. Gói Pro thực hiện việc cân nhắc tốn kém; gói Flash thực hiện công việc cơ học rẻ tiền. Kết quả cuối cùng: Tiết kiệm khoảng 70% chi phí cho một lần chạy agent điển hình so với việc chạy mọi thứ trên V4-Pro.
Câu 3:
Tỷ lệ sử dụng token V4-Pro so với V4-Flash nào cho thấy thiết lập định tuyến sub-agent hoạt động tốt?
GIẢI THÍCH:
Một phiên Claude Code hoạt động tốt với định tuyến sub-agent phù hợp cho thấy khoảng 20-40% token được gửi đến V4-Pro (lý do chính của bạn) và 60-80% đến V4-Flash (các cuộc gọi nội bộ của sub-agent — đọc file, tóm tắt, gửi lệnh). Nếu bảng điều khiển của bạn hiển thị hơn 95% token Pro, thì việc định tuyến sub-agent của bạn không có hiệu lực — hãy xác minh rằng cả ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-v4-flash và CLAUDE_CODE_SUBAGENT_MODEL=deepseek-v4-flash đều được thiết lập trong shell của bạn.
Câu 4:
Tính năng 'tư duy xen kẽ' của V4 là gì và tại sao nó lại quan trọng đối với Claude Code?
GIẢI THÍCH:
V4 được tích hợp sẵn tính năng tư duy xen kẽ — ngữ cảnh suy luận được bảo toàn khi mô hình thực hiện các lần gọi công cụ và kết hợp kết quả. Các phương pháp proxy cũ và kiến trúc mô hình trước đây thường "xóa" suy nghĩ giữa những lần gọi, nghĩa là mỗi lần gọi công cụ phải thiết lập lại ngữ cảnh. Tư duy xen kẽ giảm thiểu chi phí này, điều này đặc biệt quan trọng trong các vòng lặp agent với số lượng gọi công cụ cao. Trình điều phối của Claude Code tận dụng điều này khi EFFORT_LEVEL=max được đặt.
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây: