3 điểm bởi GN⁺ 2025-01-18 | 1 bình luận | Chia sẻ qua WhatsApp

Devin là gì

  • Vào tháng 3 năm 2024, một công ty AI mới xuất hiện sau khi huy động được vòng Series A trị giá 21 triệu USD với sự hậu thuẫn từ nhiều lãnh đạo trong giới công nghệ như Founders Fund, anh em nhà Collison và Elad Gil
  • Đội ngũ của công ty này được giới thiệu là gồm các huy chương vàng IOI, với năng lực tự giải quyết những bài toán lập trình phức tạp
  • Họ cho rằng sản phẩm Devin có thể trò chuyện như một đồng nghiệp con người và tự động xử lý toàn bộ quy trình kỹ thuật phần mềm như học công nghệ mới, gỡ lỗi mã hiện có, triển khai toàn bộ ứng dụng và huấn luyện mô hình AI
  • Trong video demo được công bố, Devin đã tự giải quyết tiền thưởng trên Upwork và cài đặt rồi chạy dự án PyTorch[1]
  • Công ty tuyên bố rằng theo chuẩn SWE-bench, Devin có thể giải quyết hoàn toàn khoảng 13,86% các issue GitHub thực tế, nhấn mạnh đây là hiệu năng tốt hơn khoảng 3 lần so với các hệ thống trước đó
  • Ban đầu chỉ những người dùng được chọn mới có thể truy cập, và kỳ vọng rằng công cụ này sẽ cách mạng hóa phát triển phần mềm đã lan rộng qua mạng xã hội
  • Đội ngũ Answer.AI thường xuyên thử nghiệm các công cụ phát triển AI và có trực giác rằng Devin có thể cho thấy điều gì đó khác biệt so với trước đây
  • Họ đã trực tiếp áp dụng Devin vào môi trường làm việc thực tế, thử nhiều nhiệm vụ khác nhau và tổng hợp lại trải nghiệm sử dụng

Các trường hợp thành công ban đầu

  • Nhiệm vụ đầu tiên được thử là đưa thông tin từ cơ sở dữ liệu Notion sang Google Sheets
  • Devin đã tra cứu tài liệu API của Notion và Google, đồng thời hướng dẫn tuần tự cách thiết lập thông tin xác thực cần thiết trong Google Cloud Console
  • Thay vì chỉ ném ra cách dùng API, Devin còn chỉ rõ menu thực tế và vị trí cần bấm nút, giúp giảm đáng kể thời gian cho các thao tác phiền phức
  • Mã do Devin viết khá dài dòng nhưng hoạt động bình thường
  • Trải nghiệm này cho thấy tiềm năng của AI trong việc thay thế xử lý “glue code”
  • Một thành viên khác trong nhóm cũng có thể chỉ dùng điện thoại để tương tác với Devin và tạo ra một ứng dụng theo dõi vị trí trong quá khứ của sao Mộc và sao Thổ

Mở rộng thử nghiệm

  • Được khích lệ bởi thành công ban đầu, nhóm đã thử dùng Devin theo kiểu bất đồng bộ, như giao cho nó viết tài liệu hoặc nhờ gỡ lỗi trong khi họ đang làm công việc thiết kế
  • Tuy nhiên, dần dần lộ ra vấn đề là Devin có thể rơi vào ngõ cụt kỹ thuật ngay cả với những tác vụ trông đơn giản, hoặc tạo ra mã phức tạp vô ích
  • Đặc biệt, nhóm thường xuyên gặp tình huống Devin “ảo giác” chức năng khi cứ thử làm cả những việc thực tế là bất khả thi, chẳng hạn triển khai nhiều ứng dụng trong một deployment trên Railway cùng lúc
  • Vấn đề không chỉ là thất bại, mà là việc nó lãng phí thời gian để thử các lời giải vốn không thể thực hiện

Quan sát chuyên sâu về các vấn đề

  • Nhóm đặt câu hỏi vì sao Devin có vẻ rất giỏi ở một số nhiệm vụ nhưng lại thất bại ở những nhiệm vụ khác
  • Trong một tháng sử dụng, họ đã thử tổng cộng 20 tác vụ và phân loại vào ba nhóm sau
    • (1) Tạo dự án mới
    • (2) Nghiên cứu
    • (3) Phân tích và chỉnh sửa dự án hiện có
  • Kết quả là trong 20 tác vụ, có 14 thất bại, 3 thành công (bao gồm các ví dụ thành công ban đầu) và 3 chưa thể kết luận (Inconclusive)
  • Không có mẫu hình rõ ràng nào để phân biệt thành công và thất bại; ngay cả những tác vụ trông tương tự nhau cũng có thể thất bại theo những cách khó lường
  • Các trường hợp chi tiết được tổng hợp trong phần phụ lục ở cuối bài

1. Tạo dự án mới

  • Khi xem video demo của công ty và các ca thành công ban đầu, nhóm kỳ vọng Devin sẽ làm tốt việc xây dựng trọn vẹn một dự án mới
  • Nhưng trên thực tế, công cụ này thường tạo ra cấu trúc mã quá phức tạp hoặc thậm chí không giải quyết nổi cả việc web scraping đơn giản
  • Ví dụ, tác vụ tải dữ liệu tổng hợp lên Braintrust thất bại vì mã do Devin viết quá phức tạp và không thoát ra được lỗi
  • Nỗ lực tích hợp Spiral.computer với AI note taker Circleback cũng bị bỏ cuộc vì Devin trả về đoạn mã rối như mì spaghetti
  • Nhiệm vụ lấy thông tin 25 bài báo mới nhất của một tác giả trên Google Scholar cũng không hoàn thành đúng cách vì mắc kẹt ở bước phân tích HTML

2. Tác vụ nghiên cứu

  • Những tác vụ khảo sát cơ bản như tra cứu tài liệu đơn giản thì Devin vẫn làm được ở mức nào đó
  • Nhưng với các bài toán phức tạp hơn, chẳng hạn tóm tắt transcript mà vẫn giữ chính xác timestamp, nó không nắm được nội dung liên quan mà chỉ liệt kê các ví dụ lạc đề
  • Yêu cầu tạo một theme tối giản cho DaisyUI cũng không cho ra kết quả thực sự hoạt động, vì trên thực tế nó chỉ dùng lại màu của theme mặc định

3. Phân tích và sửa mã hiện có

  • Giới hạn của Devin bộc lộ rõ trong các công việc bảo trì, nơi cần hiểu mã hiện có và bối cảnh liên quan
  • Khi làm việc với dự án nbdev, Devin đã thử cách tiếp cận kém hiệu quả như thêm script Python không cần thiết cho một tác vụ vốn chỉ cần chỉnh notebook
  • Trong công việc rà soát bảo mật, nó chỉ ra các lỗ hổng không tồn tại hoặc không xác định đúng các vấn đề chính
  • Khi chẩn đoán lỗi chuyển tiếp khóa SSH, Devin chỉ chăm chăm vào bản thân script mà hoàn toàn không cân nhắc khả năng vấn đề nằm ở nơi khác
  • Ngay cả khi triển khai tính năng kiểm tra xung đột giữa đầu vào người dùng và cơ sở dữ liệu, nhóm cũng mất thời gian chỉnh sửa mã do Devin tạo ra, rồi cuối cùng tự làm trong 90 phút còn nhanh hơn

Phần tổng kết của nhóm

  • Sau một tháng kiểm thử tập trung, trong nhóm đã xuất hiện những đánh giá sau về Devin
    • “Các việc nhỏ và được xác định rõ thì tự làm còn nhanh hơn, còn việc lớn thì Devin rất dễ thất bại nên không hữu ích mấy” (Johno Whitaker)
    • “Ban đầu tôi nghĩ chỉ cần chỉnh sửa đôi chút là được, nhưng cuối cùng lại phải đụng vào quá nhiều phần, và tôi thấy thà tự làm ngay từ đầu còn hơn” (Isaac Flath)
    • “Nó không kết hợp tốt với các công cụ nội bộ của AnswerAI và cũng dùng tài liệu cùng ví dụ được cung cấp không tốt, nên gặp vấn đề tương thích. Trong khi đó, các công cụ như Cursor cho phép trao đổi phản hồi liên tục ở quy mô nhỏ nên tốt hơn Devin” (Hamel Husain)
  • Devin có đặc trưng là tự chủ thực hiện những bước lớn, nhưng cái giá phải trả là con người tốn đáng kể công sức để sửa lại hướng đi sai
  • Ngược lại, nhóm đi đến kết luận rằng các workflow nơi lập trình viên giữ vai trò chủ đạo và AI đóng vai trò hỗ trợ, như Circleback hay Cursor, ổn định hơn nhiều

Kết luận

  • Trải nghiệm làm việc với Devin đã cho nhóm một cái nhìn thoáng qua về viễn cảnh mà các công cụ phát triển AI tự chủ đang hướng tới
  • Đặc biệt, giao diện hội thoại dựa trên Slack và khả năng tự động thiết lập môi trường trong Docker container là những điểm gây ấn tượng về mặt trải nghiệm người dùng
  • Tuy nhiên, trong thực tế chỉ có 3 trên 20 trường hợp hoạt động trơn tru, và ngay cả các tác vụ tương tự nhau cũng thường thất bại theo cách phức tạp
  • Chính đặc tính “tự chủ” khiến khi công việc đi sai hướng, nó có thể tiếp tục chạy rất lâu theo một hướng hoàn toàn lệch lạc
  • Theo những gì đã trải nghiệm đến nay, sự sôi động trên mạng xã hội hay mức định giá doanh nghiệp cao thường không đồng nghĩa với năng suất hoặc độ hoàn thiện thực tế
  • Đội ngũ Answer.AI cho biết họ sẽ tiếp tục giữ quan điểm rằng hình thức thực tế nhất là để AI hỗ trợ quá trình phát triển

Phụ lục: Danh sách các công việc đã giao cho Devin

  • Dưới đây là phần tóm tắt ngắn về các dự án đã giao cho Devin và kết quả của chúng
  • Chúng được phân loại thành bốn nhóm
    • (1) Tạo dự án mới
    • (2) Nghiên cứu
    • (3) Phân tích mã hiện có
    • (4) Chỉnh sửa dự án hiện có

1. Tạo dự án mới

  • Planet Tracker

    • Status: Success
    • Description: Ứng dụng nhằm kiểm chứng các tuyên bố về vị trí trong quá khứ của sao Mộc và sao Thổ
    • Reflection: Chỉ trò chuyện với Devin qua Slack trên điện thoại, nhưng Devin đã tự xử lý phần lớn công việc và hoàn thành thành công
  • Migrating data from Notion into Google Sheets

    • Status: Success
    • Description: Tự động nhập tài liệu Notion vào Google Sheets
    • Reflection: Devin hướng dẫn từng bước cả phần thiết lập Google Cloud Console, tạo nên trải nghiệm “hoàn toàn mới” lần đầu tiên
  • Multi-app deploys on Railway

    • Status: Inconclusive
    • Description: Muốn đưa nhiều ứng dụng vào cùng một deployment trên Railway để dùng chung một DB
    • Reflection: Trên thực tế Railway không hỗ trợ cách này nên về cơ bản là bất khả thi. Devin vẫn tiếp tục thử và theo đuổi các hướng tiếp cận do ảo giác tạo ra
  • Generate synthetic data and upload it to Braintrust

    • Status: Failure
    • Description: Muốn tạo dữ liệu tổng hợp để tải lên nền tảng Braintrust
    • Reflection: Mã quá phức tạp và không giải quyết được lỗi, nên cuối cùng phải dùng Cursor để triển khai từng bước
  • Create an integration between Circleback and Spiral.computer

    • Status: Failure
    • Description: Đã cung cấp tài liệu của cả hai bên, nhưng Devin tạo ra mã spaghetti quá phức tạp nên phải bỏ cuộc
  • Web scraping Papers by Following Google Scholar Links

    • Status: Failure
    • Description: Lấy thông tin 25 bài báo mới nhất của một tác giả cụ thể và bỏ qua các bài trả phí
    • Reflection: Tác vụ bị dừng vì rơi vào vòng lặp vô tận ở bước phân tích HTML
  • Create minimal HTMX bulk upload example app

    • Status: Failure
    • Description: Muốn đơn giản hóa một ví dụ HTMX để dùng cho FastHTML
    • Reflection: Mã ví dụ không chạy được và còn thêm vào các yếu tố không cần thiết, gây rối
  • Create a DaisyUI Themes to match FrankenUI Theming

    • Status: Failure
    • Description: Muốn thống nhất theme giữa DaisyUI và FrankenUI
    • Reflection: Việc ánh xạ không được thực hiện đúng và quá nhiều mã đồ sộ được thêm vào, khiến hầu như không thể dùng thực tế

2. Nghiên cứu

  • Research How to make a discord bot

    • Status: Success
    • Description: Tìm hiểu cách tạo bot Discord bằng Python để tóm tắt tin nhắn và gửi qua email
    • Reflection: Giữa chừng Devin đã tóm tắt kế hoạch bằng file Markdown, và dù mã cuối chưa hoàn hảo, nó vẫn hữu ích để hiểu khái niệm
  • Research on Transcript Summarization With Accurate Timestamps

    • Status: Failure
    • Description: Muốn tìm cách tạo bản tóm tắt mà vẫn giữ nguyên thông tin timestamp
    • Reflection: Devin chỉ liệt kê sơ lược các chủ đề liên quan và không đưa ra hướng giải quyết thực tế cho vấn đề
  • Create a minimal DaisyUI theme as an example

    • Status: Failure
    • Description: Yêu cầu cho xem một ví dụ theme DaisyUI tối giản
    • Reflection: Theme thực tế không được áp dụng và màu của theme mặc định vẫn được giữ nguyên

3. Phân tích mã hiện có

  • Performing a security review of a code base

    • Status: Inconclusive
    • Description: Yêu cầu rà soát một repo GitHub dưới 700 dòng từ góc độ lỗ hổng bảo mật
    • Reflection: Một phần là đúng, nhưng nó cũng chỉ ra quá mức các vấn đề bảo mật, bao gồm cả các lỗ hổng không hề tồn tại
  • Review blog posts and make a pull request with improvements

    • Status: Failure
    • Description: Yêu cầu xem lại các bài blog và tạo PR phù hợp với mã nguồn dựa trên Quarto
    • Reflection: Devin không học được cấu trúc của Quarto nên xử lý hỏng metadata và front matter, dẫn đến thất bại
  • Review an application and identify potential areas of improvement

    • Status: Failure
    • Description: Yêu cầu đề xuất các cải tiến toàn diện cho ứng dụng chấm công đã tạo trước đó
    • Reflection: Phần lớn các đề xuất đều không có nhiều giá trị thực tế
  • Debug why ssh key forwarding is not working in a setup script

    • Status: Inconclusive
    • Description: Vấn đề chuyển tiếp khóa SSH không hoạt động trong quá trình thiết lập máy chủ bằng script
    • Reflection: Devin chỉ dai dẳng điều tra script mà không nhận ra nguyên nhân có thể nằm ở chỗ khác

4. Chỉnh sửa một dự án hiện có

  • Making changes to a nbdev project

    • Status: Failure
    • Description: Muốn gắn API cho Apple Shortcuts vào ứng dụng theo dõi thời gian được xây bằng FastHTML + nbdev
    • Reflection: Thay vì sửa trực tiếp notebook, Devin lại cố chỉnh notebook bằng script Python, làm tăng độ phức tạp
  • Migration of Python Project To nbdev

    • Status: Failure
    • Description: Muốn chuyển một dự án Python hiện có sang nbdev
    • Reflection: Ngay cả thiết lập nbdev cơ bản cũng không cấu hình đúng, khiến dự án bị rối
  • Integrate Styling Package Into FastHTML

    • Status: Failure
    • Description: Muốn gắn MonsterUI vào một dự án dựa trên nbdev
    • Reflection: Devin thất bại vì không hiểu đúng cấu trúc repo nbdev
  • Add feature to check for conflicts between user input and database

    • Status: Failure
    • Description: Muốn thêm UI thông báo khi đầu vào người dùng xung đột với giá trị trong DB ở ứng dụng hiện có
    • Reflection: Việc chỉnh sửa nỗ lực của Devin đến cùng tốn rất nhiều thời gian, trong khi tự triển khai chỉ mất 90 phút và nhanh hơn nhiều
  • Generate LLMs context file with the contents of every fasthtml gallery example

    • Status: Failure
    • Description: Yêu cầu tạo file văn bản cho LLMs chứa nội dung của mọi ví dụ trong gallery fasthtml
    • Reflection: Việc Devin tạo từng ví dụ thành file Markdown riêng là điểm thú vị, nhưng cách viết thực tế không khớp với tài liệu và còn thêm phụ thuộc không cần thiết nên phát sinh nhiều vấn đề

1 bình luận

 
GN⁺ 2025-01-18
Ý kiến trên Hacker News
  • Người tạo ra OpenHands nhấn mạnh rằng AI vẫn chưa đạt đến mức có thể thay thế kỹ sư phần mềm. Mã do AI viết cần được rà soát kỹ lưỡng như mã của một kỹ sư mới vào nghề. Tuy vậy, nếu tận dụng AI tốt thì năng suất có thể tăng lên đáng kể. Khoảng 20% codebase của OpenHands được AI viết hoặc đồng tác giả. AI hữu ích cho các tác vụ đơn giản như xử lý xung đột khi merge hoặc sửa lỗi linter. AI đang cải thiện mỗi tuần và mức độ cạnh tranh cũng rất khốc liệt

  • Người dùng sử dụng công cụ code AI hằng ngày cho rằng cách tiếp cận theo kiểu agent như Devin đang cố làm quá nhiều việc. Công cụ code AI nên được định vị là công cụ dành cho lập trình viên hơn là để thay thế họ. GitHub Copilot hữu ích trong việc hoàn thiện các đoạn mã lặp lại, còn Aider có thể xử lý các tác vụ chỉnh sửa ở mức cao hơn. Tuy nhiên, chúng vẫn chưa hoàn hảo và có thể tạo ra những thay đổi không cần thiết khi giải quyết vấn đề

  • Vấn đề của các AI agent như Devin là mức độ thông minh của chúng dường như bị kẹt ở một ngưỡng nhất định. Đôi khi chúng giải quyết được trong vài phút những việc mà kỹ sư tầm trung hoặc cao cấp phải mất hàng giờ, nhưng cũng có lúc mắc những lỗi rất đơn giản. Một phẩm chất quan trọng của kỹ sư junior là khả năng được hướng dẫn, nhưng AI agent lại bị giới hạn ở chỗ không thể được dẫn dắt theo cách đó

  • Có sự hoài nghi với tuyên bố rằng AI có thể thay thế kỹ sư con người. AI phù hợp với các tác vụ lặp đi lặp lại quy mô nhỏ, nhưng không phù hợp với các công việc phức tạp như quản lý hạ tầng hay triển khai ứng dụng. Chỉ khi thực sự thấy được việc AI thay thế con người ngoài đời thực thì mới tin vào những tuyên bố đó

  • AI agent cần có khả năng yêu cầu đầu vào từ con người khi cần, nhưng Devin làm điều này không tốt trong các tình huống "soft stop". Một lập trình viên con người sẽ nhờ hỗ trợ sau vài giờ, còn AI có thể rơi vào vòng lặp vô hạn

  • Tương tự như tạo ảnh bằng AI, các công cụ code AI lúc ban đầu cho kết quả rất ấn tượng nhưng vẫn còn nhiều lỗi. Tuy nhiên, người ta kỳ vọng trong vài năm tới sẽ có bước tiến đáng kinh ngạc. Những công cụ như Midjourney có thể cho ra kết quả khác với kỳ vọng, và sẽ cần khả năng để người dùng lặp thử thật nhanh

  • Các chia sẻ trải nghiệm dùng Devin cho thấy agent này chưa đáp ứng được kỳ vọng. Agent thì dễ triển khai, nhưng triển khai sao cho thực sự hữu ích lại rất khó. Những giới hạn của Devin làm dấy lên lo ngại về hướng phát triển của các hệ thống agent

  • Devin đã cố làm quá nhiều thứ, trong khi việc tạo ra code artifact trong phạm vi năng lực giới hạn mới là điều có giá trị. Điều quan trọng là tập trung vào những thành phần cụ thể của vòng lặp phát triển. Các công ty như Factory AI đang theo đuổi cách tiếp cận này và đang thu hút được sự quan tâm với sản phẩm của họ

  • Devin gây ấn tượng khi hiểu được định dạng mã và thiết lập test cục bộ, nhưng có thể thêm vào các thay đổi không cần thiết rồi làm hỏng những phần khác. Không thể hoàn tác các thay đổi này nên cần dọn dẹp thêm. Devin đã cho thấy tiềm năng của workflow dạng agent, nhưng vì không giúp tiết kiệm thời gian nên không được khuyến nghị

  • Người dùng đã sử dụng Cursor rất nhiều cảm thấy cần phải ép hệ thống đi theo một hướng cụ thể. Có lúc LLM cung cấp các đoạn mã hữu ích, nhưng nếu nó đi sai hướng thì phải dừng đề xuất đó lại và ép sang hướng khác. Cursor đặc biệt hữu ích trong refactor, giúp tiết kiệm rất nhiều thao tác gõ và thời gian.