AIDive

Jev Khiến Claude Code Chậm Hơn 83%, Theo Bench Của Nó

Bởi AIDive · Đăng ngày

Coding agentMô hình AI

Mở đầu: một gợi ý, không phải tiết kiệm

Jev sẽ không làm Claude Code rẻ hơn, và chính benchmark của gateway cũng nói vậy. Bài viết này đọc code của jev-gateway và repository benchmark của nó, sau đó đặt một logging proxy trước một phiên Claude Code thật để xem một router sẽ nhận được những gì.

Jev là decision model của TypeSafe: một xác suất trả về trong vài mili giây, được nối vào Claude Code qua sáu video trong một tuần. Lời quảng cáo là "vòng lặp coding agentic rẻ nhất". Chính con số của gateway cho thấy Opus 5 gửi nhiều hơn 47% request và mất nhiều hơn 83% thời gian trên một tác vụ feature khi bật routing.

Làm sao một router trả lời trong vài mili giây lại khiến Claude Code chậm hơn? Mọi chuyện quy về một dòng code. Bên trong Claude Code, Jev chỉ nhận đúng hai câu, còn một phiên bình thường đưa cho nó 40 tool ở mỗi lần gọi.

Jev là gì, và làn sóng này đang bán gì

Jev là một decision model của TypeSafe. Nó không sinh văn bản: bạn đặt một câu hỏi có kiểu (typed question) và nó trả lời bằng một lựa chọn, một điểm số, hoặc một xác suất có/không. Các con số từ nhà cung cấp:

Thông số Giá trị
Giá input $0.04 trên mỗi triệu token
Giá output miễn phí ("quá rẻ để tính phí")
Độ trễ 70 đến 500 ms
Dòng tiêu đề trang chủ Nhanh hơn 194×, rẻ hơn 445×

Bài blog phía dưới dòng tiêu đề đó nói rằng hai con số nhân này là mức cao nhất của lợi ích thực tế, đo so với mức trung bình của hai frontier model, một phép so sánh mà chính các tác giả thừa nhận là thiên vị cho hai model đó.

Sáu video trong năm ngày đã nối Jev vào Claude Code. Video lớn nhất đạt 139.000 lượt xem và gọi đây là vòng lặp coding agentic rẻ nhất từ trước tới nay. Hai repository mang theo làn sóng này: jev-gateway, một proxy local cho Claude Code và Codex, được tạo năm ngày trước đó với 181 sao, và fast-jev-compaction, một plugin compaction được tạo ngay hôm trước đó, với 6.400 sao. Gateway là nơi Claude Code cắm vào, nên đó là điểm bắt đầu đọc.

Một environment variable, một dòng code: hint mode

jev-gateway ngồi giữa Claude Code và Anthropic API. Nó khởi chạy Claude Code chỉ với một environment variable duy nhất, ANTHROPIC_BASE_URL, trỏ tới một port local. Không gì khác thay đổi; một comment trong source nói không có gateway credential nào cả, nên login Pro hay Max của bạn vẫn hoạt động như bình thường.

Bên trong adapter (src/adapters/messages.ts, dòng 99), một dòng quyết định Jev được phép làm gì:

steer: thinking || cached ? "hint" : "tool_choice"

Khi extended thinking đang bật, hoặc hội thoại đã được cache, gateway chỉ có thể gợi ý (hint). Nếu không, nó ép buộc tool. Comment phía trên dòng đó giải thích lý do: API từ chối một tool bị ép buộc khi extended thinking đang bật, và thay đổi tool_choice làm mất hiệu lực hội thoại đã cache mà Claude Code đọc lại ở mỗi lượt.

Để kiểm tra một request thật trông như thế nào, một logging proxy 60 dòng đã chiếm chỗ của gateway trên cùng loại port, Claude Code được khởi chạy qua nó, và một request được gửi trên một repository thật. Request mang thinking: adaptive và ba cache marker; tool_choice vắng mặt; 24 tool đi kèm trên một bản cài sạch. Chạy dòng code của gateway trên request đó, nhánh ép buộc không bao giờ được kích hoạt. Mọi lời gọi Claude Code đều rơi vào hint mode. README cũng nói đúng như vậy: hãy kỳ vọng lựa chọn tool tốt hơn trên danh sách tool lớn, không phải chi phí hay độ trễ thấp hơn.

Gợi ý: hai câu, và nơi nó không thể chạm tới

Jev được phép làm gì bên trong Claude Code? Hai câu được thêm vào cuối tin nhắn cuối cùng: "a routing model suggests this tool is the most relevant move now. Ignore this if it doesn't fit" (một routing model gợi ý đây là bước phù hợp nhất lúc này. Bỏ qua nếu nó không phù hợp). Đó là toàn bộ sự can thiệp. Model hoàn toàn tự do bỏ qua nó, và tool_choice vẫn ở chế độ auto.

Ép buộc một tool không phải là một lựa chọn, theo tài liệu của Anthropic: một tool bị ép buộc trả về lỗi 400 trên Opus 5.5 và Fable 5.1, và lỗi khi thinking thủ công đang bật trên các model còn lại. Thay đổi tool_choice cũng bị loại: tài liệu về prompt caching nói rằng nó làm mất hiệu lực messages cache, phần lớn nhất của một phiên dài. Sửa mô tả của một tool làm mất hiệu lực toàn bộ cache: tools, system và messages.

Thay đổi với request Ảnh hưởng đến prompt cache
Thêm gợi ý vào cuối tin nhắn user cuối cùng prefix được cache không đổi
Đổi tool_choice messages cache mất hiệu lực
Sửa định nghĩa một tool tools, system và messages đều mất hiệu lực

Comment của gateway giải thích tại sao gợi ý được đặt ở cuối: prefix được cache giữ nguyên byte-cho-byte so với những gì Claude Code gửi lại ở lượt tiếp theo. Có một guard đứng trước nó: khi tin nhắn cuối cùng không phải của user, request đi qua nguyên vẹn. Cả hai request được ghi lại đều kết thúc bằng một system block mà chính Claude Code tự thêm vào, một environment reminder ở request này và output của một hook ở request kia. Với hình dạng đó, gợi ý không có chỗ để chạm tới. Nó có chạm tới ở những lượt khác, vì kết quả tool quay về dưới dạng tin nhắn user, và benchmark ghi nhận Jev điều hướng một phần ba đến một nửa số request của Claude Code.

Benchmark mà không ai trích dẫn

Chính benchmark của gateway, jev-gateway-bench, trả lời câu hỏi đặt ra từ đầu. Nó chạy 120 phiên, 5 lần chạy mỗi ô, trên cùng một Claude Code và cùng một gói subscription mà mọi người đang dùng, không MCP server, không plugin, không skill. Hai tác vụ trên một chess engine nhỏ: một cuộc săn bug với năm bug được cấy sẵn, và một feature, thêm ký hiệu đại số (algebraic notation).

Model, tác vụ Routing bật so với tắt
Opus 5, feature +61% input token, +47% request, +83% thời gian (vẫn giải được 5/5)
Sonnet 5, feature +16% input token, +37% thời gian
Sonnet 5, săn bug −48% input token, −25% thời gian

Debugging là nơi routing có lời, theo lời chính các tác giả. Lời giải thích của họ chính là câu trả lời cho câu hỏi: gateway chỉ gợi ý với các model Claude, nên một gợi ý không phù hợp tốn một vòng vèo thay vì bị bỏ qua miễn phí.

Codex nhận phiên bản ép buộc. Jev quyết định từ 76 đến 100% request của Codex, so với một phần ba đến một nửa của Claude Code. Một model trong harness kia trở nên rẻ hơn và sai: ba lần giải được trên năm thay vì năm. Rẻ hơn và sai không phải là tiết kiệm.

Các giới hạn là có thật: 5 lần chạy mỗi ô là một mẫu nhỏ, đó là một chess engine đồ chơi duy nhất, và chưa ai chạy lại benchmark này. Input phần lớn cũng đã được cache, nên một khoản tiết kiệm input có giá trị thấp hơn một khoản tiết kiệm output.

Session của tôi đưa cho nó những gì: 24 tool khi sạch, 40 khi đầy đủ

Một phiên Claude Code bình thường đưa cho một router những gì ở mỗi lần gọi? Log của proxy trả lời: 40 tool. Cùng một repository, cùng một prompt một từ, hai thiết lập: một bản cài sạch với config rỗng và không MCP server, và một setup bình thường với các server và plugin của nó.

Bản cài sạch Setup bình thường
Tool trong request 24 40 (16 từ MCP server và plugin)
Prefix token tính phí 47.411 57.277
Output token 4 4
Chi phí tương đương API cho một "ok" $0.07 $1.15

Danh sách tool chính là hóa đơn. Những định nghĩa nặng nhất đã có sẵn: riêng shell tool đã là 12.000 ký tự, agent tool gần 9.000.

Chú thích của benchmark ghi nhận sáu tool và 7.000 token trên một bản cài sạch, và 285 tool trên một setup được tải đầy. Claude Code sạch của ngày hôm nay đã có sẵn nhiều tool hơn hẳn, còn trường hợp tải đầy thì hiếm hơn: hầu hết tool MCP nằm sau một search tool, được deferred, nên danh sách tool mà một router nhìn thấy vẫn nhỏ. Dù kích thước là bao nhiêu, gateway vẫn gửi danh sách đó cho Jev ở mỗi request; một issue mở trên repository nói rằng toàn bộ chi phí đó được trả trước khi hầu hết câu trả lời bị loại bỏ. Không có gì trong đó là lỗi của Jev, và không có gì trong đó là việc Jev cần sửa.

Kết luận theo từng trường hợp

Routing bên trong Claude Code: không. Đó là một gợi ý mà model có thể bỏ qua, nó làm việc feature chậm hơn trên cả hai model Claude, và chiến thắng duy nhất nằm ở debugging. Ngoại lệ là một ngày săn bug trên một danh sách tool rất lớn, đúng như README tự nêu ra.

Plugin compaction, fast-jev-compaction: chưa. Nó cần một cờ early-access cho hook, các issue mở của nó nói rằng hook không đăng ký được trên một số bản build, và sau một lần compaction, model đã viết chín báo cáo nói công việc đã hoàn thành, tất cả đều bịa đặt. Giới thực hành đã phát hiện ra trước: thread hàng đầu về plugin này có 491 điểm, và phản đối hàng đầu của nó không phải tốc độ mà là điều khoản dịch vụ về việc gửi transcript cho bên thứ ba.

Codex: đó mới là mục tiêu thật. Ở đó gateway ép buộc tool, Jev điều hướng tới gần như mọi request, và cuộc săn bug chạy với ít hơn 57% output token.

Trường hợp sử dụng Kết luận
Routing trong Claude Code Không, trừ những ngày săn bug trên một danh sách tool rất lớn
fast-jev-compaction Chưa
Codex Có

Một điều làn sóng này làm đúng: login subscription không hề thay đổi, gateway chỉ đổi một URL. Giới hạn của bài đọc này: 5 lần chạy mỗi ô, một chess engine duy nhất, một repository benchmark chưa ai chạy lại, và không có phiên routed nào của riêng tôi. Tôi đo danh sách tool và request, không đo Jev. Bản thân Jev thì rẻ. Vòng vèo thì không.

Nguồn

Câu hỏi thường gặp

Jev có làm Claude Code rẻ hơn không?
Không. jev-gateway chỉ có thể gợi ý bên trong Claude Code, và chính benchmark của nó cho thấy Opus 5 dùng nhiều hơn 61% input token, 47% request và 83% thời gian trên một tác vụ feature khi bật routing. Sonnet 5 cũng đi theo hướng đó; chiến thắng duy nhất là một cuộc săn bug với 48% ít input token hơn.
Jev là gì?
Jev là decision model của TypeSafe. Nó không sinh văn bản: bạn đặt một câu hỏi có kiểu và nó trả về một lựa chọn, một điểm số hoặc một xác suất có/không trong 70 đến 500 ms, với giá $0.04 trên mỗi triệu input token và output miễn phí.
jev-gateway thay đổi gì trong Claude Code?
Một environment variable duy nhất, ANTHROPIC_BASE_URL, trỏ tới một proxy local; login Pro hay Max không hề bị đụng tới. Trong adapter của nó, một dòng đặt steering mode thành hint bất cứ khi nào thinking đang bật hoặc hội thoại đã cache, tức là ở mọi request Claude Code.
Claude Code hint mode là gì?
Hai câu được thêm vào cuối tin nhắn user cuối cùng: một routing model gợi ý đây là bước phù hợp nhất lúc này, bỏ qua nếu không phù hợp. Model hoàn toàn tự do bỏ qua nó và tool_choice vẫn ở auto, vì ép buộc một tool gây lỗi khi extended thinking bật và đổi tool_choice làm mất hiệu lực prompt cache.
Một request Claude Code gửi bao nhiêu tool?
Đo bằng một logging proxy trên Claude Code 2.1.280: 24 tool và 47.411 prefix token trên một bản cài sạch, 40 tool và 57.277 prefix token trên một setup bình thường có MCP server và plugin, cho một câu trả lời bốn token.
fast-jev-compaction có đáng cài không?
Chưa. Nó cần một cờ early-access cho hook, các issue mở của nó báo cáo hook không đăng ký được trên một số bản build, và có một báo cáo về chín tóm tắt bịa đặt nói công việc đã hoàn thành sau một lần compaction. Phản đối chính của thread cộng đồng hàng đầu không phải tốc độ mà là điều khoản dịch vụ về việc gửi transcript cho bên thứ ba.

Video liên quan