Feedback Loop: Khi agent sai, hệ thống phản hồi thế nào?
Khám phá kiến trúc vòng phản hồi để AI agent tự sửa lỗi ngay lập tức. Từ SWE-agent linter đến Claude Code frustration detection — biến sai lầm thành dữ liệu...
Feedback loop trong AI agent là kiến trúc cho phép hệ thống phát hiện lỗi trong output, truyền thông tin hiệu chỉnh ngược trở lại quá trình tạo sinh, và đảm bảo cùng một lỗi không lặp lại — biến mỗi sai lầm thành dữ liệu cải thiện vĩnh viễn thay vì chỉ là log lỗi thụ động.
Giải thích chi tiết
Bản chất: Không chỉ là "retry"
Đa số developer nhầm lẫn feedback loop với cơ chế retry đơn thuần (gọi lại API khi timeout). Đây là hai khái niệm khác biệt hoàn toàn về mặt kiến trúc:
- Retry: Tác động vào infrastructure, không thay đổi input hay logic của agent. Hi vọng "lần sau may hơn".
- Feedback loop: Tác động vào reasoning process của agent. Truyền tín hiệu cụ thể về tại sao sai và cần sửa gì trước khi tạo output mới.
Một feedback loop hoàn chỉnh gồm ba thành phần: Detector (phát hiện lỗi bằng rule hoặc program), Feedback Generator (dịch lỗi thành ngôn ngữ model hiểu được), và Integration (đưa feedback vào context window cho lần suy luận tiếp theo).
Từ "xử lý lỗi" sang "harness học từ lỗi"
John Hashimoto từ Anthropic từng phát biểu: "Mỗi khi agent mắc lỗi, bạn xây dựng giải pháp để nó không bao giờ mắc lỗi đó nữa". Đây là tinh thần của harness engineering — không chấp nhận lỗi là sự kiện ngẫu nhiên, mà xem lỗi là dữ liệu để cứng hóa (harden) hệ thống.
Thay vì chỉ log lỗi vào file để developer đọc lại sau, feedback loop tự động inject thông tin đó trở lại agent ngay trong phiên làm việc. Kết quả: agent "học" ngay lập tức từ môi trường thực thi (execution environment) mà không cần retrain model.
Phân loại tín hiệu phản hồi
Trong thực chiến, feedback loop xử lý hai loại tín hiệu:
Hard feedback (Binary reject): Lỗi syntax, lỗi schema validation, lỗi permission. Dừng execution ngay lập tức, yêu cầu regenerate output. Ví dụ: SWE-agent dùng linter kiểm tra syntax trước khi apply patch — nếu fail, reject và yêu cầu sửa.
Soft feedback (Guidance): Cảnh báo về style, potential hallucination, hoặc deviation khỏi best practice. Không bắt buộc regenerate nhưng đánh dấu để agent tự điều chỉnh. Ví dụ: regex phát hiện pattern \$0 trong output có thể là dấu hiệu hallucination về giá tiền.
Ví dụ thực tế
SWE-agent: Linter reject trước khi apply
Trong paper "SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering", tác giả thiết kế một feedback loop chặt chẽ cho việc sửa code:
- Agent đề xuất edit (tạo diff)
- Linter check chạy ngay trước khi ghi vào filesystem
- Nếu phát hiện lỗi syntax (ví dụ thiếu dấu ngoặc đóng), hệ thống không apply edit
- Feedback chứa error message từ linter được đưa vào context window
- Agent phải regenerate patch đã sửa lỗi
Kết quả: agent tự sửa được 30-40% lỗi syntax mà không cần human intervention, hiệu suất tăng đáng kể so với việc để lỗi "chìm" vào log.
Claude Code: Frustration detection bằng regex
Trong hệ thống Claude Code (Anthropic), engineering team phát hiện rằng đôi khi model hallucinate giá tiền — ví dụ trả về \$0 thay vì \$0.01. Thay vì gọi thêm một model call để verify (tốn token và latency), họ dùng regex pattern matching:
- Pattern
\$0\b(zero dollar) được đánh dấu là "high risk of frustration" - Khi detector trigger, hệ thống không nói "bạn sai rồi" mà inject vào context: "Cảnh báo: Người dùng thường frustrated khi thấy giá $0. Hãy kiểm tra lại calculation có chính xác không?"
Accuracy của regex trong việc detect potential error tương đương với việc dùng model (vì pattern rất cụ thể), nhưng chi phí bằng 0 và latency dưới 1 milisecond. Đây là ví dụ điển hình cho detector nhanh (fast evaluator) trong feedback loop.
Anthropic: Evaluator agent với Playwright
Trong kiến trúc multi-agent phức tạp hơn, Anthropic sử dụng một agent thứ hai làm evaluator:
- Primary agent tạo ra UI code (HTML/React)
- Evaluator agent dùng Playwright (browser automation tool) để render và kiểm tra UI
- Nếu Playwright phát hiện lỗi render (ví dụ element không clickable theo đúng yêu cầu), evaluator tạo feedback report
- Report này được truyền về primary agent dưới dạng structured observation
- Primary agent regenerate code đã sửa lỗi
Đây là outer feedback loop — chậm hơn linter check nhưng bắt được lỗi semantic (logic) mà rule-based detector không thể phát hiện.
Ứng dụng
AI Engineer (Người xây dựng agent)
Khi thiết kế agent với MCP (Model Context Protocol) hoặc custom tools, bạn cần xây dựng validation layer trước khi tool execute:
# Pseudo-code cho feedback loop trong tool use
def execute_tool(agent_output):
# Detector: Schema validation
if not validate_schema(agent_output):
error_msg = get_schema_error()
# Feedback: Trả về context thay vì raise exception
return {"status": "feedback", "message": f"Lỗi schema: {error_msg}. Hãy sửa và gửi lại."}
# Nếu pass, thực thi
return tool.execute(agent_output)Mẫu này đảm bảo agent không "bị đuổi khỏi cuộc trò chuyện" khi sai, mà được cơ hội self-correct ngay trong luồng.
Tech Lead & Platform Engineer
Thiết kế quality gates trong CI/CD cho AI-generated code:
- Pre-commit hook chạy linter trên code do AI viết trước khi vào repo
- Test harness tự động chạy unit test trên output của agent
- Nếu fail, feedback được gửi ngược lại qua API để agent regenerate trong cùng session
Điều này biến quy trình "AI viết → human review → sửa" thành "AI viết → automatic feedback → AI tự sửa → human review final" — tiết kiệm thời gian review đáng kể.
Developer cá nhân
Khi dùng Claude Code, Copilot, hoặc Cursor, bạn có thể tự xây dựng personal feedback loop:
- Tạo file
.cursorruleshoặc system prompt chứa danh sách "lỗi từng mắc": "Lần trước bạn đã dùng nhầm thư viện X thay vì Y, lần này hãy kiểm tra lại" - Dùng local linter hoặc type checker tích hợp với IDE để bắt lỗi trước khi accept suggestion
- Setup trigger words (regex) cho những lỗi bạn hay gặp — ví dụ detect
"TODO"trong output để nhắc agent hoàn thiện code
So sánh
| Tiêu chí | Feedback Loop | Retry đơn thuần | Fine-tuning |
|---|---|---|---|
| Thời điểm phản hồi | Ngay lập tức, trong phiên làm việc | Ngay lập tức, nhưng blind | Sau batch (delayed) |
| Tính đặc hiệu | Cao — chỉ ra lỗi cụ thể và cách sửa | Thấp — chỉ biết "lỗi rồi" | Trung bình — cải thiện general behavior |
| Chi phí tính toán | Thấp (rule-based/validator) | Trung bình (API call) | Cao (retrain model) |
| Tần suất áp dụng | Mọi lần inference | Chỉ khi error detected | Mỗi lần release model mới |
| Ví dụ thực tế | Linter check, regex detect frustration | "Gọi lại API với cùng prompt" | Cập nhật weights qua RLHF |
Kết luận: Feedback loop là kiểm soát chất lượng thời gian thực — nhanh hơn fine-tuning hàng tháng, thông minh hơn retry mù quáng, và là lớp bảo vệ quan trọng nhất trong harness engineering để đảm bảo AI agent hoạt động đáng tin cậy trong production.
Bài viết liên quan
Cùng cụm
Linter Integration: Reject lỗi trước khi apply
Chi tiết kỹ thuật tích hợp linter vào harness để bắt lỗi syntax trước khi agent thực thi code
Quality Gates: Không cho agent skip bước
Thiết kế các cổng kiểm soát chất lượng bắt buộc trong workflow của agent
Evaluation & Scoring: Đánh giá output của agent
Phương pháp định lượng chất lượng output để tạo tín hiệu phản hồi chính xác
Frustration Detection: Regex thắng model call
Khi nào nên dùng heuristic thay vì model để phát hiện lỗi — case study từ Claude Code
Đọc tiếp
Tool & Permission Design
Hiểu cách thiết kế tool trước khi xây dựng feedback loop cho chúng — nền tảng từ cụm trước
State & Session Management
Feedback loop cần lưu trữ lỗi đã gặp qua nhiều turn — tìm hiểu quản lý state trong agent dài hạn
Multi-Agent Architecture
Xây dựng evaluator agent chuyên trách để tạo feedback loop phức tạp cho hệ thống lớn
Tool Validation: 23 lớp validation như Claude Code
Khám phá kiến trúc 23 lớp validation của Claude Code để AI agent thao tác file, terminal an toàn. Defense-in-depth cho Agent-Computer Interface.
Linter Integration: Reject lỗi trước khi apply
Khám phá cách SWE-agent và Claude Code dùng linter để chặn lỗi syntax trước khi AI apply code. Quality gate kiểu mới cho AI engineering.