AI & AUTOMATION

AutoAgent: Cách dùng autonomous harness engineering để tự động hóa kỹ thuật phần mềm bằng AI Agent

AutoAgent không chỉ là một agent biết chạy lệnh shell. Điểm khác biệt cốt lõi là nó tự cải tiến chính “khung vận hành” của agent, gồm system prompt, toolset, orchestration và cách kiểm chứng kết quả. Nếu bạn đang tìm một cách tiếp cận nghiêm túc để tối ưu agent bằng benchmark thay vì cảm tính, AutoAgent là một dự án rất đáng theo dõi.

AutoAgent là một dự án mã nguồn mở mô tả chính nó như một hướng tiếp cận “autonomous harness engineering”. Nói đơn giản, thay vì để con người liên tục chỉnh prompt, thêm tool, đổi flow rồi chạy test thủ công, AutoAgent biến toàn bộ quy trình này thành một vòng lặp tự trị: nhận mục tiêu, chạy benchmark, đo điểm số, sửa harness, chạy lại, rồi giữ hoặc loại thay đổi dựa trên kết quả. Đây là điểm rất đáng chú ý với lập trình viên, DevOps và nhà nghiên cứu AI vì nó chuyển tối ưu agent từ thử-sai thủ công sang quy trình có đo lường.

Khái niệm “harness” ở đây có thể hiểu là lớp khung kỹ thuật bao quanh agent: model đang dùng, prompt hệ thống, các tool được expose, logic handoff giữa sub-agent, routing, execution flow và boundary tích hợp với môi trường benchmark. “Autonomous harness engineering” vì thế không phải là để agent giải một bài toán cụ thể, mà là để agent tự cải tiến bộ máy giúp nó giải tốt hơn nhiều bài toán về sau.

AutoAgent giải quyết bài toán gì cho kỹ sư phần mềm

Trong thực tế, tối ưu một AI agent thường rất tốn thời gian. Kỹ sư phải vừa đọc log, vừa đoán nguyên nhân thất bại, vừa thêm bớt tool, rồi chạy lại benchmark nhiều vòng. AutoAgent giải quyết chính nỗi đau đó bằng một vòng lặp có cấu trúc: benchmark tạo ra điểm số, điểm số dẫn hướng cho thay đổi, còn thay đổi chỉ được giữ lại nếu số task pass tăng lên hoặc giữ nguyên nhưng harness đơn giản hơn. Cách làm này giúp giảm tối đa việc tối ưu theo cảm giác.

Về cấu trúc, dự án xoay quanh bốn thành phần chính: agent.py là harness đang được tối ưu, program.md là nơi con người mô tả directive cho meta-agent, tasks/ chứa benchmark theo format Harbor, và .agent/ có thể chứa reusable notes hoặc skills. Điểm thiết kế hay là con người chủ yếu “lập trình meta-agent” qua program.md, còn meta-agent mới là thành phần sửa agent.py. Điều này tạo ra một quy trình gần với cách nhóm kỹ thuật thật sự tinh chỉnh hệ thống agent trong môi trường kiểm thử.

Ở baseline hiện tại, agent.py khá tối giản: model mặc định là gpt-5, agent có MAX_TURNS = 30 và chỉ có một tool chính là run_shell để thực thi lệnh trong môi trường task. Chính sự tối giản này làm rõ mục tiêu của dự án: đây là bộ khung để meta-agent cải tiến dần dần, không phải một sản phẩm “full-featured” đóng gói sẵn cho mọi use case ngay từ đầu.

Những ưu điểm nổi bật khi dùng AutoAgent

Ưu điểm lớn nhất của AutoAgent là tính đo lường được. Mọi thay đổi đều gắn với benchmark, score, số lượng task pass và log thí nghiệm trong results.tsv. Điều này đặc biệt quan trọng với kỹ sư AI, vì rất nhiều hệ thống agent thất bại không phải do model yếu, mà do tool interface mơ hồ, thiếu bước verify, hoặc orchestration thiếu kỷ luật. AutoAgent buộc quá trình tối ưu phải đi qua số liệu thay vì trực giác.

Ưu điểm thứ hai là tính an toàn và tái lập. Repo sử dụng Docker để cô lập môi trường, task format dựa trên Harbor, còn adapter boundary trong agent.py được đánh dấu là vùng không nên sửa nếu không thật sự cần. Điều này tạo ra một ranh giới rõ ràng giữa phần có thể tối ưu và phần tích hợp cần ổn định, rất phù hợp với tư duy engineering hơn là hack thử nghiệm.

Ưu điểm thứ ba là định hướng đúng cho việc xây agent trong thực tế. program.md nhấn mạnh rằng chỉ tinh chỉnh prompt thường sớm chạm trần, còn cải tiến tool chuyên biệt và verification flow mới là đòn bẩy lớn. Đây là một quan điểm rất hợp lý đối với kỹ sư phần mềm đang xây coding agent, spreadsheet agent hoặc automation agent cho quy trình nội bộ.

Hướng dẫn cài đặt môi trường cho AutoAgent

Bước 1: Chuẩn bị runtime và công cụ nền

Theo README, bạn cần Docker, Python, uv và các khóa truy cập model provider. Tuy nhiên có một chi tiết quan trọng: README đề cập Python 3.10+, nhưng pyproject.toml hiện yêu cầu >=3.12. Để tránh lệch môi trường, nên dùng Python 3.12 ngay từ đầu. Base image trong Dockerfile.base cũng dùng ghcr.io/astral-sh/uv:python3.12-bookworm-slim, củng cố lựa chọn này.

Bước 2: Clone repository

git clone https://github.com/kevinrgu/autoagent.git
cd autoagent

Bước 3: Cài uv và dependencies

curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync

pyproject.toml hiện khai báo các dependency chính gồm openai-agents, pandas, openpyxl, numpyharbor. Điều này cho thấy AutoAgent không chỉ nhắm tới shell tasks mà còn sẵn sàng cho các workflow liên quan đến dữ liệu, bảng tính và benchmark có cấu trúc.

Bước 4: Tạo file biến môi trường

cat > .env << 'EOF'
OPENAI_API_KEY=your_api_key_here
EOF

Nếu bạn thay model provider hoặc harness yêu cầu thêm secret khác, hãy khai báo tại đây theo runtime thực tế của bạn. README chỉ đưa ví dụ với OPENAI_API_KEY, nên hãy xem agent.py và môi trường benchmark của bạn để bổ sung nếu cần.

Bước 5: Build base image

docker build -f Dockerfile.base -t autoagent-base .

Dockerfile.base cài ca-certificates, git, copy pyproject.toml, cài dependency hệ thống bằng uv pip install --system ., sau đó copy agent.py và chuẩn bị các thư mục /logs cùng /app/output. Đây là nền để task container có thể kế thừa khi bạn viết benchmark riêng.

Hướng dẫn chuẩn bị task benchmark

Bước 1: Hiểu đúng điều kiện đầu vào của dự án

Một điểm rất quan trọng là repo không ship sẵn task. Bạn phải tự thêm benchmark vào thư mục tasks/ theo format Harbor. Nếu bỏ qua bước này, AutoAgent sẽ không có gì để đánh giá và vòng lặp tối ưu sẽ không mang nhiều ý nghĩa.

Bước 2: Tạo cấu trúc task cơ bản

tasks/my-task/
  task.toml
  instruction.md
  tests/
    test.sh
    test.py
  environment/
    Dockerfile
  files/

Trong đó, instruction.md là prompt gửi cho agent, còn verifier sẽ ghi score từ 0.0 đến 1.0. Chính score này là tín hiệu để meta-agent quyết định giữ hay loại một thay đổi trong harness.

Hướng dẫn chạy AutoAgent cho tác vụ cơ bản

Bước 1: Chạy benchmark cho một task

rm -rf jobs
mkdir -p jobs

uv run harbor run -p tasks/ \
  --task-name "my-task" \
  -l 1 \
  -n 1 \
  --agent-import-path agent:AutoAgent \
  -o jobs \
  --job-name latest > run.log 2>&1

Lệnh này sẽ chạy đúng một task, ghi output vào jobs/ và redirect log sang run.log. Đây là cách tốt nhất để kiểm tra baseline trước khi mở rộng sang tập task lớn hơn.

Bước 2: Chạy nhiều task song song

rm -rf jobs
mkdir -p jobs

uv run harbor run -p tasks/ \
  -n 100 \
  --agent-import-path agent:AutoAgent \
  -o jobs \
  --job-name latest > run.log 2>&1

Theo README, -n là mức concurrency. Bạn nên điều chỉnh thông số này theo tài nguyên máy, số lượng container và độ ổn định của Docker thay vì luôn giữ mức cao.

Bước 3: Kích hoạt vòng lặp meta-agent

Sau khi repo và tasks đã sẵn sàng, cách khởi động được khuyến nghị là đưa coding agent của bạn vào repo rồi dùng prompt:

Read program.md and let's kick off a new experiment!

Khi đó meta-agent sẽ đọc directive trong program.md, kiểm tra harness hiện tại, chạy benchmark, chẩn đoán lỗi, sửa agent.py và lặp lại. Đây chính là trải nghiệm “autonomous harness engineering” mà dự án muốn thể hiện.

Cách cấu hình hiệu quả hơn sau lần chạy đầu tiên

Bước 1: Ưu tiên chỉnh program.md trước

Nếu bạn muốn AutoAgent trở thành coding agent tốt hơn, spreadsheet agent tốt hơn hoặc terminal agent mạnh hơn, hãy bắt đầu bằng việc sửa directive và nguyên tắc trong program.md. Tài liệu này được thiết kế để con người điều khiển chiến lược tối ưu ở cấp meta thay vì nhảy thẳng vào sửa code của harness.

Bước 2: Tập trung thêm tool chuyên biệt thay vì chỉ tuning prompt

program.md nêu rõ rằng prompt tuning đơn thuần có lợi suất giảm dần. Nếu agent thường xuyên thất bại vì đọc file Excel, kiểm tra output, hay verify artifact, bạn nên thêm tool chuyên biệt cho đúng failure class thay vì chỉ kéo dài prompt. Đây là một lời khuyên rất đáng giá với bất kỳ ai đang xây AI agent cho sản phẩm thật.

Bước 3: Không chạm vào fixed adapter boundary khi chưa cần

Trong agent.py, phần dưới comment FIXED ADAPTER BOUNDARY là lớp tích hợp Harbor và serialize trajectory. Với hầu hết thử nghiệm ban đầu, bạn nên giữ nguyên phần này để tránh phá benchmark plumbing và làm sai lệch kết quả đánh giá.


AutoAgent phù hợp với những ai muốn đi xa hơn mức “agent biết gọi tool” và tiến tới xây một quy trình tối ưu agent có benchmark, có kiểm soát và có khả năng tự cải tiến qua nhiều vòng chạy. Với các nhóm đang nghiên cứu AI coding agent, automation agent hay internal DevOps agent, đây là một repo đáng đọc vì nó đặt đúng câu hỏi kỹ thuật: làm thế nào để cải tiến harness một cách có hệ thống, thay vì liên tục vá lẻ từng prompt. Nếu bạn muốn bắt đầu nhanh, hãy đọc thẳng phần README và program.md trong repo, sau đó chuẩn bị một bộ task nhỏ để quan sát baseline trước khi cho meta-agent tự tối ưu qua nhiều vòng.

Duy Nghiện
Hãy làm khán giả, đừng làm nhân vật chính :)

You may also like

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất
Phản hồi nội tuyến
Xem tất cả bình luận