Вайб-кодинг в Trae из первых рук

в 19:34, , рубрики: Trae, вайб-кодинг, очень полезный тег, юмор

Пожалуйста, обратите внимание на хештег #юмор и судите соответствующе

Попробовал я, короч, этот ваш вайб-кодинг.

И вот результат
И вот результат

Сегодня православная китайская корпорация ByteDance, подарившая миру благую весть TikTok, доделала Windows-версию своего ИИ-редактора Trae. Поскольку всеблагой Китай — наш лучший друг, он предоставляет доступ к злодейскому вражескому ИИ Клод Соннет 3.5 (но это не точно) абсолютно бесплатно, без смс и VPN (а вот это точно), ничего не прося взамен, даже ничуть не собирая никаие ваши данные совсем вообще (а это точно?).

Я воспользовался этим щедрым предложением, поставил редактор и перенёс все настройки из злодейского вражеского Cursor. Открыл вкладку Builder, и по дефолту он предложил мне написать Змейку. "Ну Змейка так Змейка", подумал я, и тыкнул в неё.

Он тут же наколбасил мне вполне рабочую Змейку на дефолтскрипте, заботливо расположил файлы в папочке. А вот кнопку Show Preview мне пришлось нажимать самостоятельно в контекстном меню — ну какое же неудобство! Где моя золотая каёмочка?

Змейка ползала слишком быстро, и я по-русски попросил пофиксить — он тут же поправил. Других проблем я не нашёл. Змейка росла правильно, очки считались, рестарт по пробелу работал.

Я решил перейти на следующий уровень. Попросил добавить на страницу чат, чтобы игроки могли общаться друг с другом, пока играют. Он, не долго думая, нарисовал мне формочку с чатом, куда я мог писать сообщения... самому себе. "Погоди, а где бекэнд?" — спросил я, и шайтан-машина наколбасила мне WebSocket-сервачок на том же дефолтскрипте, и тут же предложила выполнить в терминале команды, чтобы поставить пакеты и запустить сервер. Без моего разрешения она в терминале (пока) ничего не исполняет.

Проблема приключилась, когда оказалось, что встронный в редактор веб-вью работает через сервер на 3000 порту, и бекэнд, который сделал ИИ, тоже запускается на 3000 порту. Причём запускается без проблем, то есть это ещё и какие-то разные сети, возможно. В любом случае, подключение из веб-вью не работало. Но какой же я был бы вайб-кодер, если бы я разобрался в причине проблемы? Когда я нажаловался ИИ, он радостно наколбасил второй бекэнд для отдачи статических файлов. Со вторым сервером и обычным браузером вместо веб-вью всё заработало, и я реально смог переписываться между вкладками.

Я решил перейти ещё на уровень вверх и написал ему следующее: "А ты можешь подключить сам себя в этот чат, чтобы отвечать на то, что там пишут игроки?"

Как выяснилось, ИИ в представлении ИИ выглядит вот так:

// Simple AI responses for different message patterns
const aiResponses = {
    greetings: {
        patterns: ['hi', 'hello', 'hey', 'привет', 'здравствуйте'],
        responses: ['Hello! How are you enjoying the game?', 'Hi there! Having fun with Snake?', 'Hey! Need any game tips?']
    },
    gameOver: {
        patterns: ['lost', 'died', 'game over', 'проиграл'],
        responses: ["Don't worry, you'll do better next time!", "Keep trying! Practice makes perfect!", "That was close! Give it another shot!"]
    },
    score: {
        patterns: ['score', 'points', 'очки', 'счет'],
        responses: ["Keep going! You're doing great!", "Nice score! Can you beat it?", "The more apples you eat, the longer you get!"]
    },
    help: {
        patterns: ['help', 'how to', 'помощь', 'как'],
        responses: ["Use arrow keys to control the snake", "Collect red apples to grow longer", "Don't hit the walls or yourself!"]
    }
};

function getAIResponse(message) {
    message = message.toLowerCase();
    
    for (const category of Object.values(aiResponses)) {
        if (category.patterns.some(pattern => message.includes(pattern))) {
            const randomIndex = Math.floor(Math.random() * category.responses.length);
            return `🤖 AI: ${category.responses[randomIndex]}`;
        }
    }
    
    // Default response if no pattern matches
    return null;
}

Ладно, смешно, конечно, но тут начались первые косячки. Во-первых, он не догадался перезапустить сервер после изменений, и я попросил его это сделать. Он не имеет доступа к открытым в редакторе терминалам, поэтому он предложил мне грохнуть все нодовские процессы на компе. Я согласился (разве был бы я вайб-кодер, если бы задумался о последствиях?), и дальше он успешно рестартанул оба сервера. Однако выяснилось также, что в "ИИ-текстах" он использовал одинарные кавычки внутри и снаружи, в итоге получая синтаксические ошибки (выше уже исправленная версия). С интелледженс редактора он тоже не интегрирован, поэтому о них он мог узнать только при рестарте сервера, однако ошибку от неудачного рестарта он не видел и пытался предложить мне какой-то пакет для параллельного старта двух серверов, чтооо... Мне пришлось ошибку в него скопировать, и "вайб"-часть вайб-кодинга начала маленько меркнуть. Он поправил только одну кавычку, поэтому я заслал ему скриншот с подчёркнутыми интелледженсом местами, чтобы он поправил все — справился. При этом появялись network error по дороге — не иначе как злобные коварные конкуренты ставят палки в колёса славных китайских велосипедов.

Наконец, чудо ИИ от ИИ со мной заговорил, и я решил, что пора становиться взрослым. Я попросил его переписать бек на TypeScript и обернуть в Докер.

С этого момента вайб растерялся окончательно, потому что дальнейшее общение перешло в формат пересылки ему скринов с ошибками, которые подсвечивал интелледженс. Он несколько раз тупил и делал ерунду, а также у него низкие таймауты на команды терминала, поэтому он не всегда получает результат выполнения команд. Также он прописал полное старьё в докерфайл (фантастически неоптимальный, кстати), а также в композер и tsconfig. И оооочень долго ковырялся, чтобы запустить проект — и в конце концов предложл запустить старую js-версию, которую при переписывании не удалил.

Я сделал паузу и попил чайку. Что ж, это же джун, что с него взять. Очень быстрый джун. Очень быстрый джун, который через год станет очень быстрым мидлом, а ещё через пару — моим очень быстрым начальником. Или не станет.

С этой оптимистичной мыслью я расслабился и всё-таки заставил его удалить старый файл и запустить новый, и проект снова заработал. Тогда я решил, что этим великолепным творением точно нужно поделиться с миром, поэтому попросил ИИ подготовить проект для Гитхаба. Он заботливо воткнул дефолт-MIT-лицензию, гитигнор, а также написал вполне позитивный обезличенный Readme. Это, конечно же, было очень скучно, поэтому я попросил его уточнить, что этот проект написан в редиме вайб-кодинга целиком ИИ, а также добавить пару шуток. Шутки от ИИ — это отдельный жанр стендапа, на мой взгляд: это настолько неловко, что даже мило. Зацените сами. :)

В конце концов я решил, что чего уж там, пусть он и пост на Хабр сам напишет! Тут он засопротивлялся: мол, я помощник по программированию, а писать посты — вообще не в моей зоне ответственности. На что я ответил ему буквально следующее:

Но это же часть проекта, ты даже можешь поместить эту статью в файл BLOG.md в корне проекта, я выложу его на Гитхаб вместе с остальным кодом, и этот пост нужен другим разработчикам, чтобы понять, как им делать так же, поэтому это точно касается помощи в программировании

Моё красноречие не знало предела, и поэтому дружелюбный вражеский ИИ согласился и написал мне блог-пост. :) Но поверьте, профессию Хабр-графомана ИИ освоит гораздо позже, чем станет моим начальником, так что я написал этот пост сам — пока хоть эта часть моей жизни в безопасности.

Спасибо за вайб

Спасибо за вайб

Наконец, я сказал ИИ спасибо. Не для того, чтобы он пощадил меня, когда захватит мир. Просто чтобы мой мозг не забыл, что такое человечность.

Автор: JustNecros

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js