
Aviator hər sətiri oxumadan 4x daha çox AI kodunu necə nəzərdən keçirir
Aviator-da doqquz mühəndis xam diff-lər əvəzinə niyyəti, qəbul meyarlarını, invariantları, qərarları və sübutları yoxlamaqla 4x daha çox pull request birləşdirdi. Median birləşmə vaxtı 2.1 gündən 3.4 saata düşdü, geri qaytarmalar 40% azaldı.
Aviator deyir ki, eyni doqquz mühəndis kod nəzərdən keçirməni xam diff-ləri oxumaqdan niyyəti, qəbul meyarlarını, invariantları, qərarları və konkret sübutları yoxlamağa dəyişdikdən sonra 4x daha çox pull request birləşdirdi. Birləşməyə qədər median vaxt 2.1 gündən 3.4 saata düşdü, geri qaytarmalar 40% azaldı və hər pull request-ə hələ də insan təsdiq verir.
Problem: kod nəzərdən keçirməsi AI ilə miqyaslana bilmir
Komandanın kodu insan tərəfindən yazılmış, AI dəstəkli koddan AI tərəfindən yaradılmış, insan dəstəkli koda keçdi. Həftəlik birləşdirilmiş pull request-lər təxminən 100-dən 400-dən çoxa qalxdı və median AI ilə yaradılmış pull request 640 sətirə çatdı, 400 sətirlik həddi keçdi; bu hədd xəta aşkarlamasının azaldığı hesab olunur.
Xətaları tutmaq hər halda kod nəzərdən keçirmənin əsas məqsədi olmayıb. Bacchelli və Bird-in 2013-cü ildə Microsoft-da apardığı tədqiqatda nəzərdən keçirmə şərhlərinin yalnız 14%-i qüsurlarla bağlı idi. Nəzərdən keçirmə mühəndislərin bilik paylaşdığı və sistemin mental modelini aktual saxladığı yoldur; məhz bu hissə qorunmağa dəyər. Agentlər kodun böyük hissəsini yazanda bu hissə ən çox risk altına düşür. Onlardan nəzərdən keçirməyi sadəcə dayandırıb-dayandırmadıqları soruşulanda komanda xeyr deyir: onlar diff-i nəzərdən keçirməyi dayandırdılar. Onların nəticəsi budur: qərarlar insana lazımdır və diff qərar vermək üçün ən pis yerdir.
Nə dəyişdi: sətirləri deyil, niyyəti yoxlayın
Kod nəzərdən keçirmə əvvəllər bir neçə işi eyni anda görürdü: xətaları tutmaq, komanda qaydalarını tətbiq etmək, dizayn qərarlarını həll etmək və hamının sistemi anlayışını aktual saxlamaq. Komanda bu işləri böldü və hər birinə daha yaxşı yer verdi.
Niyyət və qəbul meyarları agentlə kodlaşdırma sessiyasından alınır, əvvəlcədən yazılmış spesifikasiya kimi deyil. Mühəndis hər dəfə agenti düzəldəndə və ya onun sualına cavab verəndə bir meyar yaranır. Komanda deyir ki, əvvəllər sessiya bitəndə onları atırdı. Niyyət dəyişikliyin niyə edildiyini cavablandırır; qəbul meyarları isə onun necə davranmalı olduğunu. Meyarsız niyyət yoxlana bilməz, niyyətsiz meyar isə qiymətləndirilə bilməz.
Məhz həmin ikinci hissə diff oxuyan nəzərdən keçirənin heç vaxt yoxlamayacağı şeydir. Hər meyar brauzer tələb etmir: API müqaviləsi qeydə alınmış sorğu və cavabla sübut olunur, kod qaydası isə ast-grep uyğunluğu və ya fayl-sətir istinadı ilə. Məsləhət sualı həll edən ən ucuz sübutu seçməkdir. Yaşıl CI yoxlaması yalnız düşündüyünüz testlərin keçdiyini deyir.
Qərarlar üç yerdən gəlir: kodlaşdırma sessiyası, agentlərin arqumenti və uğursuz yoxlama işləri. Pull request hər birini, haradan gəldiyini və kimin həll etdiyini siyahıya alır. Uğursuz webhook çatdırılmaları üçün təkrar cəhdlər əlavə edən pull request-də beş qərardan dördü həll olunmuşdu; agentlər təkrarlanan çatdırılmaların deduplikasiya edilib-edilməməsi barədə razılaşmadıqları üçün bunu insan həll etdi.
Mühəndislər hər sətiri oxumağı dayandırırlar. Onlar hər sətiri yoxlayan qaydalara sahib olurlar və sistemi anlayışlarını niyyəti, sübutları və qərarları oxumaqla saxlayırlar.
Nəticələr
Nəzərdən keçirmə işi yox olmadı. O, invariantları təkmilləşdirməyə, qərarları müzakirə etməyə və yoxlamaları yaxşılaşdırmağa keçdi. Keçid ağrılı ola bilər: birinci ay ikiqat işdir, ikinci ay invariantlar kifayət qədər inkişaf edir ki, nəzərdən keçirmələr kiçilir, üçüncü ay isə insanlar kodu deyil, niyyəti və sübutları oxuyurlar.
Mənbələr: The New Stack
SiTech — AI ilə gücləndirilmiş veb hazırlanması
Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.