200Lab
Khoá học nền tảng về Harness — phần khung quanh model quyết định một Agent chạy có kiểm soát hay không. Bạn học cách phân biệt LLM Call, Workflow và Agent, đọc đúng chỗ lỗi (control flow, state, permission, evidence) và kiểm chứng Agent bằng hành vi chạy lại được, thay vì đổi model rồi hy vọng.
25 bài≈ 5 giờ 15 phút24 quiz1 học viên
Sau khoá học, bạn nhìn một Agent theo cách khác. Thay vì hỏi “model có đủ giỏi không”, bạn hỏi “phần khung quanh model đã đúng chưa”. Cụ thể, bạn sẽ:
Đây là khoá học về nền tảng và tư duy. Nó không phụ thuộc ngôn ngữ, framework hay model, nên những gì bạn học vẫn đúng khi bạn đổi runtime hay đổi sang một model mới.
Toàn bộ chương trình xoay quanh một khái niệm: Harness — phần khung mà application dựng lên quanh model để lo prompt, memory, tools, kết quả trả về, rồi quyết định nên tiếp tục hay dừng. OpenAI gọi phần đó là model-native harness khi nói về hướng đi mới của Agents SDK; Anthropic phân tích cách một Harness hiệu quả giúp Agent giữ tiến triển qua nhiều context window; Cloudflare định nghĩa Harness là vòng lặp bao quanh model. Ba nguồn, một ý: năng lực nằm ở model, còn việc nó chạy có kiểm soát hay không nằm ở Harness.
Bạn sẽ đi qua sáu nhóm nền tảng, sắp theo đúng cách một builder dần nhìn rõ Harness:
Tóm tắt một email, phân loại phản hồi rồi rẽ nhánh theo rule, và để model dùng kết quả mới tự chọn bước tiếp theo — ba thứ đó vận hành hoàn toàn khác nhau dù cùng được gọi là “app có Agent”. Bạn học cách tách LLM Call, Workflow và Agent bằng một tiêu chí: model có được ảnh hưởng đến control flow hay không, và tới đâu. Từ đó là câu hỏi thực dụng hơn: khi nào bước tiếp theo không thể gói trong một rule viết sẵn mà cần model cân nhắc dựa trên kết quả vừa quan sát được.
Cùng một model: trong khung chat nó chỉ có thể khuyên; đặt vào một application có tools, chính lời đề xuất của nó lại có thể dẫn tới tác động thật. Ở nhóm này bạn gặp hai cơ chế nền. Agent Loop: làm một bước, đưa kết quả trở lại, cập nhật state rồi mới đi tiếp — một vòng lặp chỉ tạo tiến triển khi feedback thật sự làm state đổi. Tool: model đề xuất một hành động, Harness quyết định có chạy không, còn executor mới là bên thực thi.
Ba ranh giới đắt giá nhất với người mới:
Bạn đổi ngày đi và giảm ngân sách giữa chừng, cuộc hội thoại vẫn còn nguyên đó, nhưng Agent tiếp tục dùng kế hoạch cũ. Nó không “quên”; nó đang trộn lẫn những gì từng được nói (history), state đang thật sự có hiệu lực, và phần được đưa vào model ở lượt này (context). Quanh trục này là các ranh giới hay bị hiểu nhầm mà chương trình bóc tách riêng: System Prompt cung cấp instruction chứ không sở hữu runtime control; context window không phải memory; RAG cho grounding từ dữ liệu riêng chứ không thay thế state hay memory.
Gõ “Stop” trong ô chat chỉ là một input đi theo đường dữ liệu; dừng một run đang chạy cần một đường điều khiển do Harness sở hữu. “Đã dừng” không đồng nghĩa với “đã hoàn thành”, và hủy một việc đang chạy không tự hoàn tác những tác động đã xảy ra. Khi Agent ra kết quả sai, chỉ nhìn câu trả lời cuối bạn không biết nó hiểu sai yêu cầu, chọn nhầm tool hay bỏ qua một bước — bạn cần trace để quan sát lại cả hành trình, và cần eval để tin nó thật sự ổn qua những tình huống chạy lại được.
Cuối cùng, bạn nối các phần rời rạc thành một bản đồ trách nhiệm để tự kiểm tra hệ thống: Harness chuẩn bị context, model đưa ra đề xuất, Harness kiểm tra và quyết định, executor thực thi, environment trả về kết quả quan sát được, rồi Harness cập nhật state và quyết định tiếp tục hay dừng. Và vì đã tách bạch model với Harness, việc chọn model trở về đúng bản chất: một trade-off theo workload — chất lượng, độ trễ, chi phí, độ ổn định của hành vi — chứ không có model nào “tốt nhất” cho mọi việc.
Dựng một Agent biết làm việc giờ dễ hơn bao giờ hết. Vài năm trước, để AI biết đọc email, tra cứu thông tin, gọi API rồi tự lên kế hoạch cho bước tiếp theo, bạn phải ghép rất nhiều thứ lại với nhau. Bây giờ chỉ vài dòng code và một model đủ tốt là bạn đã có một bản demo chạy được, trình bày trước khách hàng cũng khá thuyết phục.
Đây là phần vui, và cũng là phần đánh lừa nhiều người nhất. Một bản demo chạy trơn tru không nói lên điều quan trọng nhất: khi đưa vào vận hành thật, Agent có làm đúng thứ bạn cần, có dừng đúng lúc, có bị chặn lại khi vượt quyền, và khi sai thì bạn có lần ra được vì sao hay không.
200Lab làm việc trực tiếp với các hệ thống có Agent bên trong — từ GoClaw, Agent Brain cho tới Emree — và pattern gặp đi gặp lại không phải “model chưa đủ giỏi”. Model càng ngày càng giỏi. Thứ lặp lại là builder chẩn đoán sai chỗ: dành nhiều ngày tinh chỉnh model cho một lỗi mà gốc rễ nằm ở cách application tổ chức Harness. Khoá học này ra đời để bạn nhìn đúng chỗ ngay từ đầu, trước khi đốt hàng tuần vào việc sửa nhầm chỗ. Góc nhìn là thực chiến, nhưng nhân vật chính vẫn là bạn và hệ thống bạn đang build.
Khi Agent hành xử sai, phản xạ đầu tiên của phần lớn builder là nhắm vào model: đổi prompt, đổi sang model xịn hơn, nhồi thêm context, gắn thêm RAG. Thử một vòng, thấy đỡ đỡ, rồi vài hôm sau lỗi kiểu khác lại xuất hiện. Đôi khi model thực sự chưa đủ tốt, nhưng rất nhiều lần root cause nằm ở chỗ khác hẳn, và đó là những tình huống chương trình lấy làm điểm xuất phát:
Mỗi vấn đề trên tương ứng với một kiểu chẩn đoán sai, và mỗi kiểu có một bài trong chương trình.
Nếu bạn từng nhìn một Agent chạy sai mà không biết nên chỉnh chỗ nào, chương trình bắt đầu đúng từ câu hỏi đó. Bài đầu tiên không dạy bạn dựng gì cả — nó giúp bạn tách ba kiểu ứng dụng AI để không gọi nhầm mọi thứ là Agent. Xong bài đó, phần còn lại của Harness sẽ dần rõ ra.