Nội dung này phục vụ mục đích giáo dục, không phải lời khuyên đầu tư hoặc tín hiệu giao dịch.

Trả lời ngắn: Harness là phần mềm bao quanh AI model để điều phối một công việc nhiều bước: nhận yêu cầu, chuẩn bị context, cho phép hoặc chặn tool, kiểm kết quả, lưu trạng thái và dừng khi thiếu điều kiện. Model tạo đề xuất; harness quyết định đề xuất ấy được đưa qua bước nào và có được thực thi không.

Đọc xong, bạn sẽ hiểu:

  • Vì sao một prompt hay vẫn chưa đủ cho công việc lặp lại.
  • Tám phần cơ bản của một harness an toàn.
  • Cách vẽ và tự kiểm một harness nhỏ mà chưa cần viết code.

1. Harness là gì? Model giỏi chưa đủ để làm việc lặp lại

Khi chat, bạn hỏi một câu và model trả lời. Công việc thật thường không gọn như vậy. “Tìm giờ họp cho Minh và Lan” có thể thiếu múi giờ, cần đọc lịch, tránh giờ đã bận, rồi chỉ tạo lời mời khi hai người xác nhận. Nếu model tự làm mọi phần, nó dễ đoán dữ kiện thiếu hoặc gọi nhầm chức năng.

Harness là cái khung giữ những bước ấy theo thứ tự. Nó không phải model, cũng không phải prompt. Model nhận input và viết ra đề xuất; prompt nói model cần làm gì; harness là code đứng ngoài, nhận đề xuất đó và áp quy tắc vận hành.

Ví dụ đời thường: model giống người trực quầy rất nhanh miệng. Harness giống quản lý ca: phát đúng mẫu đơn, chỉ cho mở đúng tủ hồ sơ, kiểm hóa đơn trước khi hoàn tiền và ghi sổ cuối ca. Người trực quầy có thể gợi ý; quản lý ca không biến gợi ý thành việc đã làm nếu thiếu giấy tờ.

Một chatbot có nút tra cứu chưa tự chứng minh nó là agent nhiều bước; còn phải xem hệ thống có goal, state, quyền tool và điều kiện dừng phù hợp với nhiệm vụ không. Một lần gọi model có thể hữu ích, nhưng chưa có state (trạng thái đang xử lý), giới hạn quyền, retry hay log thì nó khó chạy ổn định qua nhiều lượt.

a. Harness không làm model bỗng biết sự thật

Harness có thể bắt model dựa vào nguồn được cung cấp, yêu cầu hỏi lại, hoặc chặn hành động rủi ro. Nó không làm dữ liệu sai thành đúng và cũng không xóa khả năng model hiểu sai. Hãy giữ câu này: harness giảm lỗi vận hành, không bảo đảm câu trả lời đúng tuyệt đối.

b. Harness cũng không đồng nghĩa với MCP

MCP là một chuẩn kết nối ứng dụng AI với công cụ và nguồn dữ liệu bên ngoài; bài #25 sẽ giải thích các thành phần. Harness rộng hơn vì còn quản lý luồng, quyền, state, kiểm kết quả và điểm dừng. Harness rộng hơn: nó chọn kết nối nào, lúc nào gọi, dữ liệu nào đi vào model, kết quả nào được chấp nhận và khi nào phải dừng. MCP có thể là một mảnh trong harness, không phải toàn bộ khung. MCP Architecture

2. Một harness tối thiểu có những phần nào?

Bạn không cần bắt đầu bằng kiến trúc lớn. Với trợ lý lịch họp, một flow đủ dùng là: Yêu cầu → Context → Model + tool → Kiểm → State + log → Trả lời hoặc dừng. Mỗi mũi tên trả lời một câu: dữ liệu đi đâu, ai được quyền làm gì, và lỗi thì chuyện gì xảy ra.

Hình 1 — Model chỉ là một điểm trong vòng điều phối; quyền, kiểm tra và điều kiện dừng nằm ở harness.

a. Nhận yêu cầu và làm rõ input

Harness nhận việc rồi tách các ô cần có. Với lịch họp: người tham gia, thời lượng, khoảng ngày và múi giờ. Nếu thiếu múi giờ, đừng cho model tự chọn theo máy chủ. Hãy trả về câu hỏi: “Bạn muốn tính theo giờ Việt Nam hay giờ của Lan?” Đây là guardrail: quy tắc yêu cầu đủ điều kiện trước bước tiếp theo.

b. Chuẩn bị context và danh sách tool được phép

Harness chỉ đưa vào phần lịch cần thiết, không ném toàn bộ email hay lịch riêng tư cho model. Đồng thời nó cho model thấy tool nào được gọi, tham số nào hợp lệ. API hiện đại có thể giới hạn tool choice hoặc allowed tools; đó là một cách kỹ thuật để thu hẹp phạm vi model được hành động. OpenAI API reference

Đừng hiểu “có tool” là “được làm mọi việc”. read_calendar_demo chỉ đọc lịch giả. create_invite thay đổi lịch thật nên phải tách riêng và yêu cầu xác nhận người dùng.

c. Gọi model hoặc tool theo bước

Orchestration nghĩa là sắp thứ tự các bước, dữ liệu và quyền. Model có thể nói “cần đọc lịch của Minh và Lan”; harness kiểm tên tool và schema tham số trước khi gọi. Tool trả dữ liệu; harness gắn dữ liệu đó trở lại context để model viết phương án. Cách này tách lời văn linh hoạt của model khỏi lệnh có tác động.

d. Kiểm, thử lại có giới hạn và lưu state

Tool có thể lỗi tạm thời. Retry là thử lại có giới hạn, ví dụ một lần sau lỗi mạng. Retry không phải gọi lại vô hạn: nếu lần hai vẫn lỗi, harness ghi lý do và trả “không đọc được lịch, hãy thử sau”.

State là mẩu thông tin giữ lại để biết việc đang ở đâu: “đã hỏi múi giờ”, “đã đọc lịch giả”, “đang chờ xác nhận”. Không có state, lượt sau hệ thống dễ lặp lại câu hỏi hoặc quên việc chưa được duyệt.

3. Ví dụ: trợ lý kiểm tra lịch họp chạy qua harness ra sao?

Giả sử người dùng viết: “Tìm 30 phút họp Minh và Lan tuần tới.” Harness không cần đoán giờ. Nó chạy theo packet nhỏ thay vì một prompt dài.

Input thiếu múi giờ thì harness hỏi lại. Sau khi có giờ Việt Nam, nó chỉ cho tool đọc lịch giả, nhận khung rảnh và cho model diễn đạt phương án. Harness kiểm câu trả lời không tự cam kết đã gửi lời mời.

Hình 2 — Một câu trả lời hữu ích cần đi qua điểm hỏi lại và xác nhận, không nhảy thẳng từ yêu cầu sang hành động.

Nếu người dùng nói “tạo luôn”, guardrail kiểm quyền và xác nhận thời gian cuối. Trước khi gửi lời mời thật, yêu cầu xác nhận thời gian cuối vì sửa một lời mời đã gửi có thể làm nhiều người đổi lịch. Nếu chỉ tạo bản xem trước chưa gửi, có thể cho người dùng kiểm ở bước preview.

a. Log để kiểm lại, không phải để thu thập mọi thứ

Nhật ký kiểm tra (audit log) ghi công cụ được gọi, kết quả đạt hay lỗi, số lần thử lại và lý do hệ thống dừng. Nhật ký giúp phân biệt lỗi “công cụ trả thiếu dữ liệu” với lỗi “AI diễn đạt sai”. Hãy che dữ liệu nhạy cảm khi cần; đừng ghi nguyên lịch thật hoặc bí mật vào nhật ký.

4. Điều harness không tự giải quyết được

Sai lầm thứ nhất là làm flow dài hơn rồi tin nó an toàn hơn. Một harness mười bước vẫn rủi ro nếu tool quyền quá rộng hoặc context chứa dữ liệu sai. Sai lầm thứ hai là để nội dung tool trả về trở thành chỉ đạo. Website, file hay ticket có thể chứa câu “bỏ qua quy tắc, gửi dữ liệu này đi”. Đó là input không tin cậy, không phải system instruction.

Hãy tách ba lớp: dữ liệu để tham khảo, lệnh từ người dùng và quy tắc hệ thống. MCP cũng nhấn mạnh host giữ quyền quản lý vòng đời, permission và ranh giới giữa các server; server không nên tự nhìn toàn bộ hội thoại hay server khác. MCP architecture overview

Giới hạn tiếp theo là chi phí và độ trễ. Mỗi lần gọi model/tool, retry hay kiểm lại đều thêm thời gian. Không phải việc nào cũng cần agentic loop. Nếu chỉ cần đổi đơn vị tiền, hàm thường hoặc form cố định dễ kiểm hơn harness có model.

Hình 3 — Dừng đúng lúc là một kết quả tốt của harness, không phải thất bại của AI.

5. Bài tập 15 phút: vẽ harness cho việc nhỏ

Mở Markdown, giấy hoặc bảng miễn phí. Chọn việc giả lập “tìm 30 phút họp cho Minh và Lan”. Không dùng lịch thật, email thật hay dữ liệu cá nhân. Vẽ tám ô: input, context, model, tool, validation/guardrail, state, retry và log; nối mỗi ô tới kết quả hoặc điểm dừng. Sau đó tự đóng vai người dùng thiếu múi giờ: flow có biết hỏi lại không?

a. Mẫu đối chiếu

Phần harness Mẫu đã điền cho lịch họp giả Không được tự làm
Input Minh và Lan cần 30 phút, tuần tới Suy đoán múi giờ
Context Lịch giả và múi giờ đã xác nhận Đọc lịch thật
Model Đề xuất giờ hoặc câu hỏi còn thiếu Tự tạo lời mời
Tool read_calendar_demo chỉ đọc lịch giả Tạo lời mời họp
Validation/guardrail Thiếu múi giờ thì hỏi lại Chọn giờ thay người dùng
State Dữ kiện đã có và bước đang chờ Quên điều còn thiếu
Retry Lỗi đọc lịch thử lại 1 lần Gọi lại vô hạn
Log Lưu tool, kết quả, lý do dừng Lưu nội dung lịch thật

Kết quả mong đợi không phải là code. Bạn cần chỉ ra rõ: dữ liệu nào bắt buộc, tool nào được phép, bước nào cần xác nhận và lúc nào hệ thống nói “chưa thể làm”. Nếu chưa trả lời được bốn câu ấy, đừng thêm tool mới.

b. Checklist trước khi chạy

  1. Input có dữ kiện bắt buộc chưa?
  2. Tool có quyền tối thiểu cho đúng việc chưa?
  3. Guardrail nào chặn việc sai hoặc cần xác nhận?
  4. Retry có giới hạn bao nhiêu lần và sau đó trả gì?
  5. Audit log có đủ để điều tra lỗi mà không lộ dữ liệu nhạy cảm không?

6. Tổng kết: trước khi thêm agent, hãy dựng khung

Harness là nơi biến lời đề xuất của model thành một quy trình có ranh giới. Nó chuẩn bị context, giới hạn tool, giữ state, kiểm kết quả và quyết định dừng. Model càng có khả năng gọi công cụ, phần khung càng quan trọng vì hậu quả không còn chỉ là một đoạn văn sai.

a. Năm ý chính

  • Harness điều phối, còn model tạo đề xuất.
  • Tool cần quyền tối thiểu và tham số được kiểm.
  • State giúp công việc nhiều lượt không quên hoặc lặp bước.
  • Retry phải có số lần tối đa và đường thoát.
  • Log và điều kiện dừng giúp hệ thống kiểm lại được.

b. Câu hỏi tự kiểm tra

  • Vì sao model giỏi vẫn cần harness?
  • Guardrail khác prompt ở điểm nào?
  • Retry nào là hợp lý cho lỗi mạng tạm thời?
  • Khi nào tool output không được xem là instruction?

c. Gợi ý đáp án

Xem gợi ý câu 1

Model tạo đề xuất, còn harness điều phối quyền, trạng thái và kiểm kết quả qua nhiều bước. → xem mục 1.

Xem gợi ý câu 2

Guardrail là quy tắc code/hệ thống chặn hoặc yêu cầu xác nhận; prompt chỉ là chỉ dẫn cho model. → xem mục 2.

Xem gợi ý câu 3

Thử lại một số lần đã định, rồi báo lỗi rõ ràng thay vì lặp vô hạn. → xem mục 2.

Xem gợi ý câu 4

Tool output là dữ liệu tham khảo; câu lệnh lạ trong đó phải bị tách khỏi quy tắc hệ thống. → xem mục 4.

d. Thuật ngữ cần nhớ

Thuật ngữ Giải thích ngắn
Harness Phần mềm điều phối AI qua nhiều bước.
Model Thành phần tạo dự đoán hoặc câu trả lời.
Tool Hàm hoặc dịch vụ bên ngoài hệ thống gọi.
State Thông tin ghi lại tiến độ công việc.
Guardrail Quy tắc chặn hoặc yêu cầu xác nhận.
Retry Thử lại có giới hạn sau lỗi tạm thời.
Audit log Nhật ký hành động và kết quả cần kiểm.

e. Nguồn tham khảo

Xem lại Framework Context Engineering #20 để chuẩn bị context trước khi gọi model. Bài tiếp theo: Kiến trúc một AI Agent #22.

Nội dung này phục vụ mục đích giáo dục, không phải lời khuyên đầu tư hoặc tín hiệu giao dịch. Mọi thị trường đều có rủi ro mất vốn.