uz
Feedback
partially unsupervised

partially unsupervised

Kanalga Telegram’da o‘tish

@arsenyinfo пишет про software engineering и machine learning

Ko'proq ko'rsatish
Rossiya68 032Toif belgilanmagan
9 631
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
+2530 kunlar
Postlar arxiv
Личный карьерный апдейт: третью неделю работаю в archestra.ai, моя задача - тащить современный агентский слой в широком смысле слова. Иными словами, вернулся к позиции "писать в меру экспериментальный опенсорс за деньги". Снова работать в команде из семи человек после недолгого захода в бигтех - кайф. Archestra - security-first инфра платформа для агентов. Запустить openclaw-like агента локально несложно, особенно в YOLO режиме; раскатить на большую организацию - совсем не тривиально. Для больших ребят есть enterprise лицензия, forward deployed engineers и все такое; для энтузиастов и компаний поменьше есть опенсорсная репа, которую можно развернуть в любом кластере. Как я люблю шутить, моя главная роль в любом стартапе - это привлекать удачу, например, вот этот $10M series A, к которому я, конечно, отношения не имею. Зато теперь мне официально не придется ограничивать себя в токенмаксинге.

Многие из вас видели заголовок Rewrite Bun in Rust has been merged или, возможно, читали пересказы в популярных каналах (1, 2). Это сделанный агентом PR на 1 млн строк. Такие масштабы от меня далеки, но с похожими штуками я недавно ковырялся. Далеки - это в данном случае два порядка: получалось добиться успешной трансляции Typescript => Rust на 10к строк. Мои условия были в чем-то сложнее, чем в истории с Bun: тестовое покрытие значительно хуже, и волшебного Mythos у меня тоже не было, только Opus 4.6, GPT 5.4 и готовность сжигать миллионы токенов в дебатах между ними (как у nitpicker). Этот эксперимент TS=>Rust не заработал с первой попытки, но ломался исключительно на границах - например, не идеально совпадали env var для докерфайла. Тот же харнесс пробовали применить и для более сложной/масштабной задачи, и там one shot работал еще хуже, но в основном тоже из-за сложности в интеграции и нехватки специфического контекста. Там пришлось двигаться итеративно, и каждая такая итерация подсвечивала новые пробелы в контексте, несовершенство тестов и бенчмарков. В случае Bun отдельный вектор критики в том, что в Rust ветке примерно 10к вхождений unsafe в 700 файлах - "какой же это раст???". Не вижу в этом серьезной проблемы. Наверняка в этой миграции частью дизайна было "переносим все как есть строка в строку, а потом уже оптимизируем. Какое-то количество unsafe кода в рантайме практически неизбежно, и это окей - идиоматичный стиль не запрещает unsafe, а только рекомендует использовать его компактно, обернув в безопасный интерфейсы. Принцип make it work, make it right, make it fast никто не отменял, и снизить количество этих unsafe кусков тем же харнессом с моего дивана не представляется проблемой. Rust was accidentally designed for AI-assisted development 10 years before anyone knew that mattered. И сложно представить, что может изменить эту траекторию.

Наблюдая одним глазом за внедрением кодинг агентов на разных уровнях в разных компаниях, я не могу ответить на один вопрос: зачем топ-менеджеры поддерживают (а иногда и форсят) политику, что менеджеры теперь всерьез должны коммитить код. Не тимлиды, а настоящие менеджеры менеджеров, часто директора и выше. Не только прототипы на коленке, но и прямо в основные репозитории. На реддите воют, что такие директорские пуллреквесты в лучшем случае бесполезны. Типичный директор и так не страдает от безделия, у него есть возможность мультипликативно усилить свою команду. И даже самые умные из них обычно знают кишки проектов хуже рядовых разработчиков. Агенты - великие уравнители; и директор, и L4 гребец будут промптить примерно одинаково, только инженер, будучи в контексте проекта, с большей вероятностью отловит слоп до попадания в прод. Я понимаю, что вайбкодить - особенно в первое время - может быть тупо интересно. Но где тут рациональное зерно, зачем делать из дорогих менеджеров посредственных IC? Пожалуйста, расскажите в комментариях, чего я не понимаю - не готов поверить, что на волне хайпа экзеки просто слетают с катушек.

Мне недавно написал Макс (ресерчер в tessl.io и автор канала @max_dot_sh) и спросил, планирую ли я что-то добавлять в nitpicker. Так я узнал про третью компанию, в которой инженеры всерьез используют мою поделку. Удачное совпадение: как раз на прошлой неделе добрался катнуть несколько изменений. Во-первых, включил режим debate по умолчанию и подкрутил промпты, чтобы максимизировать adversarial аспект. Ожидаемо все стало еще медленнее. Во-вторых, попробовав гонять nitpicker на больших проектах целиком вместо мелких пулл реквестов, я уткнулся в ограничения контекста: агент легко мог выжрать 200к+ токенов и упасть. Так что я добавил поддержку субагентов и сжатие контекста после отсечки. По совпадению, субагентов я добавил к релизу Kimi 2.6, которая специально обучена на активное их использование. Правда, еще Kimi регулярно заикалась, пытаясь вызывать одинаковые тулы по кругу, пришлось обмазывать костылями про loop detection. В итоге машинка может сжечь под миллион токенов и 20 минут на ревью пулл реквеста на 500 строк, что вроде бы долго и дорого. С другой стороны, я проверил на нескольких настоящих живых проектах, и везде нашел какие-то пусть и не критичные, но достойные внимания баги или уязвимости. Люксовые конфиги типа opus 4.7 + gpt 5.5 работают лучше, но и на доступных китайских open weights моделях типа Kimi + GLM результат не полный слоп. Это все еще вайбчек, а не бенчмарк - надеюсь как-нибудь найти время и померять системно.

Когда-то я писал про вакансию DL инженера у моих старых корешей из GRAI.fm🎵. Прошло 10 месяцев, и ребята пришли ко мне снова. Они подняли жирный seed раунд, и теперь им нужен еще один могучий ресерч инженер, чтобы обмазываться статьями про аудио и доводить их до продукта. На самом деле инженерный вакансий больше - например, нужен и человек про датку и MLOps. Их СТО утверждает, что лучшие люди в их команду пришли именно из моего канала, так что не подведите и в этот раз, дорогие подписчики.

Семь лет назад я занимался AR примеркой обуви. Однажды к нам пришел один из VC партнеров и спросил: "а почему у вас в приложении нет allbirds? В Долине все только их и носят". Процедура добавления новой модели предполагала покупку физической пары, потом их сканировали, делали фотограмметрию, а результат доводили до ума руками. Так на полке со скопившейся обувью осталась пара allbirds ровно моего размера, и при увольнении мне ее подарили. С тех пор я стоптал пар пять этих прекрасных кроссовок разных цветов, они подходили мне идеально. И вот эпоха ушла: allbirds официально переключаются с обуви на GPU инфраструктуру. Раньше мы нагружали видеокарты, чтобы рендерить их кроссовки, теперь они сами будут продавать GPU-часы.

Слово harness стало резко популярным в моем пузыре (кстати, отличный глубокий обзор про то, что это вообще такое и зачем). И когда из single agent подходов стало тяжелее выжимать заметный буст, все стали смотреть на мультиагентные конфигурации. Я и сам немного экспериментирую с переменным успехом (первая выжившая версия едва ли была полезнее обычного клодкода, nitpicker - тоже один из экспериментов; остальное в закрытой репе, но идейно близко к этому свежему посту от Anthropic). Есть направление про agentic swarms / teams, в котором агенты как-то сотрудничают, делегируют, наделяются разными ролями и вообще ведут себя антропоморфно. Некоторые проекты из этой категории удивительно кринжовые, например, Gastown - не хватало еще, чтобы агенты собирались в гильдии и ходили в рейды. Есть направление, в котором тонкое взаимодействие заменяется брутфорсом, циклами и умеренно наивной валидацией: это и моментально ставший классическим эксперимент про компилятор C от Антропика, и подходы на базе Ralph Loop. Дорогие агенты, делайте что хотите, но будете перемножать матрицы, пока тесты и AI ревью не пройдут. Мне интутивно кажется, что второй подход ближе к прикладному применению. Все эти антропоморфные идеи и ролевой скевоморфизм чем-то напоминают попытки улучшать современные нейросети, отталкиваясь от строения синапсов. Я предпочитаю map reduce как дефолтный подход к параллелизации, а не заклинания "этот агент будет вести себя как senior frontend developer, а этот - staff UX designer". Люди вынуждены делиться по компетенциям, потому что у нас недостаточно общего претрейна. У агентов он есть, потому их нужно структурировать в графы по данным / задачам, а не по человекочитаемым тайтлам. С другой стороны, Anthropic сделал свои teams отчасти антропоморфными. Китайские open weight провайдеры тоже вкручивают agent teams нативно в обучение (см kimi 2.5, minimax 2.7). И несмотря на то, что существующие claude agent teams никому пока не нравятся, победит, конечно, тот подход, который затюнят на посттрейне. Повторюсь: we can't fight gradient descent.

Поскольку Anthropic активно лезет в code review, мне тоже пришлось закоммитить чего-то нового в nitpicker. В частности: - добавил флаг --debate, чтобы ревьюверы могли друг с другом спорить, по вайбам выглядит полезно, пусть и медленнее параллельного ревью. - добавил команду ask, чтобы ревьюверы могли не только ревьювить, но и просто обсуждать какие-то идеи про этот код (например, быстро приходят к консенсусу, что переписывать nitpicker на zig - тупая идея). nitpicker уже активно [больше одного человека] пилотируют в некоторых [одном] бигтехе, я буквально в шаге от того, чтобы поднимать раунд стакан с пивком

Чтобы гора сгенеренного кода меня не поглотила, к процессу вайбкодинга AI assisted разработки нужно было добавить и AI-based ревью. Но ожидаемо Клод слишком любит код, написанный Клодом, и мышей ловил недостаточно. Так я начал использовать opencode с Gemini для ревью. Сначала все было хорошо, Gemini - такая странная модель, которую нельзя подпускать к написанию кода (мой любимый комментарий про это), но критиковать умеет по делу. Opencode был всем неплох, но жрал тонны памяти и периодически зависал в неинтерактивном режиме (в т.ч. на CI). Короче, not invented here синдром назревал. https://github.com/arsenyinfo/nitpicker - just another code review agent. Быстрый, маленький, умеет в LLM council (хоть где-то пригодится подписка на z.ai и minimax), и за счет этого ловит довольно много ошибок (хотя и ценой ложных срабатываний).

Когда агенты начнут всерьез жрать рабочие места белых воротничков, будет два противоположных вида страховки: лицензия от регулятора и контролируемая ебанутость. С регуляторами все понятно: кто-то должен ставить свою подпись под AI слопом. Мой налоговый консультант отвечает на емейлы явно гпт-шным текстом и берет за это полторы сотни в час. Его лицензия все еще будет иметь ценность, даже если claude 5 будет составлять такие же запросы в налоговую из коробки. Про ебанутость не так очевидно. Типичные верифицируемые задачи продолжат загоняться в посттрейнинг и будут выучиваться до некоторой моды в статистическом смысле, на выходе много качественного информационного фастфуда. Говорю совершенно без осуждения: фастфуд может быть относительно здоровым, зато безгранично доступным. Вот и средний AI-генеренный код лучше среднего человеческого кода, он редко изящный, но читаемый и решает задачу. Аналогично с текстами, решениями рядовых менеджеров, диагнозами уставших терапевтов и так далее. Только вот компромиссные решения - это скорее регрессия к среднему, защита от плохих исходов, скучное корпоративное болото с малым прогнозируемым ростом, не прогресс и не искусство. Действия opinionated людей - статистический выброс, они повышают лосс. Иногда надо делать не по учебнику, а иррационально принять риск. Настолько иррационально, что кто-то из нормисов может крутить пальцем у виска. Reward модель вашей любимой LLM скорее всего бы оценила тексты вашего любимого писателя не слишком высоко. Но первое слово в словосочетании "контролируемая ебанутость" не менее важно - просто быть хаотичным дурачком недостаточно. В Кремниевой долине десятилетиями пели гимны фаундерам, бросившим универ. Но есть нюанс: такой архетипичный бунтарь должен бросить условный Стэнфорд (а значит, и попасть туда для начала), а не смолевическое заборостроительное училище. Иррациональный риск не должен быть лудоманией, а чувак с мнением - просто капризным мудаком. В одном эти две крайности сходятся: исполнительные закрыватели тикетов в джире не нужны.

Если вы сколько-то управляете разработчиками и испытываете FOMO от все этой AI движухи, то я принес вам рекламу. "AI Hard Fork" — практическая онлайн-конфа о том, как AI меняет процессы разработки, и как управлять этими изменениями. Ее организуют Стратоплан и Entropy Talk, а выступают большие боссы и успешные практики разных уровней - от EMов до C-левела. Я даже лично знаю двоих докладчиков, и они действительно умные ребята. Примеры тем: - "Скрам не нужен: как AI кодинг меняет представление об эффективной команде." (как будто раньше он был нужен, лол) - "Как стать 10x-менеджером" (и не успевать еще больше) - нужны ли программисты во времена вайбкодинга (и снова FOMO!) Конфа пройдет 24-26 февраля, можно смотреть бесплатно (онлайн или в записи), можно занести немного денег, получить сертификат и флексить. Регистрация по ссылке, набегайте (или не набегайте, если и так без проблем успеваете следить за тем, как AI колбасит всю software engineering индустрию).

Предсказание с дивана: навыки классического ML/DL скоро превратятся в знание Cobol Fortran (он еще жив, я даже когда-то постил вакансию фортран-программиста). Хайпа не будет, но будет нишевый устойчивый спрос на седобородых дедов, которые читали Хасти, Бишопа и Гудфеллоу. Есть какая-то популяция людей, которые умеет в ML. Верхний перцентиль делает foundational модели в топ лабах, сразу забудем про них. Оставшиеся простые смертные внезапно оказались востребованы в GenAI движухе: пусть умение тюнить бустинги и докидывать лоссы малорелевантно умению переписывать промпты, в среднем почему-то именно таких людей хотят видеть нанимающие менеджеры (там AI, и тут AI, логично). Так что специалистов на классический ML/DL остается меньше. А ведь задачи никуда не делись. Окей, что-то заменили на вызов API, что-то будет ваншотиться кодинг агентами, но что-то и - от рекомендашек и ранкинга до глубоко специфических доменных задач, про которые большинство из нас никогда не думало. Более того, жирные бюджеты на AI вполне позволяют делать компаниям что-то полезное и прагматичное на сдачу от контракта с OpenAI. При этом "скучная" часть как раз упростится - писать коннекторы руками не придется. Большой босс, которого я загнал в угол со стаканом кофе, рассказал такой анекдот: в одну нефтяную компанию пришел очередной консалтинг продавать AI. В качестве титульного юзкейса предложили сделать чатбота для HR-саппорта. Реакция была прямолинейной: "прогоните этих кретинов" - для этой компании ML важен для оптимизации обнаружения нефтяных запасов на доли процента, они вливают туда десятки миллионов, а на административные затраты эйчаров им глубоко наплевать.

Трейдеры из Wunder Fund остались насколько довольны своим прошлым соревнованием (и рекламой в моем канале), что недолго думая
Трейдеры из Wunder Fund остались насколько довольны своим прошлым соревнованием (и рекламой в моем канале), что недолго думая запустили новое. Данные стали ближе к реальности: вот настоящий ордербук, вот сигнал изменения цены, доставайте свой fit_predict. Ограничения по инференсу тоже близкие к жизни. Награды остались такими же: 8 призовых мест, за первое - $5000, ну и на интервью позовут наверняка. Если еще помните, как делать import torch, набегайте, рубитесь до 31 марта и хвастайтесь позицией на лидерборде!

Последние несколько недель баловался с разными консольными кодинг агентами. Claude Code все еще остается моим фаворитом, но смотреть по сторонам полезно, тем более когда что-то про agentic devex написано в моих рабочих задачах. Клиенты Попробовал Opencode, Gemini CLI, Github Copilot CLI, Codex. Раз речь про вайбкодинг, то и оценивать буду по вайбам: - Gemini и Copilot - клиенты сыроваты, работать можно, но не хочется. - Codex созрел и стал вполне юзабельным. - Opencode прям хорош, UX отполированный, полностью опенсорсный, есть плагины, развивается очень быстро. Еще одна фича Opencode: можно не только использовать провайдеров с оплатой по токенам, но и переиспользовать подписки. Серая зона: одни провайдеры (Anthropic) явно запрещают использовать сторонние клиенты, некоторые (Copilot, Minimax, Z.ai) разрешают, так что где-то приходится действовать на свой страх и риск. Модели Попробовал и разные модели в Opencode: - minimax 2.1, GLM 4.7 - похожи на sonnet предыдущего поколения, дешевые рабочие лошадки для простых задач - GPT Codex 5.2 - задает очень много вопросов, вкапывается в детали - иногда в лишние, а потом уходит работать на пару часов с достойным качеством - Gemini 3 Pro - на первый взгляд все классно, может предложить нетривиальные идеи или быстро решить сложную задачу... но потом оказывается, что где-то с высокой вероятностью подложена свинья. Например, переписываю большой кусок с питона на раст, агент пишет гору правдоподобного кода и бодро отчитывается, что все проверено и идеально матчится, но в итоге окажется, что 10% функций цинично проигнорировано. Они не просто где-то выпали из контекста, а нагло возвращают константу с комментарием в коде типа "а это делать не буду, и так норм". Что-нибудь молча удалить или наоборот попытаться закоммитить - тоже нередкая ситуация. - Gemini Flash 3 - аналогично, только быстрее и тупее. Воскрешение года Повод удивиться: внезапно подписка Copilot выглядит наиболее выгодной в категории "топ за свои деньги". Copilot можно использовать в стороннем клиенте (включая и вышеупомянутый Opencode, и мой любимый Zed), можно переключаться между моделями (есть все основные провайдеры, и новые модели доезжают довольно быстро). Кто бы мог подумать: еще год назад, когда я в каком-то разговоре упомянул Copilot, мой собеседник посмотрел на меня с ноткой презрения - мол, ты чего, все пацаны сидят на Cursor/Windsurf, зачем ты вообще помнишь про это старье.

Личные итоги года по сравнению с 2024: - много работал, интересно и в основном в кайф, но по итогам почти безрезультатно, back to square one - штош, не прокнуло. Очень благодарен всем соучастникам, вы классные; - перешел от старого доброго ML к agentic AI шаманству. В целом бодро, но немного ностальгирую по временам, когда модели можно было учить (нытье по этому поводу - раз, два); - незапланированно оказался в бигтехе с его плюсами и минусами; - был соавтором статьи, которую не приняли на воркшоп NeurIPS, зато после доработки приняли на SANER; - почти перестал писать код руками и сдался вайбкодингу, claude code - однозначно инструмент года; - сделал слегка виральный brainrot пет-проект @ScratchAuthorEgo, там все еще теплится жизнь; - подарил сколько-то экземпляров книги с автографами, каждая подпись - лютый кринж; - наконец-то выучил и сдал польский на B1, практически сразу после экзамена половину забыл; - ощутил два землетрясения за три дня (одно на семерку), интересный опыт для жителя равнины; - впервые оказавшись на горнолыжном курорте, свалился с T-bar подъемника. С наступающим, дорогие читатели! 🥂

Почти закончен перевод нашей книги на русский язык. Уже доступен предзаказ, сама книга будет в продаже с 26 января. Предзаказ
Почти закончен перевод нашей книги на русский язык. Уже доступен предзаказ, сама книга будет в продаже с 26 января. Предзаказ - промокод на 35%

Примерно двадцать лет назад я "сделал" первый сайт (осилил развернуть wordpress по инструкции и пошатать базовый шаблон). Много воды утекло, но я так и не научился во фронтенд. Тем более, что сложность фронтенда росла экспоненциально, и угнаться за всеми этими фреймворками было сложно, не будучи собственно фронтендером. Игнорировать существование фронтенда было легко, пока мы не начали делать агента для создания веб-приложений, и тогда-то у меня начала периодически отваливаться жопа. Кажется, что тянуть React и 100500 зависимостей для простой CRUD админки - это как-то слишком, но индустрия в среднем со мной не согласна. И вот повод настал: хакатон, свободное время, желание разобраться в Claude Skills - и я сделал скилл для создания веб-приложений на стеке для таких же неумех: Rust + HTMX + Alpine.js + PicoCSS + Neon Postgres. Все рендерится на сервере, билдится в один крохотный бинарник, работает на любой картофелине. Попробуйте, если вы тоже не осилили React, а иногда нужно делать простой веб.

Классический ML был довольно творческой штукой. Придумать хитрую фичу из сырых данных, нашаманить нестандартную аугментацию, собрать гибрид из знакомых блоков. Нестандартные подходы часто вознаграждались. С AI agents всё строго наоборот: нужно оставаться ближе к канону. Да, при должно усердии можно заставить агента делать любые причуды. Хочешь промпты на сербохорватском? Пожалуйста. Свой формат tool calls? Не проблема, как-то будет работать. Но если Claude обучен на миллионах траекторий Claude Code, то каждое отклонение от их формата - это как плыть против течения. Можно, но зачем тратить ресурсы на адаптацию к причудам? You can't fight gravity gradient descent. Потому, хоть и хочется иногда переизобрести велосипед, для большинства задач лучшая стратегия - разбираться, как устроены оригинальные scaffolding, читать рекомендации от провайдера и не выпендриваться.

В моем CV много лет написано "Love building dev tools", и типичный нанимающий менеджер смотрел на это в лучшем случае без интереса. Dev tools и devex были чем-то относительно маргинальным. И вот довольно резко мир поменялся, и dev tools оказались на слуху. За новыми devtools релизами в YC уже невозможно уследить. Но отложим венчурный мир и астрономически суммы в пресс-релизах Cursor и последователей, есть причины и более приземленные. Во-первых, собственно распространение инструментов AI-powered IDE/agents привело к тому, что технические менеджеры, купив всем подписку на Cursor, вынужденно задумались о том, где боттлнек в software development life cycle. Он и до расцвета кодинг агентов был едва ли в имплементации, но сейчас это стало еще заметнее. Доля кодирования на фоне митингов, согласований, возни с инфрой стала совершенно незначительной. Избавиться от митингов техническими способами невозможно, а вот ускорить путь от коммита до релиза обычно можно. Во-вторых, devex на самом деле отчасти превращается в agentic experience. Разработчик библиотеки сейчас должен удовлетворить пользователя исключительно фичами, а вот API надо оптимизировать скорее для агентов. Счастье программиста от элегантного API измерять сложно, а вот сходимость агента - довольно легко. Я и сам прошлую неделю строил цепочку, чтобы агент рекомендовал другому агенту, как передизайнить CLI - буквально за несколько итераций сходимость улучшилась на треть. Я искренне рад этому. Раньше аккуратный фундамент проекта был причудой, на которую никогда не хватало времени, и так сойдет, пострадаем, притерпимся. Сейчас ни один эффективный менеджер не сможет возразить, что этот ваш рефакторинг - бесполезная затея, не показавшись AI-луддитом.

Чистил канпюктер от старья и внезапно обнаружил, что за последний год перестал использовать в разработке четыре столпа, которые казались незыблемыми последние лет десять: iTerm, Pycharm, Pyenv, Docker Desktop. iTerm и Pycharm продолжали обрастать фичами, которые мне ни к чему. Фичи бесплатными не бывают: у iterm в 2024 всплыла неприятная уязвимость, Pycharm продолжал слегка тормозить даже на свежем железе (возможно, я просто не знаю все флаги, как дать ему еще больше памяти). Так я перешел на более легкие альтернативы - Wezterm и Zed. Pyenv когда-то был отличным способом управлять зоопарком питонов и вместе с poetry делал управление зависимостями терпимым. Но uv разрубил этот узел, оно просто работает. Лучшее, что случилось с Python экосистемой, не считая maturin. Про избавление от Docker Desktop мне пришлось подумать на работе, потому что в Большой Корпорации для него нужна отдельная лицензия, которая положена не всем. Мне таки положена, но дать продакту демку стало сложнее. Так я познакомился с colima, перешел на нее (все еще с docker runtime / docker cli, которые не требуют коммерческой лицензии) на рабочей тачке, а заодно и на своей, совершенно этого не заметив. Впрочем, чистым докером я тоже пользуюсь все меньше, потому что меня покусал Dagger.