Чи ваш код дійсно працює? Як змусити ШІ-асистента перевірити себе (і не тільки!)

    Привіт! На зв’язку Casey Byte. Минулого року я, як і дехто з вас, скептично ставився до ШІ-асистентів для кодування. Зокрема, сумніви викликало завдання довірити їм не лише планування, а й реалізацію та перевірку коду. Звучить парадоксально, чи не так? Однак з часом технології розвиваються, а разом з ними й наше розуміння. Головне – не боятися експериментувати.

    Тепер я готовий поділитися з вами, як перетворився із скептика на активного користувача ШІ-асистентів для написання, а головне – для самоперевірки коду. Так-так, все правильно. Мій підхід, який я називаю P.I.V. (Production, Implementation, Validation, хоча, якщо бути точним, це більше про Plan, Implement, Validate), передбачає не лише написання коду, а й надійну верифікацію. Саме про цю незаслужено обділену увагою зірку AI-коду – валідацію – ми сьогодні й поговоримо.

    Більшість із нас, почувши про валідацію коду за допомогою ШІ, уявляють щось просте: кілька юніт-тестів, запуск лінтера та, можливо, перевірка запуску програми. Насправді, це як дати дитині пластилін і сподіватися на скульптуру Мікеланджело. Зізнаюсь, я вирішив піти далі. Переді мною постало завдання: як зробити так, щоб мій ШІ-асистент міг самостійно перевіряти свою роботу? Як зробити це повноцінно, наскрізно та замінити години ручного тестування? Результати перевищили всі очікування. Я створив систему, яка працює автономно, перевіряючи код від першого до останнього кліку користувача. Найцікавіше – я знайшов один, єдиний запит (prompt), який це все запускає. Готові дізнатися, як змінити своє життя розробника? Поїхали!

    Розділ 1: Перший собачий блокчейн і моя недовіра до “розумних” машин

    Пригадую, як вперше почув про AI coding assistants. Це було близько року тому. Колеги-розробники, з якими ми обідали піцою після довгих дебагів, захоплено ділилися, як пишуть код за допомогою GitHub Copilot чи подібних інструментів. А я сидів, жував і думав: “Серйозно? Це як віддати ключі від машини роботу-пилососу, який ще вчора вчився не в’їжджати в стіну”.

    Моя логіка була проста: великі мовні моделі (LLMs) були круті для планування. Написати план проєкту? Легко. Згенерувати структуру функцій? Без проблем. Але щоб вони реалізовували і, не дай Боже, перевіряли код? Ні. Це вже занадто. Це як попросити сусіда-велосипедиста зробити операцію на серці. Він, можливо, й багато читав, але руки не ті.

    Моя недовіра була глибокою. Я завжди вважав найважливішим глибоке розуміння структури, логіки та потенційних багів. А ШІ? Він не “відчуває” коду, а лише генерує його за шаблонами. Я боявся купи прихованих помилок, які вилізуть у найневідповідніший момент.

    Ця думка не давала мені спокою. Я бачив, як колеги все успішніше використовують ці інструменти, а я сиджу зі своєю “старою школою”. Тоді я вирішив: досить! Треба або прийняти цю реальність, або довести, що вона не працює. Але доводити, не спробувавши, було б неправильно.

    Так почалася епопея з PIV – системою, яка дозволяє AI-асистентам не тільки писати код, а й перевіряти його. І саме валідація, найменш оцінений елемент, стала справжнім відкриттям.

    Розділ 2: “Скажи мені, що далі”, або Як ШІ почав перевіряти себе

    Думаєте, я просто так відмахнувся від своїх переконань? Ні. Мої принципи не терплять компромісів. Але я зрозумів, що валідація – це не просто “написати тести”. Це цілий процес, який раніше вимагав від мене багато часу.

    Уявіть: ви додали нову функцію. Супер! Тепер потрібно пройтися по всіх сценаріях користувача, перевірити інтеграції з іншими сервісами (Telegram, GitHub – мої “улюбленці”), переконатися, що все працює як годинник. А якщо у вас додаток, як у мене, який працює віддалено, інтегрується з купою платформ, ще й кастомізовані команди підтримує… Тоді це вже як початок довгої і нудної пісні про тест-драйв.

    Це мене виснажувало. Я розробляв додаток для віддаленого кодування – щось на кшталт Cloud Code, але повністю самостійно, з інтеграцією з Telegram, GitHub, Slack та різними асистентами… Після кожної зміни замість радості від нової функції я занурювався в тестування. А це, погодьтеся, не зовсім та радість, яку обіцяють рекламні ролики про AI.

    Як зробити так, щоб ШІ-асистент самостійно перевіряв свою роботу? Не просто писав тести, а робив це як користувач?

    Я почав експериментувати. Замість стандартних запитів, де просив “напиши тести”, я формулював так: “Проаналізуй цей код. Зрозумій усі можливі сценарії. Уяви себе користувачем. Використовуй для тестування все, що є під рукою – GitHub CLI, Docker, Telegram API. Не бійся створювати штучні репозиторії, симулювати команди, будь максимально винахідливим. Головне – створи мені команду, яка зможе це зробити повністю автономно”.

    Це був мій “козирний туз”. Я просив “змусити ШІ стати користувачем і перевірити програму з усіх боків”. І це спрацювало!

    Розділ 3: “Хочу, щоб це працювало, як мій бабусин пиріжок”: Звідки взялася ідея “глибокої” валідації

    Пам’ятаєте, я казав, що перший собачий блокчейн – мій головний біль? Валідація – мій найсильніший козир. Знаєте, як буває: працюєш над проєктом, вкладаєш душу, години, ночі без сну. Додаєш щось незначне, а потім виявляється, що через це все летить шкереберть. Ось це відчуття, коли думаєш: “Ну чому я цього не перевірив?”.

    Саме усвідомлення цієї проблеми штовхнуло мене на створення “глибокого” методу валідації. Я не хотів просто зелені галочки в юніт-тестах. Я хотів бути впевненим, що мій додаток працює коректно у всіх життєвих ситуаціях.

    Народилася метафора: “Як би я робив це сам?”. Я ж не просто пишу тести. Я створюю репозиторій, запускаю його, тестую інтеграції, перевіряю бази даних, пишу відгуки, відкриваю пулл-реквести… Список можна продовжувати. Я подумав: “Чому б не навчити ШІ робити саме це?”.

    Це було як переписати сценарій. Замість того, щоб просити ШІ “писати код”, я казав: “Ось моя програма. Ось ти – користувач. Ось твої інструменти – GitHub CLI, Docker. Твоя мета – зробити все, що зробив би я, щоб переконатися, що нова функція працює”.

    Це було проривом. Я побачив, як ШІ-асистент не просто генерує код, а й використовує його для перевірки. Він створював тимчасові репозиторії, симулював взаємодію з Telegram, перевіряв, чи правильно записується інформація в базу даних, відкривав пулл-реквести… Це як ваша бабуся, що знає, який пиріжок вам подати, бо пам’ятає, що минулого разу ви просили з яблуками, а не з капустою. Тільки в масштабах складного програмного забезпечення.

    Розділ 4: “Великий брат” стежить за кодом: Як виглядає реальна автономна валідація?

    Коли я сформулював той самий “мета-запит”, який став основою моєї validate.md команди, був у захваті. Це було щось на кшталт:

    “Привіт, ШІ-асистенте! Я маю для тебе завдання. Ти – мій головний тестувальник. Твоя місія – забезпечити повну валідацію цього проєкту. Проаналізуй його повністю: структуру, логіку, взаємодію компонентів. Потім, будь ласка, напиши команду (або серію команд), яка буде виконувати цю валідацію. Але не обмежуйся лише unit-тестами чи лінтерами. Я хочу, щоб ти перевірив все:

    1. Docker-контейнери: розгорни їх, перевір роботу.
    2. GitHub-інтеграція: створи новий репозиторій, імітуй згадки (mentions), перевір створення пулл-реквестів.
    3. Telegram-симуляція: створи API-ендпоінти для імітації роботи Telegram.
    4. База даних: перевір, чи коректно зберігаються дані, чи їх можна отримати.
    5. Кастомні команди: перевір всі мої власні команди, які я використовував для Prime, Plan, Execute.
    6. Загальна функціональність: імітуй реальні користувацькі сценарії.
    7. Підсумковий звіт: надай детальний звіт про всі успіхи та невдачі.

    Головне – зроби все так, ніби ти – досвідчений розробник, який має перевірити код перед релізом!”

    Ось що я отримав у відповідь… Це вражало. ШІ згенерував не просто список тестів. Він згенерував команду, яка сама себе виконує.

    Ось як виглядає цей процес:

    • Вищий рівень тестування: Спочатку запускаються класичні перевірки – лінтинг, типізація, unit-тести. Це як розминка перед головним матчем.
    • Тестовий стенд: Далі – магія! ШІ самостійно створює новий GitHub-репозиторій. Так, ви правильно почули. Він розгортає для мене тестову інфраструктуру. Туди ж налаштовує вебхуки, щоб отримувати згадки.
    • Симуляція Telegram: Навіть написав свій код для імітації функціональності Telegram, додавши відповідні API-ендпоінти. Це як мати клона Telegram, але тільки для тестування.
    • Docker-тести: Проходить тестування Docker-контейнерів.
    • Перевірка бази даних: Верифікація, чи правильно зберігаються дані. Наприклад, чи мої розмови з агентом записуються в базу.
    • GitHub-інтеграція на повну: Штучне створення issue, згадування агента, перевірка створення пулл-реквесту. Це справжній “великий брат”, який стежить за кодом!
    • Паралельні агенти: ШІ навіть тестує, чи може запускати різних агентів паралельно. Це для мене було опціонально, але він це робить!
    • Кастомні команди: Перевірка моїх власних “фішок” – Prime, Plan, Execute.

    Найцікавіше – цей процес, хоч і виглядає довгим, виконується дуже швидко. Це не займає години. Хвилини. І він завжди дає однаковий, структурований звіт.

    Цікаво знати: Найкраще в цьому – навіть якщо ШІ помиляється, він часто виправляє себе сам! Це справжній цикл самокорекції.

    Розділ 5: “Не лякайтесь, це не інопланетний код”: Як застосувати це на будь-якому проєкті (і чому це вам потрібно)

    Ви можете подумати: “Casey, це круто, але це ж для твоїх складних проектів. А як щодо мого маленького веб-додатку?”. Або: “Це надто складно, я руками зроблю швидше”.

    Я вас розумію. Сам так думав. Але дозвольте запевнити: цей підхід – не ракетобудування, а новий спосіб мислити про тестування.

    Як це працює на практиці?

    1. Універсальність: Ви можете взяти цей “мета-запит” і застосувати його до будь-якого проєкту. Неважливо, чи ви пишете на Python, JavaScript чи іншій мові.
    2. Легкість запуску: Якщо ви використовуєте AI-асистента з підтримкою слеш-команд (наприклад, Cloud Code), то це просто ultimate validate command. Без аргументів. Просто відправляєте і чекаєте. Якщо ваш асистент не підтримує слеш-команди (наприклад, Cursor), можна просто скопіювати команду як текст і попросити асистента виконати інструкції.
    3. Економія часу: Замість 20-30 хвилин ручного тестування, ви можете запустити процес, піти випити кави, перевірити пошту, і повернутись, коли все буде готове.
    4. Підвищення впевненості: Навіть якщо ви не повністю довіряєте автоматиці, ви отримуєте глибшу впевненість у якості коду. Я б ніколи не відправив код у продакшн, покладаючись лише на автоматичну валідацію. Але комбінація “я + ШІ” – зовсім інша справа. Це як мати надпотужного помічника, який бачить те, що ви можете не помітити.
    5. Виявлення неочікуваних багів: Я виявив баги, які сам би шукав днями. Це неочікувані сценарії, які виникають, коли система діє як реальний користувач.

    Гумористичне застереження: Не робіть того, що колись робив я – спробуйте запустити команду та забудьте про неї на годину. Поверніться, коли вона завершить роботу. Перевірте, чи ніхто не вкрав ваш комп’ютер, поки ви були захоплені кавою.

    Розділ 6: “Історія одного виклику”: Як я навчив АІ бути “моїм дзеркалом”

    Це почалося з мого власного проєкту – віддаленого AI-агента. Це була моя особиста “піч”, яку я будував годинами, намагаючись зробити її максимально гнучкою та розширюваною. Інтеграції з Telegram, GitHub, можливість вибору різних асистентів – все це вимагало купу тестування.

    Я сидів і думав: “Як полегшити собі життя?”. Відповідь була очевидною – делегувати. Але делегувати не просто написання коду, а й перевірку.

    Я створив файл pleasehelp.md і написав:

    “Потрібна допомога з валідацією проєкту. Є багато різних сценаріїв користувача та граничних випадків, які потрібно протестувати. Проаналізуй код, зрозумій структуру проєкту та запропонуй, як можна перевірити його повністю. Які інструменти ти б використав? Наприклад, це Docker-додаток, ми використовуємо GitHub, тож GitHub CLI – це хороша опція.”

    Це був початок. Я хотів, щоб ШІ діяв як я, використовуючи ті самі інструменти. І я наполягав на “end-to-end”, не стримуючи його. Я хотів щоб він згенерував максимально докладний документ з командами.

    Коли ви просите ШІ діяти як користувач, використовуючи інструменти, він починає генерувати глибші рішення.

    Висновок: Ваша нова суперсила – автономна якість коду

    Ми пройшли шлях від скептицизму до захоплення. Ми побачили, як простий запит перетворює AI-асистента на всеосяжного тестувальника. Цей “мета-віджет” – не просто інструмент, а зміна парадигми.

    • Ви не просто пишете код. Ви створюєте систему, яка самостійно перевіряє себе.
    • Ви не витрачаєте години на тестування. Ви інвестуєте хвилини в налаштування, які окупаються сторицею.
    • Ви отримуєте впевненість. Таку, яку важко було досягти навіть при ретельному ручному тестуванні.

    Спробуйте це! Цей “ultimate validate command” доступний за посиланням в описі. Навіть якщо у вас вже є система валідації, ви знайдете щось нове. Він працює. Він послідовний. Він вражаючий.

    Пам’ятайте: це лише початок. Майбутнє AI-кодингу – не просто генерація коду, це створення інтелектуальних систем, які допомагають нам, розробникам, досягати нових висот.

    Що далі?

    1. Спробуйте команду: Перейдіть за посиланням, отримайте команду та запустіть її на своєму проєкті.
    2. Поділіться досвідом: Напишіть у коментарях, як пройшла ваша валідація. Які результати? Чи знайшли ви неочікувані баги?
    3. Готуйте запитання: Наступного разу я розповім про ще більше цікавого з AI-кодингу.

    Ми розвінчали міф про обмеженість AI-асистентів у валідації. Я показав вам, як створити власну систему самоперевірки коду, яка може прискорити ваш розробницький цикл та підвищити якість продукту. Це не просто “розумніший” інструмент, це ваш новий колега, який не втомлюється і завжди готовий перевірити вашу роботу.

    Дякую, що були зі мною. Якщо вам сподобалося це відео, будь ласка, поставте лайк і підпишіться на канал. З вами був Casey Byte. До зустрічі в наступному відео!

    Поділитися.
    0 0 голоси
    Рейтинг статті
    Підписатися
    Сповістити про
    guest
    0 Коментарі
    Найстаріші
    Найновіше Найбільше голосів
    0
    Буду рада вашим думкам, прокоментуйте.x