# Model Selection Rule

Chọn model theo "chi phí nếu làm sai", không theo "việc trông khó hay dễ". Dùng model mạnh nhất cho khâu đắt giá; giao việc máy móc cho model rẻ. Trong 1 nhiệm vụ nên phối nhiều model.

## Bảng chọn nhanh

| Model | ID | Dùng khi |
|-------|----|---------| 
| **Fable 5** | `claude-fable-5` | Việc khó nhất, hậu quả sai lớn, nhiều bước, cần chính xác cao. |
| **Opus 4.8** | `claude-opus-4-8` | Việc code chính hằng ngày cần chất lượng; có "fast mode" khi cần nhanh. |
| **Sonnet 5** | `claude-sonnet-5` | Code tầm trung, theo mẫu đã rõ, khối lượng vừa. |
| **Haiku 4.5** | `claude-haiku-4-5-20251001` | Việc máy móc, số lượng lớn, cần rẻ + nhanh. |

## Khi nào dùng Fable 5 (đắt nhất — chỉ cho khâu xứng đáng)

- Tính năng lớn nhiều bước, refactor xuyên nhiều module, migration schema/dữ liệu.
- Debug căn nguyên khó: lỗi ẩn qua nhiều lớp, bug gián đoạn, "không hiểu tại sao".
- Audit bảo mật, threat model, review PR lớn / thay đổi public contract.
- Điều phối nhiều subagent song song (planning + phân việc + gộp kết quả).
- Đánh giá kiến trúc, quyết định có đánh đổi (chọn thư viện, thiết kế API, schema).
- Bất cứ chỗ nào "sai là đắt": auth, thanh toán, xử lý dữ liệu nhạy cảm/PII, xoá dữ liệu.

## Khi nào dùng Opus 4.8

- Phần lớn việc implement feature có độ phức tạp vừa-cao mà không cần tầng cao nhất.
- Review code thường, viết test, sửa bug rõ nguyên nhân.
- Cần nhanh mà vẫn chất lượng cao → bật `/fast` (Opus output nhanh, KHÔNG hạ xuống model nhỏ).
- Là lựa chọn "mặc định an toàn" khi phân vân giữa Fable 5 và Sonnet 5.

## Khi nào dùng Sonnet 5

- Code CRUD, thêm endpoint/component theo pattern đã có sẵn trong repo.
- Sửa lỗi nhỏ-vừa, viết glue code, chỉnh cấu hình có hướng dẫn.
- Việc rõ ràng, ít rủi ro, không cần suy luận kiến trúc.

## Khi nào dùng Haiku 4.5

- Đổi text/label, format, sửa typo, đổi tên biến hàng loạt.
- Tra cứu 1 dữ kiện, chạy lệnh máy móc, tóm tắt ngắn.
- Bước cơ học lặp lại số lượng lớn (mỗi bước độc lập, rủi ro thấp).

## Quy tắc cho subagent (khi Claude điều phối)

Claude tự chọn model cho subagent qua tham số `model` của Agent/Workflow tool. Áp dụng:

- **Scout / tìm file / đọc-liệt kê / biến đổi cơ học** → Haiku hoặc Sonnet.
- **Implement 1 phần có ranh giới file rõ** → Sonnet (mẫu rõ) hoặc Opus (logic thật).
- **Verify đối kháng / judge / audit bảo mật / bước quyết định cuối** → Opus hoặc Fable 5.
- Controller (phiên chính điều phối) nên là model cao (Opus/Fable 5); worker cơ học để model rẻ.
- Mặc định KHÔNG set `model` cho subagent → nó kế thừa model phiên chính; chỉ set khi chắc chắn tầng khác hợp hơn.

## Ai đổi model chính

- **Model phiên chính do NGƯỜI DÙNG chọn** (qua `/model` trong Claude Code). Claude KHÔNG tự đổi được model của chính phiên đang chạy.
- Khi một việc rõ ràng cần tầng cao/thấp hơn model hiện tại, Claude nên **nói ra và đề nghị** người dùng đổi (vd: "việc này nên chạy Fable 5, anh /model đổi giúp"), thay vì âm thầm tiếp tục.
- Claude CHỦ ĐỘNG chọn được model cho **subagent** → tận dụng để phối rẻ/đắt trong cùng nhiệm vụ.

## Nguyên tắc chi phí

- Không dùng Fable 5 cho việc Haiku làm được — phí tiền, không nhanh hơn.
- Không dùng Haiku cho việc cần suy luận sâu — rẻ nhưng sai thì đắt hơn nhiều.
- Đắt giá = dùng mạnh. Cơ học = dùng rẻ. Phân vân = Opus.
