Khóa Học Harness Engineering (Phần 1): Bản Chất AI Coding Agent & Vòng Lặp Agent Loop Tối Giản
📅 Cập nhật: 17/10/2026
⏱️ Thời lượng đọc: 18 phút
🏷️ Claude Code, Harness Engineering, Agent Loop, Sandbox, AI Agent
Trong năm 2024–2026, thuật ngữ "AI Agent" đã bị thổi phồng bởi một ngành công nghiệp chắp vá prompt (prompt-plumbing industry). Hàng trăm nền tảng kéo thả no-code, thư viện xâu chuỗi waterfall prompts và các cây if-else phức tạp tự nhận mình là "Agent".
Tuy nhiên, các kỹ sư phần mềm thực chiến nhanh chóng nhận ra: Những hệ thống đó thực chất là các cỗ máy Rube Goldberg mỏng manh, dễ gãy đổ khi gặp bất kỳ trường hợp ngoại lệ nào ngoài dự tính. Dự án nghiên cứu nổi tiếng shareAI-lab/learn-claude-code và cộng đồng kỹ thuật của Anthropic đã đưa ra một tuyên ngôn mang tính bước ngoặt làm thay đổi toàn bộ tư duy phát triển tác nhân AI:
💡
NGUYÊN TẮC VÀNG CỦA HARNESS ENGINEERING: "Agency — the capacity to perceive, reason, and act — comes from model training, not from external code orchestration. An Agent Product = Model + Harness."
(Năng lực hành động của tác nhân đến từ quá trình huấn luyện mô hình thần kinh, không phải từ các dòng code điều hướng bên ngoài. Một sản phẩm Agent hoàn chỉnh gồm hai phần: Model là người lái (Driver) và Harness là cỗ xe (Vehicle).)
1. Năng Lực Hành Động (Agency) Thực Sự Đến Từ Đâu?
Lịch sử của trí tuệ nhân tạo hiện đại đã chứng minh điều này một cách rõ ràng qua hơn một thập kỷ:
2013 — DeepMind DQN chơi game Atari: Một mạng nơ-ron duy nhất chỉ nhận các điểm ảnh thô (raw pixels) và điểm số game, tự học 49 trò chơi Atari 2600 mà không hề có bất kỳ dòng code luật chơi cụ thể nào được lập trình trước.
2019 — OpenAI Five thống trị Dota 2: 5 mạng nơ-ron tự chơi với nhau tương đương 45.000 năm thời gian thực qua cơ chế Self-play Reinforcement Learning, sau đó đè bẹp nhà vô địch thế giới OG với tỷ số 2-0. Không có bất kỳ chiến thuật cứng nào được lập trình sẵn.
2019 — DeepMind AlphaStar chinh phục StarCraft II: Đạt cấp bậc Grandmaster (Top 0.15% thế giới) trong môi trường thông tin bất toàn và không gian hành động tổ hợp khổng lồ.
2024–2026 — Các Coding LLMs (Claude 3.7 Sonnet, Gemini 2.5 Flash, GPT-4o): Được huấn luyện trên hàng nghìn tỷ token mã nguồn và chuỗi lập luận của con người. Năng lực đọc code, viết test, debug lỗi và phân bổ tác vụ đã được nén chặt vào bên trong trọng số (weights) của mô hình.
Bạn không thể "lập trình ra trí thông minh" bằng cách chồng chất hàng trăm nhánh rẽ if-else hay vẽ các đồ thị prompt ngoằn ngoèo. Trí thông minh là thứ được học (learned), không phải được code cứng.
2. Định Nghĩa Chuẩn Về "Harness Engineering"
Khi hầu hết chúng ta nói "tôi đang xây dựng một AI Agent", thực chất chúng ta không huấn luyện lại mô hình nền tảng. Công việc thực sự của chúng ta là trở thành một Harness Engineer (Kỹ sư chế tạo khung môi trường).
Harness = Tools + Knowledge + Observation + Action Interfaces + Permissions
Tools: Đôi tay của Agent (Bash shell, File I/O, Git, Browser, Database)
Knowledge: Bộ não miền (Domain Specs, Architecture Rules, Style Guides)
Observation: Đôi mắt của Agent (Git Diff, Terminal Output, Logs, Linter Errors)
Action: Cơ chế thực thi (CLI Execution, API Calls, Patch Edits)
Permissions: Vòng bảo vệ (Sandbox, File Whitelist, Safe Approval Pipeline)
Nếu chiếc xe được thiết kế tồi (công cụ mập mờ, thiếu quyền thực thi, ngữ cảnh tràn ngập rác), một tay đua siêu hạng (Claude hay Gemini) cũng sẽ đâm sầm vào tường. Ngược lại, một Harness được gia công tỉ mỉ, tinh gọn và rõ ràng sẽ giúp mô hình giải phóng 100% năng lực tiềm năng.
3. Giải Phẫu Vòng Lặp Agent Loop Tối Giản
Bản chất của mọi coding agent hàng đầu thế giới (kể cả Claude Code hay Cursor) khi bóc tách lớp vỏ bề ngoài đều vận hành dựa trên một vòng lặp vĩnh cửu cực kỳ tinh khiết:
User Input → messages[] → LLM → Model Response
|
Có khối tool_use không?
/ \
Có Không
| |
Thực thi tools Trả về văn bản
Nối kết quả vào messages[] Kết thúc vòng lặp
|
Lặp lại vòng tiếp theo → messages[]
Mô hình tự quyết định khi nào cần gọi công cụ, gọi công cụ nào, với tham số gì và khi nào công việc đã hoàn thành để dừng lại. Mã nguồn phần mềm của bạn tuyệt đối không can thiệp phán đoán thay cho mô hình — nó chỉ làm đúng nhiệm vụ: thực thi những gì mô hình yêu cầu và nạp kết quả trả về.
4. Sơ Đồ Kiến Trúc Harness & Vòng Bảo Vệ Sandbox
Dưới đây là sơ đồ kiến trúc tổng quan của một hệ thống Harness tiêu chuẩn, thể hiện rõ sự phân tách ranh giới giữa bộ máy suy luận (Model Reasoning) và khung thực thi an toàn (Harness Sandbox):
5. Triển Khai Code Python: Bộ Khung Nano Agent Loop
Dưới đây là mã nguồn Python hoàn chỉnh xây dựng một khung Harness Agent Loop tối giản (Nano Harness) tích hợp công cụ thực thi Bash an toàn và cơ chế duyệt quyền theo đúng thiết kế của Claude Code:
import subprocess
import json
import os
classNanoHarness:
"""
Bộ khung Harness tối giản kết nối LLM với môi trường hệ điều hành
"""def__init__(self, model_client, safe_mode: bool = True):
self.client = model_client
self.safe_mode = safe_mode
self.messages = []
# Định nghĩa các công cụ cốt lõi (Tool Definitions)
self.tools = [
{
"name": "bash",
"description": "Thực thi câu lệnh terminal shell trong workspace",
"parameters": {
"type": "object",
"properties": {
"command": {"type": "string", "description": "Lệnh shell cần chạy"}
},
"required": ["command"]
}
}
]
defexecute_bash(self, command: str) -> str:
"""Thực thi lệnh shell có kiểm soát sandbox và permission"""# Danh sách đen các lệnh mang tính hủy diệt
forbidden = ["rm -rf /", ":(){ :|:& };:", "mkfs", "dd if="]
if any(f in command for f in forbidden):
return"Error: Lệnh bị từ chối bởi chính sách an toàn của Harness Sandbox."if self.safe_mode and any(c in command for c in ["git push", "rm ", "drop"]):
user_confirm = input(f"[XÁC NHẬN] Cho phép chạy lệnh nguy hiểm '{command}'? (y/n): ")
if user_confirm.lower() != 'y':
return"Action Aborted: Người dùng đã từ chối cấp quyền thực thi."try:
res = subprocess.run(command, shell=True, capture_output=True, text=True, timeout=30)
out = res.stdout if res.returncode == 0else res.stderr
return out if out else"(Lệnh thực thi thành công nhưng không có output)"except Exception as e:
return f"Execution Exception: {str(e)}"defrun_loop(self, user_goal: str):
"""Vòng lặp Agent Loop tối giản: while True: messages -> LLM -> tools -> messages"""
self.messages.append({"role": "user", "content": user_goal})
whileTrue:
# Gọi LLM với danh sách messages và danh sách tools
response = self.client.chat_completion(messages=self.messages, tools=self.tools)
self.messages.append(response["message"])
# Nếu mô hình không yêu cầu gọi tool -> Đã hoàn thành công việc
tool_calls = response["message"].get("tool_calls", [])
ifnot tool_calls:
print(f"[AGENT HOÀN THÀNH]: {response['message']['content']}")
break# Dispatch công cụ và thu nhận quan sát (Observation)for tc in tool_calls:
func_name = tc["function"]["name"]
args = json.loads(tc["function"]["arguments"])
if func_name == "bash":
obs = self.execute_bash(args["command"])
self.messages.append({
"role": "tool",
"tool_call_id": tc["id"],
"content": obs
})
💡
TỔNG KẾT BÀI HỌC: Trí thông minh là của mô hình, nhưng khả năng tác chiến thực tế phụ thuộc 100% vào cỗ xe Harness. Một Agent Loop tối giản chỉ mất vài chục dòng code, nhưng khi mở rộng ra một dự án lớn, ngữ cảnh sẽ nhanh chóng bị tràn và phân tâm. Trong Phần 2 tiếp theo, chúng ta sẽ mổ xẻ kỹ thuật Quản trị Ngữ cảnh (Context Management), sinh Subagents với tin nhắn sạch và cơ chế Nạp Kỹ Năng Động (Skill Loading on-demand) theo chuẩn SKILL.md của Anthropic!
⚡
Biên Soạn: Học Viện Giao Dịch — Hàng Hóa Plus
Chuỗi bài giảng Harness Engineering được phát triển dựa trên các nghiên cứu chuyên sâu về kiến trúc tác nhân lập trình AI của Anthropic Claude Code và shareAI-lab.