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

Также пилю свой продукт с ИИ и пишу об этом тут - @build_saas_in_public
Download 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
AI Coder 🦾
😰 Пост про Василиска на этом канале 😰
Ленивый василиск 👹
Please open Telegram to view this post
VIEW IN TELEGRAM
Слева навайбкодили, справа отрефачили
Полезные обновления в Cursor

Пол Грэм, известный программист на Lisp, однажды сказал:

> When I see patterns in my programs, I consider it a sign of trouble.

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

В прошлом я писал про паттерны работы с Cursor (раз, два, три) и, вы знаете, всякий раз, повторяя их думал — "жалко, что он не умеет этого из коробки". На самом деле, оно и не удивительно. Вся эта AI-based IDE история, считай, вчера родилась.

Хорошо, однако, что прогресс не стоит на месте, и курсор продолжает показывать себя, для меня лично, хорошим продуктом. В их последних обновлениях они добавили много всего, но я напишу лишь о двух вещах: "Plan Mode" и "Slash Commands".

1️⃣ Plan Mode

Это удобная реализация из коробки того паттерна, о котором я писал прежде, когда вместо того чтобы сразу требовать от агента изменений, вы сперва итеративно работаете с ним над планом, и только когда план вас устраивает, вы отправляете агента делать вещи. Причем, открываете для этого новый чат, потому что в старом контекстное окно как правило успевает подойти к своим пределам. Теперь это просто режим чата, на ряду с agent/ask.

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

Когда план будет готов, он откроется перед вами в Notion-подобном markdown-редакторе, прямо внутри Cursor (VSCode так из коробки и не сделали подобного) и вы сможете внести в план любые изменения руками. Ну и, конечно, изменения можно вносить через чат с агентом.

Plan Mode это реализация здорового человека, без плясок с бубном. А еще это золотая середина между зумерским vulnerability as a service вайб-кодингом, когда ты не понимаешь, что происхолит, и бумерским погромированием, где ты по памяти можешь назвать строчку и отступ у любой переменной.

2️⃣ Slash Commands

UI как в Notion, но внутри чат-бота. Slash command это по факту markdown файл который лежит в .cursor, который содержит произвольный текст, и этот файл можно заменшнить из чата, по сути как просто маркдаун файл, но чуть-чуть быстрее, как special case.

Из коробки команда есть команда /summarize, которая должна сжимать контекстное окно. По идее это должна быть реализация паттерна, про который я тоже писал прежде, когда ты руками "просишь ИИ сгенерировать новый промпт, который ты потом вставишь в новый чат", но у меня почему-то не завелось. Точнее, он не просто делал саммари, а попутно еще и какие-то правки в код вносил.

Я написал свой summarize, промпт будет в комментах, а также у меня есть /review для проверки изменений, сделанных чат-ботом. Работает хуже, чем когда делал руками, потому что на вход также шел оригинальный промпт-инструкция, на основе которой агент генерировал свои изменения, но зато из коробки. Может, в будущем удастся докрутить.
Бенчмарк LLM-трейдеров

Уже была арена пророков, теперь пусть будет "арена трейдеров". Бенчмарк как ИИ-агенты с разными модельками под капотом торгуют криптой в реальном времени. Прям щас в топе DeepSeek 🇨🇳

https://nof1.ai/
Please open Telegram to view this post
VIEW IN TELEGRAM
2
ChatGPT Schedules

Придумал кейс для ChatGPT's "Scheduled tasks" фичи — каждое утро писать, сколько дней осталось до выходных и до ЗП.

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

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

Как сделать свой schedule:

1. Открываем ChatGPT web client
2. Settings -> Schedules -> Manage
3. Настраиваем Schedule — промпт, как часто и в какое время (см. скрин для примера)

P.S. — Вообще эта штука может и более сложные вещи. У нее как минимум есть доступ в интернет. Может ли она в deep research или agent capabilities к сожалению мне неизвестно.

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