Защо обикновените „Да" или „Не" не стигат на AI кодера ти
Защо порталите за сливане на AI код трябва да са по-умни от "Да" или "Не"
Представи си следното: твоят AI асистент току-що е подал pull request. Всички тестове минават. Линтерът е доволен. Скенерът за сигурност не дава никакви сигнали за тревога.
Хубаво, нали?
Ами не точно.
Когато опростяването пречи
Традиционните CI/CD портали са страхотни за човешки код, защото хората си остават предвидими. Допускаме грешки, които си личат — бъркаме edge cases, кръщаваме променливите зле, мързела ни е.
При AI обаче нещата стоят съвсем различно. Генерираният код понякога е напълно функционален, но крие проблеми, които не се виждат веднага: прекалено сложни решения за прости задачи, код който работи днес, но нещата ще се усложнят утре, или пък допускания за системата, които не винаги са верни.
Един булев портал — merge или block — просто не разбира тази реалност. Той третира качеството като двубройна стойност, а то по-скоро прилича на скала с различни прагове в различни контексти.
Как AI кодът е различен
Тук става интересно. Когато човек пише код, грешките му издават слабите му места. Когато AI пише код — нещата са по-хитри:
Проблемът "технически верен": Кодът работи, но решава задачата на грешно ниво на абстракция. Минава всички тестове, но натрупва технически дълг, който расте с времето.
Слепотата към контекста: AI е много добър в изолирани задачи, но когато кода трябва да се интегрира с останалата част от системата, нещата могат да се счупят. Булевият портал вижда зелени тестове и пуска сливането. По-умният портал би маркирал потенциални проблеми с интеграцията.
Капана "достатъчно добро за днес": AI често оптимизира за текущите изисквания, без да мисли за бъдещето. Булев портал не може да прецени разликата между "това работи перфектно за нашия случай" и "това едвам минава".
Портали с нюанси
Какво би бил по-добрият портал за сливане? Започва се с изоставяне на булевата логика и приемане на градуирана оценка.
Помисли за нивата: код с провал по критични точки (сигурност, счупена функционалност) — блокира се. Код с провал по качествени показатели (стил, лека сложност) — маркира се за човешка преценка. Код който минава всичко — слива се спокойно.
Това не е мекота към качеството. Това е реализъм относно това как трябва да оценяваме AI код. Пропуск в сигурността е binary. Прекалено дълго име на функция е разговор.
Моделът човек + AI
Ето какво мисля: AI асистентите не заместват човешката преценка — те я подсилват. Твоят портал за сливане трябва да отразява това.
Някои екипи експериментират с портали, които оценяват кода по няколко измерения — коректност, поддържаемост, сигурност, производителност — и насочват pull request-ите съответно. Една проста поправка с висока коректност, но по-ниска поддържаемост, може да мине с минимален преглед. Голяма функционалност с различни оценки по всички показатели — заслужава пълно човешко внимание.
Този подход уважава и скоростта, която AI позволява, и мъдростта на опита.
Къде е твоят баланс
Нивото на сложност на портала зависи от контекста ти. Стартъп, който се стреми към бързо пускане, може да приеме повече риск в името на скоростта. Предприятие, което работи с чувствителни данни, вероятно се нуждае от по-строг контрол.
Едно е универсално: третирането на AI кода като "стига за merge" или "не става" е фалшива дилема. Софтуерът, който градим, е твърде сложен, а инструментите — твърде мощни, за опростени оценки.
Твоят портал за сливане трябва да е най-умната част от цялата ти система — защото е последната линия на защита между възможностите на AI и реалността в production.
Какъв подход е работил (или не) за твоя екип? Искрено съм любопитен как другите мислят по този проблем.