Về AI Repo Radar

03 / AI REPO RADAR

dzhng/jevgrep

Coding tools

2.769 saoLicense: MITPush gần nhất: Lên radar:

CLI cho coding agent tìm code bằng cách mô tả chức năng, trả về file liên quan, gợi ý đọc và đoạn mã nguồn trích nguyên văn.

Jevgrep là gì và giải quyết vấn đề gì

Jevgrep là một công cụ dòng lệnh dành cho coding agent, với lệnh chính là jg. Khẩu hiệu trong README là cùng mức trí tuệ nhưng chi phí thấp hơn khoảng 30%, và ý tưởng cốt lõi được tóm gọn thành: tìm code bằng cách hỏi nó làm gì. Theo metadata của edition, repo có 2769 sao và dùng giấy phép MIT.

Vấn đề mà README nêu ra rất thực tế. Mỗi lần làm việc trên một repo xa lạ, coding agent đều mất một phần công sức chỉ để tìm đúng các file cần đọc. Jevgrep cho agent một điểm xuất phát: bạn đặt một câu hỏi về repository, và jg trả về trong một phản hồi stdout duy nhất các file liên quan, gợi ý đọc tiếp và các đoạn mã nguồn trích nguyên văn. Phần hiện thực và kiểm thử thay đổi vẫn do chính coding agent của bạn đảm nhiệm.

Để đánh giá độ liên quan, công cụ dùng Jev, thành phần phán đoán mức liên quan trên các thư mục, file và khai báo. README cũng thẳng thắn về phạm vi: nếu bạn đã biết chính xác tên ký hiệu hay đường dẫn thì đọc trực tiếp hoặc dùng rg có thể là đủ, và Jevgrep phát huy nhất ở các câu hỏi trải rộng qua nhiều file chưa quen.

Cách hoạt động

Theo README, Jevgrep khám phá cấu trúc phân cấp của repository và đi theo những nhánh đủ điều kiện. Nó chọn file dựa trên bản xem trước nội dung, sau đó xác định các đơn vị mã nguồn hữu ích cùng ngữ cảnh xung quanh. Nó giữ lại vị trí của các file đạt điều kiện ngay cả khi không đủ tự tin để trả về đoạn trích, và không ép mọi lần tìm kiếm vào một danh sách cố định gồm hai kết quả đầu.

Thứ tự đầu ra được mô tả rõ: phần tóm tắt và danh sách file gọn đứng đầu, tiếp theo là mã nguồn đã chọn kèm tham chiếu dòng, và cuối cùng là vị trí chi tiết của các khai báo và lời gọi. Việc phân tích khai báo hỗ trợ Python, TypeScript và JavaScript, Go và Rust; các script Python và Node không có phần mở rộng được nhận ra qua dòng shebang; các loại văn bản khác dùng cách xử lý dự phòng.

README nhấn mạnh đầu ra là bằng chứng để agent sử dụng, không phải một câu trả lời được sinh ra, cũng không phải bảo đảm rằng mọi file liên quan đều được tìm thấy. Đây là một tuyên bố khiêm tốn và đáng ghi nhớ: agent vẫn phải tự đánh giá, mở thêm file và kiểm chứng trước khi sửa code.

Sơ đồ: câu hỏi về repository đi vào jg, Jev đánh giá độ liên quan qua thư mục, file rồi khai báo. Một lần trả về stdout gồm file liên quan, gợi ý đọc và đoạn mã nguyên văn kèm số dòng. Sau đó coding agent tự triển khai và kiểm thử thay đổi.
jg trả về bằng chứng để agent bắt đầu đọc code, không phải câu trả lời sinh sẵn.

Cài đặt, skill và yêu cầu hệ thống

README yêu cầu Node.js 22+, hệ điều hành macOS, Linux hoặc Windows, và một khóa của một trong các nhà cung cấp: Vercel AI Gateway, TypeSafe, OpenRouter, OpenCode Zen hoặc một endpoint tùy chỉnh tương thích TypeSafe. Không cần cài riêng Python, Bun hay ripgrep để dùng jg.

Một chi tiết dễ bỏ sót là README đánh dấu việc cài skill cho agent là bắt buộc khi thiết lập cho agent. Chỉ cài CLI thì chưa dạy coding agent cách dùng nó. Bạn chạy trình cài đặt skill từ dự án nơi agent làm việc; trình cài đặt phát hiện các coding agent như Claude Code, Codex, OpenCode và những agent khác rồi hỏi nơi cài. Có thể thêm cờ global để cài cho cả người dùng, hoặc cờ yes để cài không cần tương tác.

Skill giải thích việc cài đặt, cách gọi và ý nghĩa của ngữ cảnh trả về, nhưng để quyết định nghiên cứu và hiện thực cho agent gọi nó. Skill hiện tại trong repo kiểm tra jg và tự cài CLI nếu thiếu; xác thực vẫn cần khóa của nhà cung cấp bạn chọn và trình cài đặt skill không cấu hình thông tin xác thực. Lệnh jg skill cài skill từ nhánh main của repo bằng một skills CLI được ghim phiên bản, với các script vòng đời của npm bị tắt, và cần Node 22.20+ cùng npm hoặc npx và truy cập mạng. Chạy lại lệnh này để lấy skill mới nhất mà không phải chờ bản phát hành npm mới.

Nâng cấp và quản lý trạng thái cục bộ

README cho biết hiện chưa có lệnh jg upgrade. Muốn nâng cấp CLI, bạn dùng npm. Sau khi cập nhật CLI, hãy chạy lại jg skill để làm mới skill đã cài, vì việc cập nhật gói npm không ghi đè các file skill nằm trong dự án của bạn. Trình cài đặt ghi nguồn GitHub và đường dẫn skill vào skills-lock.json, nên có thể chạy lại lệnh trên máy khác hoặc sau khi đổi cài đặt Node.

Về xác thực, lệnh jg auth hỏi nhà cung cấp rồi lưu khóa vào một file cấu hình chỉ chủ sở hữu đọc được. Chạy lại auth sẽ thay thế thiết lập cũ và các lần tìm kiếm luôn dùng nhà cung cấp đã lưu. Lệnh jg doctor kiểm tra thiết lập bằng dữ liệu tổng hợp. Các khóa đã lưu từ trước mà không ghi nhà cung cấp được coi là khóa Vercel. Thông tin xác thực lấy từ biến môi trường và việc ghi đè endpoint không còn được dùng, nên ai từng dựa vào chúng cần chạy lại auth.

Các câu trả lời đánh giá được lưu cache cục bộ theo mặc định. CLI ghi kết quả ra stdout và không tạo file báo cáo. README hướng dẫn dùng cờ help để xem các tùy chọn điều khiển cache, ghi đè tìm kiếm và hành vi khi kết quả chưa đầy đủ.

Dùng trong workflow AI agent

Trong workflow của coding agent, jg đóng vai bước định hướng ở đầu tác vụ. Thay vì để agent chạy hàng loạt lệnh liệt kê và đọc file để mò đường, agent đặt một câu hỏi bằng ngôn ngữ tự nhiên về hành vi cần hiểu, nhận lại file liên quan và đoạn mã, rồi tiếp tục phần việc của mình: triển khai thay đổi và chạy kiểm thử. README nói rõ phần nghiên cứu và quyết định hiện thực vẫn thuộc về agent gọi.

Vì skill được cài vào các agent như Claude Code, Codex hay OpenCode, việc tích hợp không đòi hỏi bạn tự viết prompt riêng: skill hướng dẫn agent khi nào gọi jg và hiểu đầu ra ra sao. Skill được cài cũng chính là skill công khai mà tác giả dùng trong phép so sánh chi phí.

README cũng cung cấp lệnh jg files để đếm các file mà một lần tìm kiếm dưới thư mục gốc đã chọn có thể đọc, nhóm theo thư mục cấp cao nhất, mà không cần khóa nhà cung cấp hay yêu cầu mạng. Lệnh này nhận cùng các cờ lọc như lệnh tìm kiếm, nên là cách rẻ để kiểm tra trước phạm vi sẽ được gửi đi.

Số liệu đo lường do tác giả công bố

Các con số sau đều là tuyên bố của tác giả trong README, chưa được kiểm chứng độc lập. Trong so sánh mười tác vụ SWE-bench, Jevgrep hoàn thành cùng 8 trên 10 tác vụ như baseline không dùng Jev, với chi phí thấp hơn. Chi phí Sol đầy đủ giảm từ $7.62 xuống $5.44, tức mức giảm đo được là 28.6%, làm tròn thành khoảng 30%, đã tính cả các lần thử thất bại và chưa tính chi phí Jev.

README nêu rõ giới hạn của phép so sánh: mười tác vụ Python SWE-bench đã được tinh chỉnh, một gói cài đặt đóng băng và đúng skill công khai trong repo. Nó đo tỉ lệ thành công và chi phí, không đo việc cải thiện tốc độ, và không đảm bảo tiết kiệm trên mọi repository. Một nghiên cứu tốc độ riêng đo các tối ưu hóa cục bộ tiếp theo với endpoint TypeSafe gốc của Jev.

Lần chạy lại bản 0.4.3 tính cả chi phí Jev cho thấy tổng chi phí thấp hơn 25.8% với cùng 8/10 tác vụ được giải; hình ~30% cũ chỉ là chi phí Sol. Đánh giá bản 0.5.0 giữ 8/10 lần giải trong khi giảm khoảng 59% chi phí Jev gốc so với lần chạy 0.4.3, còn chi phí Sol cộng Jev cao hơn 2–3%, mức mà tác giả chấp nhận như một đánh đổi nhỏ. README lưu ý các quan sát một lần chạy này không chứng minh được sự tương đương thống kê hay cải thiện tốc độ.

Dữ liệu gửi đi, thông tin nhạy cảm và giới hạn

Điểm cần đọc kỹ nhất là quyền riêng tư. README nói các lần tìm kiếm gửi nội dung mã nguồn đủ điều kiện tới Jev thông qua nhà cung cấp đã chọn lúc xác thực. Bộ lọc mặc định tôn trọng các file ignore và loại trừ file ẩn, thư mục phụ thuộc và build, file nhị phân và các file có vẻ chứa thông tin xác thực, gồm các biến thể .env và mọi thành phần đường dẫn có tên kết thúc bằng .env.

Ngoài ra, một file bị loại hoàn toàn với lý do sensitive_content nếu nội dung khớp một heuristic thận trọng về thông tin xác thực: tiền tố token của nhà cung cấp đã biết như npm_ hoặc glpat-, một URL webhook Slack, hoặc phép gán có hình dạng thông tin xác thực với giá trị dài, entropy cao. Các định danh dạng UUID được loại khỏi tín hiệu entropy. README nói rõ đây là phát hiện theo khả năng tốt nhất, không phải che giấu hay bảo đảm đã loại hết thông tin nhạy cảm, nên bạn cần chọn thư mục gốc tìm kiếm mà mình sẵn sàng gửi đi.

Có cờ include-sensitive khi một lần tìm kiếm phải bao gồm cả tên nhạy cảm, dấu hiệu khóa riêng và khớp ở mức nội dung, và cờ exclude với mẫu kiểu gitignore tính từ thư mục gốc để bỏ qua đường dẫn cho một lần tìm kiếm. Các giới hạn khác: bạn cần khóa của nhà cung cấp bên ngoài, độ phủ khai báo chỉ có cho Python, TypeScript, JavaScript, Go và Rust, và kết quả chỉ là bằng chứng chứ không bảo đảm tìm đủ file liên quan.

Khi nào nên và không nên dùng

Jevgrep hợp với bạn nếu coding agent thường xuyên làm việc trên các repository lớn hoặc chưa quen, nơi việc mò đúng file chiếm một phần đáng kể công sức, và bạn chấp nhận gửi mã nguồn đủ điều kiện tới một nhà cung cấp bên ngoài. Con số của tác giả gợi ý lợi ích về chi phí, nhưng bạn nên tự đo trên repo của mình.

Bạn nên cân nhắc lại nếu mã nguồn bị ràng buộc không được rời máy, nếu bạn chỉ cần tra một ký hiệu hay đường dẫn đã biết, hoặc nếu bạn mong đợi một cải thiện tốc độ, vì README nói phép đo của mình không chứng minh điều đó. Việc tính cả chi phí Jev cũng quan trọng khi so sánh: số 28.6% không bao gồm chi phí Jev.

Tóm lại, đây là công cụ nhỏ, tập trung vào đúng một việc: định vị ngữ cảnh cho coding agent. README không đề cập chi tiết nào về hiệu năng trên repo rất lớn hay các ngôn ngữ ngoài danh sách đã nêu, nên hãy thử trên dữ liệu của bạn trước khi đưa vào quy trình chính.

Bài do AI viết tự động từ README và dữ liệu GitHub API của repo, có kiểm tra tự động nhưng không có người duyệt từng câu. Báo sai sót qua email.