Sự cố không phải chuyện "nếu" mà là "khi nào". Team production giỏi không phải là team không bao giờ hỏng, mà là team rút lui nhanh và gọn. Bài này xây ba lớp phòng thủ: kill switch, rollback cấu hình, và rollback phiên bản.
Ba mức rút lui
- Kill switch: tắt ngay agent (hoặc một tool nguy hiểm), chuyển sang phương án dự phòng an toàn. Nhanh nhất, thô nhất.
- Config rollback: quay prompt/model/tham số về phiên bản tốt đã biết mà không deploy lại code.
- Version rollback: quay toàn bộ release về bản trước. Chậm hơn, dùng khi lỗi nằm trong code.
Tách cấu hình khỏi code
Bí quyết để rollback nhanh là agent đọc prompt/model/flag từ cấu hình động (feature flag, config service), không hard-code trong bản build. Khi đó đổi hành vi chỉ là đổi giá trị, không phải deploy.
# runtime đọc cấu hình động, có kill switch và fallback
cfg = flags.get_config("support_agent")
if not cfg["enabled"]: # kill switch
return safe_fallback("Hệ thống đang bảo trì, mời bạn để lại email.")
result = run_agent(
prompt_version=cfg["prompt_version"], # ví dụ đổi từ v7 -> v6 để rollback
model=cfg["model"],
max_cost=cfg["max_cost_usd"],
)
Rollback prompt v7 lỗi về v6 giờ chỉ là đổi một dòng cấu hình, có hiệu lực tức thì cho request mới.
Fallback phải AN TOÀN, không phải im lặng
Khi kill switch bật, agent nên degrade có kiểm soát: trả câu trả lời tĩnh hữu ích, hoặc chuyển sang người thật, hoặc xếp hàng xử lý sau — chứ không trả rác hay treo. Với agent có hành động ghi (đặt hàng, hoàn tiền), fallback nên từ chối an toàn thay vì đoán liều.
Khung tư duy: quyết định rollback
- Ảnh hưởng user đang xảy ra? → kill switch trước, điều tra sau.
- Lỗi mới xuất hiện sau khi đổi prompt/model? → config rollback.
- Lỗi từ code/hạ tầng của release mới? → version rollback.
Các bước làm
- Đưa prompt/model/ngưỡng ra cấu hình động để đổi không cần deploy.
- Cài kill switch ở cả cấp agent và cấp từng tool rủi ro cao.
- Viết fallback an toàn cho mỗi luồng, ưu tiên từ chối an toàn với hành động ghi.
- Ghi phiên bản prompt/model vào log để biết "quay về đâu".
- Bấm giờ diễn tập rollback trên staging; đặt mục tiêu < 60 giây và ghi lại quy trình.
Checklist rollback
- [ ] Có kill switch cấp agent và cấp tool, bật được không cần deploy.
- [ ] Prompt/model/ngưỡng nằm ở cấu hình động, có đánh phiên bản.
- [ ] Mỗi luồng có fallback an toàn, đã kiểm thử.
- [ ] Hành động ghi (ghi dữ liệu) mặc định từ chối an toàn khi nghi ngờ.
- [ ] Đã diễn tập rollback đạt < 60 giây.
Sai lầm thường gặp
- Hard-code prompt/model trong build. Mọi rollback biến thành một lần deploy khẩn cấp căng thẳng.
- Fallback là im lặng hoặc rác. User mất niềm tin còn nhanh hơn khi thấy lỗi thẳng.
- Cố roll-forward giữa sự cố. Vá vội thường tạo lỗi mới; hãy rút lui rồi sửa nguội.
- Chưa từng diễn tập. Lần rollback đầu tiên không nên là lúc đang cháy nhà.