MarkTechPost
92

Thủ thuật

Phân biệt Agent Harness, Agent Framework và MCP: Lớp nào quản lý vòng lặp, trạng thái và công cụ?

(giờ Việt Nam)

Tóm tắt AI

Bài viết phân tích chuyên sâu về 3 lớp kiến trúc trong hệ thống AI Agent hiện đại, giúp người làm kỹ thuật hiểu rõ vai trò của từng thành phần trong việc quản lý quy trình, dữ liệu và quyền hạn.

Bản dịch AI

Agent Harness vs Agent Framework vs MCP: Which Layer Owns the Loop, State, Tools, Permissions, and Recovery

Harness, framework và MCP thường được dùng thay thế cho nhau trong các cuộc thảo luận về kiến trúc tác nhân (agent architecture). Tuy nhiên, chúng không phải là một. Chúng nằm ở các tầng khác nhau, đảm nhận những trách nhiệm khác nhau và ngày càng chồng lấn lên nhau ở các ranh giới. Bài viết này phân tách 3 khái niệm này bằng 1 câu hỏi: Tầng nào sở hữu vòng lặp thực thi, trạng thái, truyền tải công cụ, quyền hạn và khả năng phục hồi?

3 danh mục

Ma trận sở hữu

Bảng này ánh xạ từng trách nhiệm tới tầng sở hữu nó theo mặc định. "Sở hữu" (Owns) nghĩa là tầng đó định nghĩa và thực thi hành vi. "Cung cấp" (Exposes) nghĩa là tầng đó đưa ra một hook (điểm kết nối) nhưng không quyết định chính sách.

Phần còn lại của bài viết này sẽ giải trình cho từng hàng với các nguồn dẫn chứng.

Ai sở hữu vòng lặp thực thi

Mọi tác nhân đều chạy một vòng lặp: Gửi ngữ cảnh đến mô hình, đọc phản hồi, thực thi các lệnh gọi công cụ, phản hồi kết quả và lặp lại. Cả harness và framework đều triển khai vòng lặp này. Sự khác biệt nằm ở mức độ bạn có thể kiểm soát nó.

Ai sở hữu truyền tải công cụ

Đây là hàng duy nhất mà MCP sở hữu hoàn toàn.

MCP định nghĩa 3 nguyên hàm phía máy chủ: tools (các hàm mà mô hình thực thi), resources (ngữ cảnh và dữ liệu) và prompts (quy trình làm việc theo mẫu). Các client có thể cung cấp tính năng elicitation (khơi gợi), cho phép máy chủ yêu cầu thêm thông tin đầu vào từ người dùng. Truyền tải sử dụng JSON-RPC 2.0 qua stdio hoặc Streamable HTTP. Bản sửa đổi ngày 28/07/2026 đã bắt buộc các header Mcp-Method và Mcp-Name trên các yêu cầu HTTP. Các gateway và bộ giới hạn tốc độ (rate limiter) giờ đây có thể định tuyến dựa trên header mà không cần phân tích nội dung (body). Bản cập nhật này cũng làm cho các phản hồi tools/list có thể lưu vào bộ nhớ đệm với ttlMs và cacheScope, đồng thời loại bỏ phương thức truyền tải HTTP+SSE cũ với lộ trình ngừng hỗ trợ trong 12 tháng.

Việc lấy mẫu do máy chủ khởi tạo (server-initiated sampling), roots và logging hiện đã bị loại bỏ. Thay thế cho chúng là Multi Round-Trip Requests (MRTR). Máy chủ trả về resultType: "input_required" và client sẽ thử lại yêu cầu ban đầu với các câu trả lời được đính kèm. Điều này rất quan trọng đối với hàng quyền hạn bên dưới.

Harness và framework đều nằm trên MCP với tư cách là client. Claude Code và Claude Agent SDK kết nối với các máy chủ MCP. Chúng cũng cho phép bạn định nghĩa các công cụ tùy chỉnh thông qua một máy chủ MCP nội bộ (in-process). Codex kết nối với các máy chủ MCP, và mẫu Relay của OpenAI nhúng Codex bên cạnh một bảng điều khiển được điều khiển bởi các công cụ MCP do ứng dụng sở hữu. Microsoft Agent Framework 1.0 hỗ trợ cả MCP và A2A. Giao thức này là nền tảng chung. Các con số về mức độ áp dụng đã chứng minh điều đó. Các nhà duy trì MCP báo cáo có gần nửa tỷ lượt tải xuống SDK mỗi tháng trên các SDK Tier 1. SDK TypeScript và Python đều đã vượt mốc 1 tỷ lượt tải xuống tổng cộng.

Ai sở hữu quyền hạn

Đặc tả MCP rất rõ ràng ở điểm này: Host phải có được sự đồng ý rõ ràng của người dùng trước khi gọi bất kỳ công cụ nào. Các mô tả và chú thích công cụ nên được coi là không đáng tin cậy trừ khi máy chủ đó đáng tin cậy. Và đây là câu then chốt: "Bản thân MCP không thể thực thi các nguyên tắc bảo mật này ở cấp độ giao thức". Quyền hạn thuộc về host.

Harness: Các harness sở hữu mô hình quyền hạn từ đầu đến cuối. Claude Code cung cấp 6 chế độ quyền hạn: default, acceptEdits, plan, auto, dontAsk và bypassPermissions. Các quy tắc từ chối (Deny rules) chặn trong mọi chế độ ngoại trừ bypassPermissions, chế độ này bỏ qua hoàn toàn tầng quyền hạn. Chế độ auto định tuyến từng lệnh gọi công cụ qua một bộ phân loại nền. Các hook thêm logic tùy chỉnh tại các điểm PreToolUse và PermissionRequest. Codex cũng có hình thức tương tự. App-server có thể tạm dừng một lượt và đưa ra yêu cầu phê duyệt mà client phải trả lời trước khi công việc tiếp tục.

Framework: Các framework cung cấp cho bạn hook, không phải chính sách. OpenAI Agents SDK có các rào chắn (guardrails) cho đầu vào, đầu ra và công cụ, và một "tripwire" sẽ dừng quá trình chạy. LangGraph sử dụng interrupt bên trong một node để tạm dừng chờ phê duyệt và Command(resume=...) để tiếp tục. Microsoft Agent Framework thêm một middleware ToolApprovalAgent với các quy tắc "don’t ask again". Trong mỗi trường hợp, bạn là người viết logic phê duyệt và giao diện người dùng (UI).

MCP: MCP hiện truyền yêu cầu phê duyệt qua đường truyền thông qua tính năng elicitation trên MRTR. Ví dụ, Supabase dự định sử dụng tính năng này để các công cụ có thể xác nhận chi phí hoặc một truy vấn mang tính phá hủy trước khi thực hiện. Máy chủ có thể yêu cầu, nhưng chỉ host mới có quyền quyết định.

Ai sở hữu khả năng phục hồi

Harness: Phục hồi là nơi các harness thể hiện giá trị của mình. Claude Agent SDK có thể tiếp tục một phiên làm việc và hoàn tác các thay đổi tệp về một điểm kiểm tra (checkpoint). Nó nén ngữ cảnh khi cửa sổ đầy. Các quy trình làm việc động của Claude Code có thể tiếp tục từ nơi đã dừng nếu terminal bị đóng. Bài viết về thiết kế harness của Anthropic (tháng 3/2026) tách biệt một tác nhân tạo (generator) khỏi một tác nhân đánh giá (evaluator) vì công việc tự chấm điểm thường có xu hướng tích cực hóa. Bài viết về harness của OpenAI từ tháng 2/2026 báo cáo kết quả của kỷ luật này: Codex đã tạo ra khoảng 1.500 pull request được hợp nhất trong 5 tháng. Kho lưu trữ đạt quy mô khoảng 1 triệu dòng mã. Đội ngũ tăng từ 3 lên 7 kỹ sư, trung bình 3,5 PR mỗi kỹ sư một ngày. OpenAI cũng báo cáo hiệu ứng harness trên ARC-AGI-3. Việc giữ lại lập luận và nén ngữ cảnh đã nâng GPT-5.6 Sol từ 13,3% lên 38,3% trong khi giảm token đầu ra gấp 6 lần. Cùng một mô hình, harness khác nhau, điểm số khác nhau.

Framework: Khả năng thực thi bền bỉ (durable execution) của LangGraph khẳng định rõ ràng rằng sự phục hồi phụ thuộc vào tính tất định (determinism). Hãy gói các tác dụng phụ (side effects) vào các tác vụ, giữ cho các node có tính lũy đẳng (idempotent), và một quá trình chạy có thể tiếp tục sau một tuần. OpenAI Agents SDK cung cấp error_handlers và bảo toàn kết quả của các guardrail đã hoàn thành khi quá trình chạy thất bại. Framework sẽ phát lại (replay). Bạn là người làm cho việc phát lại trở nên an toàn.

MCP: Câu trả lời của MCP cho công việc chạy dài hạn là phần mở rộng io.modelcontextprotocol/tasks, do AWS đóng góp, với các lệnh poll-based tasks/get và tasks/update. Điều này bao phủ một lệnh gọi công cụ dài hạn đơn lẻ. Nó không bao phủ khả năng phục hồi ở cấp độ tác nhân.

So sánh kiến trúc

OpenAI vẽ một bức tranh gần như giống hệt cho Relay. Ứng dụng sở hữu ngữ cảnh sản phẩm, quy tắc kinh doanh và công cụ. App-server của Codex cung cấp vòng lặp tác nhân và thực thi trong môi trường sandbox.

Nơi các danh mục chồng lấn

Các ranh giới đang mờ dần theo 3 hướng:

Một thuật ngữ không chồng lấn: A2A. Giao tiếp giữa các tác nhân (Agent-to-agent) là một giao thức riêng biệt, hiện cũng được đặt tại Agentic AI Foundation. MCP kết nối một tác nhân với các công cụ. A2A kết nối một tác nhân với các tác nhân khác.

Cách lắp ráp stack

Quyết định phụ thuộc vào 3 câu hỏi:

Những điểm chính cần lưu ý

Nguồn dẫn chứng

AI AgentKiến trúc AIFrameworkMCPKỹ thuật AI
Đọc bài gốc

Bài viết được AI dịch và tổng hợp tự động từ MarkTechPost. Liên kết bài gốc ở phía trên. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.