2.000 PR mỗi tháng: Xác minh là chìa khóa

Khả năng tự xác minh giúp tác tử lập trình hoàn thành vòng lặp sửa mã, kiểm tra và sửa lỗi. Hệ thống phân tán đòi hỏi môi trường vừa chân thực, vừa cô lập và có thể khởi tạo nhanh.

Biểu đồ đối chiếu độ chân thực và khả năng chạy song song của các môi trường xác minh
Các cách xác minh phải cân bằng độ chân thực và khả năng chạy đồng thời.

Khả năng tự xác minh, không phải tốc độ tạo mã, quyết định một tác tử lập trình có thể đưa bao nhiêu thay đổi vào môi trường sản xuất. Lauren Tan, kỹ sư thuộc nhóm Grok tại SpaceXAI và từng làm việc ở Cursor cùng Meta, công bố quy trình tác tử cá nhân pstack, qua đó cô đưa 2.000 yêu cầu hợp nhất mã vào môi trường sản xuất mỗi tháng với độ tin cậy cao. Con số này tương đương gần 100 yêu cầu trong mỗi ngày làm việc.

Theo bài viết gốc của The New Stack, điểm quyết định là tác tử có thể tự xác minh kết quả và tiếp tục làm việc cho đến khi nhiệm vụ hoàn tất. Trường hợp của Tan là ngoại lệ, nhưng cho thấy năng suất của tác tử lập trình không còn chỉ được đo bằng lượng mã sinh ra. Thay đổi phải thực sự được triển khai vào môi trường sản xuất.

Khi tác tử làm tăng tốc độ tạo mã, hoạt động kiểm tra chất lượng phải theo kịp thông lượng đó. Với hệ thống phân tán, yêu cầu này khó hơn vì mỗi thay đổi còn phụ thuộc vào nhiều dịch vụ, cơ sở dữ liệu, hàng đợi và giao diện lập trình khác.

Xác minh quyết định toàn bộ thông lượng

Một tác tử biết tự kiểm tra có thể sửa lỗi và chạy lại cho đến khi hoàn thành công việc. Nếu tác tử chỉ tạo bản khác biệt rồi chờ con người xem xét, người kiểm tra sẽ trở thành thành phần chậm nhất trong vòng lặp, bất kể mô hình tạo mã nhanh đến đâu.

Tan cho rằng kỹ năng xác minh tốt có thể giúp sản lượng của một nhóm tăng từ 100 đến 1.000 lần. The New Stack tính rằng ở mức 2.000 yêu cầu hợp nhất mã mỗi tháng, người phụ trách chỉ có khoảng 5 phút để xem từng yêu cầu nếu dành toàn bộ tháng làm việc cho việc rà soát.

Con người không thể là lớp xác minh duy nhất ở quy mô đó. Hoạt động kiểm tra phải diễn ra tự động và song song với quá trình tác tử tạo thay đổi. Điều này cũng giải thích vì sao cuộc tranh luận về việc AI làm thay đổi hoạt động rà soát mã không thể chỉ xoay quanh chất lượng mô hình. Nút thắt còn nằm ở hệ thống kiểm tra bao quanh mô hình.

Mô hình này giả định tác tử chạy được toàn bộ ứng dụng

Quy trình của Tan cho tác tử quyền khởi động ứng dụng, điều hướng, kiểm tra trạng thái và đọc kết quả có cấu trúc. Mỗi tác tử có một bản ứng dụng đầy đủ để kiểm tra thay đổi từ đầu đến cuối, nhưng giả định này khó áp dụng nguyên trạng cho hệ thống gồm nhiều dịch vụ.

Kỹ năng xác minh do Tan mô tả tạo ra một giao diện dòng lệnh và bản đồ tính năng của ứng dụng. Qua giao diện đó, tác tử có thể vận hành ứng dụng và nhận kết quả ở định dạng JSON.

Tan xem môi trường thực thi này là hạ tầng thiết yếu. Cô thậm chí đề xuất xây công cụ gỡ lỗi chuyên sâu hoặc chọn một ngăn xếp công nghệ khác nếu điều đó tạo lợi thế rõ rệt về năng suất phát triển phần mềm.

Phạm vi nội dung của môi trường thực thi

Cách làm này phù hợp khi ứng dụng nằm gọn trong một tiến trình. Một giao diện người dùng, trình biên dịch hoặc dịch vụ đơn lẻ đi kèm cơ sở dữ liệu có thể khởi động từ dòng lệnh trong vài giây rồi bị xóa sau khi kiểm tra.

Hệ thống phân tán không đơn giản như vậy. Ứng dụng có thể là kết quả tương tác giữa dịch vụ đơn hàng, thanh toán, tồn kho, hàng đợi, nhiều cơ sở dữ liệu và các giao diện lập trình của bên thứ ba. The New Stack cho biết ở những tổ chức lớn, số dịch vụ có thể lên tới hàng nghìn.

Khởi động dịch vụ vừa sửa chưa đủ để xác minh yêu cầu hợp nhất mã. Bài kiểm tra còn phải đi qua các lời gọi mà dịch vụ gửi và nhận, nên môi trường xác minh phải tái hiện được các phụ thuộc liên quan.

Ba môi trường hiện có đều vướng giới hạn

Ba cách triển khai phổ biến đánh đổi giữa độ chân thực, khả năng cô lập, chi phí và tốc độ khởi tạo. Môi trường cục bộ dễ nhân rộng nhưng có thể dùng thành phần mô phỏng lỗi thời. Bản sao toàn bộ ngăn xếp chính xác hơn nhưng đắt, còn môi trường dùng chung dễ phát sinh xung đột giữa các thay đổi.

Mô hìnhƯu điểmGiới hạn
Cục bộ với thành phần mô phỏngChi phí thấp, chạy song songCó thể lệch khỏi dịch vụ thật
Sao chép toàn bộ ngăn xếpChân thực, cô lập tốtChi phí và thời gian khởi tạo cao
Môi trường thử nghiệm dùng chungChân thực, chỉ duy trì một bảnCác thay đổi có thể xung đột

Giới hạn của từng mô hình

Môi trường cục bộ hỗ trợ nhiều tác tử chạy song song qua cây làm việc riêng hoặc môi trường phát triển trên đám mây. Điểm yếu là độ trung thực. Thành phần mô phỏng phản ánh hành vi của một phụ thuộc tại thời điểm nó được tạo, nhưng có thể lệch khỏi dịch vụ thật ngay khi dịch vụ đó thay đổi. Tác tử có thể hoàn tất vòng kiểm tra dựa trên một giả định đã cũ, còn lỗi chỉ xuất hiện sau khi mã được hợp nhất.

Sao chép toàn bộ ngăn xếp cho từng thay đổi đem lại độ trung thực và khả năng cô lập tốt hơn. Tuy nhiên, theo phân tích của The New Stack, chi phí tăng theo số dịch vụ nhân với số thay đổi đồng thời. Khi có hàng trăm tác tử, mô hình này trở nên quá tốn kém. Một bản ngăn xếp đầy đủ còn mất nhiều phút để khởi tạo, trong khi tác tử cần kiểm tra sau từng lần sửa.

Môi trường thử nghiệm dùng chung có độ trung thực cao và rẻ hơn vì chỉ cần duy trì một bản. Chính đặc điểm dùng chung lại gây xung đột. Hàng trăm thay đổi đồng thời có thể ghi đè bản triển khai của nhau. Một thay đổi lỗi khiến bài kiểm tra của nhiều tác tử khác cùng thất bại, làm mất vòng phản hồi riêng mà quy trình cần.

Môi trường xác minh cho tác tử cần gì?

Môi trường xác minh cho tác tử phải kết hợp phụ thuộc thật, khả năng cô lập và tốc độ khởi tạo trong vài giây. Chi phí cần tăng theo phần mã thay đổi thay vì toàn bộ hệ thống, đồng thời tác tử phải điều khiển được môi trường bằng chính công cụ trong vòng lặp làm việc.

Từ quy trình của Tan, The New Stack rút ra năm yêu cầu:

  • Thay đổi phải chạy với các phụ thuộc thật để kết quả xác minh có ý nghĩa.
  • Hàng trăm thay đổi đồng thời phải được cô lập và không nhìn thấy nhau.
  • Chi phí môi trường phải tăng theo quy mô thay đổi, không tăng theo toàn bộ hệ thống.
  • Môi trường phải sẵn sàng trong vài giây để tác tử không lãng phí thời gian chờ cấp phát.
  • Tác tử phải điều khiển được mọi thứ qua giao diện dòng lệnh hoặc máy chủ giao thức ngữ cảnh mô hình mà nó đang sử dụng.

Yêu cầu về độ chân thực và yêu cầu về chi phí kéo kiến trúc theo hai hướng đối lập. Bản sao đầy đủ giữ được hệ thống thật nhưng đắt. Môi trường dùng chung tiết kiệm hơn nhưng mất khả năng cô lập. Muốn đáp ứng cả năm điều kiện, hạ tầng phải vừa chia sẻ vừa cô lập.

Đây cũng là phần cốt lõi của vận hành hạ tầng AI. Năng lực của mô hình chỉ tạo ra giá trị khi lớp thực thi, quan sát và kiểm soát theo kịp.

Sơ đồ hai môi trường tác tử riêng biệt kết nối với cụm dịch vụ ổn định dùng chung
Mỗi tác tử thấy một phiên bản hệ thống riêng trên cùng cụm ổn định.

Chia sẻ hệ thống, cô lập phần thay đổi

Kiến trúc được The New Stack mô tả chia sẻ các dịch vụ ổn định nhưng cô lập dịch vụ đang thay đổi. Mỗi tác tử nhìn thấy một hệ thống đầy đủ, trong đó mã mới chỉ thay thế đúng thành phần cần kiểm tra. Cách tổ chức này tránh phải sao chép toàn bộ ngăn xếp cho từng tác tử.

Một tập hợp dịch vụ ổn định hoạt động liên tục, được triển khai từ nhánh chính và duy trì theo cách tương tự môi trường thật. Khi cần xác minh thay đổi, tác tử chỉ chạy dịch vụ mà nó đã sửa, trên máy riêng hoặc dưới dạng một bản triển khai nhẹ trong cụm. Dịch vụ này được nối vào ngăn xếp dùng chung như một môi trường cô lập mới.

Cách cô lập từng thay đổi

Bên trong môi trường đó, phiên bản vừa thay đổi được ưu tiên. Những lời gọi còn lại đi tới các dịch vụ ổn định dùng chung. Mỗi tác tử vì thế nhìn thấy một hệ thống đầy đủ nhưng chỉ khác đường cơ sở ở phần mã của chính nó.

Yêu cầu mạng mang theo danh tính môi trường khi đi qua ranh giới dịch vụ. Nhờ đó, lưu lượng của tác tử này không chạm vào phiên bản đang được tác tử khác kiểm tra. Những thành phần có trạng thái không thể chia sẻ an toàn, như chủ đề hàng đợi hoặc cơ sở dữ liệu cho phép ghi, được cấp bản riêng khi cần.

The New Stack đưa ra ví dụ trong đó chi phí của một môi trường chỉ còn tương đương một hoặc hai dịch vụ đang chạy thay vì 60 dịch vụ. Môi trường sẵn sàng trong thời gian một dịch vụ khởi động và có thể được tạo hoặc xóa ngay trong vòng lặp của tác tử. Signadot đóng gói mô hình này cho Kubernetes, còn ngăn xếp ổn định dùng chung tiếp tục chạy trong cụm hiện có của nhóm.

Vòng lặp hoàn chỉnh diễn ra như thế nào?

Trong vòng lặp hoàn chỉnh, tác tử sửa một dịch vụ, tạo môi trường riêng, gửi yêu cầu qua các phụ thuộc thật và đọc kết quả có cấu trúc. Tác tử tiếp tục sửa và chạy lại cho đến khi kiểm tra đạt yêu cầu, sau đó mở yêu cầu hợp nhất mã và xóa môi trường.

  1. Tác tử nhận nhiệm vụ và sửa một dịch vụ.
  2. Một môi trường dành riêng được tạo cho thay đổi đó.
  3. Qua điểm vào của hệ thống, tác tử gửi các yêu cầu thật.
  4. Yêu cầu đi qua đồ thị phụ thuộc thật, trong khi chỉ dịch vụ được sửa chạy mã mới.
  5. Tác tử đọc kết quả có cấu trúc, sửa phần thất bại và chạy lại.
  6. Khi toàn bộ kiểm tra đạt yêu cầu, tác tử mở yêu cầu hợp nhất mã.
  7. Môi trường được xóa sau khi thay đổi được hợp nhất.

Với đội nền tảng, đơn vị công việc cũng thay đổi. Thay vì cấp từng môi trường thử nghiệm hoặc tạo thêm bản sao toàn hệ thống, đội này vận hành một ngăn xếp ổn định cùng lớp ảo hóa phía trên. Lớp đó phụ trách truyền ngữ cảnh qua các dịch vụ, cô lập thành phần có trạng thái và cung cấp công cụ tạo hoặc hủy môi trường.

Cách tổ chức này biến môi trường từ tài nguyên do đội nền tảng phân phát thành tài nguyên mà tác tử tự tạo, sử dụng rồi loại bỏ. Nó phù hợp với hướng phát triển của tác tử AI lập trình, nơi tác tử không chỉ viết mã mà còn phải tự vận hành vòng kiểm tra.

Năng lực xác minh là trần thông lượng mới

Trường hợp của Lauren Tan cho thấy thông lượng của tác tử phụ thuộc vào khả năng hoàn thành toàn bộ vòng lặp, từ viết thay đổi, chạy kiểm tra đến sửa lỗi. Nếu mỗi thay đổi vẫn phải chờ một người xác minh, việc tăng số tác tử chỉ chuyển nút thắt sang hàng đợi rà soát.

Với ứng dụng phân tán, lớp xác minh phải cung cấp phụ thuộc thật cho từng tác tử, cô lập hàng trăm thay đổi đồng thời, tính chi phí theo phần thay đổi thay vì toàn hệ thống và sẵn sàng trong vài giây. Khi đáp ứng được các điều kiện này, năng lực chạy song song mới có thể chuyển thành mã thực sự được triển khai vào môi trường sản xuất.

Hãy xem lại quy trình phát triển của đội bạn và tìm bước xác minh đang buộc tác tử phải dừng lại chờ con người.