---
title: "Phân biệt Agent & Harness và tư duy giải cấu trúc"
description: "Agent chọn làm gì tiếp theo, Harness điều phối và kiểm soát. Tách được hai phần này là bước đầu của tư duy giải cấu trúc khi làm hệ thống."
canonical: "https://200lab.io/blog/phan-biet-agent-va-harness"
published: "2026-10-01T15:28:12Z"
updated: "2026-10-01T15:28:12Z"
authors: ["Việt Trần"]
tags: ["Agent", "Harness", "Kiến trúc ứng dụng", "Mindset"]
reading_minutes: 5
access: "public"
---

Mình thấy Agent và Harness mọi người có vẻ thường bị nhầm lẫn, vì khi dùng một công cụ AI, hai thứ này thường xuất hiện cùng nhau.

Ta gọi Codex App, Claude Code là Agent - đúng. Mà gọi là Harness cũng đúng luôn.

## Agent và Harness khác nhau ở đâu?

Thật ra chúng không giống nhau. Nếu bạn chỉ là người dùng, bạn có thể gọi nhầm Agent và Harness nhưng nếu bạn làm hệ thống thì việc nhầm lẫn là cực kỳ không nên.

Lấy ví dụ giao cho AI một việc: "Tìm và sửa lỗi đăng nhập".

- **Agent** chọn bước tiếp theo: đọc file nào, tìm lỗi ở đâu, sửa gì, rồi dựa vào kết quả test để quyết định có cần sửa tiếp không.
- **Harness** đảm bảo cho quá trình đó chạy được: thực thi lời gọi công cụ, kiểm tra quyền, giữ ngữ cảnh và đưa kết quả trở lại để Agent tiếp tục.

![Agent chọn bước tiếp theo, Harness đảm bảo quá trình đó chạy được.](https://assets.200lab.io/sha256/70/70c11121939c394d03632bcff0e371c9983ce1a36970dcbae8c072cb8c4829f8/generations/6b61f2a811e7cc157704f76fcb2815237e9bfcdc3151265755f22d371097cd15)

> 💡 Có thể nhớ đơn giản:
>
> - **Agent**: chọn làm gì tiếp theo để đạt mục tiêu.
> - **Harness**: điều phối, kiểm soát, đảm bảo các việc được diễn ra đúng và hiệu quả.

Mặc dù ở thời điểm hiện tại, các app/cli/system Agent hiển nhiên phải có Harness. Nên dễ tạo sự khó phân biệt này.

## Nếu chúng vốn đi cùng nhau thì tại sao phải phân biệt?

Như mình từng chia sẻ khá nhiều lần. Để làm được hệ thống (dù nhỏ hay lớn), chúng ta phải biết giải cấu trúc và phân biệt được từng cấu trúc nhỏ hơn, thậm chí là tới thành phần cụ thể. Mỗi cái có nhiệm vụ riêng không nên nhầm lẫn.

Bạn có thể lựa chọn nhập vào hoặc tách ra tùy bài toán cụ thể. Nhưng ít ra bạn luôn biết với mỗi problem thì đâu là nơi cần quan tâm, đâu là nơi chả liên quan.

## Tách Agent khỏi Harness ngay trong workflow

Thậm chí trong một workflow, bạn có thể tách phần đề xuất của Agent khỏi phần kiểm soát và thực thi của Harness.

Ví dụ Agent Node chỉ chạy một loop vài turn, được cấp các công cụ read-only để research, scout, đọc file, search, fetch web...

Đầu ra là một đề xuất có cấu trúc: muốn update/edit gì, ở đâu, với tham số nào. Các hành động thay đổi hệ thống chưa được thực thi tại đây.

Đề xuất đi qua các node kiểm tra quyền, kiểm tra điều kiện nghiệp vụ hoặc xin con người phê duyệt. Hành động được duyệt mới chuyển sang node thực thi. Nếu bị từ chối hoặc thực thi thất bại, phản hồi có thể quay lại Agent để điều chỉnh.

![Agent Node đọc và đề xuất, Harness điều phối toàn bộ luồng kiểm tra, duyệt và thực thi.](https://assets.200lab.io/sha256/89/89ff63f3e78cc17ed462c0282910f6369a07d4f42fab2e88a0689c18e85e7dab/generations/c8ae4b70dec0b1df608235eacec65c80218233751c076debd471b57c658b5081)

Các node kiểm soát và thực thi này là những phần của Harness được tách ra trong workflow. Bản thân loop read-only của Agent vẫn cần một lớp điều phối tối thiểu.

Nhờ vậy, mình có thể kiểm tra và thay đổi phần Agent tương đối độc lập, còn quyền tác động lên hệ thống được quản lý tại một nơi rõ ràng.

## Giải cấu trúc: chia để trị hiệu quả

Tới đây nếu bạn vẫn chưa nhìn ra được mức độ hiệu quả của việc phân tách này thì mình nói luôn:

Vì tách ra như vậy, nhiệm vụ của Agent Node bây giờ rất gọn, rất dễ kiểm tra và lựa chọn stack.

Bạn không cần phải cố gắng lắp 1 con all-in-one có cả Agent và Harness vào rồi sau đó đau đầu vì nó chạy không đúng, không hiểu hệ thống của bạn, không inject các quyền của hệ thống,...

Cái gì của hệ thống bạn khác biệt, thì vẫn phải làm. Nhưng cái Agent cơ bản thì rất nhìu. Thậm chí bạn tự build để nó ít tools, tối ưu context, focus đúng việc hơn.

Và đó là sức mạnh của "giải cấu trúc". Đây là một mindset, một skill cực kỳ quan trọng mà ít ai để ý.

## Học cơ chế, đừng chỉ học chiêu thức

![Giải cấu trúc: tách từng phần rồi ráp lại theo bài toán.](https://assets.200lab.io/sha256/a5/a54f1ce3592f442df50f1e69595882a8bbf657b787e6a36eb4b9399f43d41583/generations/3e7a6023cb51d37dc9f1cd47ba3a35cd9dd6560f9953d95e7b2ed61fe0286040)

Người mới học kiến trúc sẽ thường lao vào phối ghép, lắp này lắp nọ để xây hệ thống. Họ sợ hệ thống xây không đủ lớn.

Nhưng người làm lâu năm với mindset chuẩn sẽ lo lắng rằng liệu tôi có giải cấu trúc đủ chi tiết và hiểu cơ chế của chúng chưa. Giải được càng nhỏ, hiểu được càng chi tiết thì tôi có thể tự do tái tạo lại bất kỳ cấu trúc mong muốn nào cho từng bài toán cụ thể.

Và đó mới được gọi là Solution Architecture (kiến trúc giải pháp) cho bài toán cụ thể.

Do nhiều người thấy các kiến trúc sư hệ thống thi triển "chiêu thức" nên họ đi học "chiêu thức". Cái đó thiên biến vạn hóa, học hoài không hết.

## Đọc thêm

- [Grok Bot gom phản hồi khách một tuần thành bảng việc cần sửa](https://200lab.io/blog/grok-bot-weekly-customer-feedback.md): Gom phản hồi khách bằng Grok Bot từ tin nhắn cả tuần: bạn có bảng khen chê kèm mã tin, ba việc cần sửa và tự đếm lại nhóm lớn nhất trước khi sửa shop.
- [Function calling là gì? Phân biệt với Structured Outputs và MCP](https://200lab.io/blog/function-calling-la-gi.md): Function calling nối model với dữ liệu thật qua host app: vòng tool call, các bước app phải kiểm tra, và điểm khác với Structured Outputs cùng MCP.
- [Multi-agent là gì? Khi nào một agent không đủ và 3 cách chia việc](https://200lab.io/blog/multi-agent-la-gi.md): Multi-agent là gì: mạnh ở bài toán rộng chạy được song song, nhưng chỉ nên tách khi phần việc làm độc lập được và bù nổi chi phí token.
- [Cách nhờ Grok Bot lọc khách quen và soạn nháp tin hỏi thăm](https://200lab.io/blog/grok-bot-repeat-customer-check-in.md): Soạn tin hỏi thăm khách quen bằng Grok Bot: bot lọc khách theo thời gian cháy, ghi rõ cách tính và chỉ viết nháp để bạn đọc lại rồi tự gửi.
- [Cách nhờ Grok Bot viết checklist đóng gói đơn hàng cho người mới](https://200lab.io/blog/grok-bot-packing-checklist.md): Soạn checklist đóng gói bằng Grok Bot từ lời kể lộn xộn của chủ shop: bot xếp rõ từng việc cho người thời vụ, hỏi lại chỗ thiếu và chỉ bám sát ý bạn.
- [Mọi bài viết chủ đề Agent](https://200lab.io/blog/tags/agent.md)

Toàn bộ nội dung: https://200lab.io/llms.txt
