Bảng tra cứu

Bảng tra cứu harness của agent: thành phần, tệp, vấn đề và checklist khởi chạy

Cập nhật: · Skillaria.Top

Harness của agent gồm năm hệ thống con: hướng dẫn, công cụ, môi trường, trạng thái và phản hồi. Bộ tệp tối thiểu gồm AGENTS.md ngắn làm bộ định tuyến, script kiểm chứng (make check, verify.sh), tệp tiến độ và danh sách tính năng có trạng thái; trạng thái «xong» do script đặt, không do agent.

Năm hệ thống con của harness

Hệ thống conĐó là gìHiện vậtTriệu chứng hỏng
Hướng dẫnAgent cần biết gì về dự ánAGENTS.md / CLAUDE.md, skills, docs/, ADRVi phạm các quy ước đã biết
Công cụAgent có thể làm gìshell, kiểm thử, linter, trình duyệt, máy chủ MCP«Muốn nhưng không làm được»
Môi trườngAgent làm việc ở đâufile khoá, Docker/devcontainer, git worktree, sandbox, init.shPhiên bắt đầu bằng việc sửa môi trường
Trạng tháiNhững gì tồn tại qua lần khởi động lạiPROGRESS.md, DECISIONS.md, feature_list.json, commitPhiên mới không biết đã dừng ở đâu
Phản hồiAgent biết mình sai bằng cách nàomake check, E2E, hook, arch-check, người đánh giá«Xong» nhưng không chạy

Thứ tự triển khai từ đầu: phản hồi → hướng dẫn → trạng thái → môi trường → công cụ.

Các tệp của harness

TệpMục đíchQuy tắc
AGENTS.md / CLAUDE.mdĐiểm vào: dự án là gì, chạy như thế nào, kiểm chứng ra saoBộ định tuyến ngắn (khoảng 80 dòng), liên kết đến tài liệu với điều kiện «khi nào đọc»
docs/*.mdChi tiết theo từng chủ đềĐọc khi cần, không đọc toàn bộ
.claude/skills/*/SKILL.mdCác quy trình lặp lại (triển khai, review)Được nạp khi tác vụ khớp với mô tả
PROGRESS.mdTình trạng, việc đã làm, điểm nghẽn, bước tiếp theoCập nhật vào cuối mỗi phiên
DECISIONS.mdQuyết định, lý do, các phương án bị loạiGhi lại đường đi, không chỉ kết luận
feature_list.jsonTính năng: behavior, verification, stateĐúng một tính năng active (WIP=1)
scripts/verify.shKiểm chứng tính năng và chuyển sang passingChỉ script này đặt passing, kèm SHA của commit
scripts/arch-check.shRanh giới kiến trúcMã thoát 1 + WHY và FIX trong đầu ra
scripts/init.shKiểm tra môi trường trước khi làm việcMôi trường, git sạch, make check xanh, tính năng đang active
sprint contractHợp đồng cho tính năng trước khi viết mãTrong phạm vi / ngoài phạm vi / câu hỏi còn mở
.claude/settings.jsonQuyền và hook của Claude CodeKiểm chứng gắn với sự kiện, không nằm trong trí nhớ của agent

Khung AGENTS.md

# Dự án: backend thanh toán (FastAPI, PostgreSQL)

## Khởi chạy
docker compose up -d && ./scripts/init.sh

## Kiểm chứng
make check   # lint, kiểu, unit, arch-check
make e2e     # kịch bản đầu cuối

## Definition of Done
- make check và make e2e — mã 0
- tính năng được chuyển sang passing bởi scripts/verify.sh
- PROGRESS.md đã cập nhật

## MUST
- truy vấn DB chỉ qua repository
- bí mật chỉ lấy từ biến môi trường

## Tài liệu
- docs/payments.md — khi tác vụ liên quan đến thanh toán và hoàn tiền
- docs/migrations.md — khi thay đổi schema DB

Trạng thái của tính năng

Trạng tháiÝ nghĩaAi chuyển
pendingĐang chờNgười lập kế hoạch
activeĐang làm (chỉ một)Agent khi bắt đầu
passingKiểm chứng đã quaChỉ verify.sh
blockedCần quyết định của con ngườiAgent, kèm lý do

Các cấp kiểm chứng

CấpNội dungKhi nào
1Lint, kiểuLuôn luôn
2Unit và test tích hợpLuôn luôn
3E2EThay đổi ảnh hưởng nhiều hơn một lớp; trước khi «xong»
4arch-checkCó import mới giữa các lớp

Quyền nói «xong» chỉ có sau cấp cao nhất. Unit test xanh không có nghĩa là hoàn thành.

Cơ chế hoá quy tắc

CấpCông cụChi phí
Guard kiểu grepScript tìm mẫu và in thông điệp WHY/FIXVài phút
Quy tắc linterimport-linter (Python), dependency-cruiser, eslint-plugin-boundaries (JS/TS)Một giờ
Kiểm thử kiến trúcTest trong CI, thất bại khi vi phạm ranh giới lớpNhiều hơn, nhưng hiển thị trong make check
#!/usr/bin/env bash
fail=0
if grep -rn "from app.db" app/services/; then
  echo "WHY: các service không truy cập DB trực tiếp"
  echo "FIX: dùng repository trong app/repositories/"
  fail=1
fi
exit $fail

Vấn đề thường gặp và cách xử lý

Vấn đềHệ thống conGiải pháp
Quy tắc trong CLAUDE.md không được tuân thủHướng dẫnRút gọn tệp, biến quy tắc thành kiểm chứng hoặc hook
Agent không chạy được testCông cụCho phép lệnh, cài phụ thuộc vào image
Hành vi khác nhau trên các máyMôi trườngFile khoá, Docker/devcontainer, phiên bản runtime cố định
Mất trí nhớ giữa các phiênTrạng tháiPROGRESS.md, bàn giao phiên, đọc khi bắt đầu phiên
Ba tính năng đã bắt đầu, không cái nào xongTrạng tháiWIP=1 trong feature_list.json
«Xong» nhưng không chạyPhản hồiDoD, E2E, verify.sh, người đánh giá độc lập
Test xanh nhưng tính năng hỏngPhản hồiE2E với cơ sở dữ liệu và cấu hình thật
Agent sao chép mẫu xấuPhản hồiarch-check ngay từ đầu
Không rõ agent đã làm gìTrạng tháiCommit nhỏ, báo cáo trong PROGRESS.md, DECISIONS.md
Agent làm hỏng môi trường qua đêmMôi trườngSandbox, git worktree, điểm kiểm tra, khôi phục qua init.sh
Cùng một nhận xét review hai lầnHarness nói chungBiến thành kiểm chứng trong make check, bỏ văn bản khỏi hướng dẫn

Vai trò cho các tác vụ dài

Vai tròLàmKhông làm
Người lập kế hoạchTính năng kèm tiêu chí chấp nhậnKhông viết mã
Người sinh mãTriển khai một tính năng, chạy testKhông tự quyết định đã xong chưa
Người đánh giáKết luận theo rubric, có dẫn chiếu đến tệp, dòng, logKhông thấy lập luận của người sinh mã
MergeCommit khi review == passĐây là mã, không phải agent

Ngân sách cho làm việc tự động

  • Mục tiêu — một câu (ví dụ đưa mọi tính năng về passing).
  • WIP=1, giới hạn thời gian và số lần thử cho mỗi tính năng.
  • Chỉ số tăng đơn điệu, hồi quy thì hoàn tác ngay.
  • Migration, hạ tầng, tiền bạc — leo thang lên con người.
  • Sau nhiều lần review thất bại — bắt đầu lại tính năng với ngữ cảnh sạch.

Checklist khởi chạy agent

  1. Có AGENTS.md: stack, cách chạy, lệnh kiểm chứng, DoD.
  2. make check chạy được trên một bản clone sạch.
  3. Môi trường tái lập được: file khoá, Docker hoặc devcontainer.
  4. Agent có các lệnh cần thiết, lệnh nguy hiểm bị cấm hoặc đặt trong sandbox.
  5. Có E2E ít nhất cho kịch bản chính.
  6. Có PROGRESS.md và quy tắc đọc nó khi bắt đầu phiên.
  7. Tính năng trong danh sách có trạng thái, chỉ một cái active.
  8. Trạng thái passing do script đặt.
  9. Thông báo kiểm chứng có WHY và FIX.
  10. Tác vụ có tiêu chí chấp nhận và ranh giới phạm vi.
  11. Đã xác định rõ việc nào cần quyết định của con người.
  12. Đã đo verification gap trước khi thay đổi, để có gì so sánh.

Chỉ số của harness

Chỉ sốCách tính
Verification gapTỷ lệ «xong» không được kiểm chứng xác nhận, trên 10 tác vụ
MTTRThời gian từ khi hỏng đến khi khôi phục trạng thái làm việc
Khởi động nguộiPhiên mới có trả lời được «chúng ta đang ở đâu, tiếp theo là gì» mà không phải đoán không
AblationMức sụt giảm khi tắt một hệ thống con trên bộ tác vụ cố định

Tóm tắt

Harness là một vòng khép kín chứ không phải một tệp: hướng dẫn, công cụ, môi trường, trạng thái và phản hồi. Hãy bắt đầu từ kiểm chứng, giữ AGENTS.md ngắn, giao trạng thái «xong» cho script và xem xét lại harness định kỳ. Toàn bộ điều này được ghép lại trên một dự án thực tế trong khoá học harness engineering.

Câu hỏi thường gặp

AGENTS.md khác CLAUDE.md thế nào?

Về mục đích thì giống nhau: đều là tệp hướng dẫn cho agent. CLAUDE.md do Claude Code đọc, còn AGENTS.md là định dạng chung cho nhiều agent; trong CLAUDE.md có thể chỉ cần tham chiếu đến AGENTS.md.

AGENTS.md nên có bao nhiêu dòng?

Không có giới hạn cứng, nhưng tệp đầu vào nên ngắn — khoảng vài trăm dòng trở xuống, như một mục lục. Chi tiết được chuyển sang các tài liệu riêng.

Dự án nhỏ có cần feature_list.json không?

Với các chỉnh sửa lẻ thì không cần. Nó có ích khi agent làm nhiều tính năng liên tiếp hoặc qua nhiều phiên.

Lưu bí mật mà agent cần truy cập ở đâu?

Trong biến môi trường hoặc trình quản lý bí mật, chứ không nằm trong tệp hướng dẫn hay trong mã. Agent được cấp quyền truy cập môi trường, không phải giá trị được viết trong văn bản.

Học chủ đề này qua video

Chủ đề này được giảng chi tiết kèm thực hành trong khóa học “Harness Engineering: инженерия надёжности AI-агентов”.

Đến khóa học