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 agent tự vận hành: plan → làm → verify → sửa → commit

Đã đọc 0/8 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.

Bốn bài trước cho bạn từng mảnh: nền an toàn, chia lô, worktree, verify. Bài này lắp chúng thành một vòng lặp tự vận hành để agent xử lý cả một lô mà không cần bạn cầm tay từng file — nhưng vẫn dừng lại đúng chỗ cần con người.

Vòng lặp lõi

for mỗi lô trong manifest (status == todo):
  1. PLAN   : agent đọc scope, liệt kê file, nêu khuôn mẫu áp dụng
  2. APPLY  : sửa từng file theo khuôn mẫu
  3. VERIFY : chạy verify.sh + characterization diff
  4. FIX    : nếu đỏ -> tự sửa (tối đa N vòng)
  5. GUARD  : nếu vẫn đỏ sau N vòng -> DỪNG, báo người
  6. COMMIT : nếu xanh -> commit, cập nhật manifest = done

Điểm mấu chốt là bước PLAN trước khi APPLY: buộc agent nói ra ý định giúp bạn bắt sai hướng sớm, rẻ hơn nhiều so với sửa sau khi đã đụng 20 file.

Pseudocode một runner đơn giản

def run_batch(batch, max_fix=3):
    plan = agent.plan(batch.scope, PATTERN_SPEC)
    review_or_autoapprove(plan)          # người duyệt plan nếu lô rủi ro cao
    agent.apply(plan)
    for attempt in range(max_fix + 1):
        result = run("./verify.sh")
        if result.ok and characterization_ok(batch):
            git_commit(f"migrate {batch.id}: {batch.scope}")
            manifest.mark_done(batch.id)
            return "DONE"
        agent.fix(result.log)            # đưa log lỗi cho agent tự sửa
    escalate(batch, result.log)          # hết lượt -> nhờ người
    return "ESCALATED"

max_fix giới hạn số vòng tự sửa để tránh agent loay hoay đốt token vô hạn ở một lô khó.

Chốt khuôn mẫu bằng "pattern spec"

Để tránh trôi dạt (file thứ 300 khác file thứ 3), tách khuôn mẫu ra một tài liệu và nhắc lại ở mỗi lô:

PATTERN_SPEC (moment -> date-fns):
- moment().format('YYYY-MM-DD')  =>  format(new Date(), 'yyyy-MM-dd')
- moment(x).add(1,'day')         =>  addDays(x, 1)
- import phải gom về cùng khối import trên cùng
- KHÔNG đổi múi giờ hành vi; nếu code cũ dùng UTC, giữ UTC
- Ca không có trong bảng này -> DỪNG, hỏi, KHÔNG tự chế

Dòng cuối cực quan trọng: agent gặp ca lạ phải dừng chứ không sáng tạo linh tinh.

Bộ nhớ ngoài chống mất mạch

Agent không nhớ giữa các phiên. Manifest + pattern spec + MIGRATION.md (nhật ký quyết định) chính là bộ nhớ ngoài. Mỗi lô xong, ghi lại:

Batch 12 (src/billing) DONE.
- Phát sinh: 3 chỗ dùng moment.duration -> đã map sang differenceInHours.
- Cập nhật PATTERN_SPEC thêm ca duration.

Lần sau agent (hoặc người) đọc log là bắt nhịp ngay.

Khi nào để agent tự chạy, khi nào chèn người

Tự động (autonomous)  : lô "đơn giản", scope rời, có characterization mạnh
Duyệt plan trước       : lô "trung bình", đổi hành vi tinh tế
Người làm/kèm sát       : lô "khó", <20 chỗ, rủi ro cao (thanh toán, bảo mật)

Checklist một runner lành mạnh

[ ] Có bước PLAN xuất ra ý định trước khi sửa
[ ] Giới hạn max_fix để không loay hoay vô hạn
[ ] Escalate rõ ràng khi hết lượt, kèm log
[ ] Commit tự động chỉ khi verify + characterization xanh
[ ] Cập nhật manifest + nhật ký sau mỗi lô
[ ] Pattern spec được nhắc lại ở mỗi lô

Sai lầm thường gặp

  • Bỏ bước PLAN, cho agent lao vào sửa ngay: sai hướng thì trả giá bằng cả lô.
  • Không giới hạn vòng tự sửa: agent "sửa tới sửa lui", đốt token, có khi làm hỏng thêm.
  • Commit tự động khi chưa verify đủ: đẩy rác vào lịch sử, khó truy vết.
  • Không có escalation: lô khó bị agent "ép xanh" bằng thủ đoạn thay vì nhờ người.
  • Không ghi nhật ký quyết định: phiên sau mất mạch, lặp lại lỗi cũ hoặc xử lý ca lạ không nhất quán.
Vòng lặp đã chạy tự động. Bài sau đối mặt tình huống khó nhất: migration không tránh được breaking change và cách tránh phá vỡ khi phải đổi hành vi thật.

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