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

Также пилю свой продукт с ИИ и пишу об этом тут - @build_saas_in_public
Download Telegram
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
В полку ИИ браузеров прибыло

https://strawberrybrowser.com/

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

Я сижу на Dia и у меня недостаточно мотивации пробовать что-то еще, но я прям чувствую, что что-то упускаю. В 2025 браузеры реально могут и должны больше, чем просто chat with your tabs или, прости господи, skills.
1
Все еще пишете commit messages руками? Тогда мы идем к вам!

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

Мое мнение на эту тему такое — гит надо понимать, но лишь основные концепты - ветвление, ребейзинг, слияние. Не надо упарываться в идеальные commit messages, не надо дрочить на красивые графы. Вам даже не обязательно уметь работать с ним через терминал, вот что я думаю. Говорю как человек очень много времени работающий с гитом исключительно в консоли.

Так вот, commit messages. Бывают штуки вроде Conventional Commits и я очень долго им следовал, даже работая один. И вот только недавно до меня дошло — наименования коммитов это своего рода индекс, который позволяет быстрее понять, что в этом комите происходит, не заглядывая в него. Это то же самое, что нейминг сущностей в коде. Вот только код мы читаем постоянно, а как часто мы читаем историю git? Если это большой проект и вас туда комитит человек 5, окей, возможно, но если вас 2-3 или тем более вы один, ну камон. Я в своих пет проектах почти никогда не смотрю историю. Только если я что-то зафакапил, но я редко что-то факаплю, когда весь код принадлежит мне и я его хорошо понимаю и ощущаю.

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

Тратишь больше времени, чем можно — обоснуй что это необходимо. Я очень редко читаю свои комиты и мне очевидно, что я не должен больше их писать сам. Мне очевидно, что я сделал, но я должен потратить время и сформулировать это. Если машина с этим справляется достаточно хорошо, то отныне она должна делать, всегда.
1
Когда вайбкодишь на максимум 🫨
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Готовимся к собеседованию на позицию software engineer с ChatGPT

Создал кастомный GPT для подготовки к system design интервью. Под капотом промпт с идеальным список тем, которые надо понимать. Идеальный, значит не "все что есть на свете", а то что с максимальной вероятностью могут спросить на собеседовании.
2
Арена Пророков

Возможно, вы слышали про https://www.prophetarena.co/ — это некий аналог polymarket. Модели предсказывают будущее по каким-то вопросам, от погоды до политики. Мне стало интересно, как это работает. А именно, как строится его величество контекст. Часто магия не в самой модели, а в инфраструктуре вокруг нее. Можно взять 2 продукта, у которых под капотом одна и та же нейронка, но один будет казаться тупым, а второй умным.

Вот мне и стало любопытно, что конкретно мы тут тестим? Тестируются знания, что уже внутри моделей? Тестируется фича дип-рисёрча от ChatGPT и его аналогов или билдится готовый контекст своими силами, а уже потом подается на вход нейронкам? Как вы, возможно, догадались, третий вариант самый честный и, конечно, именно он тут и реализован.

Почитать можно у них в блоге, вот TLDR;

В Prophet Arena для каждого события автоматически собираются свежие новости, аналитика и рыночные котировки, которые структурируются в единый контекст: формулировка вопроса, таблица цен, ссылки на источники с краткими описаниями. Этот контекст сохраняется в неизменном виде, чтобы все модели работали с одинаковой информацией и не могли её изменить задним числом.

ИИ-модели получают этот контекст, строят вероятностный прогноз исхода события и объясняют свои решения, ссылаясь на элементы контекста. После наступления результата тот же контекст используется для объективной оценки точности и качества прогноза, а также для анализа, как разные источники влияли на решения моделей.
2
Ну, как посмотреть. Технически, если я не пишу код руками, а генерирую в курсоре, то его пишут llm. Прогноз ведь не говорит, что 90 процентов разработчиков потеряют работу. Но да, даже так, трудно сказать какой процент кода генерируется llm сегодня. Рост точно есть, но какой?
Forwarded from Denis Sexy IT 🤖
6 месяцев назад, CEO антропика говорил, что 90% кода будет писаться LLM уже через 6 месяцев

Кажется, не получилось, ждем новых предсказаний ☕️

Источник
Please open Telegram to view this post
VIEW IN TELEGRAM
🐍 Вайб-кодинг на Питоне

Начал вайбкодить на питоне, ощущения пока так себе. Весьма неожиданно, учитывая, что в трейне LLMов питона намного больше, чем Go.

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

Итак, я думаю, причины следующие:

— Питон намного сильнее зависит от сторонних библиотек, которые часто обратно-несовместимо обновляются, в то время как в Go богатая стандартная библиотека, API который стабилен уже много лет

— У питона нет из коробки статической типизации (а LLM + статические типы = ❤️), из-за чего, если не приложить много усилий, у тебя в IDE (по крайней мере в VSCode и потомках, в том числе Cursor) могут не подхватываться ошибки, и, соответственно, агент в чате их не увидит. То есть в проекте на Go итерация выглядит так: агент наговнокодил, компилятор ударил по рукам, агент это увидел и пошел думать над своим поведением

— Питон это тоже плохой язык как и JS, но получше. Есть ощущение, что тебя подталкивают к практикам, которые в индустрии уже объективно считаются плохими: глобальные переменные, сайд-эффекты при импорте, наследование вместо композиции, и так далее. Я еще не дошел до знаменитой "магии", когда можно перегрузить операторы, так, чтоб сложение чисел заказывало бургер в Макдональдсе через HTTP вызов, но, думаю, все еще впереди. А, ну и, конечно, асинхронщина. Если не знаете, почему async/await это антипаттерн в programming language design то бегом читать what color is your function

В целом есть ощущение, что все на изоленте держится. Если вы пишете на Python/TypeScript, я советую вам попробовать Go. Вам придется освоить чуть более низкоуровневые концепции, и привыкнуть к немного уродливому на первый взгляд, и более многословному, безусловно, синтаксису, но, боже, это того стоит, вы никогда не посмотрите назад. Вы познаете, что такое действительно хороший developer experience когда код, который вы пишете, просто, сука, работает, и вам не надо разбираться с пакетными менеджерами, тест-раннерами, линтерами-хуинтерами. Разработчики языка обо всем позаботились. Садись, и пиши код.

P.S. — Пишу для истории, посмотрим, как будет дальше.
"I'm not worried about an AI that will pass the Turing test, I am worried about one that will fail it on purpose."
1
Context7 MCP в Cursor

Недавно писал, что бомблю негодую от вайб-кодинга под Python и среди причин была такая:

> Питон намного сильнее зависит от сторонних библиотек, которые часто обратно-несовместимо обновляются

Для меня как для вайб-кодера это вылилось в следующую проблему: ИИ сгенерил что-то, оно не ловится линтером, но и не работает, падает в рантайме. Часто причина была, как оказалось, в том, что в трейне ЛЛМа была устаревшая инфа по API той или иной библиотеке.

В Go ты с этим сталкиваешься не так часто, там обратная совместимость возведена в культ, да и сломать ее сложнее из-за настоящей компиляции. А главное, тебе тупо не так уж часто нужны сторонние библиотеки. В Питоне же ситуация плюс-минус как в JS. Ну, может, немного лучше.

Коллега подсказал решение. Надо просто добавить старый советский MCP под названием Context7. Я уже писал однажды про MCP, у меня так и не дошли руки запилить свой, а, как сказал Фейнман, what I cannot create I do not understand, так что не я все еще в позиции "не понимаю на 100%", но с точки зрения юзера Cursor мне понятно, что у LLM агента появляется +1 доступный tool call. Теперь перед тем как что-то сгенерировать, у него есть возможность дернуть этот Context7 и через него получить настоящую актуальную документацию. RAG во всей красе.

https://github.com/upstash/context7

Смотрите раздел Installation, например, Install in Cursor.
1
Писал про новую книгу Юдковски, она таки вышла. Я читать не буду, скорее всего. Не потому что не хочу, а потому что не вывожу. Слишком много всего надо поглощать итак. Тем не менее, уверен, там есть годные тейки. Заказать можно на Амазоне. Вдруг, кто-то хочет поддержать автора ГПиМРМ копейкой

https://en.wikipedia.org/wiki/If_Anyone_Builds_It,_Everyone_Dies
Go разработчик и Python
Please open Telegram to view this post
VIEW IN TELEGRAM