AI & Automation (vnROM)

Cover image for Kỷ nguyên Harness Engineering: Xây dựng ứng dụng di động chuẩn chỉnh từ số không cùng Codex và bộ khung Hardness Experimental
addROM
addROM

Posted on

Kỷ nguyên Harness Engineering: Xây dựng ứng dụng di động chuẩn chỉnh từ số không cùng Codex và bộ khung Hardness Experimental

Bạn đã bao giờ rơi vào trạng thái bất lực khi nhìn một trợ lý lập trình AI (coding agent) phá nát kho mã nguồn (repository) của mình chưa? Bạn đưa ra một yêu cầu, nó hí hửng viết code, nhưng chỉ sau ba lượt trò chuyện, hệ thống bắt đầu tràn ngập lỗi xung đột cấu trúc, mã nguồn bị "drift" (lệch hướng) và bạn phải mất cả ngày trời để dọn dẹp bãi chiến trường.

Nỗi sợ AI làm mất kiểm soát, sự thiếu đồng bộ giữa các tệp tin cấu hình và những đêm thức trắng gõ lệnh terminal phức tạp chính là rào cản lớn nhất ngăn bạn hiện thực hóa ý tưởng. Nhiều người loay hoay cả tháng trời không biết phải bắt đầu tổ chức một dự án phần mềm quy mô từ đâu để AI có thể hiểu và cộng tác hiệu quả.

Nhưng bước sang năm 2026, kỷ nguyên phát triển phần mềm đã lật sang một trang hoàn toàn mới. Tôi đã tìm thấy một lối đi tắt giúp bạn định hình một quy trình làm việc chuẩn chỉnh, chuyên nghiệp nhất giữa con người và AI. Chìa khóa chính là Harness Engineering – phương pháp lập trình dựa trên việc xây dựng một "bộ khung quy ước" vững chắc, giúp quản lý và định hướng mọi hành vi của coding agent.


Khái niệm cốt lõi: Bộ khung Hardness Experimental là gì?

Để tôi giải thích một cách bình dân nhất, Harness Engineering không phải là một ngôn ngữ lập trình mới hay một nền tảng đám mây xa xỉ. Nó là việc bạn xây dựng một "bộ cương" vững chắc bao bọc quanh mô hình trí tuệ nhân tạo. Thay vì để AI tự do biên dịch mã nguồn theo ý nó, chúng ta tạo ra một tập hợp các quy ước, ràng buộc và ranh giới (boundary) rõ ràng.

Bộ khung Hardness Experimental hoạt động như một hợp đồng ràng buộc (contract) giữa bạn và coding agent. Trái tim của hệ thống này nằm ở một tệp tin đặc biệt mang tên agent.md. Tệp tin này sẽ tự động được tiêm (inject) vào mọi câu hội thoại của bạn với AI trong môi trường Codex App.

Nó ép trợ lý ảo phải luôn đọc hiểu các tệp tin cốt lõi như bộ quy tắc kiến trúc (architecture context rules) và tài liệu tính năng đầu vào (feature intake) trước khi viết bất kỳ dòng code nào. Điều này giúp loại bỏ hoàn toàn tình trạng AI bị "vòng vo", hiểu sai ý hoặc tự ý thay đổi cấu trúc dự án.


Mô hình tiến hóa dữ liệu ngầm từ tài liệu Markdown sang SQLite

Một trong những cải tiến đột phá nhất của bộ khung này trong phiên bản mới chính là cách thức quản lý vết tích làm việc. Trước đây, mọi ý tưởng, quyết định kiến trúc hay lịch sử sửa lỗi đều được lưu trữ dưới dạng các tệp tin Markdown (.md) thủ công. Cách làm này rất dễ dẫn đến tình trạng "doc drift" – tài liệu một đằng, mã nguồn thực tế một nẻo khi dự án phình to.

Hệ thống đã loại bỏ hoàn toàn các tệp Markdown cồng kềnh đó và chuyển dịch toàn bộ dữ liệu cấu hình vào một cơ sở dữ liệu cục bộ siêu nhẹ: SQLite.

Đi kèm với đó là một giao diện dòng lệnh (CLI) chuyên dụng. Mọi quyết định bạn đưa ra, mọi câu chuyện người dùng (user story) được phê duyệt, và mọi vết tích lỗi (trace) trong quá trình biên dịch đều được ghi lại một cách có cấu trúc vào database.

Vì các coding agent cực kỳ ưa thích và nhạy bén với giao diện CLI, việc ép luồng cập nhật thông tin qua công cụ này giúp đảm bảo độ chính xác tuyệt đối, ngăn chặn tình trạng AI điền thiếu dữ liệu hoặc bỏ qua các bước kiểm thử bắt buộc.


Vòng lặp vận hành năm bước của coding agent

Khi một trợ lý lập trình rơi vào một kho mã nguồn được bảo vệ bởi bộ khung này, nó sẽ tự động vận hành theo một vòng lặp khép kín vô cùng nghiêm ngặt:

1. Tiếp nhận tính năng (Feature intake)

Khi bạn đưa ra một ý tưởng mới, hệ thống sẽ phân tích tệp spec và đánh giá mức độ rủi ro. Nếu tính năng chạm đến quá nhiều cấu trúc cốt lõi (như hệ thống xác thực hay thanh toán), nó sẽ tự động xếp tác vụ đó vào nhóm nguy cơ cao (High risk).

2. Phân rã nhiệm vụ (Breakdown story)

Đối với các tác vụ từ mức trung bình đến khó, AI sẽ tuyệt đối không nhảy thẳng vào viết code. Bộ khung sẽ ép nó phải băm nhỏ yêu cầu thành các gói công việc (story package) và các tiêu chí chấp nhận (acceptance criteria) cụ thể cho từng giai đoạn.

3. Triển khai và lưu vết (Implement & Trace)

Trong quá trình viết mã nguồn, dù thành công hay gặp lỗi biên dịch, mọi dấu vết, log lỗi và hướng xử lý của AI đều được ghi lại thành các "trace" trong cơ sở dữ liệu SQLite để làm tài liệu học tập cho chính nó trong các phiên làm việc tiếp theo.

4. Kiểm thử tự động (Validation)

Mọi gói công việc muốn được đánh giá là hoàn thành bắt buộc phải vượt qua các bài kiểm tra nghiêm ngặt: từ kiểm tra cú pháp (linting), biên dịch thử (build check), cho đến các bài kiểm tra chạy thử trình duyệt ngầm (browser smoke test). Hệ thống thậm chí tự động chụp lại ảnh màn hình kết quả chạy thử để con người tiện nghiệm thu.

5. Đánh giá ma sát và cải tiến (Friction & Evolution)

Nếu trong quá trình chạy, AI phát hiện ra các công cụ phụ trợ (MCP server) bị thiếu hoặc không khả dụng, hệ thống sẽ tự động ghi nhận điểm nghẽn đó thành một "ma sát" (friction) và đưa vào danh sách tồn đọng (backlog). Đây không phải backlog về lỗi kỹ thuật của ứng dụng, mà là backlog để nâng cấp chính bộ khung giúp AI làm việc hiệu quả hơn ở tương lai. Đây chính là vòng lặp tiến hóa (evolution loop) giúp hệ thống tự hoàn thiện theo thời gian.


Thực chiến: Xây dựng ứng dụng trích xuất âm thanh kết hợp Next.js, Shadcn UI và Gemini 1.5 Flash

Để chứng minh sức mạnh của tư duy này, chúng ta hãy cùng nhau lên phương án xây dựng một ứng dụng web thực tế từ số không: Ứng dụng trích xuất biên bản cuộc họp tự động bằng AI.

Bước 1: Đồng bộ hóa plugin nền tảng

Bước đầu tiên, chúng ta truy cập vào kho plugin của Codex App và kích hoạt hai bộ công cụ cốt lõi: Bộ plugin hỗ trợ triển khai lên Vercel để chuẩn hóa các kỹ năng phát hành (deploy skill), và bộ plugin xây dựng ứng dụng web chính thức để chuẩn bị sẵn các thư viện giao diện như Shadcn UI và Tailwind CSS.

Bước 2: Lên cấu trúc Spec chi tiết cùng mô hình ngôn ngữ lớn

Trước khi để AI viết code, hãy thực hiện một bước thảo luận sâu (brainstorming) trên giao diện web của các công cụ như ChatGPT ở chế độ tư duy mở rộng (Extended thinking). Chúng ta sẽ mô tả toàn bộ luồng vận hành của ứng dụng mong muốn:

  • Ứng dụng xây dựng trên framework Next.js, giao diện quản trị tinh gọn.
  • Tính năng đăng nhập/đăng ký bảo mật.
  • Trang bảng giá gồm hai gói: Gói miễn phí (Free) và gói chuyên nghiệp (Pro) tích hợp hệ thống thanh toán điện tử. Khi mua gói Pro, người dùng được cộng một lượng số dư tài khoản (credit).
  • Trang quản trị cho phép người dùng tải lên các tệp tin âm thanh cuộc họp (audio file).
  • Hệ thống sử dụng bộ công cụ AI SDK kết hợp với nhà cung cấp Google, dùng mô hình Gemini 1.5 Flash để trích xuất toàn bộ văn bản (transcript) từ file âm thanh đó, giúp người dùng truy vấn dữ liệu cuộc họp dễ dàng.

Bước 3: Đưa tài liệu Spec vào bộ khung bảo vệ

Kết thúc phiên thảo luận, bạn yêu cầu AI xuất ra một bản đặc tả hoàn chỉnh kèm câu chuyện người dùng cụ thể. Hãy lưu tệp tin này lại với cái tên spec.md trong thư mục dự án và thực hiện lệnh commit đầu tiên. Ngay lập tức, bộ khung Hardness Engineering sẽ thức dậy, đọc tệp spec mới này, nhận diện đây là một tác vụ rủi ro cao và tự động thiết lập các gói công việc nền tảng (Phase 0 - Foundation) mà không hề làm xáo trộn hệ thống hiện tại.


Sức mạnh của phiên làm việc độc lập và tư duy chống lệch hướng (Anti-drift)

Hãy tưởng tượng bạn kết thúc ngày làm việc đầu tiên sau khi AI đã dựng xong phần khung giao diện thô. Ngày hôm sau, bạn mở một cửa sổ trò chuyện hoàn toàn mới (New conversation). Ở các hệ thống thông thường, AI sẽ quên sạch những gì đã làm và bắt đầu đoán mò.

Nhưng với bộ khung này, ngay khi bước vào kho mã nguồn, coding agent sẽ lập tức truy vấn cơ sở dữ liệu SQLite cục bộ để biết nó đang đứng ở đâu. Nó sẽ nhận ra: "Giai đoạn Phase 0 đã hoàn thành tốt đẹp, đã vượt qua bài test trình duyệt smoke test. Nhiệm vụ tiếp theo của tôi là triển khai Epic 1: Xây dựng tính năng định danh và cổng thanh toán".

Đặc biệt, hệ thống sở hữu cơ chế phát hiện lệch hướng tài liệu (Doc drift). Nếu AI phát hiện tệp hướng dẫn dự án (README.md) cũ đang mô tả thiếu các tính năng trích xuất âm thanh mà bạn vừa thêm vào tệp spec, nó sẽ thông minh đưa ra cảnh báo: "Tôi phát hiện tài liệu hướng dẫn đang bị lệch so với mã nguồn thực tế. Tôi sẽ ưu tiên sửa tệp tài liệu này trước, sau đó mới tiến hành viết code cho tính năng đăng nhập". Bạn thấy đấy, quy trình làm việc trở nên thảnh thơi và an tâm hơn bao giờ hết khi AI tự biết sửa sai và đi đúng quỹ đạo quy ước.


Triết lý tối cao của Harness Engineering là chấp nhận việc chúng ta có thể xuất phát một cách không hoàn hảo, tài liệu và mã nguồn có thể còn thô sơ ở những ngày đầu tiên. Nhưng thông qua thời gian, mọi vết tích lỗi, mọi điểm nghẽn về công cụ kiểm thử đều được bồi đắp và lưu trữ có cấu trúc, giúp hệ thống tự tiến hóa và thông minh hơn sau mỗi gói công việc hoàn thành.

Nếu bạn muốn giải phóng bản thân khỏi những chuỗi ngày sửa lỗi AI mệt mỏi, muốn làm chủ hoàn toàn các trợ lý lập trình thay vì để chúng dẫn dắt, hãy bắt đầu xây dựng bộ khung quy ước cho riêng mình ngay hôm nay.

Bạn nghĩ sao về tư duy quản lý AI bằng một "hợp đồng ràng buộc" và cơ sở dữ liệu SQLite ngầm này? Hãy để lại bình luận bên dưới chia sẻ góc nhìn của bạn cho tôi biết nhé. Đừng quên bấm theo dõi blog để đón đọc những bài phân tích sâu sắc tiếp theo về làn sóng AI agent!

Top comments (0)