Sáu tháng chỉ viết code bằng AI Agent: Kỹ sư tâm sự về năng suất tăng vọt, thất bại và những bài học xương máu
Một kỹ sư phần mềm tại exe.dev chia sẻ trải nghiệm 6 tháng tuân thủ tuyệt đối quy tắc 'không viết code bằng tay', hoàn toàn dựa vào các tác nhân AI (AI agents). Bài viết đi sâu vào quá trình xây dựng hệ thống song song, quản lý hàng chục máy ảo, khám phá vai trò mới của kỹ sư trong kỷ nguyên AI, cùng những thất bại và bài học quý giá về kỹ thuật dựa trên tác nhân (agentic engineering).

Sáu tháng chỉ viết code bằng AI Agent: Năng suất tăng vọt nhưng 'hiểu biết hệ thống' đang dần mất đi
Một kỹ sư phần mềm đã chia sẻ một trải nghiệm cực đoan nhưng đầy tính thời đại: anh ta đã đặt ra quy tắc cho bản thân là không bao giờ viết code bằng tay trong suốt 6 tháng, thay vào đó hoàn toàn dựa vào các tác nhân AI (AI agents). Kết quả là năng suất tăng vọt chưa từng có, nhưng cũng kéo theo những hệ lụy sâu sắc về cách một kỹ sư hiểu và chịu trách nhiệm cho hệ thống của mình.
Bài viết trên blog exe.dev không chỉ là một câu chuyện thành công, mà là một bức tranh chân thực về quá trình chuyển đổi từ "viết code" sang "kỹ thuật dựa trên tác nhân" (agentic engineering). Tác giả đã xây dựng cả một hệ thống quản lý hàng chục máy ảo (VM), cho phép các agent làm việc song song, tự đánh giá công việc của nhau, và thậm chí tấn công hệ thống của chính mình để tìm lỗ hổng. Tuy nhiên, anh cũng thừa nhận đã mất đi sự hiểu biết sâu sắc từng dòng code, và một công cụ anh tự xây dựng (mang tên botd) đã sụp đổ do chính nó được "viết bằng cảm hứng" (vibe coded).
Từ việc gõ code đến việc 'điều khiển' agent
Trước khi AI bùng nổ, thế mạnh của tác giả là khả năng nắm giữ "hệ thống trong đầu" – hiểu rõ mọi tương tác giữa các thành phần, nhớ lý do tồn tại của những đoạn code kỳ lạ và biết chính xác dòng code nào cần thay đổi. Nhưng chi phí cho việc này là thời gian đọc code và gõ code khổng lồ. Với sự xuất hiện của các công cụ như Copilot, Cursor và đặc biệt là Claude Code, việc "gõ ít hơn" dần trở thành hiện thực. Tuy nhiên, bước ngoặt lớn nhất đến vào đầu năm nay khi các mô hình như GPT-5.3 và Opus 4.6 trở nên "đủ tốt" để xử lý các thay đổi lớn với ít sự điều khiển hơn.
Chính lúc đó, tác giả đặt ra quy tắc vàng: nếu agent bị kẹt, anh không được phép tự hoàn thành code. Thay vào đó, phải tìm ra thứ mà agent đang thiếu – có thể là prompt, công cụ hoặc môi trường – và sửa cái đó. Quy tắc này buộc anh phải lặp lại vòng lặp "viết, chạy, thất bại, sửa" ở một cấp độ cao hơn, không còn là code mà là cả thiết kế và kiến trúc.
Xây dựng hệ thống song song: Từ Worktrees đến đám mây VM
Khi không phải gõ code, thời gian rảnh xuất hiện và tác giả bắt đầu khởi chạy nhiều agent cùng lúc. Điều này tạo ra một "cơn ác mộng" về tài nguyên: các agent tranh giành port, database, tiến trình và cả Git state. Các giải pháp tạm thời như worktrees (mỗi agent một branch riêng) chỉ giải quyết được phần Git, còn AGENTS.md chứa đầy các lệnh "tránh va chạm" lại khiến agent tốn thời gian xử lý các quy tắc này.
Giải pháp triệt để là chuyển toàn bộ agent lên các máy ảo (VM) Linux của exe.dev. Mỗi task sẽ có một VM riêng, hoàn toàn cô lập. Tác giả thậm chí đã nhờ chính Claude viết một script khởi động để tự động cài đặt môi trường, clone repository và cấu hình agent, rồi lặp lại vòng lặp "tạo VM mới, chạy script, sửa lỗi" cho đến khi hoàn hảo. Nhờ đó, anh có thể đóng laptop và đi ngủ, công việc vẫn tiếp tục chạy.
Công cụ quản lý 'botd' và bài học về trách nhiệm
Để quản lý tới 20 VM cùng lúc, tác giả đã tự xây dựng một công cụ tên là botd. Nó cho phép cấp phát/thu hồi máy ảo, điều khiển các agent bên dưới và lưu trữ toàn bộ lịch sử hội thoại. Một điểm quan trọng là botd cho phép agent chạy ở chế độ YOLO mode – tức là không cần sự chấp thuận cho từng lệnh, vì môi trường VM bị cô lập và có thể vứt bỏ bất cứ lúc nào. Sự truy cập vào các dịch vụ bên ngoài (như đọc log, kéo Git) được kiểm soát chặt chẽ qua proxy để tránh lộ thông tin đăng nhập, và luôn ưu tiên quyền chỉ đọc.
Tuy nhiên, botd cuối cùng cũng sụp đổ. Nguyên nhân là nó được "vibe code" – tức là tác giả không đọc một dòng code nào của nó và không hiểu kiến trúc bên trong. Nó trở thành một "legacy codebase mới" mà anh thừa kế mà không hiểu. Bài học rút ra: nếu bạn không hiểu hệ thống của mình, bạn sẽ không thể duy trì nó, dù cho nó có được sinh ra bởi AI hay không.
Vai trò mới của kỹ sư: Người ra quyết định, không phải người gõ phím
Bài viết nhấn mạnh một sự dịch chuyển lớn: việc ship code trở nên dễ dàng, còn quyết định ship cái gì mới là khó khăn. Các công cụ AI có thể đảm bảo code hoạt động, nhưng chúng không thể trả lời câu hỏi "điều này có đáng để thêm vào hệ thống không?". Tác giả đã nhiều lần vứt bỏ những thay đổi hoàn hảo về mặt kỹ thuật vì chúng làm tăng độ phức tạp không cần thiết về lâu dài.
Ngoài ra, một trong những ứng dụng hữu ích nhất của agent không phải là viết code. Đó là:
- Điều tra sự cố: đưa nguyên văn mô tả của khách hàng vào prompt, agent sẽ tự tìm log và nguyên nhân. Điều này tránh được việc áp đặt cách hiểu chủ quan của kỹ sư.
- Tấn công hệ thống (Red team): một agent chỉ có một nhiệm vụ là tìm cách xâm nhập hệ thống và nó đã phát hiện ra những lỗ hổng mạng mà con người không nhận ra.
- Giám sát triển khai: một agent tên Athena có nhiệm vụ theo dõi từng đợt deploy, đọc metrics và log. Nó có thể phân biệt lỗi do code mới hay lỗi hạ tầng và quyết định tiếp tục hay dừng.
Tác giả kết luận rằng, thay vì chỉ "vibe coding" (chấp nhận thiết kế do AI đưa ra), cần thực hành agentic engineering – làm việc cùng agent trên kiến trúc, interface và các ràng buộc trước khi code được sinh ra. Điều này đòi hỏi kỹ sư phải tham gia sâu vào các quyết định thiết kế và vẫn phải chịu trách nhiệm cuối cùng cho những gì được merge. Cuối cùng, anh thừa nhận mình đã mất đi sự hiểu biết "từng dòng một" về hệ thống, nhưng bù lại, anh có thể ship nhiều hơn, học hỏi nhanh hơn từ những thất bại rẻ tiền và đã mở ra một cách làm việc hoàn toàn mới.
Mô tả: Giao diện quản lý nhiều agent song song
Mô tả: Quy trình merge queue với sự kiểm soát chất lượng
Mô tả: Minh họa quá trình triển khai (rollout) của agent Athena


