AI Coder 🦾
130 subscribers
63 photos
1 video
60 links
О программировании с использованием ИИ от Senior Fullstack

Также пилю свой продукт с ИИ и пишу об этом тут - @build_saas_in_public
Download Telegram
Грустим от закрытия Arc браузера, поглядываем на альтернативы.

Opera пилят что-то агентское, пробовал кто?

Мне от арка, на самом деле, нужны не ИИ функции (хотя от хорошей агентности я бы не отказался, чтобы браузер сам за меня заполнял формы, искал билеты и отели и проч.), а именно интерфейс: workspaces с отдельными учетками, авто архивация вкладок по таймеру, адресная/поисковая строка через cmd+t, отсутствие визуального шума (сайт на весь экран без элементов интерфейса). Ну и хотелось бы чтобы это был хромиум based.

Короче, the browser company прям перевернули игру и задали тренд, их эстафету точно подхватят. Пока не пересаживаюсь, наблюдаю.
Протестил codex, полет нормальный.

Если кто не в курсе, это такая штука, которой ты даешь доступ к репе (пара кликов), и затем в chat gpt у тебя появляется специальный чат, интерфейс как у custom gpt, и там ты просишь внести правки в код, а оно потом приходит с пул реквестом.

Я дал максимально простое задание, надо было пересортировать поддерживаемые языки, чтоб в топе были самые популярные, правки локализации на уровне одного файла. Это был такой smoke test.

Есть ощущение что OpenAI залезли на территорию Devin. По сути это автономный ИИ- программист. Все запускается в отдельном докер контейнере, откуда есть (если разрешите) доступ в интернет.

Будем тестить дальше. Ожидаю в течении года прогресс на уровне того, к чему пришел вайб кодинг в IDE. Причем будет синергия, эти подходы сольются, курсор уже интегрирует это.

P.S. - кстати, задание я дал с мобильного. Затем с него же поревьюил и аппрувнул PR на гитхабе. Знаю, что такой воркфлоу уже не фантастика, но приятно было ощутить самому.
5
Please open Telegram to view this post
VIEW IN TELEGRAM
Протестировал ИИ-браузер от создателей Arc 🌐

Прикрепляю скриншот, как я анализирую продуктовые метрики в одном из своих проектов с помощью этого браузера.

Речь идет о браузере Dia. Он сейчас в закрытой бете, но если вы были пользователем Арка, то вас пустят туда без очереди.

Сперва я был разочарован: ни вертикальных табов, ни spaces с раздельными куками. Иными словами, все то, за что мы любили Арк, сюда не завезли. Но потом я почитал Reddit и выяснил, что аркоподобный интерфейс завезут в течении месяцев.

Кстати, многие грустят от отсутствия кастомизации. В Арке то можно было и emoji спэйсам присвоить, и раскрасить их в разные шумные градиенты. Это прикольно, но мне плевать. Если задуматься, я даже скорее против кастомизаций. Я не хочу лишний раз принимать никаких решений.

Так вот, Dia. В чем прикол?

Прикол в том, что ребята тащат UX из Cursor в браузер. У вас появляется чат с ИИ, который видит страницу. Все как в курсоре: по умолчанию ИИ видна только текущая страница, но можно меншнить через собачку @ соседние вкладки и даже страницы из закладок и истории. Еще есть custom commands но про них я пока ничего сказать не могу.

Основное преимущество в том, что не надо переключаться в ChatGPT или Cursor в части кейсов, когда раньше это понадобилось бы. Пример тому, на скриншоте ^
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Видео: Вайбкодим Telegram бота за 10 минут и не трогаем код руками

https://youtu.be/Zrndn1d9aaE?feature=shared

Видео записано аж месяц назад, ровно тогда я впервые сел пилить бота, которого в итоге запустил буквально на днях как свой первый микро-продукт.

Сразу скажу, навайбкодить рабочий прототип реально, но MVP — нет. Досмотрите видео до конца и увидите как режим "я только командую" дает сбой. Тем не менее заголовок не врет, на выходе у нас будет рабочий бот.

Так вот, только сегодня у меня дошли руки смонтировать это и загрузить на ютуб и знаете что? Пока монтировал понял, насколько же быстро движется прогресс в нашей области, какие-то вещи уже не актуальны!

Подписывайтесь на канал (на этот и на тот) и приятного просмотра! 🍿
Please open Telegram to view this post
VIEW IN TELEGRAM
2
В Zed добавили Дебаггер

Только что заметил, что в Zed, кажется, наконец-то добавили дебаггер, это была основная причина, почему я не стал на него переезжать с VSCode, а потом в моей жизни появился Cursor

Ребята делают упор на скорость (пол года назад разница с VSCode действительно ощущалась, но для меня не была критичной) и ИИ. По последнему ничего сказать не могу, но не будь у меня платной подписки на курсор, я бы попробовал.
Новые (неочевидные) Заблуждения. Часть 1

Речь пойдёт про ИИ в программировании (кто бы мог подумать, да?), а именно про то, насчет чего профессиональные разработчики, даже продвинутые в вайб-кодинге, сегодня заблуждаются.

Для начала давайте вспомним, что мы и наше окружение думали про AI Coding agents 2 года назад. Понимаю, это не просто, но давайте попытаемся.

Моя версия: подавляющее большинство, во первых, ими не пользовались, а общий консенсус был в том, что это бесполезная шляпа.

Со временем картина стала меняться — разработчики признали за LLM возможность генерировать небольшие кусочки кода и, как следствие, допустили ИИ автокомплит. Но ИИ по прежнему было отказано в том, чтобы работать с большим контекстом.

Оно и понятно, нынче не то что давеча. В смысле, нейронки 2 года назад и сейчас это две большие разницы. Таким образом, консенсус остался на уровне "этому есть применение, но оно никогда не заменит настоящего программиста".

На вопрос "почему" можно (до сих пор) услышать что-то про "понимание" или, упаси господь, "сознание".

Хорошо. А что думают профессиональные разработчики сегодня, два года спустя?

Моя версия :) Подавляющее большинство, во первых, стали пользоваться — LLM-based инструментарий в том или ином виде проник всюду: в терминалы, кодовые редакторы и даже браузеры. Два года назад надо было быть "гиком" ИИ-программирования, сегодня это мейнстрим.

Сегодня у нас есть "вайб-кодинг" как методология (не побоюсь этого слова) разработки софта без, собственно, ручного кодинга. То есть то, чему "есть применение" в итоге вообще вытеснело все остальное. Ну, то есть, конечно еще нет. Но отдельные люди вайб-кодят отдельные штуки, это реальность.

А что стало с общим консенсусом? Я бы сформулировал его теперь так:

"ИИ-кодинг реален, и при должном умении можно даже реализовать довольно сложную задачу. Но! Во-первых, иногда это все равно проще сделать руками, а во-вторых, рано или поздно вайб-кодинг сломается (см. мой пост про бота) и тебе все равно придется лезть под капот руками. Тебе все равно придется разбираться, как это работает. Тебе придется наводить порядок в хаосе, который создал ИИ. Так что эта штука все равно не заменит настоящего программиста!"

Вторая часть тут.
Новые (неочевидные) Заблуждения. Часть 2

Начало тут.

Ничего не напоминает? Не правда ли это "конвенционально адекватное" мнение кажется чем-то рациональным?

На самом деле, если вы так думаете, вы ведете себя как то самое "подавляющее большинство" из 2023.

(Даже смешно делать такие отсылки к временам двухгодичной давности, но что поделать, вот с такой скоростью развивается прогресс в нашей области.)

Всем, кто лапочет про понимание и сознание я предлагаю сперва задаться вопросам, уверены ли они, что понимают, о чем говорят и откуда у них эта уверенность, если она, не приведи Господь, у них есть.

Всех остальных предлагаю задуматься вот над чем:

А что если пройдет еще два года и вайб-кодинг перестанет ломаться, потому что ИИ станет достаточно умен? Код больше не будет превращаться в хаос, потому что ИИ будет следить за его чистотой на уровне senior software engineer.

Можно сделать еще один мысленный прыжок и представить, что и другие недостатки сегодняшнего ИИ-кодинг инструментария будут устранены.

Например, ИИ будет не просто писать код, а также следить за его работоспособностью — открывать браузер и протыкивать там фичу, анализировать логи, прогонять тесты.

Более того, он будет собирать это в единую картину. Первые шаги в эту сторону уже делаются, Cursor видит ошибки линтинга/компиляции и учитывает их, не хватает только интеграции с остальными частями системы.

Человек — это клей, который интегрирует разрозненные части.

Это не единственная роль человека в разработке (например, есть еще коммуникация с остальной командой, проектирование, ревью), но я, если честно, не вижу здесь вообще ничего, что не могло бы быть автоматизировано в следующие пару лет.

И мне кажется, что нам очень повезет, если это займет больше времени.

Потому что бизнес спит и видит, как инструментарий такого уровня достигает enterprise качества. И доказательство этому — деньги. Просто посмотрите сколько денег инвестируется во все, что связано с ИИ кодингом.

Я бы добавил, что для достижения этого нам не нужны никакие прорывы в LLM инжиниринге. У нас все уже есть. Нам нужно время чтобы разработать и обкатать инженерные подходы — как правильно стыковать куски таких систем вместе, чтобы это работало хорошо.

Как правильно применять оптимизации, чтобы есть меньше токенов и прочее. Это перешло из технологической/научной в чисто инженерную проблему. И это вопрос времени.

Популярная и чертовски притягательная сегодня мысль что "кто-то же должен придти и навести порядок за всеми этими вайбкодерами, скоро они столкнуться с реальностью и придут к НАМ, настоящим программистам" не более чем заблуждение. И для меня это было неочевидное заблуждение, хотя я веду канал про ИИ-кодинг.

P.S. - Я не думаю, что мы лишимся работы в следующие два года.

Во-первых, я могу быть просто напросто не прав. Я могу не видеть каких-то больших проблем, как это часто бывает в инженерии.

Во-вторых, прогресс распространяется неравномерно, и в мире все еще достаточно бизнеса, который не внедрил LLM-based tooling.

Но я думаю, что большинство профессиональных (именно они, точнее мы, подвержены этому когнитивному искажению сильнее всего) разработчиков сегодня заблуждаются насчет того, в каком состоянии на самом деле находятся AI Coding технологии сегодня.
Как скатывается уровень моего промпт-инжиниринга спустя N неудачных попыток объяснить ChatGPT что от него хотят. Начинается за здравие с best practices (с), кончается за упокой тем что братанчик не понимает 😭
This media is not supported in your browser
VIEW IN TELEGRAM
7 раз Отмерь, 1 раз Отрежь

Дано: Claude 4 + Cursor + проект на Go.

Задача: реализовать фичу, которая затрагивает вообще всё — схему базы данных, SQL запросы, локализацию, конфигурацию, бизнес-логику и так далее. Сможем сделать через автономного агента? Учитывая, что это не локальный прототип, а запущенный в прод с живыми юзерами продукт?

Pure Manual <—> Vibe Coding

Лично я под "вайб-кодингом" подразумеваю подход, когда ты не понимаешь, как работает твой код.

Это не обязательно плохо — если ты осознаешь этот риск, то почему нет? Однако, с текущим уровнем технологий, на этом подходе далеко не уедешь.

Подобно тому, как динамические языки оправдывают себя лишь до определенных масштабов, вайб-кодинг обязательно сломается, когда проект достигнет некоторого размера, а тебе придется разбираться, как работает вся эта любезно нагенерированная лапша.

Только ситхи всё возводят в абсолют — пренебрегать genAI инструментами и делать все самостоятельно ровно в той же степени неправильно, как и заниматься pure вайб-кодингом. Если, конечно, речь не идет об обучении или разработке "прототипа на коленке" который мы сто процентов потом выкинем.

ИИ не должен принимать решений

Помните исходную задачу? Секрет в том, чтобы не полагаться на ИИ в принятии решений, чтобы он был исключительно исполнителем. Все решения вы должны принимать сами.

Это не значит, что вы не можете их обсудить с ИИ! Если вы не уверены в дизайне, обязательно сделайте это. Главное убедитесь, что построили богатый контекст, чтобы агент действительно понимал суть вашего вопроса относительно вашего проекта.

Я настоятельно советую это делать, потому что условный Claude 4 может подсветить не мало потенциальных проблем, особенно, если его об этом попросить.

Отмеряем 7 раз

Продолжаю раскрывать секрет. Если ИИ не должен принимать решений, их должны принимать вы. Следовательно, вы должны понимать, как все работает и как все должно работать.

Точнее у вас должно быть решение, которое вы предлагаете ИИ, чтобы он его "прожарил", и это решение вы должны осознавать полностью, вплоть до отдельных переменных.

Итак, вы описываете решение, начиная с мотивации, что и зачем вы делаете и какую проблему решаете, объясняете какие компоненты системы поменяются и как, и ссылаетесь на конкретные файлы - схемы базы данных, запросы, файлы с исходным кодом. Вы строите контекст, тут тонкая грань — собрать как можно больше всего, что понадобится и зацепить как можно меньше того, что к задаче не относится.

Далее, внимание (!), вы требуете чтобы ИИ не модифицировал код (я прям капсом это пишу, потому что Claude 4 любит настырничать), а просто ответил вам, что он думает, все ли ему ясно, не видит ли он проблем.

Вы повторяете это N раз пока не будет достигнуто полное понимание между вами и агентом. ИИ может находить потенциальные проблемы, подсвечивать какие-то правки, о которых вы забыли, или находить в задаче неоднозначности, предлагая вам решения на выбор.

Отрезаем один раз

Когда понимание, наконец, достигнуто, мы просим ИИ (внимание!), нет, не внести правки, а сгенерировать детальный промпт, который мы вставим в новое окно чата. Мы прямо так и говорим — контекстное окно приближается к лимиту, сделай мне промпт, но не упусти ничего важного.

Контекстное окно Claude 4 на самом деле далеко от предела, но если нам предстоит править десяток другой файлов, а между этими правками модельке еще предстоит размышлять и выполнять команды, а возможно еще и гуглить что-то, то окошко легко может треснуть.

Ну а потом открываем новый чат, вставляем промпт, можем пробежаться по нему последний раз и подправить, если очень надо.

Кстати, пока я писал этот пост, Claude 4 имплементит штуку со криншотов. На прикрепленной gif то как строился промпт, а в комментах скрин — кусочек получившегося промпта.
2
Bonus Tip

Недавно писал, как правильно кодить большие фичи с ИИ. Прочтите, если еще не, а потом вернитесь. Есть еще один совет, это как вишенка на торте к тому, что уже было описано

Перед тем как начать ревьюить изменения (что делать при таком подходе, разумеется, необходимо), откройте новый чат, и попросите Claude 4 проревьюить изменения за вас.

Скажите, мол, ИИ сделал изменения, вот его промпт, вот изменения что он сделал (mention git changes). После того как ИИ подтвердит, что все ок, начинайте ревьюить сами.

P.S. — Прикладываю размер ИИ правок. Я сперва протестировал изменения локально, всё работает идеально. Полез ревьюить, реализация на 5+, я бы не сделал лучше, всё как я хотел. Сейчас буду катить на прод.
3
1
Галерея Промптов в ИИ браузере Dia

Помните, я писал, что пересел с Arc на его наследник, так как сам Arc прекращают поддерживать? Так вот, все это время я сидел на Dia, мое резюме будет в конце поста, а сейчас я расскажу про их последний апдейт, где они выкатили галлерею skills.

https://www.diabrowser.com/skills

Skills в Dia это возможность сохранить промпт под короткий алиас и вызвать его в чате. На вход в ИИ идет этот промпт + контекст страницы + ваше сообщение. Так, например, можно просить ЛЛМ сделать TLDR; страницы (или письма, если вы смотрите на письмо) на русском, или генерировать ответы. Кейсов множество. Я, кстати, скилами не пользуюсь вообще, и вроде я среди юзеров Dia такой не один, судя по постам на Reddit. Посмотрим, изменится ли это теперь.

Что касается самого Dia... Это не Arc, но и не голый Chrome. Я скучаю по вертикальным вкладкам со спейсами, как и все аркоебы, волею судеб пересевшие на Dia, но мне нравится ИИ чат. Он работает хорошо и я пользуюсь им достаточно часто. Было бы интересно попробовать Comet от Perplexity, но мотивации недостаточно. Миграция между браузерами слишком запарный процесс. Transaction Cost у операции высокий.

P.S. Для тех, кому интересна продуктовая аналитика — конкретно тот кейс, что я рассматривал в своем первом посте про Dia, q&a с продуктовой аналитикой, теперь работает из коробки в Posthog. То есть если вы используете Posthog для метрик, то там теперь есть встроенный чат под названием Max AI, и я советую юзать его, а не Dia, потому что у Dia доступ к содержимому вкладки, а у Max под капотом RAG в базу с вашими событиями. У него тупо больше контекста. F context is king, как известно.
Allowlist в Cursor

То ли не видел, то ли недавно добавили.

Раньше в Cursor чате с Agent mode было 2 опции: либо каждую команду надо апрувить, либо разрешить все и пустить тем самым на самотек.

Лично мне не очень хотелось узреть условный rm -rf / в результате гениального мыслительного хода Claude и я ревьюил каждую команду. Когда агент пилит большую многослойную фичу, получается, что надо микроменеджерить, иначе спустя 5-10 минут ты альт-табнешься обратно в чат и увидишь, что все это время машина ждала тебя, кожанный ты боттлнек.

Allowlist это золотая середина — когда агент хочет выполнить команду, теперь можно ее не только апрувнуть или зареджектить, но также апрувнуть и добавить в белый список, чтобы он больше не спрашивал.

Осторожно: тут есть нюанс, команды в UNIX чейнятся через разными способами (&&, |, >, » и так далее), и кажется что курсор при проверке прав смотрит только на первую команду, а все остальное парсит как ее аргументы. То есть разрешив cd в теории вы разрешаете также cd / && rm -rf ./ но это не точно. Ну я включил, посмотрим, не поминайте лихом.

UPD: кажется курсор таки понимает && и запросил у меня разрешение на cd ... && templ ..., формулируя это как "добавить templ в белый список?"
3
Как я Фикшу Баг в Cursor

TLDR; На проде баг, из-за которого платный юзер продукта получает ошибку, вместо корректной обработки своего запроса.

Раньше, я полез бы в логи, а затем начал бы думать, в чем дело. Сейчас я делаю вот как:

— Открываю чат в курсоре
— Прикрепляю скрин с багом
— Описываю проблему вкратце
— Прикрепляю логи с прода
— Прикрепляю релевантную строчку из таблицы в БД, чтоб контекст был совсем полным

Наверно, вместо последнего шага можно было бы MCP заюзать, чтоб агент сам в базу сходил, если б посчитал нужным, но у меня пока с ними не сложилось.

То, что я сделал, называется "построить контекст". По сути, когда вы ставите задачу другому человеку, вы тоже строите контекст.

Кто-то, наверно, может сказать — теперь ИИ и думает за тебя, а не просто код пишет.

Я отвечу так — да, и это хорошо. Я не хочу об этом думать. Я не считаю, что это творческая задача. Я знаю, что могу потратить время и сделать все сам, но зачем? Мое время ограниченно, мне надо распределить мыслетопливо максимально эффективно. Если я могу делегировать ИИ агенту исправление бага, то я обязан это сделать. Любая другая стратегия не будет рациональной, если ваша цель — эффективность.

P.S. — Офигеть, курсор теперь mermaid диаграммы строит в процессе рассуждения О_о

P.S.S. — Claude 4 любит добавлять юнит-тесты, и они даже валидны, но если вам хочется перестраховаться еще сильнее, примените технику ИИ самопроверки
Как строить контекст для ИИ агента в Cursor, основанный на изменениях кода

Уже два человека просили раскрыть мысль про ИИ самопроверку в Cursor получше.

Думаю, я напишу об этом нормальную статью. Кажется, мой поток сознания на эту тему тяжело читается.

Пока статьи нет, расскажу про маленькую фичу в Cursor, которая играет важную роль в вышеприведенной технике. Кажется, не все про эту фичу знают.

1️⃣ Открываем чат с агентом (Cmd+I на маке)

2️⃣ Жмакаем @ собачку и выбираем Git

3️⃣ В открывшейся выпадашке выбираем Branch либо Commit в зависимости от того, что нас интересует (уже закомиченные изменения, или текущие).

Это позволяет в 1 клик построить контекст для агента, основанный на изменениях кода, а не его состоянии. Что необходимо для техники самопроверки.

P.S. — статью напишу, потому что техника реально мощная и, кажется, не все про нее в курсе.
3