0

Thiết kế Agent Harness: Đừng dạy AI cách suy nghĩ, hãy cung cấp cho nó Công cụ và Ranh giới

Tắt "Micro-prompting": Tại sao prompt dài 2.000 dòng lại giết chết AI Agent của bạn?

Kịch bản này có quen thuộc với bạn không: Đội ngũ kỹ sư của bạn muốn xây dựng một AI Agent để tự động hóa một quy trình nghiệp vụ phức tạp. Bạn ngồi viết một file "Skill" hoặc System Prompt dài 2.000 dòng, liệt kê tỉ mỉ từng bước 1, bước 2, bước 3, kèm theo hàng chục trường hợp ngoại lệ (edge cases).

Thế nhưng khi chạy thực tế, AI lại liên tục bị "ngáo" (hallucination), dậm chân tại chỗ, hoặc đưa ra các quyết định mâu thuẫn ngay trong chính danh sách hướng dẫn của bạn.

Một cuộc thảo luận chuyên sâu trên Hacker News về khái niệm Agent Harness đã chỉ ra nguyên nhân cốt lõi: Bạn đang cố biến một Mô hình Ngôn ngữ Lớn (LLM) thành một chương trình chạy mã tuần tự.

Vấn đề thực sự: Bẫy "Over-prescriptive"

Các Frontier Model hiện nay (như GPT-4, Claude 3.5, Gemini 1.5) được huấn luyện để có khả năng suy luận (reasoning) rất mạnh trên không gian ngữ cảnh mở. Khi bạn nhét vào Prompt một "danh sách công việc" (laundry list) quá chi tiết:

  • Trượt ngữ cảnh (Context Overloading): Bạn làm tràn bộ nhớ làm việc của mô hình bằng những quy tắc cứng nhắc, khiến nó giảm khả năng chú ý vào yêu cầu thực tế của người dùng.
  • Xung đột hướng dẫn: Trong môi trường thực tế, số lượng biến số là vô hạn. Một danh sách 2.000 dòng không bao giờ phủ hết mọi trường hợp, và khi gặp tình huống mới, các chỉ dẫn cứng sẽ triệt tiêu khả năng tự linh hoạt xử lý của AI.

Thực tế chứng minh: Càng hướng dẫn chi tiết kiểu cầm tay chỉ việc, AI Agent càng chạy tệ.

Bad Approach (Micro-prompting)
[System Prompt 2000 lines] → [LLM cố làm theo từng dòng] → [Gặp Edge Case] → [Xung đột & Thất bại]

Better Approach (Agent Harness)
[Goal + CLI Tools + Deterministic Gates] → [LLM Tự do Reasoning] → [Sandbox Real-world Execution]


Core Concept: Agent Harness là gì?

Mental Model: LLM chỉ là "cái não" dự đoán token tiếp theo. Agent Harness chính là bộ khung truyền động, môi trường thực thi và hệ thống phanh an toàn bọc xung quanh cái não đó.

Thay vì viết prompt thật dài để dạy AI phải làm thế nào, kiến trúc Agent Harness dịch chuyển trọng tâm sang việc trả lời câu hỏi: Làm sao để tạo ra một môi trường mà AI có đủ công cụ quan sát, tự do suy luận nhưng không thể vượt qua ranh giới an toàn?

Một Agent Harness chuẩn Production bao gồm 3 trụ cột kỹ thuật:

+-------------------------------------------------------------------+
|                           AGENT HARNESS                           |
|                                                                   |
|  1. Discovery Layer   : Internal CLI (--help, TSV output)         |
|  2. Execution Loop    : Reason -> Tool Call -> Observe -> Retry   |
|  3. Security Layer    : Deterministic Gates & Sandboxing          |
+-------------------------------------------------------------------+


Deep Dive: 3 Thành phần kiến trúc cốt lõi

1. Internal CLI làm Giao diện Công cụ (Discovery Layer)

Thay vì xây dựng hàng chục REST API phức tạp hay viết JSON Schema cồng kềnh cho từng Tool, cách tiếp cận tối ưu nhất hiện nay là xây dựng một bộ công cụ CLI nội bộ.

Các LLM đỉnh cao cực kỳ giỏi thao tác trên môi trường Terminal / Shell. Bạn chỉ cần cung cấp cho Agent một lệnh CLI tổng quát có hỗ trợ flags --help hoặc help-all:

# Agent tự khám phá schema công cụ bằng lệnh CLI
$ internal-accounting-cli --help
$ internal-accounting-cli ledger create --help

  • Lợi ích: CLI giúp Agent tự thăm dò (explore) dữ liệu và tính năng giống như một developer thực thụ. Định dạng đầu ra nên ưu tiên dạng bảng đơn giản như TSV hoặc Plaintext có cấu trúc để tiết kiệm token thay vì JSON quá nhiều dấu ngoặc.

2. Deterministic Gates (Lớp kiểm soát cứng)

Đây là sự khác biệt giữa một "Món đồ chơi AI" và một "Hệ thống Production". Bạn không được dùng Prompt để cấm AI làm điều sai. Hãy dùng code thuần (Deterministic Code) để chặn nó ở tầng Harness.

Khái niệm này được gọi là Gates (Cổng kiểm soát): Một lớp middleware đứng giữa quyết định gọi tool của Agent và hàm thực thi backend.

# Tầng Harness Middleware
class JournalEntryGate:
    def validate(self, agent_action):
        # AI muốn ghi sổ kế toán? Gate bắt buộc kiểm tra điều kiện cứng bằng code
        if agent_action.target_account == "CASH":
            if not agent_action.has_valid_receipt_link():
                # Chặn tool call ngay tại tầng Code, trả lỗi về cho Agent
                raise GateValidationError(
                    code="MISSING_RECEIPT",
                    message="Giao dịch tiền mặt bắt buộc phải đính kèm link hóa đơn. Hãy yêu cầu người dùng cung cấp."
                )

Khi bị Gate từ chối, Harness gửi thông điệp lỗi rõ ràng quay lại vòng lặp. Agent sẽ đọc lỗi, nhận ra mình thiếu thông tin và tự chuyển hướng sang hỏi người dùng.

3. Isolation & Provenance (Bảo mật tầng sâu)

Khi thả cho AI tự do suy luận và truy vấn data, bạn đối mặt với nguy cơ Indirect Prompt Injection (Dữ liệu từ bên ngoài chứa mã độc điều khiển Prompt).

Harness hiện đại giải quyết bằng hai cơ chế:

  • Sandboxing: Chạy mã hoặc lệnh do AI sinh ra trong môi trường isolated hoàn toàn (như Docker container, Firecracker microVM).
  • Spotlighting (Provenance Delimiters): Đánh dấu rõ ràng nguồn gốc dữ liệu trả về từ công cụ bằng thẻ bọc <provenance type="tool_output">...</provenance> giúp giảm nguy cơ bị chiếm quyền điều khiển (Goal Hijacking) xuống dưới 2%.

Real-world Example: Luồng xử lý thực tế

Hãy so sánh cách hai kiến trúc xử lý tác vụ: "Hãy đối soát và ghi nhận khoản thanh toán 500$ cho khách hàng A".

Tiêu chí Cũ: Prescriptive Skills (Prompt dài) Mới: Agent Harness + CLI + Gates
Luồng chạy Đọc qua 50 quy tắc trong prompt. Cố làm theo từng bước 1->2->3. Gọi cli search client-A để lấy thông tin. Tự suy luận bước tiếp theo.
Xử lý thiếu thông tin Dễ bị đoán mò (Hallucinate) do prompt không phủ hết trường hợp thiếu bill. Gọi lệnh cli ledger post. Bị Gate chặn vì thiếu receipt ID.
Phản ứng Trả về kết quả sai hoặc crash ứng dụng. Nhận mã lỗi MISSING_RECEIPT từ Gate, tự động dừng lại và phản hồi: "Tôi cần bạn gửi link hóa đơn trước khi thực hiện".

Trade-offs: Những điểm phải đánh đổi

Không có kiến trúc nào là màu hồng. Khi chuyển sang Agent Harness:

  • Chi phí LLM Token (Cost): Vì để AI tự do suy luận và thử sai (Reasoning loop), số lượng API call và lượng Token tiêu thụ trên mỗi task sẽ cao hơn so với một script gọi hàm tuyến tính.
  • Độ trễ (Latency): Một tác vụ có thể mất 3-5 vòng lặp Thought -> Action -> Observation mới hoàn thành. Không phù hợp cho các tác vụ yêu cầu phản hồi theo thời gian thực (Real-time < 500ms).
  • Thử nghiệm phức tạp (Testing/Debugging): Do AI có tính bất định (non-deterministic), việc viết Integration Test cho một Agent Harness đòi hỏi các bộ Eval Benchmark thực tế chứ không thể dùng assert equals truyền thống.

Common Mistakes

  1. Nhầm lẫn giữa LangChain/LlamaIndex với Agent Harness: Các framework trên chỉ cung cấp abstraction cho API call. Môi trường kiểm soát an toàn, quy tắc kinh doanh (Business Gates) và hệ thống CLI nội bộ vẫn là thứ bạn phải tự thiết kế.
  2. Cho AI truy cập trực tiếp Database: Đây là thảm họa bảo mật. Hãy bắt AI đi qua layer CLI/API có phân quyền (Authorization Caps) rõ ràng.
  3. Cố gắng xóa bỏ hoàn toàn Human-in-the-loop: Harness tốt không phải là Harness tự làm 100%, mà là Harness biết khi nào nên dừng lại ở Gate để chờ con người phê duyệt (Human Approval Gate).

Practical Takeaways

Nếu bạn đang phát triển AI Agent cho hệ thống của mình, hãy thực hiện 3 thay đổi này ngay hôm nay:

  1. Refactor Prompt: Thu gọn System Prompt. Xóa bỏ các chỉ dẫn quy trình từng bước 1, 2, 3. Hãy chỉ giữ lại: Mục tiêu chính (Goal) + Vai trò (Persona) + Định dạng kết quả mong muốn.
  2. Viết Internal CLI Tool: Đóng gói các tính năng hệ thống thành lệnh CLI. Đảm bảo lệnh có tham số --help chi tiết, vì AI sẽ dùng chính câu lệnh này để tự học cách dùng tool.
  3. Chuyển Validation Rules về Code Backend: Mọi quy tắc bắt buộc (ví dụ: "Không được chuyển quá $10,000") phải được viết bằng code if-else ở tầng Gate/Middleware của Harness, tuyệt đối không tin tưởng vào việc AI sẽ tự tuân thủ qua Prompt.

Conclusion

Sự dịch chuyển từ Prompt Engineering sang Harness Engineering đánh dấu mốc trưởng thành của ngành kỹ thuật phần mềm AI. Lớp giá trị bền vững không nằm ở việc bạn sở hữu một câu Prompt thần thánh, mà nằm ở hệ thống khung đỡ (Harness) xung quanh nó — nơi bạn kết hợp được sự linh hoạt kỳ diệu của AI với tính chính xác, an toàn tuyệt đối của kỹ thuật phần mềm truyền thống.


5. Key Takeaways

  1. Càng chi tiết, AI càng dễ hỏng: Viết prompt/skills dạng danh sách việc cần làm (prescriptive list) dài hàng nghìn dòng làm bóp nghẹt khả năng reasoning của các Frontier Model.
  2. Công thức chuẩn: Agent = LLM Model + Agent Harness. Model đóng vai trò suy luận, Harness chịu trách nhiệm cung cấp môi trường thực thi và kiểm soát.
  3. Giao diện CLI là vô địch: Thiết kế công cụ cho Agent dưới dạng các câu lệnh CLI nội bộ hỗ trợ --help là cách hiệu quả nhất để Agent tự khám phá tính năng.
  4. Bảo mật bằng Deterministic Gates: Sử dụng code thuần ở tầng Harness để chặn các hành vi vi phạm quy tắc kinh doanh, thay vì trông chờ AI tự tuân thủ qua Prompt.
  5. Đánh đổi về chi phí và độ trễ: Trao quyền tự chủ (autonomy) cho Agent đồng nghĩa với việc chấp nhận chi phí token cao hơn và latency lớn hơn cho một tác vụ.

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí