Mình là PM trong một công ty startup nhỏ. Đội dev thì luôn kín lịch với sản phẩm chính, mà mình thì có cả đống ý tưởng muốn thử - từ chuyển đổi blog công ty sang kiến trúc mới, đến tạo hệ thống để đồng nghiệp tự viết bài mà không cần biết kỹ thuật.
Nên mình tự build bằng vibe coding.
Nói đơn giản, vibe coding là mình mô tả thứ mình muốn bằng ngôn ngữ tự nhiên > AI viết code > mình xem kết quả rồi điều chỉnh. Công cụ mình dùng là Claude Code - một AI chạy ngay trong terminal, có thể đọc code của dự án, viết file mới, chạy lệnh, và deploy. Mình chỉ cần nói "chuyển blog từ lưu trữ file sang database" và nó tự lên kế hoạch > viết code > chạy thử.
Tuần trước, blog công ty mình đã tích lũy được 118 bài viết thuộc 13 danh mục sau hơn nhiều năm hoạt động. Mình cần chuyển toàn bộ từ cách lưu trữ cũ sang database mới - tương đương việc dọn 118 cuốn sách từ kệ cũ sang tủ mới có đánh index, phân loại, tìm kiếm được. Với Claude Code, mình làm xong trong 4 giờ. Thuê người làm thì ít nhất cả tuần.
Rồi mình setup thêm một headless CMS (Keystatic) để đồng nghiệp không biết kỹ thuật có thể tự viết blog - thay vì bắt họ commit file markdown trực tiếp. Sau vài lượt prompt với AI, mọi thứ có vẻ rất hợp lý..nhưng nó không hoạt động. Cùng một lỗi mà lặp đi lặp lại cả chục lần. Mình sửa theo gợi ý của AI - đổi URL > tạo lại secret > kiểm tra biến môi trường - nhưng vẫn gặp lỗi tương tự.
Mất gần cả nửa ngày sau thì mình mới phát hiện ra: AI đã hướng dẫn mình tạo sai loại ứng dụng ngay từ bước đầu tiên.
Chuyện gì đã xảy ra
Keystatic cần kết nối với GitHub qua OAuth để đồng nghiệp có thể đăng nhập và chỉnh sửa nội dung. Để làm được, mình cần tạo một "ứng dụng" trên GitHub cấp quyền truy cập cho Keystatic.
Nghe có vẻ đơn giản, nhưng vấn đề ở đây là GitHub có hai loại ứng dụng, tên gần giống nhau, nằm cạnh nhau trong cùng trang Developer settings:
- OAuth Apps - chỉ cấp access token (chìa khóa tạm), hết hạn là phải đăng nhập lại
- GitHub Apps - cấp cả access token lẫn refresh token (chìa khóa gia hạn), tự động gia hạn phiên làm việc
Keystatic bắt buộc cần refresh token. AI hướng dẫn mình tạo OAuth Apps - loại không có refresh token.
Mọi cấu hình trông có vẻ đúng - có Client ID, có Client Secret, callback URL chính xác. Nhưng Keystatic luôn báo lỗi xác thực vì không nhận được refresh token.
Mình mất nửa ngày xoay quanh các chi tiết - đổi callback URL > tạo lại Client Secret > kiểm tra biến môi trường trên server - trong khi vấn đề nằm ở bước đầu tiên: sai loại ứng dụng.
Cuối cùng, mình yêu cầu AI hướng dẫn lại từ đầu, kiểm tra từng bước một. Lúc đó nó mới nhận ra - và mình mới biết - rằng mình đang dùng OAuth Apps thay vì GitHub Apps.
Đây không phải lỗi duy nhất
Nhìn lại cả tuần build, mình thấy ít nhất 3 lần AI đưa ra gợi ý sai hoặc thiếu sót:
Lần 1: Mình cần đồng nghiệp không biết kỹ thuật có thể tự viết blog. AI đề xuất dựng thêm Payload CMS - một ứng dụng web riêng biệt chỉ để...