So sánh các trợ lý lập trình AI: Aider, Cursor và Windsurf được thử nghiệm trong thách thức một nhắc nhở
Trong hướng dẫn này, chúng tôi đi sâu vào khả năng của ba trợ lý lập trình AI phổ biến—Aider, Cursor và Windsurf—để hiểu cách mà chúng có thể tạo ra một ứng dụng sinh dữ liệu bổ sung (RAG) hiệu quả chỉ với một nhắc nhở chi tiết duy nhất. Bằng cách tiến hành thí nghiệm này, chúng tôi nhằm đánh giá sức mạnh của các công cụ, tính khả thi trong thế giới thực, và vai trò của các trợ lý lập trình AI trong việc định hình quy trình phát triển phần mềm hiện đại.
Giới thiệu về thí nghiệm trợ lý lập trình AI
Thách thức này không phải là một bài tập xây dựng ứng dụng bình thường; nó thử thách các công cụ này phải quản lý các phức tạp của ứng dụng RAG hiện đại chỉ với một nhắc nhở ngắn gọn, đồng thời tuân thủ các yêu cầu về tính mô-đun và các ràng buộc cụ thể, và phải tính đến các đặc điểm của các cập nhật LangChain gần đây. Hãy cùng khám phá cách mà Aider, Cursor và Windsurf đã xử lý nhiệm vụ này.
RAG là gì và tại sao lại có thử nghiệm này?
RAG đề cập đến việc kết hợp thông tin được truy xuất (ví dụ: từ cơ sở dữ liệu hoặc lưu trữ tệp) với suy luận của một mô hình ngôn ngữ lớn để trả lời thông minh các truy vấn của người dùng. Nó yêu cầu kỹ thuật backend mạnh mẽ để triển khai các tương tác liền mạch giữa các bộ tìm kiếm, lưu trữ vector, và các mô hình ngôn ngữ lớn. Mặc dù các ứng dụng RAG sở hữu giao diện người dùng (UI) đơn giản, nhưng các hoạt động bên trong đòi hỏi một bài kiểm tra phức tạp cho các trợ lý lập trình AI do yêu cầu thiết kế mô-đun, thiết lập phụ thuộc chính xác và xử lý gỡ lỗi có hệ thống.
Chúng tôi đã chọn thử nghiệm này để đánh giá các trợ lý về một trường hợp sử dụng phù hợp với các chuyển biến do AI dẫn dắt trong quy trình phần mềm. Mặc dù ứng dụng nhỏ hơn so với một hệ thống sản xuất lớn, nhưng các đặc điểm của nó tạo ra những rào cản mà chỉ có các nhà phát triển lành nghề—hoặc các trợ lý thông minh—mới có thể xử lý thành thạo.
Thiết lập thí nghiệm và phương pháp
Quá trình theo dõi cho mỗi công cụ là giống nhau, đảm bảo tính công bằng trong đánh giá:
- Một nhắc nhở chi tiết duy nhất kết hợp các yêu cầu đã được chuẩn bị với các thông số cụ thể, chẳng hạn như cấu trúc tệp mô-đun và các ràng buộc công nghệ.
- Tài liệu LangChain mới nhất cho việc tạo ra các ứng dụng RAG được cung cấp như một tài liệu tham khảo cho mỗi công cụ.
- Mỗi công cụ AI được giao nhiệm vụ tạo ra một ứng dụng hoàn toàn chức năng bằng cách diễn giải nhắc nhở và tham khảo tài liệu khi cần.
- Các lỗi được theo dõi, và hướng dẫn tối thiểu được cung cấp để xem các trợ lý thích ứng với các sửa chữa lặp lại một cách hiệu quả như thế nào.
Aider: lập trình viên hướng dẫn
Thiết lập ban đầu và thực thi
Aider đã khởi đầu mạnh mẽ. Trong một cấu trúc thư mục đã được tạo trước trong VS Code chứa nhắc nhở và tài liệu LangChain, Aider nhanh chóng tạo ra tất cả các thành phần thiết yếu: requirements.txt
, app.py
, và các tệp cần thiết khác như document_loader.py
, vector_store.py
, và rag_chain.py
.
Aider tạo ra các tệp cần thiết
AI cũng đã phân tách đầu ra của nó theo yêu cầu, với:
- Document Loader: Xử lý việc trích xuất nội dung từ web.
- Vector Store: Quản lý việc nhúng trong cơ sở dữ liệu ChromaDB cục bộ.
- RAG Chain: Tạo điều kiện cho Q&A dựa trên LLM.
- Streamlit app.py: Xử lý đầu vào của người dùng thông qua một giao diện người dùng đơn giản.
Xử lý ràng buộc và gỡ lỗi
Khi xảy ra lỗi (như vấn đề quản lý cơ sở dữ liệu hoặc xử lý tham số thiếu), Aider đã thể hiện khả năng giải quyết chúng bằng cách sử dụng các ảnh chụp màn hình chi tiết của lỗi do người dùng cung cấp. Một điểm mạnh chính của Aider là khả năng không chỉ gỡ lỗi mã mà còn làm rõ các giải pháp của nó bằng ngôn ngữ mà bất kỳ nhà phát triển nào cũng có thể hiểu.
Ví dụ, nó đã xác định các vấn đề với các thuộc tính tồn tại của các cấu hình cơ sở dữ liệu bị thay đổi bởi các API đã sửa đổi gần đây và thực hiện các sửa chữa một cách hiệu quả.
Giới hạn
Thỉnh thoảng, đầu ra ban đầu của Aider cần tinh chỉnh thêm mà yêu cầu người dùng thực hiện các lệnh bên ngoài công cụ, chẳng hạn như thiết lập các môi trường ảo và xử lý thủ công các phụ thuộc cụ thể như cập nhật cho ChromaDB.
Cursor: đối thủ cạnh tranh
Chế độ Composer của Cursor là bước tiếp theo và nó theo một mẫu quen thuộc. Sử dụng nhắc nhở duy nhất và tài liệu LangChain, Cursor đã đọc và phân tích các tệp để tạo ra các đầu ra mô-đun tương tự như Aider.
Giải thích về việc tạo ứng dụng mô-đun của Cursor
Giống như Aider, Cursor tập trung vào việc tạo các tệp mô-đun:
- Loader cho việc xử lý đầu vào.
- Cơ sở dữ liệu vector để lưu trữ các nhúng thông qua ChromaDB.
- Các chuỗi tích hợp LangChain và LLModels.
Gỡ lỗi tương tác
Các lỗi liên quan đến tham số trình phân tích Beautiful Soup đã làm nổi bật khả năng của Cursor để điều chỉnh mã của mình một cách thuận lợi với sự tối thiểu nhập từ người dùng. Người dùng có thể cung cấp các ảnh chụp màn hình chi tiết cho gỡ lỗi, và Cursor đã nhanh chóng viết lại các đoạn mã bị ảnh hưởng trong khi vẫn duy trì cấu trúc của nó.
Nó cũng đã cung cấp những gợi ý quý giá về việc đóng gói, đảm bảo rằng người dùng có thể tạo ra các môi trường sẵn sàng để cài đặt bằng pip với ít rắc rối.
Thách thức đã xác định
Cursor đôi khi đã đơn giản hóa một số cấu hình, đưa ra giả định về các giá trị mặc định tham số mà không phù hợp với các cập nhật mới nhất của LangChain. Đáng chú ý, nó đã vô tình ghi đè lên các tệp quan trọng với các khóa dummy (ví dụ: các khóa .env
của OpenAI), tạo ra những bất tiện nhỏ mà một nhà phát triển sẽ phải tự giải quyết.
Windsurf: người chơi mới trong lập trình AI
Cuối cùng, Windsurf đã bước lên để đối mặt với thử thách. Dù mới hơn so với Cursor hay Aider, công cụ này đã mang lại những tính năng độc đáo. Nó bắt đầu tương tự bằng cách tải tài liệu LangChain và tạo ra các thành phần mô-đun một cách hiệu quả.
Windsurf khởi động ứng dụng RAG
Tuy nhiên, việc tích hợp tài liệu của Windsurf và khả năng điều chỉnh các lệnh phức tạp cảm giác mượt mà hơn một chút, đặc biệt là trong việc tạo ra các tóm tắt ngắn cho các ràng buộc do người dùng xác định.
Phương pháp gỡ lỗi
Windsurf yêu cầu ít ảnh chụp màn hình thủ công hơn so với các đối thủ cạnh tranh, gợi ý về sự giữ lại ngữ cảnh tốt hơn và cơ chế tự sửa chữa. Tuy nhiên, giống như những người khác, nó gặp khó khăn với những lỗi thuộc tính tồn tại tương tự trong các cơ sở mã ChromaDB—có thể là một thiếu sót xuất phát từ dữ liệu đào tạo mô hình AI cơ bản hơn là từ công cụ tự thân.
Một điểm bất lợi được ghi nhận trong quá trình thử nghiệm là sự thiếu hụt các tính năng gỡ lỗi trực quan mà Cursor hoặc Aider cung cấp và yêu cầu người dùng phải sao chép các lỗi và tin nhắn vào giao diện của nó, làm cho việc lặp lại trở nên kém linh hoạt hơn.
So sánh: điểm mạnh và điểm yếu
Điểm mạnh
- Aider: Khả năng gỡ lỗi tốt nhất và các thiết lập mô-đun, với những gợi ý chính xác trong quá trình sửa chữa.
- Cursor: Tạo mã nhanh và nhạy, với các công cụ linh hoạt để tái cấu trúc và xử lý phụ thuộc.
- Windsurf: Phân tích ngữ cảnh tuyệt vời, ít chu kỳ can thiệp AI hơn, và tốt nhất cho các nhiệm vụ tạo ra mô-đun ngắn gọn.
Các thách thức gỡ lỗi giữa các công cụ
Điểm yếu
- Aider: Phụ thuộc quá nhiều vào các đầu vào từ terminal làm giảm sự tiện lợi một chút.
- Cursor: Có xu hướng ghi đè lên chi tiết cấu hình .env hoặc nhạy cảm; gặp khó khăn với việc tham số hóa API mới hơn.
- Windsurf: Thiếu các tính năng gỡ lỗi tinh vi mà các đối thủ có và yêu cầu sự can thiệp bằng hình thức văn bản thủ công.
Kết luận cuối cùng và những gì chúng tôi đã học được
Mặc dù không công cụ nào hoàn hảo, tiến bộ của các trợ lý lập trình AI là điều không thể phủ nhận. Các tác vụ cần nhiều tuần nỗ lực của nhà phát triển có thể được rút ngắn đáng kể bằng cách sử dụng những công cụ này, miễn là người dùng vẫn giữ được tính linh hoạt đối với những sửa chữa lặp lại nhỏ. Giữa các trợ lý, sự lựa chọn chủ yếu phụ thuộc vào sở thích của người dùng (ví dụ: gỡ lỗi không can thiệp so với chiều sâu phân tích ngữ cảnh).
So sánh cuối cùng của các ứng dụng RAG đã hoàn thành
Mỗi trợ lý đã thành công trong việc tạo ra một ứng dụng RAG tích hợp các cấu trúc mô-đun như giao diện Streamlit, bộ xử lý tài liệu và cửa hàng vector. Mặc dù không công cụ nào nổi bật như "công cụ tốt nhất," nhưng tính linh hoạt cao của lập trình hỗ trợ AI chắc chắn là một điểm cộng lớn cho các nhà phát triển ngày nay.
Kết luận: tạo ra tương lai với lập trình AI hỗ trợ
Các trợ lý lập trình AI như Aider, Cursor và Windsurf không còn cảm giác như những món đồ mới lạ; họ đang trở thành các công cụ thiết yếu trong quy trình phát triển phần mềm. Những thí nghiệm này chứng minh tác động chuyển hóa của chúng: tạo mẫu ứng dụng nhanh hơn, gỡ lỗi theo thời gian thực, và các trừu tượng mô-đun—tất cả đều với sự nhập liệu tối thiểu.
Nếu bạn hào hứng muốn khám phá thêm hoặc chia sẻ những hiểu biết về lập trình với AI, hãy xem xét việc tham gia cộng đồng Skool để thảo luận, trao đổi ý tưởng và học hỏi! Cùng nhau, hãy lập trình cho tương lai—với AI dẫn dắt.