Vibe Coding
Vibe coding là cách xây dựng phần mềm bằng cách mô tả yêu cầu cho model AI rồi chấp nhận code được tạo ra mà không đọc, một thuật ngữ được đặt ra vào năm 2025.
Lập trình theo vibe là cách xây dựng phần mềm bằng cách mô tả mong muốn với model AI bằng ngôn ngữ thông thường rồi chấp nhận mã mà model viết ra mà không đọc, chỉ đánh giá kết quả dựa trên việc chương trình có vẻ chạy được hay không. Andrej Karpathy, thành viên sáng lập OpenAI và cựu giám đốc AI tại Tesla, đặt tên cho cách làm này vào tháng 2 năm 2025 là "một kiểu lập trình mới", trong đó "bạn hoàn toàn buông theo cảm hứng, đón nhận tốc độ tăng trưởng theo hàm mũ và quên rằng đoạn mã thậm chí tồn tại." Ông mô tả việc trò chuyện bằng giọng nói với Composer của Cursor, nhấn "Accept All" mà không đọc các điểm khác biệt, rồi dán thông báo lỗi trở lại mà không bình luận; ông gọi cách tiếp cận này là "không tệ lắm đối với các dự án cuối tuần chỉ dùng một lần." Chỉ trong vài tháng, thuật ngữ này lan rộng vượt xa cộng đồng lập trình viên, và Collins Dictionary chọn "vibe coding" làm Từ của năm 2025. Các coding agent như Cursor, Claude Code và Replit Agent, cùng các công cụ tạo ứng dụng như Lovable, Bolt và v0, giúp người không có kinh nghiệm lập trình biến prompt thành ứng dụng web đã triển khai.
Cách lập trình theo vibe hoạt động#
Người dùng mô tả hành vi mong muốn và kiểm thử kết quả; AI agent viết, chỉnh sửa và gỡ lỗi mã. Mỗi vòng lặp sẽ chạy thành công, tạo ra lỗi để người dùng dán lại, hoặc cho kết quả trông không đúng và cần mô tả lại:
Cách tiếp cận này hiệu quả vì model ngôn ngữ lớn (LLM), đặc biệt là model suy luận được huấn luyện trên mã, hiện có thể tạo ra chương trình chạy được cho các stack phổ biến như front end web và script Python; đồng thời khung điều phối agent của công cụ lập trình có thể chạy chương trình và đọc lỗi mà không cần trợ giúp. Cách này phù hợp với prototype, công cụ nội bộ và phần mềm cá nhân mà tác giả là người dùng duy nhất, nơi lỗi có chi phí thấp và tốc độ là ưu tiên hàng đầu.
Lập trình theo vibe và các phương pháp liên quan#
- Lập trình có AI hỗ trợ: Dùng LLM viết mã rồi để nhà phát triển rà soát và hiểu mã đó. Simon Willison phân định ranh giới này trong bài viết Không phải mọi hoạt động lập trình có AI hỗ trợ đều là lập trình theo vibe: mã do LLM viết mà bạn đã rà soát, kiểm thử kỹ lưỡng và có thể giải thích cho người khác là phát triển phần mềm.
- Lập trình agentic: Coding agent thực hiện nhiệm vụ từ đầu đến cuối bằng chính các công cụ mà người lập trình theo vibe sử dụng. Các nhóm chuyên nghiệp vẫn duy trì bước review mã, kiểm thử và tích hợp liên tục (CI).
- Nền tảng low-code và no-code: Công cụ trực quan cho phép người không chuyên lập trình ghép ứng dụng từ các thành phần dựng sẵn. Lập trình theo vibe thay vào đó tạo ra mã nguồn thông thường bằng bất kỳ ngôn ngữ hoặc framework nào.
- AI tạo sinh: Công nghệ rộng hơn tạo ra văn bản, ảnh và mã. Lập trình theo vibe là một cách làm việc với công nghệ này.
Tạo ứng dụng thị giác máy tính bằng lập trình theo vibe#
Các prototype thị giác máy tính là dự án lập trình theo vibe phổ biến vì chỉ một script ngắn đã có thể phát hiện, đếm hoặc theo dõi đối tượng trong luồng webcam. Mã do model tạo ra chỉ cập nhật đến thời điểm dữ liệu huấn luyện của model, vì vậy agent dựa vào kiến thức ghi nhớ có thể đề xuất trọng số model hoặc tham số đã lỗi thời. Ultralytics Agent Skills cung cấp cho Claude Code, Codex, Cursor và các agent tương thích khác quy trình chọn model, chuẩn bị bộ dữ liệu, huấn luyện, suy luận và export, dựa trên danh mục được ghim theo bản phát hành ultralytics, đồng thời hướng dẫn agent ưu tiên đầu ra yolo checks và yolo cfg của package đã cài đặt khi hai nguồn không thống nhất. Khi đó, yêu cầu như "huấn luyện bộ phát hiện YOLO26 trên bộ dữ liệu của tôi và export sang ONNX" sẽ tuân theo quy trình huấn luyện và export được ghi trong các skill thay vì ký ức của model về những bản phát hành cũ.
Rủi ro của mã chưa được rà soát#
Karpathy nhận xét rằng mã "phát triển vượt quá mức tôi thường có thể hiểu", vì vậy các thay đổi và sửa lỗi sau này cũng phụ thuộc vào model, khiến nợ kỹ thuật tích tụ ở những phần không ai xem xét. Agent có quyền truy cập shell có thể xóa tệp hoặc chạy lệnh phá hoại, vì vậy công cụ lập trình chạy chúng trong sandbox agent và hỏi trước khi thực hiện thao tác rủi ro; dependency hoặc trang web mà agent đọc cũng có thể chứa prompt injection. Lỗ hổng bảo mật cũng có thể lọt vào sản phẩm theo cách tương tự: bài kiểm thử năm 2025 của Veracode trên hơn 100 LLM với 80 tác vụ lập trình cho thấy mã được tạo ra đưa vào lỗ hổng bảo mật trong 45% trường hợp, với tỷ lệ thất bại trên 70% đối với Java và từ 38% đến 45% đối với Python, C# và JavaScript.










