Courses
Ý tưởng này không hoàn toàn mới. Các nhà phát triển đã xây dựng lớp bọc, giàn giáo, và môi trường thực thi quanh mô hình suốt nhiều năm. Thuật ngữ lan rộng sau khi Mitchell Hashimoto, đồng sáng lập HashiCorp, dùng cụm từ "harness engineering" trong một bài viết tháng 2/2026 về quy trình làm việc AI của ông. Luận điểm rất đơn giản: khi một agent mắc lỗi, hãy thay đổi môi trường để lỗi đó không thể tái diễn. OpenAI đã dùng thuật ngữ này trong cùng tuần cho công việc Codex, và LangChain cũng theo cùng cách gọi.
Trong bài viết này, tôi sẽ giải thích agent harness là gì, vì sao AI agent cần nó, nó khác gì so với framework và runtime, và các công cụ mà nhà phát triển dùng để xây dựng những hệ thống giống harness.
Agent Harness là gì?
Một định nghĩa đến từ LangChain: "Nếu bạn không phải là mô hình, bạn là harness." Trong thực tế, agent harness là phần mềm bao quanh một mô hình ngôn ngữ: công cụ, bộ nhớ, trạng thái, thực thi, hàng rào bảo vệ, và khả năng quan sát.
Agent = Mô hình + Harness
Mô hình chịu trách nhiệm lập luận. Harness cung cấp nơi để lập luận đó hành động, ghi nhớ, kiểm tra kết quả, và tuân theo quy tắc.

Mô hình bên trong agent harness đang làm việc. Ảnh do Tác giả cung cấp.
Công thức này hữu ích, nhưng chỉ là mô hình tư duy, không phải tiêu chuẩn ngành. Một số nhà cung cấp vẫn dùng "harness", "framework" và "scaffold" với nghĩa gần như tương đương.
Vì sao AI Agent cần một Harness
Một mô hình ngôn ngữ thô có những giới hạn khi bạn yêu cầu nó làm việc qua nhiều bước. Bản thân nó không duy trì trạng thái bền vững, không tự thực thi công cụ, không quản lý một cửa sổ ngữ cảnh ngày càng lớn, hoặc tự phục hồi sau lỗi gọi công cụ nếu không có trợ giúp.

Hãy hình dung một agent được giao sửa một bài kiểm thử đang thất bại trong dự án Python. Không có harness, mô hình có thể viết ra thứ trông giống như bản vá, nhưng nó không thể đọc file kiểm thử thực, chạy pytest, thấy lỗi thực tế, chỉnh sửa hàm đang hỏng, hay xác nhận bản vá đã qua. Với harness, cả vòng lặp đó trở thành vài phút làm việc mà agent tự thực hiện, với từng bước được ghi lại ở nơi con người có thể kiểm tra.
Tuy vậy, khuyến nghị của Anthropic vẫn đúng: bắt đầu với cách tiếp cận đơn giản nhất có thể và chỉ thêm phần động khi nhiệm vụ cần tới chúng.
Agent Harness gồm những gì
Các phần có thể khác nhau, nhưng đa số chia sẻ vài khối xây dựng. Hãy xem chúng như một danh sách kiểm, không phải đặc tả sản phẩm cứng nhắc. Một agent nhỏ có thể chỉ cần vài mảnh ghép này, trong khi agent sản xuất sẽ cần nhiều hơn.
System prompt và quy tắc hành vi
Harness thường kiểm soát hướng dẫn nền tảng của mô hình. Điều này bao gồm system prompt, nhưng cũng có thể gồm quy tắc dự án, tiêu chuẩn mã hóa, ràng buộc vai trò, và chính sách an toàn. Trong Deep Agents của LangChain, chẳng hạn, một AGENTS.md có thể thiết lập nguyên tắc cơ bản trước khi nhiệm vụ bắt đầu.
Một số harness vào năm 2026 cũng dùng cách tiết lộ hướng dẫn theo tiến trình. Thay vì nạp mọi mô tả công cụ vào ngữ cảnh ngay khi khởi động, harness chỉ thêm tóm tắt những gì có sẵn. Hướng dẫn đầy đủ cho một công cụ chỉ được nạp khi mô hình cần dùng công cụ đó.
Công cụ: cách agent tương tác với thế giới
Công cụ cho phép agent làm những việc vượt ra ngoài sinh văn bản. Ví dụ phổ biến gồm tìm kiếm web, đọc và ghi file, truy vấn cơ sở dữ liệu, gọi API, thao tác trình duyệt, thực thi mã, và lệnh terminal. Harness kiểm soát công cụ nào khả dụng, khi nào mô hình được phép gọi chúng, và cách định dạng cũng như trả kết quả về ngữ cảnh của agent.
Model Context Protocol (MCP) đã trở thành giao diện tiêu chuẩn cho việc này vào năm 2026. Nhiều harness, bao gồm Anthropic Agent SDK, LangChain Deep Agents, và OpenAI Agents SDK, dùng MCP để kết nối các máy chủ công cụ bên ngoài mà không cần viết mã tích hợp tùy chỉnh cho từng cái.
Bộ nhớ và trạng thái
Agent cần biết điều gì đã xảy ra trước đó trong một nhiệm vụ. Harness có thể giữ trạng thái ngắn hạn trong hội thoại đang hoạt động và trạng thái dài hạn trong file, log, bản tóm tắt, hoặc tùy chọn đã lưu. Một số harness cũng nén lịch sử dài thành các tóm tắt ngắn hơn để mô hình không phải mang mọi chi tiết trong ngữ cảnh.
Môi trường thực thi: nơi agent chạy và hành động
Nhiều agent hữu ích cần một nơi để thực sự làm việc. Đó có thể là hệ thống file, container, terminal trong sandbox, phiên bản trình duyệt, hoặc runtime trên đám mây. Nếu không có môi trường thực thi do harness quản lý, các lời gọi công cụ sẽ không có nơi để tiếp nhận.
Nhiều harness hiện dùng container sandbox cách ly: môi trường sống ngắn gắn với một phiên, được dọn dẹp khi nhiệm vụ kết thúc, để việc ghi file, cài gói, và gọi mạng từ một nhiệm vụ agent không ảnh hưởng sang nhiệm vụ khác.
Điều phối và lập kế hoạch
Một số nhiệm vụ không phù hợp với một chuỗi bước thẳng. Harness có thể cung cấp công cụ lập kế hoạch để chia nhỏ mục tiêu thành các nhiệm vụ con và theo dõi trạng thái của chúng. Nó cũng có thể tạo các subagent xử lý một phần công việc và chỉ trả về bản tóm tắt cho agent chính.
LangChain Deep Agents, chẳng hạn, theo dõi các bước kế hoạch trong một file trên hệ thống file, cập nhật từng bước từ đang chờ sang đã hoàn thành khi nhiệm vụ chạy.
Hàng rào bảo vệ và quyền hạn
Harness là nơi bạn đặt quy tắc: phê duyệt của con người, chặn gọi công cụ, quyền dựa trên vai trò, và kiểm tra đầu ra. OpenAI Agents SDK, LangChain Deep Agents, và Microsoft Agent Framework đều hỗ trợ dạng kiểm soát này. Mẫu an toàn hơn là kiểm tra riêng biệt đầu vào, đầu ra, và quyền công cụ.
Khả năng quan sát và truy vết
Khi một nhiệm vụ agent có năm mươi bước thất bại ở bước ba mươi bảy, một bản truy vết sẽ cho thấy điều gì đã xảy ra. Truy vết ghi lại các lần gọi mô hình, gọi công cụ, bàn giao, lỗi, độ trễ, và chi phí trong suốt một lần chạy. OpenAI Agents SDK bật truy vết theo mặc định. LangSmith bổ sung bảng điều khiển gỡ lỗi và đánh giá. OpenTelemetry đã trở thành chuẩn để xuất truy vết ở định dạng trung lập nhà cung cấp, nên bạn không bị khóa vào một công cụ quan sát duy nhất.
Agent Harness vs. Framework vs. Runtime: Khác nhau ở đâu?
Câu hỏi này thường xuyên được nêu ra, và câu trả lời phức tạp hơn đa số bài giải thích gợi ý. Phân loại này hữu ích, nhưng không cố định.

Ba lớp, mức trừu tượng tăng dần từ dưới lên. Ảnh do Tác giả cung cấp.
Tôi sẽ bắt đầu với framework, vì nhiều nhà phát triển đã dùng qua.
Agent framework là gì?
Một agent framework cung cấp cho nhà phát triển các khối xây dựng để tạo agent. Nó bao phủ lời gọi mô hình, định nghĩa công cụ, mẫu bộ nhớ, và cấu trúc vòng lặp của agent. Ví dụ gồm LangChain thời kỳ đầu, CrewAI, và Google ADK. Một framework cho bạn biết cách cấu trúc một agent, nhưng không phải lúc nào cũng chỉ bạn cách vận hành nó ổn định trong sản xuất.
Agent runtime là gì?
Agent runtime là lớp giúp một agent chạy ổn định theo thời gian. Nó xử lý thực thi bền vững, lưu trạng thái, thử lại, bước có con người tham gia, và streaming. LangGraph, Temporal, và Inngest là ví dụ. Harrison Chase đưa ra phép so sánh: nếu Node.js là runtime và Express là framework, thì harness giống như Next.js.
Điều gì làm harness khác biệt?
Harness ở mức cao hơn framework. Trong khi framework cho bạn các thành phần, harness thường đi kèm nhiều quyết định sẵn có hơn: công cụ, lập kế hoạch, truy cập hệ thống file, và quản lý ngữ cảnh.
Các trường hợp sử dụng Agent Harness: Lập trình, Nghiên cứu, Dữ liệu, và Doanh nghiệp
Những khối xây dựng giống nhau xuất hiện trong các công việc rất khác nhau, nhưng tỷ lệ phối trộn mới là điều thay đổi. Một agent lập trình và một agent quy trình doanh nghiệp đều cần harness, nhưng nhấn mạnh các phần khác nhau. Các nhóm này không phải tiêu chuẩn chính thức. Chúng là cách thực dụng để thấy cùng một ý tưởng uốn theo công việc trước mắt như thế nào.
Harness cho agent lập trình
Agent lập trình là ví dụ tốt hiện nay vì harness hiện rõ. Để làm việc lập trình hữu ích, một agent cần truy cập file, ngữ cảnh git, thực thi terminal, chạy kiểm thử, cài phụ thuộc, và quy tắc dự án. Claude Code và Codex là ví dụ theo mẫu này: cả hai chạy dựa trên rất nhiều mã harness, không phải chỉ API mô hình thuần túy.
Khác biệt giữa một harness lập trình tốt và trung bình thường lộ ra ở các chi tiết nhỏ: cách nó phục hồi sau một bài test hỏng, liệu nó có thể quay lui một chỉnh sửa tệ, cách nó phơi bày lịch sử git cho mô hình một cách sạch sẽ. Những chi tiết đó mới là nơi phần lớn công sức kỹ thuật thực sự đổ vào.
Harness cho agent nghiên cứu
Agent nghiên cứu cần bộ công cụ khác: tìm kiếm web, theo dõi nguồn, ghi chú, quản lý trích dẫn, và tóm tắt. Harness quản lý cách lưu kết quả tìm kiếm, cách ghi nhận nguồn, và cách chia nhỏ cũng như đẩy các tài liệu dài ra ngoài để tránh dùng hết cửa sổ ngữ cảnh trong một lần.
Harness cho agent phân tích dữ liệu
Agent dữ liệu cần truy cập dataset, cơ sở dữ liệu SQL, môi trường thực thi Python, và ngữ cảnh schema để biết bảng và cột nào có sẵn trước khi bắt đầu viết truy vấn. Harness cũng thực thi ranh giới quyền truy cập, điều rất quan trọng khi agent có thể chạm tới dữ liệu sản xuất.
Harness cho quy trình doanh nghiệp
Triển khai doanh nghiệp bổ sung một lớp yêu cầu khác: xác thực, nhật ký kiểm toán, quy trình phê duyệt, kiểm soát truy cập theo vai trò, và liên kết tới hệ thống nội bộ. AWS AgentCore là một ví dụ quản lý trong nhóm này, với danh tính, mạng VPC, và khả năng quan sát đi kèm. Microsoft Agent Framework bao phủ phần tương tự cho các nhóm trong môi trường Azure hoặc .NET.
Công cụ xây dựng hệ thống Agent Harness vào năm 2026
Một vài sản phẩm được nhắc tới thường xuyên nhất vào giữa năm 2026. Chúng nằm ở các điểm khác nhau trên phổ framework-runtime-harness, và ranh giới vẫn đang dịch chuyển.
LangChain Deep Agents
LangChain Deep Agents là harness mã nguồn mở của LangChain, xây dựng trên LangGraph làm runtime. Nó đi kèm công cụ lập kế hoạch, hệ thống file ảo, tạo subagent, tự động nén ngữ cảnh, và middleware cho phê duyệt có con người tham gia và phát hiện PII. Nó trung lập mô hình, hỗ trợ endpoint tương thích OpenAI, và kết nối tới các nhà cung cấp sandbox gồm Modal, Runloop, và Daytona để thực thi mã.
Anthropic Agent SDK
Anthropic Agent SDK (tên gói: claude-agent-sdk) được tách ra từ Claude Code và phát hành như một lựa chọn độc lập. Nó bao gồm vòng lặp agent dựng sẵn, công cụ thực thi bash, đọc và ghi file, tìm kiếm web, tích hợp MCP, và nén ngữ cảnh. Nó chỉ hoạt động với các mô hình Claude, qua API của Anthropic, Amazon Bedrock, Vertex AI, và Azure.
OpenAI Agents SDK
Như tôi đã đề cập, OpenAI Agents SDK đã chuyển từ phạm vi framework sang harness khi bộ tính năng lớn dần. Bản phát hành tháng 4/2026 bổ sung thực thi sandbox gốc, nén bộ nhớ, và công cụ hệ thống file. Có sẵn bằng Python và TypeScript, SDK hỗ trợ dùng công cụ, chuyển giao giữa agent, và hàng rào bảo vệ.
Google Agent Development Kit
Google ADK hỗ trợ điều phối đa agent với các lớp dựng sẵn cho cấu trúc agent tuần tự, song song, và dựa trên vòng lặp. Nó bao gồm công cụ đánh giá, hoạt động với Vertex AI để triển khai được quản lý, và hỗ trợ MCP cho kết nối công cụ. Có sẵn bằng Python, Java, TypeScript, và Go, nó được tinh chỉnh cho các mô hình Gemini nhưng được mô tả là trung lập mô hình.
Microsoft Agent Framework
Microsoft Agent Framework là lộ trình chuyển đổi hiện tại của Microsoft cho các dự án AutoGen. Nó hỗ trợ Python và .NET, làm việc với các dịch vụ Azure AI, và bao gồm hỗ trợ MCP cho kết nối công cụ.
CrewAI
CrewAI áp dụng cách tiếp cận dựa trên vai trò cho hệ thống đa agent. Bạn định nghĩa agent với vai trò cụ thể, gán nhiệm vụ, thiết lập nhóm, và cấu hình bộ nhớ cùng hàng rào bảo vệ theo kiểu khai báo. Nó phù hợp với các bài toán tự nhiên ánh xạ thành một đội ngũ chuyên gia.
Temporal và Inngest
Bản thân chúng không phải agent harness. Chúng là nền tảng thực thi bền vững xử lý các tình huống khi một nhiệm vụ agent cần chạy trong nhiều giờ hoặc ngày mà không mất trạng thái. Khi lỗi xảy ra, engine phát lại từ điểm kiểm tra thành công gần nhất thay vì bắt đầu lại.
Thách thức và đánh đổi của Agent Harness
Thêm một harness giúp hệ thống làm được nhiều hơn, nhưng mỗi công cụ, quyền, và agent bổ sung lại thêm một cách để mọi thứ hỏng. Khi nhiệm vụ dài ra, hàng rào bảo vệ, truy vết, và trạng thái bền vững không còn là tùy chọn mà trở thành phần chủ chốt giúp một lần chạy dài có thể phục hồi.
Cũng có rủi ro phụ thuộc chặt làm các đội ngũ bất ngờ. LangChain báo cáo mức tăng 10 đến 20 điểm trên một tập con tau2-bench sau khi thêm hồ sơ harness theo từng mô hình. Artificial Analysis cũng đưa ra điểm tương tự trong Chỉ số Coding Agent: kết quả của coding-agent phụ thuộc vào cả mô hình và harness, với chi phí, số token, và thời gian mỗi nhiệm vụ thay đổi đáng kể giữa các kết hợp. Mô hình không đổi. Phần prompt xung quanh, công cụ, và middleware đã thay đổi. Chính hồ sơ đó là công việc của harness.
Bạn có thực sự cần một Agent Harness?
Đây là một cách trực diện để cân nhắc liệu bạn có cần hay không.
Bạn có thể cần một harness nếu hệ thống của bạn đáp ứng một hoặc nhiều điều kiện sau:
- Cần dùng công cụ bên ngoài
- Cần ghi nhớ tiến độ qua nhiều phiên
- Cần chạy mã trong môi trường thực
- Điều phối nhiều hơn một agent
- Cần phục hồi sau lỗi một phần mà không mất công việc đã làm
- Yêu cầu có phê duyệt của con người
Bạn có lẽ không cần harness nếu nhiệm vụ là một quy trình dự đoán được, nơi mọi bước đã định sẵn.
Một phép thử hữu ích: nếu nhiệm vụ có thể xử lý bằng một lần gọi mô hình, hoặc bằng một script tất định nhỏ với vài câu lệnh điều kiện, harness có lẽ là thừa. Ngay khi nhiệm vụ yêu cầu agent đưa ra quyết định, dùng công cụ, và phản ứng với kết quả theo thời gian, harness bắt đầu thực hiện công việc thực sự.
Một khuôn mẫu tôi thường thấy là các đội ngũ tìm tới harness quá sớm, xây truy vết và sandbox cho một nhiệm vụ thực chất chỉ là sinh văn bản một lần. Sai lầm ngược lại mới đau: xuất xưởng mô hình trực tiếp rồi nhận ra ở bài test hỏng thứ hai, lần gọi công cụ thứ ba, hoặc lần khởi động lại thứ năm rằng không có hạ tầng để dựa vào.
Kết luận
Như đã đề cập, các nhà cung cấp không dùng cùng một từ cho cùng một thứ, và ranh giới giữa framework, runtime, và agent harness vẫn đang dịch chuyển.
Với các tác vụ sinh nội dung một lần, lớp bọc là thừa. Với các agent phải hành động, ghi nhớ, và phục hồi qua những phiên dài, agent harness trở thành phần lớn của hệ thống. Việc chọn đúng harness ngày càng là quyết định tách biệt với việc chọn đúng mô hình. Tôi tò mò xem thế hệ mô hình tiếp theo sẽ hấp thụ bao nhiêu phần của lớp này, vì một số động thái từ OpenAI và Anthropic gợi ý ranh giới sẽ còn dịch chuyển. Ý tưởng cơ bản vẫn giữ nguyên: một agent là mô hình cộng với agent harness.
Nếu bạn muốn tìm hiểu thêm về xây dựng hệ thống agent, khóa học Building Scalable Agentic Systems của chúng tôi bao quát các mẫu phía sau việc dùng công cụ, điều phối, và quy trình agent chạy dài.
Tôi là một kỹ sư dữ liệu và người xây dựng cộng đồng, làm việc với pipeline dữ liệu, đám mây và công cụ AI, đồng thời viết các hướng dẫn thực hành, tác động cao cho DataCamp và các nhà phát triển mới nổi.
Câu hỏi thường gặp về Agent Harness
Sự khác nhau giữa agent harness và system prompt là gì?
System prompt là một đầu vào mà agent đọc lúc bắt đầu. Agent harness là lớp rộng hơn quản lý công cụ, trạng thái, quyền hạn, và xử lý lỗi. Cách diễn đạt đơn giản nhất tôi tìm thấy: system prompt nói cho mô hình biết phải làm gì, còn agent harness kiểm soát những gì nó có thể làm. Bạn có thể có một system prompt bóng bẩy mà không có agent harness, và bạn vẫn chỉ kết thúc bằng một lời gọi API không trạng thái. Agent harness là thứ biến một prompt thành một hệ thống.
Tôi có thể tự xây dựng agent harness từ đầu không?
Về nguyên tắc là có. Ở mức đơn giản nhất, một harness là một vòng lặp: gọi mô hình, phân tích phản hồi, thực thi các lệnh gọi công cụ mà nó đưa ra, trả kết quả, lặp lại. Vòng lặp đó có thể viết bằng vài chục dòng Python trong một buổi chiều. Phần khó đến sau vòng lặp: tràn ngữ cảnh, lỗi gọi công cụ, mất trạng thái khi khởi động lại, cưỡng chế quyền hạn, và truy vết. Trên thực tế, công việc sau vòng lặp đó luôn tốn nhiều thời gian hơn dự toán của đội ngũ, đó là lý do các harness mã nguồn mở cứ lớn dần thay vì thu nhỏ.
Mô hình có biết nó đang ở trong một harness không?
Không một cách tường minh. Một số harness cho mô hình biết công cụ nào khả dụng qua system prompt, nhưng mô hình không có khái niệm về harness như một hệ thống bao quanh nó. Nó chỉ thấy ngữ cảnh được cung cấp, tạo phản hồi, và đôi khi sinh ra một lệnh gọi công cụ. Hệ quả phụ: khi điều gì đó hỏng, mô hình thường không thể nói cho bạn vì sao, vì nó không biết harness tồn tại. Gỡ lỗi một agent rốt cuộc chủ yếu là gỡ lỗi harness, không phải mô hình.
Lựa chọn mô hình ảnh hưởng thế nào đến việc chọn harness?
Nhiều hơn mọi người nghĩ. Các mô hình lập trình hàng đầu đôi khi được hậu huấn luyện với chính agent harness của chúng trong vòng lặp, vì vậy thay thế bằng một harness khác có thể khiến hiệu năng bị bỏ lỡ. Kinh nghiệm thực tế: nếu đội ngũ của bạn cam kết với một họ mô hình, danh sách rút gọn agent harness thường sẽ tự chọn. Tình huống khó hơn là đổi mô hình sau này, điều này thường đồng nghĩa với viết lại logic harness, không chỉ thay một giá trị cấu hình.
Điều này có khác với cái trước đây người ta gọi là "LLM scaffolding" không?
Không hẳn. Đó là cùng một ý tưởng dưới tên gọi mới hơn. "LLM scaffolding," "agent wrapper," và "execution environment" đều chỉ cùng một hướng. Sự dịch chuyển tinh tế vào năm 2026 là "scaffolding" gợi một cấu trúc tạm thời sẽ được tháo bỏ khi mô hình đủ tốt, trong khi "agent harness" gợi thứ mà mô hình giữ quanh nó. Điều này thay đổi cách các đội ngũ dự toán công việc: scaffolding sẽ bị gỡ, còn agent harness trở thành một phần của hệ thống.
