claude plugin eval: kiểm thử skill và plugin như kiểm thử code
Tóm tắt
claude plugin eval chạy skill hoặc plugin trên bộ case thật, mỗi case 3 lần, so sánh với nhánh không có plugin để đo đóng góp thật. Viết prompt như người dùng, mỗi case một grader kết quả và một grader quá trình, chạy lại khi đổi model.
Bạn viết một skill, thử vài lần thấy chạy được, rồi phát hành cho team. Một tuần sau model mới ra, hoặc ai đó sửa description, và skill âm thầm không còn được gọi nữa. Không ai biết cho tới khi có người phàn nàn. Claude Code giờ có lệnh claude plugin eval để kiểm thử plugin và skill bằng bộ test case thật, chấm điểm, và so sánh với trường hợp không có plugin để biết plugin thực sự đóng góp bao nhiêu.
Một lần chạy eval diễn ra thế nào?
- Bộ eval nằm trong thư mục
evals/của plugin; mỗi case là một thư mục con gồmprompt.md(câu người dùng sẽ gõ) và một hoặc nhiều grader. - Mỗi lần chạy mở một phiên non-interactive cô lập, chỉ nạp plugin của bạn, gửi prompt và để Claude làm tới khi xong.
- Mỗi case chạy 3 lần mặc định vì agent không tất định; điểm case là trung bình các lần.
- Mặc định chạy thêm nhánh không có plugin để so sánh: cột
Δdương nghĩa là plugin làm kết quả tốt hơn.
Bắt đầu
claude plugin eval init # Claude hỏi bạn, đề xuất case và grader, chạy thử, ghi file
claude plugin eval . # chạy toàn bộ case
claude plugin eval . --case <tên> --runs 1 --ablation none # lặp nhanh một case
Kết quả in bảng WITH, W/OUT, Δ, COST và tạo báo cáo HTML xem từng grader ở từng lần chạy.
Sáu loại grader
| Loại | Kiểm tra | Chi phí |
|---|---|---|
regex | Khớp mẫu trên câu trả lời hoặc file | Miễn phí |
tool_used | Một tool (ví dụ Skill) có được gọi | Miễn phí |
tool_order | Thứ tự gọi tool | Miễn phí |
file_exists | File được tạo ra | Miễn phí |
llm | Model giám khảo chấm theo rubric | Tốn gọi model |
baseline | So với nhánh không plugin | Tốn gọi model |
Không có grader bằng code tuỳ biến. Mỗi grader có thể đặt weight; case đạt khi điểm ≥ --threshold (mặc định 1.0).
Mẹo viết case cho tín hiệu ổn định
- Viết prompt như người dùng thật: không nêu tên skill, để kiểm tra Claude có tự chọn skill theo description không.
- Mỗi case hai grader: một chấm kết quả (câu trả lời, file), một chấm quá trình (
tool_used,tool_order). - Output dài dùng regex: giữ grader
llmcho output ngắn, rubric ghi điều kiện PASS/FAIL cụ thể. - Có cả case không nên kích hoạt: grader "không gọi skill" với
arm: bothđể bắt việc skill bị gọi nhầm. - Phát hiện phổ biến nhất:
Δgần 0 và gradertool_used: Skilltrượt, nghĩa là Claude không chọn skill với cách nói tự nhiên; sửadescriptionrồi chạy lại.
Rủi ro và lưu ý
- Tốn tiền thật: mỗi lần chạy và mỗi grader
llmlà lời gọi model tính vào hạn mức hoặc hoá đơn. Số lần gọi xấp xỉ case × lần chạy × 2 nhánh, cộng thêm lời gọi giám khảo. Dùng--ablation nonekhi chỉ đang chỉnh grader. - Giám khảo nhỏ có thể chấm sai: nếu skill được gọi đúng mà
Δâm, nghi giám khảo trước; thử--judge-model sonnet. - Tính năng đang ở early access: có thể chưa bật cho mọi tài khoản.
- Khác skill-creator: plugin skill-creator có định dạng
evals/evals.jsonriêng; hai công cụ không đọc file của nhau.
Áp dụng thế nào?
- Dev: Chạy
claude plugin eval initcho skill bạn dùng nhiều nhất; sửa description tới khi gradertool_used: Skillđạt ổn định. - Tech Lead: Đưa eval vào CI cho repo plugin nội bộ; chạy lại mỗi khi có model mới.
- PM: Dùng cột
Δđể quyết định skill nào đáng duy trì; skill không cải thiện kết quả thì bỏ cho gọn context.
Nguồn & tham khảo
- Test plugins with evals — Claude Code Docs