Tôi Tạo AI Để Thiết Lập Dự Án React/NodeJs Tự Động
Spoiler: Chúng hoạt động tốt hơn tôi rất nhiều
Vấn Đề Luôn Hiện Hữu
Thú thật, tôi khá lười. Không phải theo cách xấu, mà là theo cách của lập trình viên - bạn ghét làm những việc giống nhau hai lần. Tôi liên tục thiết lập các dự án React/Next.js. Ý tưởng mới? Dự án phụ mới. Thử nghiệm với điều gì đó? Dự án mới lại xuất hiện.
Nghi lễ luôn giống nhau:
npx create-next-app(chờ 2 phút)- Cài đặt Tailwind (cấu hình, chờ đợi, gỡ lỗi lý do tại sao nó không hoạt động)
- Thiết lập backend Express (còn nhiều chờ đợi, cấu hình)
- Viết cùng một đoạn mã xác thực mà tôi đã viết 47 lần
- Thiết lập cơ sở dữ liệu
- Cuối cùng bắt đầu xây dựng thứ mà tôi muốn xây dựng
Đến bước thứ 6, tôi đã mất động lực. Đôi khi tôi từ bỏ hoàn toàn.
Đường Đi Cuối Tuần Của Tôi
Vài tháng trước, tôi đã thử nghiệm với các tác nhân AI đa tác vụ. Bạn biết đấy - bạn bắt đầu đọc về một cái gì đó thú vị, và bỗng nhiên đã 3 giờ sáng và bạn đang xây dựng một cái gì đó mà bạn chưa bao giờ dự định xây dựng.
Tôi đã có suy nghĩ ngớ ngẩn: "Nếu tôi chỉ cần nói cho AI biết tôi muốn xây dựng gì, và nó sẽ xử lý tất cả các thiết lập?"
Không chỉ hoàn thành mã. Không chỉ trả lời câu hỏi. Mà thực sự tạo ra môi trường, viết file, chạy lệnh, tất cả mọi thứ.
Hầu hết mọi người sẽ nghĩ "điều đó là không thể" hoặc "nghe có vẻ nguy hiểm." Tôi nghĩ "để tôi uống cà phê đã."
Xây Dựng Một Cái Gì Đó Thực Sự Hoạt Động
Đây là phần thú vị. Tôi đã thử cách tiếp cận rõ ràng đầu tiên - một AI lớn làm mọi thứ. Kết quả thật thảm hại. Nó bắt đầu mạnh mẽ, rồi bị rối loạn giữa chừng và bắt đầu ghi đè công việc của chính nó.
Hóa ra (và điều này có lẽ nên rõ ràng), việc xây dựng ứng dụng cần các kiểu tư duy khác nhau:
Một phần của bộ não bạn lập kế hoạch kiến trúc. Một phần viết mã thực tế. Một phần chạy thử nghiệm và lệnh. Một phần xem xét mọi thứ để đảm bảo không có gì hỏng hóc.
Vì vậy, tôi đã chia nó ra:
javascript
// Cái này hoạt động tốt hơn nhiều
architect_agent: "Xác định những gì cần xây dựng và cách thực hiện"
coder_agent: "Viết các file thực tế"
executor_agent: "Chạy các lệnh và quản lý mọi thứ"
reviewer_agent: "Đảm bảo mọi thứ không bị hỏng"
Mỗi tác nhân đều giỏi trong công việc riêng của mình. Họ giao tiếp với nhau qua các tin nhắn đơn giản thay vì cố gắng làm mọi thứ cùng một lúc.
Cơn Ác Mộng An Ninh Tôi Phải Giải Quyết
Rõ ràng là việc để AI chạy các lệnh tùy ý trên máy tính của bạn là... không thông minh. Tôi đã học điều này theo cách khó khăn khi một phiên bản sớm cố gắng rm -rf một cái gì đó mà nó không nên làm.
Vì vậy, mọi thứ giờ đây chạy trong các container cách ly. Mỗi phiên làm việc nhận được một môi trường mới mà không thể chạm vào bất cứ điều gì quan trọng. AI chỉ có thể chạy một danh sách lệnh an toàn:
javascript
// Nếu không có trong danh sách này, nó sẽ không xảy ra
const safe_commands = [
'npm', 'yarn', 'git', 'mkdir', 'touch', 'ls', 'cat', 'cd'
];
Ngoài ra, các thao tác file chỉ hoạt động bên trong một thư mục làm việc cụ thể. Không có trò chơi bẩn thỉu với các file hệ thống.
Số Liệu Không Nói Dối
Sau khi để cái này tạo ra khoảng 1.000 dự án, đây là những gì thực sự đã xảy ra:
Thiết lập một dự án mới trước đây mất trung bình 45-60 phút (bao gồm tất cả các giai đoạn "chờ, sao cái này không hoạt động?" gỡ lỗi). Bây giờ chỉ mất 3-5 phút.
Nhưng điều kỳ lạ là - AI thực sự tốt hơn tôi trong việc thiết lập:
- Ít lỗi ESLint hơn trong mã mẫu
- Không bao giờ quên thêm các kiểu TypeScript
- Luôn thiết lập thử nghiệm (điều mà tôi chắc chắn quên làm)
- Theo các mẫu nhất quán (không giống như cách tiếp cận "cái gì cũng được" của tôi)
Các yêu cầu phổ biến nhất là xác thực (67% dự án), thiết lập cơ sở dữ liệu (54%) và các tuyến API (49%). Thật hợp lý - đó là những phần nhàm chán mà không ai muốn viết từ đầu mỗi lần.
Tại Sao Tôi Làm Nó Có Quan Điểm (Và Bạn Cũng Nên Thế)
Tôi có thể đã cố gắng hỗ trợ mọi framework trên thế giới. Vue, Angular, Svelte, Python, PHP, bất cứ cái gì. Nhưng tôi đã không làm như vậy.
justcopy.ai chỉ làm React/Next.js + Tailwind + Node/Express. Chỉ vậy thôi.
Điều này nghe có vẻ hạn chế, nhưng thực sự là điều đã giúp nó hoạt động. Khi AI có các ràng buộc rõ ràng, nó đưa ra quyết định tốt hơn rất nhiều. Nó biết chính xác "tốt" trông như thế nào trong bối cảnh cụ thể này.
Hơn nữa, thành thật mà nói, đây là những gì tôi sử dụng cho mọi thứ. Nếu bạn muốn Django + Vue, hãy tự xây dựng cái của bạn.
Đột Phá Giao Tiếp
Chiến thắng kỹ thuật lớn nhất là tìm ra cách để các tác nhân giao tiếp với nhau mà không chồng chéo lên nhau.
Thay vì chỉ ném văn bản qua lại, họ gửi các tin nhắn có cấu trúc:
javascript
{
type: 'file_operation',
from: 'architect',
to: 'coder',
action: 'create_component',
target: 'src/components/Dashboard.tsx',
context: {
imports_needed: ['react', 'tailwind'],
relates_to: ['User.ts', 'api/auth.ts']
}
}
Điều này đã ngăn chặn sự hỗn loạn khi nhiều tác nhân cố gắng sửa đổi cùng một file cùng một lúc.
Điều Gì Tiếp Theo
Hiện tại, điều này hoạt động tuyệt vời nếu bạn muốn xây dựng theo cách tôi xây dựng. Nhưng tôi biết không phải ai cũng như vậy.
Tiếp theo: cho phép bạn cấu hình các tác nhân cho stack ưa thích của bạn. Muốn Vue thay vì React? Python thay vì Node? Các mẫu mã khác nhau? Bạn sẽ có thể thiết lập điều đó.
yaml
# Sẽ sớm ra mắt
my_preferences:
frontend: "vue"
backend: "python/django"
styling: "scss"
deployment: "docker"
Những Điều Tôi Học Được Khi Xây Dựng Này
- Nhiều tác nhân chuyên biệt > một tác nhân "thông minh"
- Ràng buộc làm cho AI hoạt động tốt hơn, không tồi tệ hơn
- An ninh khó hơn bạn nghĩ (container hóa mọi thứ)
- Giao tiếp có cấu trúc ngăn chặn sự hỗn loạn của AI
- Kiểm tra thực tế luôn tốt hơn kế hoạch lý thuyết
Các Công Cụ Đã Giúp Điều Này Trở Nên Khả Thi
- LangChain/AWS Strands để quản lý các tác nhân
- Docker để không cho AI phá hủy máy tính của tôi
- OpenAI và Anthropic API cho trí tuệ thực sự
- Một lượng lớn cà phê và sự bướng bỉnh
- AWS cho mọi thứ khác
Hãy Thử Nếu Bạn Muốn
Tôi đã đặt cái này ở justcopy.ai nếu bạn muốn xem điều gì sẽ xảy ra khi AI xử lý việc thiết lập dự án của bạn.
Thật lòng, tôi rất tò mò về những gì người khác nghĩ. Những công việc thiết lập nào bạn ghét nhất? Bạn muốn các tác nhân AI xử lý điều gì? Những stack công nghệ nào tôi nên thêm vào tiếp theo?
Mục tiêu không phải là thay thế lập trình viên (điều đó sẽ thật ngớ ngẩn). Mà là loại bỏ những thứ lặp đi lặp lại để chúng ta có thể tập trung vào những vấn đề thú vị hơn.
Tôi đã làm việc trên điều này trong nhiều tháng và nó vẫn cảm thấy như phép màu khi nó hoạt động. Điều này giờ đây thường xuyên xảy ra hơn.
Bạn thấy phần nào khó chịu nhất khi bắt đầu các dự án mới? Hãy cho tôi biết trong phần bình luận.