Model AI chỉ tạo ra câu trả lời. Để nó làm được việc thật — dùng công cụ, nhớ tiến độ, bị giới hạn quyền và dừng đúng lúc — cần một lớp phần mềm bao quanh gọi là harness.
Tóm tắt 30 giây
- AI agent = model + harness.
- Harness quản lý vòng lặp, tool, bộ nhớ, quyền, sandbox và bước xác minh.
- Prompt và AGENTS.md là chỉ dẫn; guardrail thực sự nằm ở lớp quyền và quy tắc thực thi.
- Hãy bắt đầu từ một việc, một vòng lặp, một bộ tool và một điểm dừng rõ ràng.
Một model ngôn ngữ lớn, để trần, không phải agent. Nó là hàm không trạng thái: nhận một chuỗi token, trả một chuỗi token, quên lần gọi trước. Nó không mở file, không gọi API, không nhớ hôm qua, không biết câu vừa rồi đúng hay sai.
Muốn nó làm việc qua nhiều bước, phải có một chương trình bên ngoài gọi đi gọi lại, thi hành những gì nó xin, và quyết định khi nào dừng. Chương trình đó là harness.
Nếu bạn không phải model, bạn là harness.
Đổi model mà giữ harness, bạn vẫn đang dùng cùng một loại agent. Đổi harness mà giữ model, bạn nhận một agent khác. Claude trên web, Claude Code, Claude trong trình duyệt và Claude trong Slack có thể cùng một họ model, nhưng bốn sản phẩm vì bốn harness.
Agent = model + harness
Ẩn dụ gốc của từ harness là yên cương ngựa kéo xe. Ngựa cung cấp sức. Yên cương nối sức đó vào xe và giữ hướng. Mang sang AI thì sát: model cung cấp suy luận xác suất, harness cung cấp cấu trúc để suy luận đó đụng được thế giới.
Định nghĩa đang đứng được trong tài liệu kỹ thuật 2025–2026: agent harness, còn gọi là scaffolding, là hạ tầng phần mềm bao quanh model để nó vận hành như một agent. Nó quản tool, bộ nhớ, trạng thái, môi trường chạy và vòng phản hồi. Nó không phải suy luận bên trong model.
Công thức gọn mà AI Security Institute của Anh đã tách từ 2023, lúc đó còn dùng chữ scaffolding: agent được tạo bởi model cộng phần bao quanh. Giới làm agent sau này viết thành agent = model + harness.
Từ này từ đâu ra
Không có một người đặt ra năm 2026. Từ hội tụ từ ba dòng cũ hơn, rồi mới thành môn có tên.
- Test harness trong phần mềm: bộ gá cố định để chạy và chấm một chương trình. Eval harness của LLM, kiểu lm-evaluation-harness hay Inspect, là cùng ý đó, nhưng để đo chứ không để phục vụ user.
- Scaffolding. Năm 2023, AI Security Institute viết agent thành model cộng scaffolding. Scaffold nghiêng về môi trường và chỉ dẫn model nhìn thấy. Harness nghiêng về lớp thực thi.
- Reinforcement learning: environment và wrapper quanh agent học. Cùng một tách: chính sách một nơi, thế giới một nơi.
Danh từ agent harness đã chạy trong giới thực hành trước khi thành ngành. Anthropic dùng nó cuối 2025 trong bài Effective harnesses for long-running agents, và gọi Claude Agent SDK là harness tổng quát. Đầu 2026 cụm harness engineering mới thành thuật ngữ nghề. Một số nguồn gắn bài tháng 2/2026 của Mitchell Hashimoto: mỗi lần agent sai một kiểu, sửa vĩnh viễn vào môi trường, không sửa từng câu trả lời. Nguồn khác gắn Vivek Trivedy của LangChain với bài giải phẫu harness và câu “nếu bạn không phải model, bạn là harness”. Báo cáo OpenAI về codebase gần như không có dòng viết tay bằng Codex, rồi Thoughtworks và LangChain, làm từ này lan ra. Attribution của cụm “harness engineering” vẫn đang tranh cãi. Việc tách model khỏi phần bao quanh thì không.
Có hai nghĩa đang sống song song, đừng trộn.
| Nghĩa | Làm gì | Ví dụ |
|---|---|---|
| Runtime harness | Chạy agent: loop, tool, quyền, bộ nhớ | Claude Code, Codex, OpenCode |
| Eval harness | Giàn thử cố định, chấm điểm | lm-evaluation-harness, Inspect, Harbor |
Bên trong một harness
Tối thiểu là một vòng. Gửi việc và ngữ cảnh cho model. Model trả lời, hoặc xin gọi tool. Harness chạy tool, đưa kết quả lại, gọi tiếp. Dừng khi model không xin tool nữa, hoặc khi chạm trần vòng, trần tiền, hoặc một cửa verify. Kiểu ReAct là bản phổ biến của vòng này. ChatGPT cũng có harness, chỉ mỏng: vòng hội thoại, tool, bộ nhớ.
Harness production thêm những lớp hay vỡ khi đem ra việc thật:
- Tools. Shell, file, browser, CRM, Zalo, MCP. Kèm schema, timeout, cách parse khi model trả tool call hỏng.
- Context. Cắt hoặc tóm tắt khi cửa sổ đầy. Không có lớp này, agent dài hơi tự chết giữa việc.
- Memory ngoài phiên. File tiến độ, skill, ghi chú. Anthropic dùng initializer agent viết init và file progress, coding agent các phiên sau đọc git và file đó rồi làm nốt một nhát. Model không nhớ phiên trước. File nhớ.
- Instructions. System prompt của sản phẩm, cộng CLAUDE.md, AGENTS.md, skill.
- Permissions và sandbox. Lệnh nào chạy thẳng, lệnh nào hỏi người, chạy ở máy nào, credential nào được thấy.
- Planning và verification. Plan trước khi làm. Test hoặc rule pass rồi mới commit, mới ghi CRM.
- Orchestration, nếu cần: spawn sub-agent, handoff, chọn model. Để sau một vòng đã chạy ổn.
Framework như LangGraph hay CrewAI không phải harness. Đó là thư viện để lắp harness. Harness là runtime đang chạy. Sản phẩm như Claude Code là harness đóng gói. SDK là harness để người khác gắn việc của mình lên.
Khác system prompt, khác CLAUDE.md
System prompt là đoạn chỉ dẫn cố định nhét vào context trước khi model sinh token. Nó nói vai, format, vài điều được phép về mặt lời. Đổi prompt thì đổi cách model nói và đôi khi đổi quyết định. Nó không chạy lệnh, không giữ state qua lần gọi, không chặn tool, không quyết định khi nào dừng.
CLAUDE.md, AGENTS.md, GEMINI.md, .cursorrules cùng một vai: chỉ dẫn bền, version trong git, sống ngoài system prompt do nhà cung cấp khóa. Claude Code quy ước đọc CLAUDE.md ở gốc và thư mục con. Codex và nhiều coding agent đọc AGENTS.md. Tự nó là markdown. Bỏ runtime đi, file không gọi model và không chặn gì.
Nó được tính vào harness vì runtime chọn đọc và nhét vào context. Sửa file là sửa một bộ phận, giống sửa luật chứ không phải sửa xe. Agent có tuân không còn phụ thuộc harness có nạp file không, nạp lúc nào, có cắt mất khi context đầy không, và tool có cho làm đúng điều file cấm hay không.
Có phải khái niệm marketing
Một phần ngôn ngữ thì có. “Harness engineering” thành cụm đúng lúc lab và framework cần tên để tách sản phẩm của họ khỏi “chỉ là model”. Claude Code tự gọi mình là harness quanh Claude. LangChain, OpenAI, Thoughtworks cùng đẩy từ này. Dán nhãn harness lên chatbot có tool một bước là agent-washing phiên bản mới, giống hồi mọi pipeline RAG bị gọi là agent.
Cái nó chỉ thì không rỗng. Model là hộp đen thuê theo tháng. Bạn không sửa weight. Harness là phần mềm thường: đọc được, test được, sở hữu được. Phần lớn độ “chạy được việc thật” nằm ở đó. Cùng model, cùng prompt, không có vòng initializer và file tiến độ thì agent đốt tiền rồi dừng giữa chừng. Có harness thì việc dài sống qua nhiều cửa sổ context. Trên một số benchmark, đổi harness nâng điểm mạnh hơn đổi model một bậc.
Cách lọc: hỏi “harness gồm gì”. Nếu câu trả lời kể được loop, tool, quyền, bộ nhớ, chỗ dừng, thì từ đang được dùng đúng. Nếu chỉ là tên sản phẩm, đó là marketing.
Chỗ đứng giữa agent và agentic
Ba từ hay bị dồn vào một slide.
AI agent là danh từ, thứ bạn triển khai: model cộng harness, có mục tiêu, có hành động. Agentic là tính từ, mức hệ thống tự lập kế hoạch và chạy đến kết quả mà không cần người chỉ từng bước. Harness là phần kỹ thuật tạo ra khả năng đó. Không có harness thì không có agency, dù model giỏi đến đâu, vì nó không đụng được hệ thống.
Thang thực tế, từ thấp lên cao:
- Chat: hỏi đáp, không đụng hệ thống. Harness mỏng.
- Tool một bước: tra đơn rồi dừng.
- Agent có vòng trong ranh giới: làm đến khi xong một task đã định nghĩa.
- Workflow agentic: tự lập kế hoạch, thích nghi, có checkpoint cho người.
- Nhiều agent phối hợp. Đắt token, khó audit, chỉ đáng khi việc thật sự xuyên vai trò.
Phần lớn triển khai 2026 nằm ở mức 3 và 4. Cùng một việc “khách Zalo hỏi đơn giao trễ”: chatbot soạn câu xin lỗi; agent tra mã, lấy trạng thái, soạn tin đúng template; hệ agentic thấy trễ quá SLA thì mở ticket, hỏi kho, đề xuất hoàn theo rule, ghi CRM, và chỉ escalate khi rule không cover. Cùng model. Khác harness và khác quyền.
Xem harness bằng cách nào
Không có một file tên harness để mở. Bạn xem từng lớp.
Với sản phẩm đóng như Claude Code, Codex, Cursor, phần sửa được là file chỉ dẫn, rules, skills, MCP, settings quyền, hooks. Vòng lặp, parser tool call, sandbox, cách cắt context nằm trong app. Cách đọc hành vi là log: mỗi lượt model xin gọi gì, harness có chạy không, kết quả trả lại là gì, dừng vì model ngừng xin tool hay vì hết lượt. System prompt gốc đôi khi lộ qua tài liệu hoặc chế độ debug. Đó vẫn chỉ là một mảnh.
Muốn đọc ruột thì mở harness công khai. Codex CLI, OpenCode, Aider, Pi cho xem loop, danh sách tool và lớp quyền. Claude Agent SDK là harness Anthropic cho người khác gắn việc, không phải source đầy đủ của Claude Code. Một repo loại này, đọc một buổi, đủ thấy bản tối thiểu: vòng lặp, danh sách tool, hàm thực thi, chỗ ghép message.
Khi nào viết, viết thế nào, ai viết
Ba nhánh, đừng trộn
Dùng nguyên harness có sẵn khi việc nằm đúng chỗ nó được làm cho. Sửa code trong repo thì Claude Code hoặc Codex đã là harness. Thêm CLAUDE.md, rule, MCP. Không viết loop.
Cấu hình và gắn tool khi việc là nghiệp vụ nhưng vẫn chạy trên runtime người khác. Agent chăm sóc khách tra CRM, nhắn Zalo, phải người duyệt trước khi hoàn tiền: gắn tool, viết rule, chặn tool ghi, bắt bước xác nhận. Đây là sửa harness, chưa phải viết harness.
Viết harness khi runtime có sẵn không giữ được hợp đồng bạn cần. Việc chạy theo lịch, không có người ngồi terminal. Quyền phải cứng ở code, không phải lời dặn trong markdown. Phải có audit, retry, idempotent khi gọi API tiền. Phải sống trong app của bạn. Dấu hiệu đã tới lúc: cùng một lỗi lặp lại mà sửa prompt không hết, vì lỗi nằm ở chỗ không verify, không chặn tool, hoặc không nhớ trạng thái qua phiên.
Bản nhỏ nhất
Một hàm nhận mục tiêu. Ghép system prompt, file chỉ dẫn, lịch sử. Gọi model với danh sách tool. Nếu model trả chữ và không xin tool, dừng. Nếu xin tool, kiểm quyền, chạy trong sandbox hoặc allowlist, đưa kết quả vào lịch sử, gọi lại. Trần số vòng và trần tiền. Log mọi tool call.
Rồi mới thêm thứ hay vỡ: schema tool chặt, timeout, tóm tắt khi context đầy, file tiến độ, verify trước khi ghi dữ liệu, hàng chờ duyệt với hành động không đảo ngược. Sub-agent và planner để sau. Đừng bắt đầu bằng đàn agent. Một việc, một vòng, một bộ tool, một chỗ dừng. Đo bằng việc xong và lỗi bị chặn, không bằng số agent.
Ai tạo
Lab tạo harness sản phẩm. Họ sở hữu loop và sandbox. Bạn sở hữu file chỉ dẫn.
Người build agent cho công ty tạo hoặc cấu hình harness nghiệp vụ. Model thì thuê. Phần đáng làm là tool tới hệ thống thật, quyền, log, chỗ người duyệt. Người dùng cuối không cần từ harness. Họ cần biết agent được phép đụng gì và dừng thế nào.
Người chỉ giao việc trong Claude Code không tạo harness. Họ sửa lớp cấu hình. Nhầm hai việc này thì hoặc viết loop thừa, hoặc tưởng CLAUDE.md đã là hàng rào an toàn.
Việc đáng nhớ
Harness là thân và dây cương. Model là sức. Agentic là mức hệ thống tự chạy từ mục tiêu đến hành động. Agent là cả hai cộng lại. System prompt và CLAUDE.md là chữ nằm trong harness, không phải harness. Từ thì mới và đang bị thổi. Cái nó chỉ thì cũ: phần mềm bao quanh một hàm không trạng thái. Phần bạn sở hữu, test được, và nên đầu tư, là phần đó.