Harness, Scaffold và các Thuật ngữ về AI Agent Cần Nắm Vững
Tìm hiểu về Harness, Scaffold và các thuật ngữ quan trọng liên quan đến AI Agent
- 12 min read
Harness, Scaffold và các thuật ngữ về AI Agent cần được hiểu đúng
Khi một lĩnh vực phát triển nhanh chóng, hệ thống từ vựng của nó thường tiến hóa nhanh hơn cả sự hiểu biết chung của cộng đồng. Các thuật ngữ bắt đầu trở nên mờ nhạt, bị tái sử dụng trong nhiều ngữ cảnh khác nhau, hoặc trở thành cách gọi tắt cho những ý tưởng chưa bao giờ được giải thích đầy đủ. Chúng ta đang thấy điều này xảy ra trong lĩnh vực AI Agent, nơi các khái niệm bị trộn lẫn, một số bị đổi tên và số khác được sử dụng rộng rãi trong vài tháng rồi lặng lẽ biến mất.
Điều này có thể gây choáng ngợp cho những người mới bắt đầu, và thậm chí cả với những chuyên gia đang cố gắng theo kịp các phát triển mới nhất. Sau hội nghị ICLR 2026, một trong chúng tôi (@ariG23498) đã đăng một câu hỏi phản ánh rõ sự nhầm lẫn này:
“Bạn hiểu thế nào về các thuật ngữ ‘harness’ và ‘scaffold’ trong ngữ cảnh của agent? Tôi đã nghe rất nhiều lời giải thích khi ở ICLR, nhưng tôi không hiểu tại sao họ không thống nhất về một định nghĩa duy nhất.”
Bảng thuật ngữ này là nỗ lực của chúng tôi nhằm định nghĩa rõ ràng những thuật ngữ thường xuyên xuất hiện nhưng thiếu sự giải thích nhất quán. Đây không phải là một cuốn từ điển toàn diện cho mọi thuật ngữ trong lĩnh vực này. Thay vào đó, chúng tôi tập trung vào các khái niệm thường bị nhầm lẫn, bị tái sử dụng sai cách, hoặc bị coi là hiển nhiên trong khi thực tế thì không.
Hầu hết các thuật ngữ này đều xuất hiện dù bạn đang xây dựng, triển khai hay chỉ đơn thuần là sử dụng các công cụ như Claude Code, Codex hoặc Hermes Agent. Phần cuối cùng sẽ đề cập đến các khái niệm dành riêng cho việc huấn luyện mô hình.
Lưu ý: Nhiều thuật ngữ trong số này vẫn chưa có định nghĩa được chấp nhận rộng rãi trên toàn cầu, và các framework khác nhau có thể sử dụng cùng một từ với ý nghĩa khác nhau. Mục tiêu ở đây không phải là áp đặt một bộ từ vựng “đúng” duy nhất, mà là cung cấp một mô hình tư duy thực tế để các cuộc thảo luận trở nên dễ theo dõi hơn.
Hãy cùng bắt đầu.
Mục lục
- Model
- Scaffolding
- Harness
- Agent
- Context Engineering
- Policy
- Tool Use
- Skills
- Sub-agents
- Training
- Tìm hiểu thêm
Model (Mô hình)
Model chính là LLM: nó nhận văn bản đầu vào và tạo ra văn bản đầu ra (ví dụ: Claude, Qwen, GPT, Kimi, DeepSeek…). Bản thân model không có bộ nhớ giữa các lần gọi và không có vòng lặp. Model có thể thể hiện ý định gọi một công cụ (tool), nhưng nó cần một harness để thực sự thực thi công cụ đó. Nó trả lời một prompt rồi dừng lại. Khi được bao bọc trong scaffolding và một harness, nó trở thành một agent.
Scaffolding (Khung định hình)
Đây là lớp định nghĩa hành vi bao quanh model: bao gồm system prompt, mô tả công cụ, cách phân tích phản hồi của model và những gì model ghi nhớ qua các bước (quản lý ngữ cảnh). Nó định hình cách model nhìn nhận thế giới và hành động trong đó, dù là trong quá trình huấn luyện hay khi suy luận (inference).
Các sản phẩm như Claude Code, Codex và Antigravity CLI gọi toàn bộ hệ thống này là một harness. Tài liệu của Claude Code nói thẳng rằng: “Claude Code đóng vai trò như một agentic harness bao quanh Claude.” Đó là cách dùng nghĩa rộng: harness nghĩa là tất cả mọi thứ không phải là model. Sự phân biệt giữa scaffold và harness quan trọng nhất khi bạn cần lập luận về chúng một cách riêng biệt, chẳng hạn như trong một pipeline huấn luyện. Bạn cũng sẽ thấy từ “scaffold” được dùng rộng hơn để chỉ bất kỳ cơ sở hạ tầng nào mà harness dựa vào: các hook, cấu hình runtime, thậm chí là cấu trúc thư mục.
Một số sản phẩm như Claude Code và Codex gắn chặt với model của nhà cung cấp. Những sản phẩm khác như Antigravity CLI và Hermes Agent cho phép bạn cắm bất kỳ model nào vào.
Harness (Khung vận hành)
Đây là lớp thực thi bên trong agent: nó gọi model, xử lý các lời gọi công cụ của model và quyết định khi nào nên dừng lại. Harness là thứ khiến agent vận hành được. Scaffolding (đã định nghĩa ở trên) là những gì model làm việc cùng: các hướng dẫn, công cụ và định dạng của nó.
Harness engineering (Kỹ thuật khung vận hành) là kỷ luật thiết kế lớp này một cách hiệu quả: quyết định khi nào agent nên dừng, cách xử lý lỗi và các rào chắn (guardrails) để giữ agent đi đúng hướng. Điều này áp dụng cho cả huấn luyện và suy luận. Bài viết của Addy Osmani và chia sẻ của OpenAI về việc xây dựng với Codex đều đề cập đến điều này từ góc độ suy luận.
Khi đánh giá, mô hình tương tự xuất hiện dưới dạng eval harness (khung đánh giá): thay vì thu thập dữ liệu huấn luyện, nó chạy một tập hợp các kịch bản cố định tại một điểm kiểm tra (checkpoint) của model và ghi lại các chỉ số thay vì cập nhật trọng số.
Agent (Tác nhân)
Thuật ngữ này đến từ học tăng cường (Reinforcement Learning - RL), nơi một agent đơn giản là một hàm nhận vào một quan sát (observation) và trả về một hành động (action). Môi trường nhận hành động đó và trả về một quan sát mới, và vòng lặp này lặp lại. Vòng lặp đó vẫn là cốt lõi trong cách các LLM agent hoạt động.
Trong thế giới LLM, thuật ngữ này đã mở rộng. Một agent là một model cộng với tất cả mọi thứ xung quanh cho phép nó hành động, chứ không chỉ là phản hồi. Nó biến việc tạo văn bản thô thành một thứ có thể hoạt động trong một vòng lặp: tiếp nhận thông tin, quyết định phải làm gì và hành động dựa trên kết quả.
Ví dụ cụ thể về một coding agent: System prompt, mô tả công cụ và định dạng đầu ra mà model tuân theo tạo thành scaffolding. Vòng lặp gọi model, xử lý các lời gọi công cụ và quyết định khi nào dừng lại là harness. Khi huấn luyện, harness cũng chạy nhiều vòng lặp này song song và đưa kết quả trở lại để cập nhật model.

Trong cộng đồng, công thức thường được tóm gọn là: Agent = Model + Harness. Nếu bạn không phải là model, bạn chính là harness. Sự phân biệt tinh tế giữa harness và scaffold (đã nêu ở hai phần trên) là điều gây ra hầu hết sự nhầm lẫn.
Khi mọi người nói về các sản phẩm như Claude Code, Codex hay Cursor, họ đang nói đến một harness cụ thể được xây dựng trên một model cụ thể, được thiết kế và tối ưu hóa cùng nhau. Hai sản phẩm sử dụng cùng một model cơ sở có thể mang lại cảm giác hoàn toàn khác nhau vì harness của chúng đưa ra những lựa chọn khác nhau. Và việc thay thế một model tốt hơn vào cùng một harness cũng thay đổi trải nghiệm. Model, harness và sản phẩm là ba thứ khác nhau.
Context Engineering (Kỹ thuật Ngữ cảnh)
Thiết kế những gì đưa vào cửa sổ ngữ cảnh (context window) của agent: những gì model thấy ở mỗi bước, system prompt, mô tả công cụ, lịch sử trò chuyện, kiến thức được truy xuất. Đây không phải là quyết định một lần: khi model chạy, các lượt trước sẽ định hình những gì đưa vào các lần gọi sau, và harness chủ động quản lý điều này trong suốt quá trình chạy. Nó áp dụng cho cả huấn luyện và suy luận, nhưng cái giá của việc làm sai là rất khác nhau. Khi huấn luyện, những gì model thấy sẽ định hình những gì được học; nếu sai, bạn phải huấn luyện lại. Khi suy luận, đó chỉ là văn bản: thay đổi prompt và triển khai lại.
Bộ nhớ (Memory) là một phần của bức tranh này. Bộ nhớ ngắn hạn là những gì nằm trong cửa sổ ngữ cảnh trong một lượt chạy đơn lẻ: lịch sử trò chuyện, kết quả công cụ, lập luận trước đó. Bộ nhớ dài hạn tồn tại xuyên suốt các phiên làm việc, được lưu trữ bên ngoài và truy xuất khi cần, sau đó được đưa ngược lại vào ngữ cảnh khi có liên quan.
Policy (Chiến lược/Chính sách)
Một policy là hành vi mà một agent tuân theo: trong bất kỳ tình huống nào, nó xác định xác suất thực hiện mỗi hành động có thể. Trong các hệ thống LLM, một phần của policy được học trong trọng số của model, nhưng hành vi cũng phụ thuộc vào scaffolding và harness xung quanh. Cùng một model có thể hành xử rất khác nhau tùy thuộc vào prompt, công cụ, bộ nhớ và vòng lặp thực thi của nó.
Một policy không phải là một agent. Policy định nghĩa hành vi; agent là toàn bộ hệ thống hoạt động trong một môi trường. Khi bạn bao bọc một checkpoint trong scaffolding và một harness rồi triển khai, bạn có một agent với hành vi chính là policy đó.
Tool Use (Sử dụng Công cụ)
Cách agent tương tác ra thế giới bên ngoài: API, trình thông dịch mã (code interpreters), cơ sở dữ liệu, tìm kiếm web, hệ thống tệp. Model thể hiện ý định sử dụng công cụ dưới một định dạng có cấu trúc. Các API suy luận hiện đại cung cấp điều này như một đối tượng chính thức: harness nhận lời gọi trực tiếp và điều hướng nó đến hàm chính xác. Kết quả được đưa ngược lại vào ngữ cảnh và vòng lặp tiếp tục.
Skills (Kỹ năng)
Các gói kiến thức có cấu trúc, có thể tái sử dụng để thực hiện các tác vụ nhiều bước. Trong khi một tool là một hành động (“chạy lệnh này”), thì một skill đóng gói mọi thứ cần thiết để đạt được một mục tiêu (“điều tra lỗi này, đưa ra giả thuyết, viết bản sửa lỗi”). Chúng có thể di chuyển giữa các agent và được tải lên khi cần. Ranh giới giữa tool, skill và sub-agent thay đổi tùy theo framework.
Sub-agents (Agent con)
Một agent được gọi bởi một agent khác để xử lý một tác vụ con cụ thể. Nó có model và scaffold riêng, lập luận độc lập và trả về kết quả. Agent gọi không cần biết cách nó hoạt động bên trong. Đây là điều phân biệt sub-agent với tool (một lời gọi hàm) hoặc skill (kiến thức đóng gói): một sub-agent có thể tự lập luận, sử dụng công cụ và gọi các sub-agent khác.
Training (Huấn luyện)
Các thuật ngữ trên áp dụng cho cả huấn luyện và triển khai. Bốn thuật ngữ sau đây dành riêng cho huấn luyện, nơi agent thực hiện các tác vụ, được chấm điểm và trọng số của model được cập nhật. Mọi hệ thống huấn luyện RL cho LLM đều được xây dựng quanh cùng một pipeline:

RL Environment (Môi trường RL)
Môi trường là bất cứ thứ gì bạn có thể tương tác: một đối tượng có trạng thái (stateful) nhận một hành động làm đầu vào, cập nhật trạng thái nội bộ và trả về một quan sát. Trong ngữ cảnh LLM, các hành động thường là lời gọi công cụ. Một hệ thống tệp là ví dụ đơn giản: hành động touch foo.txt cập nhật trạng thái bằng cách tạo tệp, và quan sát có thể là danh sách tệp đã cập nhật.
Trainer (Bộ huấn luyện)
Trainer là thứ khiến agent trở nên tốt hơn: nó chạy nhiều tập (episode) của agent, chấm điểm kết quả và sử dụng chúng để cập nhật trọng số của model bên trong. GRPOTrainer của TRL là một ví dụ cụ thể: một lớp duy nhất xử lý việc tạo episode, chấm điểm phần thưởng và cập nhật trọng số.
Rollout (Lượt thực thi)
Một rollout là một lượt chạy đầy đủ của agent từ đầu đến cuối: những gì agent đã thấy, những gì nó đã làm và phần thưởng nó nhận được ở mỗi bước. Nó cũng được gọi là một quỹ đạo (trajectory) hoặc vết thực thi (trace), tùy vào ngữ cảnh. Đây là dữ liệu thô mà các thuật toán RL học từ đó.
Reward (Phần thưởng)
Điểm số cho thuật toán huấn luyện biết model có đang tốt lên hay không. Nó có thể là có thể xác minh (test đạt/trượt, câu trả lời khớp), hoặc được học (tùy chọn của con người, LLM-as-judge), thưa thớt (một điểm số ở cuối episode), hoặc dày (điểm số ở mỗi bước). Đây là thứ mà trainer sử dụng để thực sự cập nhật trọng số của model.
Rubrics (Tiêu chí chấm điểm) chia phần thưởng thành các chiều rõ ràng với trọng số, thay vì một con số duy nhất. OpenEnv và Verifiers triển khai rubrics dưới dạng các đối tượng có thể kết hợp (WeightedSum, Sequential, Gate).
Tìm hiểu thêm
- @Vtrivedy10: The Anatomy of an Agent Harness: Phân tích chi tiết các thành phần của harness và lý do tồn tại của chúng.
- Agent Harness Engineering: Khung tư duy thống nhất về Agent = Model + Harness, với các ví dụ về coding agent.
- Harness Engineering: leveraging Codex in an agent-first world: Chia sẻ thực tế về việc xây dựng sản phẩm hoàn toàn bằng Codex agents, bao gồm scaffolding, vòng lặp phản hồi và quản lý ngữ cảnh khi suy luận.
- Tool Schema Rendering Atlas (evalstate): Cách các schema của công cụ trở thành văn bản prompt trên các model khác nhau.
- Blog của Simon Willison về cách coding agents hoạt động: Cách một coding agent vận hành như một harness.
- Video: Harnesses in AI: A Deep Dive: Harness là gì và cách xây dựng một cái.
- The Ultimate Guide to RL Environments: So sánh giữa các framework và dịch thuật ngữ.
- Continually improving our agent harness (Cursor): Cách Cursor cải tiến harness của họ như một sản phẩm.
- lm-evaluation-harness: Khung đánh giá chuẩn.
Link bài viết gốc
- Tags:
- Ai
- 25 May 2026
- Huggingface.co