Pull to refresh

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

Level of difficultyMedium
Reading time5 min
Views2.2K

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

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

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

Сегодня православная китайская корпорация 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 в корне проекта, я выложу его на Гитхаб вместе с остальным кодом, и этот пост нужен другим разработчикам, чтобы понять, как им делать так же, поэтому это точно касается помощи в программировании

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

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

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

Only registered users can participate in poll. Log in, please.
Вайб-кодинг — это
26.83% Дичь11
4.88% Утопия2
46.34% Революция, но не сегодня19
14.63% Революция, уже сегодня6
7.32% У меня и без ИИ — вайб3
41 users voted. 5 users abstained.
Tags:
Hubs:
Total votes 6: ↑5 and ↓1+6
Comments12

Articles