Bạn có thể vận hành một sản phẩm phần mềm với 0 dòng code được viết thủ công không? Đây là câu hỏi mà một người bạn đã đặt ra cho tôi, và tôi nhận ra mình chưa có một câu trả lời đơn giản. Sau khi tìm hiểu sâu hơn, tôi đã phát hiện ra câu trả lời nằm ở cách bạn thiết kế “cơ năng” (harness) cho các tác tử AI. Một khái niệm đang trở thành xu hướng quan trọng nhất trong lĩnh vực coding agents hiện nay.
Vấn đề lớn nhất hiện nay là làm thế nào để xác nhận hiệu quả mã do AI tạo ra mà không cần đọc từng dòng một? Làm sao để đảm bảo một tác tử (agent) không phá vỡ môi trường sản xuất hoặc xóa dữ liệu của bạn? Một bài viết của OpenAI đã chia sẻ một thí nghiệm thú vị, trong đó một nhóm 3 kỹ sư đã xây dựng và phát hành một bản beta nội bộ của sản phẩm phần mềm với 0 dòng code viết tay. Mọi dòng code — từ logic ứng dụng, kiểm thử, cấu hình CI, tài liệu, giám sát đến công cụ nội bộ — đều do Codex viết. Bí quyết của họ không phải là viết ứng dụng, mà là thiết kế cơ năng.
Mục lục
Định Nghĩa “Cơ Năng” (Harness) Là Gì?
Hãy nghĩ về một tác tử AI như một chú ngựa đua mạnh mẽ. Cơ năng chính là đường đua, tấm chắn mắt và dây cương của jockey — tất cả những yếu tố giữ cho nó chạy đúng hướng thay vì nhảy ra khán đài.
Như đồng nghiệp Arthur Thompson đã giải thích: đối với các tác tử, cơ năng được tạo thành từ tất cả các thành phần Deterministic (có thể xác định trước) bao bọc mô hình ngôn ngữ lớn (LLM). Balaji Subramaniam đã trình bày chi tiết các thành phần này trong bài viết của ông — bao gồm tầng điều phối (orchestration layer), cách ly môi trường thực thi (execution sandboxing), duy trì trạng thái (state persistence) và công cụ kiểm định (verification tools).
Nếu bạn muốn xây dựng các hệ thống tác tử đáng tin cậy, công việc của bạn chuyển từ việc viết logic sang thiết kế môi trường. Dưới đây là những điều bạn cần tập trung:
- Đặt ranh giới nghiêm ngặt: Đừng để tác tử tự ý quyết định những gì nó có thể tác động. Hãy áp dụng các quy tắc truy cập chặt chẽ (như giới hạn nó trong một sandbox cụ thể) để nó không thể vô tình xóa dữ liệu môi trường production.
- Xây dựng “Vòng lặp Sửa chữa” (Repair Loops): Các tác tử chắc chắn sẽ mắc lỗi. Một cơ năng tốt sẽ tự động bắt lỗi (như việc build thất bại hoặc test fail) và cung cấp lại các log sạch cho chính tác tử để nó có thể tự sửa lỗi.
- Cho chúng một bản đồ, không phải một cuốn hướng dẫn: Như đội ngũ OpenAI đã phát hiện, đừng làm quá tải tác tử bằng các file hướng dẫn khổng lồ. Hãy tổ chức kho lưu trữ code (repository) của bạn một cách logic để tác ngữ có thể khám phá ngữ cảnh một cách tuần tự khi làm việc.
Minh Họa Bằng Mã Nguồn
Trong thực tế, điều này trông như thế nào? Dưới đây là một ví dụ đơn giản sử dụng Google Antigravity SDK với ADK của Google để cấu hình một cơ năng cục bộ. Lưu ý cách chúng ta giới hạn nghiêm ngặt tác tử trong một không gian làm việc cụ thể (workspaces=["./sandbox"]) và cung cấp cho nó một nơi để lưu trữ bộ nhớ (save_dir="./trajectories") để nó có thể học hỏi từ kinh nghiệm trước đó:
import os
from google.adk.labs.antigravity import AntigravityAgent
from google.antigravity import LocalAgentConfig
from google.antigravity.hooks import policy
# Đảm bảo đường dẫn tuyệt đối để kiểm soát không gian sandbox
sandbox_dir = os.path.abspath("./sandbox")
os.makedirs(sandbox_dir, exist_ok=True)
save_dir = os.path.abspath("./trajectories")
# 1. Thiết kế môi trường cơ năng
sdk_config = LocalAgentConfig(
system_instructions="Bạn là trợ lý môi trường cục bộ hữu ích.",
workspaces=[sandbox_dir],
# Cho phép tác tử ghi an toàn trong ranh giới sandbox bị giới hạn
policies=[policy.allow_all()],
save_dir=save_dir,
)
# 2. Bọc cấu hình để chạy tác tử bên trong cơ năng
root_agent = AntigravityAgent(
name="antigravity_assistant",
description="Chạy một tác tử Antigravity SDK bên trong ADK.",
config=sdk_config,
)
Chính sách giữ cho tác tử chỉ có quyền truy cập vào thư mục Sandbox.
Với thiết kế này, bạn có thể đưa code legacy vào sandbox, viết một vòng lặp đơn giản để chạy các bài kiểm thử đơn vị (unit test) trên đó và để tác tử tự sửa lỗi một cách tuần tự.
Thêm Các Bài Kiểm Tra (Tests)
Vậy, chúng ta thực sự chạy test cho tác tử trong sandbox này như thế nào?
Trong kỹ thuật cơ năng hiện đại, các bài kiểm tra là một phần tích cực của đồ thị luồng work của tác tử. Sử dụng ADK 2.0 của Google, giới thiệu các work dựa trên đồ thị, bạn có thể định nghĩa một bước kiểm định bài kiểm tra như một nút định tuyến (routing node) đơn giản.
Nếu test passes (đạt), công việc hoàn thành. Nếu test fails (không đạt), cơ năng sẽ tự động quay lỗi lại cho tác tử để thử lại. Lưu ý công tắc tắt (built-in ‘kill switch’): chúng ta theo dõi số lần lặp, vì vậy nếu tác tử bị mắc kẹt trong vòng lặp vô hạn giữa việc phá vỡ và sửa code, cơ năng sẽ tắt an toàn.
from google.adk.agents.context import Context
from google.adk import Event
from google.adk.events.event_actions import EventActions
from google.genai import types
# 3. Đánh giá code trong sandbox
def execution_test_node(ctx: Context):
# Theo dõi số lần thử một cách an toàn để ngăn vòng lặp vô hạn
iteration_count = ctx.state.get("iteration_count", 0) + 1
ctx.state["iteration_count"] = iteration_count
test_passed = ctx.state.get("test_passed", False)
feedback = ctx.state.get("feedback", "")
if test_passed:
# Thành công! Kết thúc work flow.
return Event(actions=EventActions(route="END"))
if iteration_count > 5:
# Công tắc tắt: Tác tử bị mắc kẹt. Dừng vòng lặp.
return Event(actions=EventActions(route="END"))
# Thất bại! Đưa log lỗi trở lại cho tác tử và lặp lại nó.
feedback_msg = f"Các bài kiểm thử đơn vị đã thất bại với traceback sau:\n\n{feedback}"
return Event(
content=types.Content(role="user", parts=[types.Part(text=feedback_msg)]),
actions=EventActions(route="loop_back")
)
Nếu bạn muốn xem mẫu định tuyến kiểm tra này hoạt động, bạn có thể tham khảo một ví dụ với triển khai đầy đủ trong kho lưu trữ cơ năng ADK của Balaji.
Ghép Nối Tất Cả Dùng Work Flow Dựa Trên Đồ Thị
Để kết nối tác tử và nút kiểm tra, bạn có thể sử dụng Work Flow Đồ Thị (Workflow Graph) để vẽ ra chính xác luồng thực thi nên diễn ra như thế nào mà không cần các vòng lặp Python phức tạp, lồng nhau.
Hãy nghĩ đây là việc vẽ các làn đường thực sự trên đường đua:
from google.adk import Workflow
# 4. Ghép nối tác tử và nút kiểm tra thành một vòng lặp
repair_loop = Workflow(
name="repair_loop",
edges=[
# Bước 1: Định nghĩa chuỗi chính (BẮT ĐẦU -> tác tử -> nút kiểm tra)
("START", root_agent, execution_test_node),
# Bước 2: Nếu kiểm tra trả về "loop_back", quay lại tác tử
(execution_test_node, {"loop_back": root_agent})
]
)
Vòng lặp kiểm tra.
Xin chúc mừng! Bạn đã xây dựng được một hệ thống tự trị. Tác tử viết code và chuyển giao cho nút kiểm tra. Nếu test thất bại và trả về tuyến đường loop_back, tác tử sẽ thử lại với log lỗi trong tay.
Tự Mình Thử Làm
Bạn có thể tự hỏi tại sao cần một script Python để chạy tác tử. Trong một cửa sổ chat thông thường, bạn chính là cơ năng: bạn sao chép log lỗi và giám sát mô hình. Một cơ năng phần mềm cho phép hệ thống tự giám sát, cho phép bạn tự động hóa hoàn toàn việc coding dựa trên kiểm tra (test-driven coding) một cách an toàn hoặc tân trang các kho code legacy khổng lồ.
Để chạy vòng lặp tự sửa chữa này trên máy của bạn ngay hôm nay, việc thiết lập mất chưa đầy năm phút:
- Cài đặt framework: Chạy
pip install "google-adk[antigravity]"trong terminal của bạn để lấy Agent Development Kit mã nguồn mở và tích hợp Antigravity. - Đặt API key: Lấy một API key miễn phí của Gemini từ Google AI Studio và export nó vào môi trường (
export GEMINI_API_KEY="your-key"). - Chạy vòng lặp: Lưu các block mã trên thành một file script Python, đặt một file Python hoặc Node bị lỗi vào thư mục
./sandboxmới của bạn và chạy script. - Mở rộng đồ thị: Các bài kiểm thử đơn vị chỉ là cơ sở. Để làm cho cơ năng của bạn “bất khả xâm phạm”, hãy thêm một tác tử AI thứ hai vào work flow, ví dụ như SecurityAuditor, để xem xét code trước khi nó được chấp nhận, hoặc kết nối các trình lint tùy chỉnh để áp dụng các quy tắc kiến trúc chặt chẽ.
Từ đó, bạn có thể thay thế nút kiểm tra đơn giản của chúng tôi bằng một subprocess thực sự thực thi pytest hoặc npm test trên sandbox của bạn, và bạn sẽ có một vòng lặp sửa chữa hoạt động đầy đủ chức năng.
Tài Liệu Tham Khảo
Các đồng nghiệp tại Google đã tổng hợp một số hướng dẫn tuyệt vời để bạn tiếp tục. Để tìm hiểu cách xây dựng môi trường an toàn cho các tác tử của bạn, hãy xem codelab của Sara giới thiệu sandbox trên Cloud Run. Nếu bạn muốn nắm vững khả năng tự sửa lỗi, Balaji Subramaniam gần đây đã xuất bản một bài phân tích sâu về Kỹ Thuật Vòng Lặp (Loop Engineering) cho Các Tác Tử Code. Và để xem tất cả những điều này được áp dụng trong một trường hợp sử dụng doanh nghiệp quy mô lớn, hãy đọc phân tích của James O’Reilly về Ứng Dụng Pipeline Tác Tử và Antigravity để Tự Động Hóa Hiện Đại Hóa Legacy.



