Chia Sẻ Khóa Học Harness Engineering & Agent Orchestration [Update 7/2026] [Khóa 5117 A]
Tích hợp LLM vào một harness cấp độ production, bổ sung durable execution, sandboxing an toàn, các memory system và multi-agent orchestration. Vượt xa các demo agent dễ hỏng và cung cấp một harness có khả năng phục hồi, đáng tin cậy và an toàn khi triển khai.
Yêu cầu: Thành thạo TypeScript và Node.js. Kinh nghiệm xây dựng các agent cơ bản hoặc hoặc các ứng dụng tích hợp AI.
Mục lục:
1. Giới thiệu.
2. Harness Engineering:
2.1 Agent Harness là gì: Giải thích các tính năng cốt lõi của một harness. Harness là cơ sở hạ tầng giúp biến một LLM thành một agent với đầy đủ chức năng. Nó có thể support memory, tích hợp, thực thi bền vững và khả năng tự phục hồi (self-healing). Nếu không có harness, bạn chỉ có các lệnh gọi suy luận mang tính giao dịch đơn thuần, chứ không phải là một agent thực thụ.
2.2 Setup Project khóa học: Hướng dẫn chi tiết về project AI agent harness dựa trên JavaScript, sử dụng AI SDK của Vercel. Bài học này trình bày về cấu trúc dự án, model flexibility, runtime design và giao tiếp WebSocket phục vụ cho việc thực thi agent phân tán. Starter project nằm ở nhánh bài học-1.
2.3 Agent Tools Setup: Xây dựng một LLM agent loop cơ bản. Model sẽ quyết định xem có sử dụng một tool hay không, nhận kết quả và lặp lại quá trình đó cho đến khi có thể đưa ra câu trả lời. Các loop đơn giản rất hữu ích để hiểu được cấu trúc của agent, tuy nhiên, chúng lại thiếu đi khả năng xử lý lỗi và các approval layer.
2.4 Classify & Reply Tool: Bài học này tiếp tục xây dựng agent loop cơ bản. Bạn sẽ thêm vào các tool để phân loại các user request, cũng như soạn thảo và gửi phản hồi cho khách hàng. Một default system prompt cũng được thêm vào harness.
2.5 Harness Runtime: Triển khai runAgent method, phương thức này tương tác với LLM thông qua các streaming response, tool call và event emission để update UI theo thời gian thực. Điều này cung cấp một in-memory message array và một hand-rolled loop. Nếu model gọi một tool, lượt đó sẽ kết thúc và hệ thống sẽ quyết định điều gì xảy ra tiếp theo.
2.6 Stream Message đến UI: Bài học này nhấn mạnh cách streaming cho phép gửi kết quả từng phần đến UI ngay khi chúng được gửi đến, cải thiện khả năng phản hồi. Nếu không có streaming, người dùng phải chờ phản hồi đầy đủ, điều này chậm hơn và kém hiệu quả hơn. Một OpenAI API key được thêm vào project và agent harness cơ bản sẽ được test.
3. Durable Execution:
3.1 Durable Execution Setup với NeonDB: Thảo luận về sự cần thiết của việc các harness có khả năng durable execution. Các session nên được tiếp tục một cách liền mạch sau những lần gián đoạn. Harness này sử dụng DBOS, được hỗ trợ bởi một PostgreSQL database được host trên Neon.
3.2 Triển khai Durable Execution: Tạo một event bus system cơ bản và bền vững bằng cách sử dụng một Postgres database và Drizzle ORM. Phần này sẽ code cho một database client, định nghĩa một event log table, và triển khai event persistence & replay.
3.3 Durable Tools: Refactor các tool call nhằm tập trung quyền kiểm soát của tool execution, giúp hệ thống trở nên bền bỉ và dễ quản lý hơn bên trong một workflow system sử dụng DBOS. Việc loại bỏ tính năng automatic execution của AI SDK và wrapping các tool call cùng các tương tác với model đã tạo ra một harness vững chắc và persistent cho các AI tool workflow.
3.4 Durable Agent Loop: Bổ sung tính bền vững cho agent loop. Mỗi model turn và tool call đều được bọc trong một DBOS.runStep(), đóng vai trò như một checkpoint cho kết quả của từng bước. Nếu cần recovery, các kết quả đã lưu trong bộ nhớ đệm (cache) sẽ được trả về thay vì phải chạy lại từng bước.
Kết nối DBOS to the Server: Tiến hành refactor Express server để sử dụng DBOS cùng với kết nối WebSocket. Toàn bộ ứng dụng server được bọc trong một "main" function để start ứng dụng. Sau khi debugging một số sự cố, bạn sẽ test độ bền vững của harness.
Durable Execution Recap: Review việc tái cấu trúc các action như tool call, event emission và text streaming, những action này giờ đây được đóng gói thành các "step" đơn lẻ giúp persist result vào một database. Bài học này cũng thảo luận về cách server xử lý các tình huống ngắt kết nối và kết nối lại, hoặc khi nào LLM nên phản hồi.
4. Sandboxed Tools & Memory:
4.1 Code Mode & Security: Giới thiệu một số tính năng nâng cao của agent, chẳng hạn như sandboxing và code mode. Sandboxing bảo vệ môi trường host bằng cách cô lập code execution.
4.2 Sandbox Boundary & runCode Tool: Tạo ra một môi trường sandbox bảo mật để harness có thể execute code bằng runCode tool. Điều này sẽ cho phép các workflow xử lý các phép tính số học và dữ liệu (ví dụ: tính toán chi phí) một cách an toàn bên trong sandbox thay vì phụ thuộc vào khả năng tính toán của mô hình ngôn ngữ.
4.3 Cập nhật System Prompt: Update system prompt để phản ánh các khả năng ở code-mode mới của harness. Bạn sẽ test hệ thống bằng một kịch bản đơn hàng bị trùng lặp, trong đó yêu cầu phải tính toán số tiền hoàn lại. Harness đã generate thành công một script để tìm ra đơn hàng bị trùng lặp và tính ra số tiền cần hoàn lại.
4.4 Memory & Context Hydration: Thảo luận về các chiến lược quản lý memory & context, đặc biệt tập trung giải quyết những thách thức khi context windows ngày càng mở rộng, cũng như cách nén và nạp lại context một cách hiệu quả để cải thiện hiệu suất.
4.5 Summarization & Compaction: Triển khai tính năng summarization và compaction để quản lý memory hiệu quả hơn trong cuộc hội thoại. Harness duy trì một mảng các lượt hội thoại và một summary string đang chạy. Nó sẽ tiến hành tóm tắt lịch sử hội thoại trước mỗi lượt xử lý của mô hình để tránh việc chạm ngưỡng giới hạn token.
4.6 Clearing Durable Event Log: Thêm tính năng xóa cuộc trò chuyện. Việc này không chỉ xóa trên UI mà còn làm trống lịch sử trò chuyện được lưu trữ trong durable event log.
5. Orchestration & Supervision:
5.1 Agent Handoff: Giải thích các lợi ích và trường hợp sử dụng của routing và handoff trong các multi-agent system, bao gồm khi nào và tại sao nên sử dụng nhiều agent thay vì một agent duy nhất. Anh cũng làm nổi bật sự khác biệt giữa agent handoff và sub-agent, đồng thời phác thảo các bước ban đầu để triển khai các agent primitive và handoff tool trong một hệ thống phần mềm.
5.2 Billing Agent & Handoff Tool: Tạo ra một billing agent và một handoff tool để ủy thác công việc cho subagent. Model turn function được cập nhật để tiếp nhận các agent-specific tool & system prompt.
5.3 Agent Triage & Handoff: Thêm một triage agent để làm đầu mối liên hệ ban đầu, có nhiệm vụ xử lý các request hoặc ủy nhiệm cho các agent chuyên biệt. Multi-agent handoff system này tập trung vào việc quản lý các agent transition, các tool call và message handling nhằm đảm bảo việc phân công nhiệm vụ diễn ra suôn sẻ.
5.4 Supervision với Subagent: Giới thiệu khái niệm "supervision" và bổ sung thêm một "plan mode", trong đó một plan có thể được tạo và thực thi bởi các sub-agent bên dưới supervision. Các sub-agent này là những "investigator" tinh gọn, chỉ có quyền đọc (read-only) với các công cụ hạn chế và không có quyền ghi trực tiếp vào database. Các investigator được chuyên biệt hóa theo từng lĩnh vực (billing, technical, sales) với các system prompt & tool được tùy chỉnh riêng.
5.5 Supervisor Workflow: Triển khai supervisor workflow, tận dụng các output có cấu trúc và DBOS. JSON plan schema được generate thông qua LLM và bao gồm các kết quả synthesized investigator cùng với các workflow step, bao gồm cả các even emission để theo dõi trạng thái.
5.6 Dispatching Subagent: Thiết lập supervisor workflow để điều phối song song nhiều sub-agent nhằm investigate các mục tiêu khác nhau cùng một lúc. Điều này minh chứng cho cách harness quản lý việc thực thi bất đồng bộ, xử lý lỗi và tổng hợp các phát hiện thành câu trả lời cuối cùng cho người dùng.
5.7 Human in the Loop: Thảo luận về cách thêm một human-in-the-loop workflow vào harness, nhằm cung cấp một cơ chế phê duyệt cho một số tác vụ nhất định, chẳng hạn như phát lệnh hoàn tiền. Phần ghi chú của bài học 7 có đầy đủ thông tin chi tiết về cách triển khai tính năng này.
6. Tổng kết: Bạn sẽ kết thúc khóa học bằng cách nhấn mạnh tầm quan trọng của công nghệ tiên tiến này và lợi thế mà những kỹ năng này mang lại cho các kỹ sư có sự tò mò và động lực để tìm hiểu sâu hơn.
