Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 6 — Vòng lặp debug khép kín (debug loop)

Đã đọc 0/7 mục · còn khoảng 3 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Giờ ta ghép 5 bài đầu thành một vòng lặp để agent tự chạy từ report đến fix được kiểm chứng, dừng đúng lúc và biết khi nào cần con người. Vòng lặp là bản chất của agentic AI: hành động → quan sát kết quả → điều chỉnh.

Sơ đồ vòng lặp

         +-----------------------------------------------+
         v                                               |
[Triage] -> [Reproduce] -> [RCA] -> [Propose Fix] -> [Verify]
   |            |            |            |             |
 needs_info  not_repro   no cause     no test        FAIL
   |            |            |            |             |
   +-> hỏi     +-> đóng     +-> escalate +-> quay lại  +-> lặp lại RCA
       thêm        (can't       cho người     Reproduce      với bằng chứng
       tin         reproduce)   duyệt                        mới

Mỗi trạng thái có điều kiện thoát. Không có điều kiện thoát = vòng lặp vô hạn đốt token.

Các bước dựng debug loop

  • Mô hình hóa trạng thái: TRIAGE, REPRODUCE, RCA, FIX, VERIFY, DONE, ESCALATE.
  • Định nghĩa chuyển trạng thái rõ ràng cho cả nhánh thành công và thất bại.
  • Đặt ngân sách: tối đa max_iters vòng, max_tokens, max_time. Vượt là escalate.
  • Truyền bằng chứng qua các vòng: kết quả VERIFY thất bại phải quay lại RCA kèm log mới, không bắt đầu lại từ đầu.
  • Điều kiện DONE: test tái hiện chuyển xanh + toàn bộ test cũ xanh.
state, iters = "TRIAGE", 0
while state not in ("DONE","ESCALATE") and iters < MAX_ITERS:
    iters += 1
    if budget_exceeded(): state = "ESCALATE"; break
    result = STEP[state](ctx)      # mỗi step ghi bằng chứng vào ctx
    state = transition(state, result)
report(state, ctx.history)         # luôn ghi lại toàn bộ đường đi

Khung tư duy: OODA cho agent

Observe → Orient → Decide → Act. Sau mỗi hành động, agent phải quan sát kết quả thật (test đỏ/xanh, log mới) rồi mới quyết bước sau — không hành động dựa trên phỏng đoán chưa kiểm chứng.

Khi nào escalate cho con người

  • Vượt ngân sách iters/token/time.
  • RCA không ra nguyên nhân sửa được sau N vòng.
  • Fix chạm vùng nhạy cảm (bảo mật, thanh toán, xóa dữ liệu).
  • Độ tin cậy (confidence) thấp hơn ngưỡng.

Checklist debug loop

[ ] Mỗi trạng thái có điều kiện thoát rõ
[ ] Có max_iters / max_tokens / max_time
[ ] Bằng chứng được truyền qua các vòng (không mất trí nhớ)
[ ] VERIFY thất bại -> quay lại RCA, không lặp mù
[ ] Có nhánh ESCALATE cho vùng nhạy cảm / confidence thấp
[ ] Toàn bộ đường đi được log lại để audit

Sai lầm thường gặp

  • Vòng lặp không có điều kiện dừng → agent quay mãi, hóa đơn token tăng vọt.
  • Mất bằng chứng giữa các vòng → agent lặp lại cùng sai lầm, không tiến bộ.
  • Không có nhánh escalate → agent tự sửa vùng thanh toán, gây sự cố lớn.
  • Coi "test xanh 1 lần" là DONE với bug flaky → đóng non.
  • Hành động dựa trên phỏng đoán thay vì quan sát kết quả thật (bỏ bước Observe).
Bài 7 sẽ đưa vòng lặp này ra vận hành thật: nối công cụ, quan sát và guardrail.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi