Bài đăng này là nội dung được trình bày vào ngày 2 tháng 5 năm 2026 tại guild Dabakodan Dao Lab Vibe Coding, giới thiệu về 'Kỹ thuật Harness'.
Nextain là một công ty phát triển và hỗ trợ công nghệ AX cho các doanh nghiệp có sản phẩm phần mềm. Nextain đã tiếp quản vận hành hệ thống của Onmam.com, một cổng thông tin nhà thờ Hàn Quốc, và đang tiến hành các công việc liên quan đến AX. Chúng tôi đang tiến hành di chuyển hệ thống cũ từ trung tâm IDC trước đây, thiết lập môi trường để phát triển và vận hành dự án dựa trên agent, đồng thời thực hiện các công việc ổn định hóa và cải thiện chức năng. Vì là một hệ thống cũ nên có nhiều thử thách và sai sót, và chúng tôi đang áp dụng naia-business-adk vào Onmam.com, biến nó thành kinh nghiệm và công nghệ của doanh nghiệp. Với kinh nghiệm này, chúng tôi đã chia sẻ tại sự kiện như một trường hợp minh họa kỹ thuật harness.

Thông điệp chính của bài viết này "Quan trọng hơn việc sử dụng AI tốt là tạo ra một môi trường mà AI không mắc lỗi."
1. Trước tiên, giới thiệu về dịch vụ của chúng tôi
Onmam.com — Nền tảng quản lý nhà thờ được 13.876 nhà thờ trên toàn quốc sử dụng
www.onmam.com ← Tìm nhà thờ, cổng thông tin thành viên
home.onmam.com ← Ứng dụng kênh (nội dung/thanh toán)
{tên_nhà_thờ}.onmam.com ← Trang chủ nhà thờ riêng
Cơ sở hạ tầng: Máy chủ IDC cũ → Hoàn thành di chuyển hoàn toàn sang GCP (Google Cloud) vào tháng 4 năm 2026 DB: 13.876 dữ liệu nhà thờ × Cloud SQL
2. Hãy bắt đầu với một sự cố
"Một ngày tháng 4 năm 2026"
11 giờ sáng. Đột nhiên toàn bộ dịch vụ Onmam.com không phản hồi.
Người dùng: "Sao trang web không hoạt động?"
Khi truy tìm nguyên nhân — đó là mã truy vấn danh sách bảng tin trong file Board.php.
-- Truy vấn gây ra sự cố (đã đơn giản hóa)
SELECT * FROM boards
JOIN (
SELECT bbs_id, COUNT(*) FROM all_boards GROUP BY bbs_id -- ← Đây là vấn đề
) AS summary ON boards.id = summary.bbs_id
WHERE church_id = ?
Chỉ một truy vấn này đã quét toàn bộ 13.876 dữ liệu nhà thờ mỗi lần. Khi lưu lượng truy cập tăng đột biến, 145 truy vấn kéo dài 600~800 giây đã chạy đồng thời → máy chủ bị tê liệt hoàn toàn.
Điều này liên quan gì đến AI?
Mã này có lẽ ban đầu được viết bởi một nhà phát triển con người. Nhưng ngày nay, các nhà phát triển viết mã như vậy cùng với AI.
Vấn đề là — AI không biết "mã này hoạt động như thế nào trong môi trường 13.876 nhà thờ." AI tập trung vào việc triển khai chức năng được yêu cầu và không biết ngữ cảnh dịch vụ của chúng ta.
Vì vậy, các nhà phát triển bắt đầu suy nghĩ: "Làm thế nào để ngăn AI viết mã mà không hiểu dịch vụ của chúng ta?"
3. Kỹ thuật Harness — Giải thích trong 30 giây
Giống như khi điều khiển ngựa cần có dây cương và yên ngựa (Harness),
các tác nhân AI cũng cần có các thiết bị hạn chế, hướng dẫn và xác minh.
Agent = Mô hình + Harness
Harness = Thiết kế toàn bộ môi trường mà AI hoạt động
Không chỉ đơn thuần là "hỏi AI những câu hỏi hay". Thiết kế hệ thống ngăn chặn AI mắc cùng một lỗi một cách có cấu trúc khi nó mắc lỗi.
4. Các Harness thực tế được tạo tại Onmam.com
[Harness #1] AGENTS.md — "Bản đồ dịch vụ của chúng ta" dành cho AI
alpha-adk/
├── CLAUDE.md ← Tệp AI bắt buộc phải đọc khi bắt đầu phiên
├── AGENTS.md ← Danh sách quy tắc dự án
└── .agents/
└── context/
└── agents-rules.json ← Quy tắc vận hành cụ thể
AI phải đọc các tệp này trước khi chạm vào mã của Onmam.com. Nó chứa các nội dung sau:
- "Kiểm thử và sửa đổi mã chỉ được thực hiện trong môi trường alpha"
- "home.onmam.com là một ứng dụng kênh riêng biệt, không phải cổng thông tin"
- "Mẫu bảng dẫn xuất GROUP BY trong Board.php tuyệt đối bị cấm"
Sự cố vừa rồi? Giờ đây, nếu AI cố gắng tạo cùng một mẫu, nó sẽ dừng lại khi thấy quy tắc này.
[Harness #2] Hooks — "Cơ chế an toàn" hoạt động trước và sau hành động của AI
Các hook hiện đang hoạt động trong không gian làm việc này:
Ngay trước khi AI thực thi lệnh Bash →
✓ pr-guard.js : Chặn hợp nhất PR không có đánh giá
✓ commit-guard.js : Chặn commit vi phạm quy tắc
✓ deploy-guard.js : Chặn triển khai lên máy chủ sản xuất mà không có phê duyệt
✓ git-push-guard.js : Chặn git push không được phê duyệt
✓ destructive-git-guard.js : Chặn các lệnh phá hoại như git reset --hard
Ngay trước khi AI sửa đổi tệp →
✓ prod-gateway-guard.js : Chặn sử dụng khóa API sản xuất trong tệp môi trường dev
✓ design-doc-guard.js : Chặn sửa đổi trái phép tài liệu thiết kế
Ngay sau khi AI sửa đổi tệp →
✓ cascade-check.js : Kiểm tra các tệp bị ảnh hưởng liên đới bởi tệp đã sửa đổi
Ví dụ thực tế về hoạt động của deploy-guard.js:
AI cố gắng thực thi lệnh triển khai sản xuất:
$ gcloud run deploy onmam-web ...
→ [Harness] Chặn lệnh triển khai prod: gcloud run deploy
Dự án: onmam-web
Triển khai prod yêu cầu phê duyệt trước.
Cách phê duyệt: Thêm mục phê duyệt vào .claude/deploy/approvals.json
AI không trực tiếp thực hiện triển khai prod.
Ngay cả khi AI vô tình hoặc quá tích cực cố gắng tải thứ gì đó lên máy chủ sản xuất, nó sẽ bị chặn vật lý.
[Harness #3] Môi trường Alpha — Sân chơi riêng dành cho AI thử nghiệm
Sản xuất (Production) : www.onmam.com ← Các nhà thờ thực tế đang sử dụng
Thử nghiệm (Staging) : staging.onmampick.org ← Kiểm tra cuối cùng trước khi triển khai
Alpha (Alpha) : luke-*-alpha.onmampick.org ← Không gian làm việc cùng với AI
Quy tắc: Tất cả các công việc với AI chỉ được thực hiện trong môi trường alpha.
Tại sao điều này quan trọng — Điều thực sự đã xảy ra vào ngày 29 tháng 4 năm 2026:
AI đã nhầm
home.onmam.comlà ứng dụngportalvà viết cấu hình vhost sai. Vì là môi trường alpha → không ảnh hưởng đến dịch vụ thực tế. Lỗi này được ghi lại trong AGENTS.md → AI sẽ không mắc lại lỗi tương tự.
Bản chất của harness nằm ở đây: Khi lỗi xảy ra → ghi lại vào harness → lần sau lỗi đó sẽ không thể xảy ra về mặt cấu trúc.
[Harness #4] Skills — "Các công cụ riêng của chúng ta" dành cho AI
skills/
├── email/ ← Gửi email (bao gồm người nhận, quy tắc SMTP)
├── sms/ ← Gửi SMS
├── web-monitoring/ ← Giám sát trạng thái dịch vụ
└── service-management/ ← Lệnh vận hành dịch vụ
Khi AI nói "gửi email", nó sẽ tự động đọc tệp kỹ năng này và biết gửi cho ai, theo định dạng nào, và bằng SMTP nào. Không cần phải hỏi "địa chỉ email người nhận là gì?" mỗi lần.
5. Tại sao các nhà phát triển quan tâm đến điều này
"Vấn đề của thời đại phát triển không có AI"
Phụ thuộc vào năng lực cá nhân của nhà phát triển → chất lượng giảm nếu thiếu senior
Phải được phát hiện qua code review → con người phải tự xem
"Vấn đề của đội có AI nhưng không có harness"
AI tạo mã nhanh nhưng → không biết ngữ cảnh dịch vụ của chúng ta
Lặp lại cùng một lỗi → AI tạo bug và con người sửa
AI có thể truy cập trực tiếp vào máy chủ sản xuất → không biết khi nào sẽ xảy ra sự cố
"Đội có AI + harness"
AI biết quy tắc của chúng ta và viết mã → tạo ra mã có ngữ cảnh
Khi lỗi xảy ra, ghi lại vào harness → ngăn chặn lỗi tương tự một cách có cấu trúc
Truy cập vận hành được con người phê duyệt → tự chủ an toàn
Mượn cách diễn đạt của Toss:
"Với harness, nâng cao mức năng suất tối thiểu của toàn bộ tổ chức. Không phụ thuộc vào năng lực cá nhân, tất cả thành viên trong nhóm đều đạt được kết quả trên một mức nhất định."
6. Tóm tắt — Điều muốn gửi gắm đến người không phải là nhà phát triển
Trong kỷ nguyên AI, định nghĩa về "làm tốt" đang thay đổi.
Trước đây: Nhà phát triển viết mã giỏi Bây giờ: Nhà phát triển thiết kế tốt môi trường để AI viết mã
Cốt lõi của việc thiết kế môi trường đó là kỹ thuật harness.
Và đây không chỉ là câu chuyện của các nhà phát triển.
Harness mà người không phải là nhà phát triển cũng có thể làm:
→ Viết rõ ràng các quy tắc công việc thành tài liệu
→ Định nghĩa cho AI "cái này được làm, cái này không được làm"
→ Khi AI mắc lỗi, ghi lại "tại sao lại mắc lỗi"
= Bản thân điều này là khởi đầu của kỹ thuật harness
Cấu trúc Harness của Onmam.com trong nháy mắt
alpha-adk/
├── CLAUDE.md ← [Hướng dẫn] Bắt buộc đọc khi AI bắt đầu phiên
├── AGENTS.md ← [Hướng dẫn] Quy tắc dự án (SoT)
├── .agents/context/
│ └── agents-rules.json ← [Hướng dẫn] Quy tắc vận hành cụ thể
├── .claude/
│ ├── hooks/
│ │ ├── deploy-guard.js ← [Cảm biến] Chặn triển khai sản xuất
│ │ ├── prod-gateway-guard.js← [Cảm biến] Chặn khóa API sản xuất
│ │ ├── commit-guard.js ← [Cảm biến] Xác thực quy tắc commit
│ │ ├── pr-guard.js ← [Cảm biến] Buộc phê duyệt PR
│ │ ├── session-inject.js ← [Cảm biến] Chèn ngữ cảnh vào mỗi phiên
│ │ └── cascade-check.js ← [Cảm biến] Kiểm tra ảnh hưởng liên đới sau sửa đổi
│ └── settings.json ← [Quyền] Cài đặt thực thi hook
├── skills/
│ ├── email/ ← [Công cụ] Kỹ năng gửi email
│ ├── web-monitoring/ ← [Công cụ] Giám sát dịch vụ
│ └── service-management/ ← [Công cụ] Lệnh vận hành dịch vụ
└── data-private/memory/ ← [Vòng lặp phản hồi] Ghi lại lỗi → Ngăn chặn tái diễn
├── project_onmam_incidents.md ← Ghi lại mẫu lỗi Board.php
├── project_onmam_app_structure.md← Ghi lại lỗi home≠portal
└── feedback_alpha_only.md ← Ghi lại quy tắc dành riêng cho alpha
Harness = Tập hợp các tệp này Tất cả đều được commit vào kho lưu trữ git. Toàn bộ ngữ cảnh của nhóm! được tích lũy dưới dạng mã.