Vaccine Số Là Gì? Tôi Biến Bug Thành Hệ Miễn Dịch Website
Vaccine số là gì — câu hỏi này tôi tự đặt ra sau lần thứ ba ngồi fix cùng một bug, mà lần nào cũng mất 30 phút như lần đầu.
Có một loại bug tôi ghét hơn tất cả: bug đã fix rồi mà vẫn quay lại. Không phải bug mới. Không phải bug phức tạp. Mà là bug hôm qua fix, tuần sau lại xuất hiện y chang — vì một AI session mới không biết fix đó tồn tại, hoặc vì một workflow mới vô tình phá vỡ config cũ.
Tôi chạy blog seomoney.org trên nền Zola với CI/CD tự động. Mọi thứ từ build → test → deploy đều chạy trên GitHub Actions, không cần tay. Tiện thì tiện, nhưng khi bug tái phát — nhất là ở một hệ thống phức tạp — thời gian mất để "nhớ lại context" thường nhiều hơn thời gian sửa.
Đó là lý do tôi tạo ra vaccine số.
Vaccine Số Là Gì?
Hãy nghĩ theo nghĩa sinh học một chút. Vaccine tiêm vào cơ thể một mẫu kháng nguyên yếu — hệ miễn dịch "học" cách nhận diện và tiêu diệt. Lần sau vi khuẩn thật tấn công, cơ thể đã có sẵn kháng thể.
Vaccine số hoạt động tương tự: tôi ghi lại một mẫu bug đã biết cùng cách diệt nó vào tài liệu chỉ dẫn của AI (file CLAUDE.md). Lần sau CI log báo đúng dấu hiệu đó, AI (hoặc chính tôi) nhận ra ngay và chạy fixer — không cần chẩn đoán lại từ đầu.
Cấu trúc một vaccine gồm 4 phần bắt buộc:
| Phần | Nội dung |
|---|---|
| Dấu hiệu | Dòng log, error code, hành vi cụ thể trong CI |
| Nguyên nhân | Root cause thật (không phải symptom) |
| Fixer | Lệnh / file cần sửa / action cần làm — cụ thể, chạy được ngay |
| Prevention | Rule ngăn bug tái phát trong code/config/workflow |
Không có phần nào thừa. Bỏ "Nguyên nhân" → fix theo triệu chứng, gốc rễ vẫn còn. Bỏ "Prevention" → fix xong mà bug vẫn quay lại tháng sau.
Sự Khác Biệt So Với Runbook Thông Thường
Runbook thường mô tả quy trình: "Khi X, làm A rồi B rồi C." Vaccine mô tả pattern lỗi cụ thể để khớp nhanh từ CI log.
Khi một CI run đỏ, tôi — hoặc AI — so log với danh sách vaccine. Khớp vaccine nào? Chạy fixer của vaccine đó. Xong. Không cần đọc 10 trang wiki, không cần nhớ lại context từ 3 tuần trước.
Điều này đặc biệt hiệu quả với AI coding: mỗi session AI bắt đầu "trắng" — không có bộ nhớ từ session trước. Vaccine trong CLAUDE.md là cách duy nhất để "dạy" AI nhớ lỗi hệ thống mà không cần lặp lại context.
Thư Viện Vaccine Hiện Tại
Sau khoảng 3 tháng vận hành blog, tôi tích lũy được 17 vaccine chính (V1–V17) cùng một số vaccine bổ sung cho compliance và content:
| Vaccine | Vấn đề |
|---|---|
| V1 | HuggingFace 401 — model ID thiếu org prefix |
| V2 | Slack notification vỡ sau bump action v1→v3 |
| V3 | GitHub Actions thiếu quyền tạo PR |
| V4 | Perf autofixer chèn attr vào comment Tera |
| V5 | GitHub Pages API rate limit do merge storm |
| V6 | git stash pop conflict trên data/*.json |
| V7 | Workflow remediation tự bị đỏ khi không chẩn được |
| V8 | Series template + Tera replace(old= sai cú pháp |
| V9 | PR docs-only fail vì base branch cũ |
| V10 | PR dirty sau QA pass — merge race |
| V11 | Daily Vaccine Autofixer (engine tự vận hành) |
| V12 | Semantic conflict trong base.html + _footer.scss |
| V13 | Link forward tới bài hẹn giờ bị báo 404 nhầm |
| V14 | Cross-link bịa URL /bai-N-<title>/ — 40 broken links |
| V16 | Static site ↔ backend split-brain (Render không redeploy) |
| V17 | VIPZone admin OAuth loop trên Edge/Safari |
Mỗi vaccine là kết quả của một lần tôi ngồi debug không dưới 30 phút. Lần sau, bug tương tự mất dưới 5 phút — vì vaccine đã chỉ rõ root cause và fixer.
Tại Sao Hệ Thống Tích Lũy Theo Thời Gian?
Điểm đặc biệt của mô hình vaccine: thư viện càng dùng càng đầy, hệ thống càng thông minh.
Mỗi lần CI đỏ và không khớp vaccine nào → tôi chẩn đoán, fix, rồi viết vaccine mới. Tháng sau, cùng pattern đó xuất hiện → khớp ngay, không mất thời gian.
Hiện tại, vaccine_autofixer.py đọc CLAUDE.md, extract các block #### V<N> —, và tự động quét repo theo pattern của từng vaccine. Những fix an toàn (idempotent, không ảnh hưởng content người dùng) được áp tự động và push qua PR flow. Những fix cần review thì được ghi nhận, tạo issue, và để người dùng quyết định.
Tôi gọi đây là CI có hệ miễn dịch.
Những Gì Series Này Sẽ Bàn
Đây là bài mở đầu của series 5 phần về vaccine số. Các bài tiếp theo sẽ đào sâu hơn:
- Bài 2: DNS, 404, Conflict PR — Bug Nào Dạy Tôi Tạo Vaccine? — kể chi tiết 6 bug thật đã sinh ra vaccine quan trọng nhất
- Bài 3: Quy Trình Vaccine: Detect → Diagnose → Fix → Validate → Prevent — pipeline 5 bước từ bug đến vaccine
- Bài 4: Bài Học Xây Hệ Thống Tự Chữa Lỗi Cho Blog — những điều tôi làm sai và học được
- Bài 5: CMS, SEO Engine Và Hệ Vaccine Tự Tiến Hoá — hướng phát triển tiếp theo
Đọc Thêm
Nếu muốn xem các vaccine hoạt động trong thực tế:
- Bài 10 Vaccine CLAUDE.md Giảm Lỗi Production — ví dụ cụ thể từng vaccine
- Bài QA Gatekeeper Vaccine Autofixer — kiến trúc pipeline kiểm tra tự động
- Trang Insights — báo cáo vaccine autofixer chạy mỗi ngày 6h sáng GMT+7
Vaccine số không phải phép màu. Nó là kết quả của việc không bao giờ fix cùng một bug hai lần mà không học được gì từ nó. Bug đầu tiên là tai nạn. Bug thứ hai là cảnh báo. Bug thứ ba là lý do để viết vaccine.
Tham khảo & Nguồn dữ liệu
2. Liên kết nội bộ liên quan
Câu hỏi thường gặp
Vaccine số là gì?
Vaccine số khác gì với documentation thông thường?
Tôi có cần AI để dùng vaccine số không?
Bao lâu thì một bug đủ điều kiện thành vaccine?
Hệ thống vaccine có thể tự cập nhật không?
💬 BÌNH LUẬN
Đăng nhập GitHub để comment. Hỗ trợ markdown, reaction, reply.