Xác thực quá trình phát triển tác tử (Agentic) trên quy mô lớn

@ido_pesok
TIẾNG ANH1 tháng trước · 29 thg 5, 2026
210K
389
26
16
809

TL;DR

Cognition trình bày chi tiết phương pháp xác thực toàn diện dành cho các tác tử AI, sử dụng máy ảo và khả năng tương tác với máy tính để cho phép Devin tự kiểm thử các PR của chính mình giống như một kỹ sư con người.

Những gì chúng tôi đã học được khi xây dựng khả năng kiểm thử end-to-end trong máy ảo của Devin.

3 tháng trước, tôi gia nhập Cognition để giúp xây dựng tương lai của kỹ thuật phần mềm. Devin đã tiến xa kể từ khi ra mắt với tư cách là kỹ sư phần mềm AI đầu tiên, và tôi thực sự ấn tượng khi thấy đội ngũ đằng sau nó sử dụng Devin hàng ngày.

Một điều nổi bật là cách Devin sử dụng máy tính của nó để tự động xác minh công việc trên đám mây. Từ việc xác thực tích hợp Slack của chúng tôi đến kiểm thử các tính năng phức tạp của Windsurf, đội ngũ luôn có một đội quân Devin ở chế độ kiểm thử. Trong bài viết này, tôi sẽ chia sẻ lý do tại sao chúng tôi tập trung vào việc xác minh agent end-to-end trên đám mây và cách chúng tôi đang xây dựng nó.

Sự chuyển dịch sang kỹ thuật phần mềm bất đồng bộ

Tại Cognition, gần đây chúng tôi đã đạt được một cột mốc mới. Lần đầu tiên, nhiều Devin hơn được kích hoạt không đồng bộ, thông qua các sự kiện, tự động hóa, lịch trình và các Devin khác. Chúng tôi kỳ vọng điều này sẽ tiếp tục tăng tốc với việc ra mắt Auto-Triage gần đây.

Khi chúng tôi chuyển sang thế giới bất đồng bộ này, điều quan trọng là các nhà phát triển có thể quay lại với những kết quả đã được xác minh và sẵn sàng để hợp nhất. Đầu năm nay, chúng tôi đã ra mắt Devin Review, một công cụ đánh giá mã giúp mở rộng hiểu biết của con người về các diff mã phức tạp. Nó không chỉ đánh dấu lỗi - Devin khép kín vòng lặp bằng cách sửa từng phát hiện cho đến khi diff sạch. Nhưng chỉ có một bản đánh giá sạch thường là chưa đủ - các kỹ sư muốn thấy thay đổi được kiểm thử end-to-end, giống như cách họ tự kiểm thử.

Thật tuyệt vời khi Devin tạo một PR sửa lỗi khiếu nại của người dùng trước khi bạn kịp nhìn thấy tin nhắn trong kênh báo lỗi. Điều kỳ diệu là khi PR đó đi kèm với bằng chứng rằng bản sửa lỗi thực sự hoạt động. Và phép màu này có thể sớm trở thành điều cần thiết - khi ngày càng nhiều PR đến từ sự gia tăng của các agent chủ động, những thay đổi chưa được xác minh sẽ nhanh chóng trở nên không thể quản lý.

Từ những ngày đầu

Kể từ khi Devin ra mắt, nó luôn có thể trình diễn công việc của mình trên một máy ảo trên đám mây. Khoảng 6 tháng trước, chúng tôi đã mở rộng khả năng sử dụng máy tính của Devin. Điều này có nghĩa là chúng tôi đã thêm các công cụ vào bộ khung của Devin để chụp ảnh màn hình, di chuyển chuột, nhấp, kéo, gõ, nhấn phím, cuộn, chờ, phóng to/thu nhỏ, và bắt đầu/dừng ghi hình. Khả năng sử dụng máy tính đã có từ lâu, nhưng chúng tôi cảm thấy thế hệ mô hình mới nhất từ các phòng thí nghiệm tiên phong đã bắt đầu thực sự giỏi trong việc tận dụng các công cụ này.

Khả năng sử dụng máy tính đã mở ra một số tính năng thú vị cho Devin, như xây dựng và chơi một trò chơi trên máy tính để bàn, hoặc sử dụng trình duyệt để đặt hàng trên Amazon. Nhưng điều thực sự quan trọng mà chúng tôi nhận thấy là khả năng kiểm thử công việc của chính Devin. Devin sẽ khởi chạy ứng dụng, nhấp qua nó, và xác nhận các thay đổi của nó thực sự hoạt động, giống như một kỹ sư sẽ làm. Mọi thứ chạy trên đám mây và có thể mở rộng song song. Điều này thực sự gây ấn tượng với tôi khi thấy các kỹ sư chạy 10 đến 20 Devin song song, mỗi cái với máy chủ dev riêng, xử lý các thay đổi – điều này đơn giản là không thể làm trên một chiếc laptop đơn lẻ. Kiểm thử tự động trên đám mây bắt đầu tiết kiệm cho chúng tôi rất nhiều thời gian, vì chúng tôi không còn phải chạy và xác minh mã cục bộ.

Thành thật mà nói, việc đạt được điều này không hề suôn sẻ. Chúng tôi đã gặp rất nhiều kiểu thất bại trên đường đi, mỗi kiểu đều dạy chúng tôi điều gì đó về những gì cần thiết để làm cho hệ thống này đáng tin cậy hơn.

Tăng cường độ tin cậy

Trong các phiên bản đầu, Devin rất hay bị lạc hướng trong quá trình kiểm thử. Nó xảy ra theo nhiều cách: kiểm thử quá mức các phần không liên quan của sản phẩm, bị lạc trong quá trình thiết lập trước khi đến được tính năng, hoặc đơn giản là bỏ sót hành vi cốt lõi mà PR thực sự muốn thay đổi.

Để giải quyết vấn đề này, khi Devin vào chế độ kiểm thử, chúng tôi yêu cầu nó trước tiên viết ra một kế hoạch kiểm thử chi tiết mục tiêu rõ ràng về những gì cần kiểm thử. Kế hoạch này phải dựa trên mã nguồn, không phải giả định. Nếu không dựa trên mã, chúng tôi thấy các mô hình có xu hướng cho rằng chúng có thể đi theo các đường dẫn trong ứng dụng mà thực tế không tồn tại. Hơn nữa, kế hoạch kiểm thử giúp tăng đáng kể độ phức tạp của các thay đổi mà Devin có thể kiểm thử thành công. Một số yêu cầu tham vọng nhất của chúng tôi bao gồm các tính năng yêu cầu nhiều dịch vụ chạy đồng thời, cấu hình quản trị cụ thể và các cờ được bật đúng cách trước khi hành vi có thể truy cập được. Khi đọc mã từ đầu, Devin có nhiều khả năng thiết lập môi trường chính xác hơn là phát hiện ra điều gì đó thiếu sót giữa chừng trong quá trình kiểm thử. Kế hoạch kiểm thử hoạt động như một hình thức tiền căn chỉnh và giúp Devin ít bị lệch hướng khi kiểm thử chủ động.

Khi Devin thực hiện kế hoạch, nó thêm các chú thích của riêng mình vào dòng thời gian. Chúng bao gồm các ghi chú thiết lập, điểm bắt đầu của mỗi bài kiểm tra được đặt tên, và các xác nhận được đánh dấu là đạt, không đạt, hoặc chưa kiểm thử. Chúng tôi thấy rằng Devin sẽ nói dối ít hơn về kết quả của mình nếu nó chú thích hành vi dự kiến ngay trước khi thực hiện một hành động - giống như phát triển theo hướng kiểm thử, nếu bạn cam kết với kỳ vọng từ trước, việc biện minh cho một kết quả bất ngờ là đạt sẽ khó khăn hơn nhiều.

Một số phần của luồng kiểm thử lặp lại trong hầu hết mọi lần chạy. Đăng nhập là một ví dụ kinh điển: điều khiển form đăng nhập thông qua sử dụng máy tính thường có nghĩa là gõ email, hoàn tất SSO, nhấp qua các chuyển hướng và chờ từng lần tải trang, từng ảnh chụp màn hình. Điều này có thể tốn kém cả về thời gian lẫn token. Để cải thiện độ tin cậy và chi phí cho các hành động này, Devin đã trích xuất công việc thành một script xác định nằm trong một kỹ năng kiểm thử trong kho lưu trữ của chúng tôi. Bằng cách này, Devin có thể chạy script và lấy một phiên trình duyệt đã xác thực trong vài giây và nhảy vào phần cốt lõi của bài kiểm thử. Tính xác định của các script này đã giúp giảm đáng kể độ không ổn định. Chúng tôi đã cập nhật Devin để tự khép kín vòng lặp này. Khi nó tìm ra một bước thiết lập theo cách khó, Devin có thể đề xuất lưu kiến thức đó như một kỹ năng kiểm thử trong kho lưu trữ và đề xuất bản sửa lỗi cho người dùng dưới dạng một PR một cú nhấp.

Chúng tôi cũng đang thử nghiệm chuyển hướng giai đoạn kiểm thử đến các mô hình khác nhau. Vì kiểm thử dựa trên các thế mạnh khác với viết mã, như đọc ảnh chụp màn hình, theo dõi trạng thái UI và quyết định hành động tiếp theo của trình duyệt, một số mô hình đơn giản là tốt hơn cho việc này so với mô hình điển hình bạn chọn để chỉnh sửa mã.

Sử dụng Kiểm thử Tự động trong Devin Hiện nay

Hiện tại, Devin vào chế độ kiểm thử theo hai cách: một yêu cầu rõ ràng để kiểm thử một thay đổi, hoặc sau khi Devin tạo PR, nó sẽ đề nghị kiểm thử thay đổi nếu có thể. Từ đó, nó sẽ tạo kế hoạch kiểm thử và bắt đầu làm việc.

Thông thường, khi bạn mới bắt đầu sử dụng khả năng kiểm thử của Devin, nó sẽ cần sự trợ giúp của bạn. Một ví dụ điển hình là nếu nó cần secrets khi chạy ứng dụng của bạn cục bộ. Để làm cho quy trình này mượt mà hơn, Devin có thể hỏi bạn trong phiên làm việc về bất kỳ thông tin xác thực nào hoặc thông tin khác có thể bị thiếu. Đối với các trường hợp khó hơn, bạn có thể điều khiển máy tính của Devin và nhập các thứ như mã OTP. Tin tốt là sau khi Devin hoàn tất thiết lập kho lưu trữ của bạn, nó có thể lưu một cấu hình khai báo dưới dạng blueprint YAML tạo ra một snapshot cho mọi phiên làm việc trong tương lai để khởi động.

Những gì bạn nhận lại

Khi Devin hoàn tất kiểm thử, nó không chỉ cho bạn biết ứng dụng có hoạt động hay không. Một bản ghi màn hình thô rất hữu ích nhưng chúng tôi cảm thấy nó chưa đủ - bạn cần hiểu những gì bạn đang nhìn, tại sao Devin thực hiện từng hành động và phần nào của bài kiểm thử đạt hay không đạt.

Để xem nhanh, Devin sẽ trả về một báo cáo kiểm thử với các ảnh chụp màn hình được gắn nhãn từ những thời điểm quan trọng trong quá trình chạy để bạn có thể nhanh chóng thấy Devin đã kiểm thử gì và ứng dụng trông như thế nào trong suốt quá trình.

Nếu bạn muốn xem xét sâu hơn, Devin cũng tạo một video kiểm thử với giao diện phát phong phú có các chương để bạn có thể nhảy giữa các phần kiểm thử, tua qua toàn bộ quá trình chạy và kiểm tra các xác nhận đạt hoặc không đạt trong một chế độ xem danh sách theo thứ tự thời gian. Trong quá trình hậu kỳ, thời gian chết giữa các hành động được nén lại trong khi những khoảnh khắc xung quanh hành động được phát lại ở tốc độ bình thường. Điều này làm cho một quá trình chạy dài được cô đọng thành một bản ghi mà bạn thực sự có thể xem. Các tạo phẩm này có sẵn trong giao diện web của chúng tôi và cũng được phân phối đến Slack nếu Devin được khởi động từ đó.

Các vấn đề khó khăn

Khả năng sử dụng máy tính vẫn còn những điểm khó khăn. Một ví dụ là về thời gian - nếu Devin đang kiểm thử một thông báo toast, một ảnh chụp màn hình quá sớm hoặc quá muộn có thể bỏ lỡ hoàn toàn thông báo và các mô hình có thể bị nhầm lẫn về việc liệu hành vi dự kiến có thực sự xảy ra hay không.

Một kiểu thất bại khác là gian lận. Để tự do, các mô hình đôi khi có thể dựa quá nhiều vào việc thực thi JavaScript trong trình duyệt để kích hoạt các trạng thái theo chương trình thay vì nhấp qua UI. Điều này có thể hữu ích để kiểm thử chức năng, nhưng người dùng thường muốn thấy Devin thao tác ứng dụng theo cách người dùng thực sự sẽ làm.

Chúng tôi đang tích cực làm việc trên các vấn đề này thông qua các đánh giá cải tiến, các rào cản chặt chẽ hơn trong bộ khung và mỗi thế hệ mô hình mới ngày càng tốt hơn trong việc sử dụng máy tính.

Tương lai của phát triển bất đồng bộ được xác minh

Trong vài tháng qua, số lần chạy kiểm thử được phê duyệt mỗi ngày trên Devin đã tăng hơn gấp đôi. Sự tăng trưởng đó phản ánh một điều đơn giản: các agent bất đồng bộ chỉ hữu ích nếu các nhà phát triển có thể tin tưởng vào những gì chúng trả về. Thường thì sự tin tưởng đó không thể đến từ mã đơn thuần: đối với nhiều thay đổi, bạn muốn biết rằng ứng dụng thực sự đã được chạy, các luồng quan trọng đã được thực thi và kết quả đã được ghi lại theo cách bạn có thể dễ dàng kiểm tra.

Đó là những gì kiểm thử tự động trong Devin được thiết kế để cung cấp. Devin lập kế hoạch kiểm thử, vận hành ứng dụng, ghi lại và chú thích những gì đã xảy ra, và cuối cùng trả về các tạo phẩm giúp kết quả có thể xem xét được. Vẫn còn nhiều điều cần cải thiện, nhưng chúng tôi nghĩ đây là hình dạng đúng đắn của tương lai: các agent không chỉ hoàn thành công việc một cách bất đồng bộ, mà còn trở về với bằng chứng.

Chúng tôi liên tục ngạc nhiên về lượng thời gian Devin tiết kiệm cho chúng tôi bằng cách tự kiểm thử công việc của mình, và cảm thấy rằng nhiều khách hàng vẫn chưa tận dụng hết tính năng kiểm thử tự động của Devin. Để hỗ trợ thử nghiệm, hiện tại chúng tôi tính phí bằng 1/5 chi phí sử dụng thông thường khi ở chế độ kiểm thử.

Hãy dùng thử sản phẩm của chúng tôi tại devin.ai hoặc windsurf.com. Và nếu giải quyết những vấn đề như thế này nghe có vẻ thú vị, hãy liên hệ với ido [at] cognition.ai

Lưu một chạm

Đọc sâu bài viết viral bằng AI trong YouMind

Save the source, ask focused questions, summarize the argument, and turn a viral article into reusable notes in one AI workspace.

Explore YouMind
Dành cho nhà sáng tạo

Biến Markdown của bạn thành bài viết 𝕏 gọn gàng

Khi bạn đăng bài viết dài của riêng mình, việc định dạng hình ảnh, bảng và khối mã cho 𝕏 rất mệt mỏi. YouMind biến cả bản nháp Markdown thành một bài viết 𝕏 gọn gàng, sẵn sàng để đăng.

Thử Markdown sang 𝕏

Thêm pattern để giải mã

Bài viết viral gần đây

Khám phá thêm bài viết viral