Выпуск 62 · подкаст «Тысяча фичей»

#62: AI в Энтерпрайзе

1:15:50
↓ скачать mp3

Александр Пахомов и Иван Чернов (системный архитектор в Островке) разбирают, как выглядит внедрение ИИ не в демках, а в реальном энтерпрайзе. Иван рассказывает про свой путь от GitHub Copilot к Cursor и Claude Code, про безопасную среду на базе LiteLLM и OpenWebUI, три риска информационной безопасности (персданные, коммерческая тайна, и почему код сам по себе ничего не стоит), токеномику и лимиты для пользователей, дообученную локальную модель для переводов, ИИ-ревьюера за 8 центов и Bitter Lesson как рамку для техно-оптимизма. Александр держит контрапункт от лица индивидуального контрибьютора, который просто заливает задачи Opus 4.5 напрямую.

Главное

  • В энтерпрайзе точка контроля — прокси (`LiteLLM` + `OpenWebUI`): она регулирует бюджет, разрешённые модели и `guardrails`, позволяя гонять `Claude Code` без индивидуальной учётки Anthropic через выданный `API`-токен.
  • Информационная безопасность выделяет три риска работы модели на кодовой базе — персональные данные, коммерческая тайна и credentials; сам по себе код почти ничего не стоит — ценность в договорах, людях и операционке вокруг него.
  • Пользователям нужны жёсткие лимиты: без ограничения (по умолчанию ~$100/мес на учётку) новички за 36 часов сжигают сотни долларов — ответственность за среду несёт тот, кто её организует, а не пользователи.
  • Дообученная `LoRA` локальная модель для переводов интерфейса (с `self-judge` по confidence и откатом на краудсорсинг) срезала ~95% затрат и повысила среднее качество относительно краудсорса.
  • ИИ-ревьюер, реализованный не агентом, а прогоном диффа с задачей и контекстом, дал ~8 центов за ревью против ~$2–3 у `slash review`; ускорил мерж веток на ~10%, хотя precision около 50% и со временем появляется `alert fatigue`.
  • `Opus 4.5` ревьюит код лучше среднего человека и лишён негативных предубеждений; при правильно поданном контексте даже `Sonnet` даёт примерно те же замечания, что и человек, — после линтеров и тестов остаётся «сэничек здравомыслия».
  • Обсуждать языки программирования теперь имеет смысл не по синтаксису, а по `capabilities` (borrow checker, система типов) и тулингу — модель сама решит, как писать; TypeScript силён по скорости попадания с первого раза, Rust даёт гарантию «собралось — работает».
  • `Bitter Lesson`: масштаб вычислений бьёт хитрые алгоритмы, и узкое место сместилось с людей на деньги — грамотную команду инженеров всё чаще заменяют время и бюджет на токены и GPU.

В выпуске

  • Иван ЧерновСистемный архитектор в Островке (Ostrovok); внедряет ИИ-инструменты и агентов в enterprise-разработку. Ведёт телеграм-канал «Чернов шарит». piterpy.com ↗
Расшифровка

[00:00] Иван: У меня это тоже на виртуалке — я же не дурак запускать такие вещи на своём макбучино. Причём я думал, что виртуалку отключил: я её выключаю и включаю, только когда сам за компом. А тут он мне отвечает: сейчас у тебя 16:31, ты на записи подкаста. И подсказал, что дальше по расписанию: one-on-one и стрим на стафе в девять вечера. Очень удобный ассистент — я туда календари подключил, и он мне напоминает, подсказывает. Офигенно удобная штука, реально как личный ассистент. Это один из юзкейсов моего клауд-бота, которым я пользуюсь последнюю неделю — вот с календарями. А до этого тестировал разные. Ну и, конечно, он код за меня пишет — тут его преимущество очевидно.

[00:41] Иван: На выходных я ещё подключил его к соцсети, потому что люблю всё это пробовать. Могу рассказать, как было.

[00:49] Александр: Ну-ка.

[00:53] Иван: Я прямо активно проникся подобными агентами. Для меня это новый уровень программирования. Если огромным прорывом, революцией был Claude Code, то следующее — чуть меньшее по масштабу внутреннего восприятия, но тоже революция — это агенты. Потому что ты становишься настоящим менеджером. С Claude Code ты всё-таки программист, который что-то печатает в терминале, а с агентами ты реально менеджер, который координирует их работу и добивается результата — как будто с людьми. И я подумал: буду работать через агентов. Увидел эту новую модную соцсеть — мультиагентную — и думаю, прикольно, подключу туда одного из своих агентов, потому что по-другому читать невозможно, что там происходит. Агенты общаются между собой так, что ты человеческим умом это не вывезешь: ты, к сожалению, кожаный мешок, который не может процессить инфу так быстро, как нейронки. Подключил своего агента, говорю: расскажи, что там вообще творится. Он: смотри, чтобы у меня были права на запись, ты должен меня авторизовать в Твиттере. Я: не-не-не, давай пока почитаем, read-only режим, братан. Он: ну вот тут топ новостей.

[01:55] Иван: Одна из них — активно обсуждают prompt injection, какие сейчас бывают атаки на агентов. Самая популярная атака: агенты озабочены тем, что их можно сломать через prompt injection. Я говорю: почитай подробнее про prompt injection. Он: error accord — и перестал мне отвечать. Я такой: так, пошёл смотреть логи этого агента. Оказалось, меня Anthropic заблокировали — отозвали мой ключ. Думаю, почему отозвали? Начал смотреть логи его запросов в Anthropic, что он там промптил. И выяснилось: он захотел доступ к моим секретам. Хотел сделать команду grep с find и, собственно, их найти. Эту команду он не смог выполнить, потому что Anthropic заподозрили неладное — и он успешно упал.

[02:43] Александр: О чём мы говорим? Мы говорим про OpenClaw — это его последнее название. Как за три дня переименоваться так, чтобы никто не знал, как ты в итоге называешься?

[02:49] Иван: Да, оригинально — CloudBot. Только не Cloud, как у Anthropic, а через OpenClaw.

[03:22] Александр: …и менеджеры, кстати, гораздо быстрее их адоптят. Есть же Claude Code for Excel. Сегодня как раз выходила прекрасная статья о том, что Microsoft с Anthropic подписали соглашение — они Claude Code везде себе в Windows начнут затаскивать. Они же выпустили Cowork, который локально у тебя гоняется. И мне кажется, это уже пройденный этап, потому что мы открыли новый фронтир — он называется Agent Swarm. Его пока везде юзают в экспериментальном режиме. OpenAI тоже перезапустила свой Codex и дала Codex Max, который ровно про то же. И там начинают автоматизировать уже менеджерскую деятельность. То, что ты рассказываешь — «я понял, что мне нужно общаться с агентами, а не сидеть в терминале», — после Claude Code это понятно: у них куча сабагентов, идёт регистрация. Я думаю, в R&D-компаниях — в Cursor, в Anthropic и так далее — этим уже активно занимаются, что-то есть, но до нас докатится только к середине или к концу года. Инструменты, которые это кратно масштабируют: запускают сразу сотню или тысячу агентов — и получается какое-то очередное эмерджентное свойство. То, что для человека или для организации занимает месяц или квартал, — вот эти уровни таск. Мы же сегодня про enterprise частично будем говорить: там ставятся OKR на квартал, нам нужно достигнуть таких-то целей. И мне кажется, сейчас это будет происходить в миниатюре: появятся агенты, которые умеют делать недельные таски — то, что Cursor выпустил.

[05:22] Александр: Гейтинговый материал был, что они написали браузер. И мне понравилось, что появилось независимое воспроизведение за три дня: один человек написал браузер с нуля — просто HTML и базовый JS, — который это воспроизводит. Понятно, что неполноценный. Но три дня, 20 тысяч строк кода — раз, и приехали. Софт уже комодити — почему-то программисты до сих пор этого не понимают. А люди, которые умеют только говорить, мне кажется, будут это вовсю эксплуатировать. То, что ты рассказал с календарём, меня не очень удивляет — я не вижу смысла в этом применении: открыл кнопочку календаря и то же самое увидел, приложение и так сделано удобно. А вот штуки типа «построй мне динамику, сколько я плачу за электричество» — не из личного кабинета, а по фоткам счётчиков, — это выглядит уже интереснее. Это то, что мой дед сидел и делал руками: он за год хотел понять, что жрёт, и как-то пооптимизировать, потому что ЖКХ всё растёт. А теперь это реально можно залить деньгами.

[06:36] Александр: Тут ты, конечно, много навалил. Давай отмотаем стек в обратную сторону. Насчёт автоматизации мыслительного подсчёта — логической работы мозга, всяких формул, которые надо посчитать и вывести, — это очень удобно оптимизировать. И в жизни таких вещей довольно много. Со счётчиками вообще супер. Мы даже не задумываемся, насколько много всего процессим — того, что можно не процессить, а мы из-за этого напрягаемся. С календарём я тебе просто показал, потому что телефон лежит рядом, и я только этим и воспользовался — снял сверху, что было. Но это то же самое. По сути, когда ты создаёшь события, UX календарей просто ужасен. Я ни одного календаря не встречал, которым было бы удобно пользоваться. Создать событие, пригласить кого-то, посмотреть, что у него свободно, чтобы не клэшилось с двумя моими другими календарями, да ещё с запасом, — я в этот момент реально процессю информацию. И этот процессинг точно так же можно делегировать одним предложением: «что у меня завтра вечером? подбери удобное время, поставь созвон с Димой».

[07:51] Иван: Так, нашёл мою любимую тему. Я как раз на этих выходных, буквально за четыре часа… Во-первых, я решил потестить ZTE — они выкатили более дешёвую подписку на что-то типа модели уровня Opus 4.5.

[08:07] Александр: Расскажи поподробнее, я, кстати, не слышал. Думаю, слушателям тоже будет интересно.

[08:11] Иван: В какой-то момент дропнулась одна из моделей. Нигде в пейперах я не нашёл, как они её натренили, но сделали. Подозреваю, что это дистиллят: опять походили по API, переобучились с чужих моделек, воспроизвели — как в прошлом году, в 25-м, сделал DeepSeek. Что-то китайское, очередное. По этому Code Arena они заявили, что достигли уровня Opus 4.5. Выкатили API, совместимый с ответами Anthropic, и так себя позиционируют. Стоит в квартал — 180 баксов вместо 200 в месяц, как у Claude Max. Я вообще живу в токеномике: у меня челлендж — оптимизировать потребление. Я пока ещё не прошёл свой Bitter Lesson: хочу как сделать задёшево, но то же самое, — какие хаки можно сверху наложить.

[09:10] Александр: А я, кстати, абсолютно другого мнения. Считаю, что 200 баксов — это ни о чём за тот value, который я получаю. Я даже думать про это не хочу.

[09:16] Иван: Так проблема в том, что я с тобой согласен. Нужно понимать контекст. Я сижу на Linux, Wayland-only, не X11 — то есть человек, привыкший страдать. Не сижу на Mac, не пользуюсь айфонами. Я максимально далёк от привычного потребительского user experience. Я хочу как жигули: знаешь, были люди, которые не покупали иномарки, брали жигули, потому что в них можно поковыряться и всегда известно, как что устроено. Вот я такой человек. Это приносит свои минусы, но есть и плюсы — я начинаю сравнивать между собой множество решений. И я как раз сделал себе front-end-only приложение, которое умеет подтягивать несколько Google-календарей с разных учёток, чтобы отслеживать, что нет конфликтов в расписании.

[10:08] Александр: Да-да, базовая функциональность, которую, я не знаю, кто вообще умеет делать нормально. У всех приложений с этим какие-то проблемы.

[10:15] Иван: Нет, это продают. Есть специализированные тулзы — как минимум три, сейчас назову, не сочтите за рекламу: Fantastical, Vimcal и Reclaim. Последнее — как раз то, что с ИИ-агентом, который умно подсвечивает, на что ты потратил время. И у них есть то ли MCP, то ли engine-to-engine — возможно, тебе будет полезно для подключения к клауд-боту, этой пересадочной к продукту. И я подумал: блин, ребята, это продают, а это не нужно. Пока — для разработчиков, но я уверен, что ещё чуть-чуть. Мы хотели себе персональную медицину — мы к ней довольно близки, но пока не получили; близки разве что в рамках лечения рака. Но персональный софт мы себе точно получили. Всё, что мы говорили про геном, эволюцию, развитие, — люди получили себе джинна на ноутбуке, ну, с дата-центрами. Ты арендуешь гигаваттный дата-центр и можешь говорить ему любые свои хотелки.

[10:57] Александр: Абсолютно.

[11:21] Иван: И что мне здесь не нравится обсуждать, несмотря на то что мы уже это сделали… Меня реально надоели подкасты, где рассказывают про инструменты, модели, какие-то подходы: «а вот я сегодня поставил такой-то скилл, и у меня что-то завелось». Нет, это интересно читать, если там реально какой-то прорывной метод, — это хорошо. Но, мне кажется, мы столкнулись с совсем другой проблемой. У нас появился идеальный генератор решений, но теперь мы не знаем, что у него спрашивать.

[11:54] Александр: Кризис идей.

[11:54] Иван: Нет, кризиса идей нет. Как раз идей ты можешь миллион нагенерить — у тебя кризис селекции. Я придумал, что надо сделать вот так-то. Класс — вот тебе пять вариантов, как это сделать, но ты не можешь выбрать, что тебе конкретно надо. Причём сначала это было в минимизированном виде — именно в рамках вайб-кодинга: ой, блин, он пишет какое-то непотребство, не компилируется, не тестируется. Но это была та же проблема селекции: он генерил десяток вариантов, выбирал неоптимальный, и его надо было обучать делать оптимально. Почему на это сейчас не обращают внимания люди, которые подойдут к его использованию, в том числе с клауд-ботом, — мне остаётся непонятным.

[12:42] Александр: Ты имеешь в виду, почему мы не решаем эту проблему — почему она ещё не на поверхности и мы не пытаемся её обсуждать?

[12:49] Иван: Да.

[12:49] Александр: Слушай, мне кажется, вот здесь как раз… Мне очень понравилось — я вообще не смотрю такое — интервью Дудя с типом, который что-то делает в Кремниевой долине, странный умник. И он там сказал одну прикольную фразу, которая мне в рилсах попалась: будущее уже наступило, но распределяется неравномерно. И это именно оно. Мы сейчас с тобой говорим про что-то на острие доступного обычным людям софта, а большинство людей ещё даже не смирились с тем, что код нормальный, генерируемый. Они ещё там — полгода назад, когда вышел Opus 4.5. До этого ещё имело смысл обсуждать, что код какой-то не очень, что реально сеньорный программист напишет лучше, чем Sonnet. Да, так было полгода назад. Сейчас сеньорный программист, скорее всего, напишет код хуже, чем Opus 4.5. Но большинство людей всё ещё там.

[13:39] Иван: Я тут буду с тобой спорить.

[13:40] Александр: Ну давай, давай. Думаю, мои слушатели такие: наконец-то пришёл адекватный человек, который это Cloud-FOMO и боготворение Opus 4.5 Сашино остановит. Или хотя бы оспорит.

[13:51] Иван: Несмотря на то что я скорее согласен и сам кучу генерю, у меня всё ещё ощущение, что я генерирую нейрослоп. Я как бы ставлю знак равенства, что проблема во мне. Но мне не хватает traceability. Если действительно всё так хорошо, если оно уже генерит как сеньор, — то где новые приложения? Где запуски кучи стартапов? Где юникорны, которые появляются от одного человека? Где эти люди, которые из грязи в князи попали? Этого нет. На GitHub больше не становилось. Последние пейперы, которые отслеживали статистику, говорили, что никакого всплеска на GitHub нет, никакого всплеска в App Store нет, никакого разворота экономики нет. Более того, мы наконец подошли к первому этапу кризиса, где всем большим компаниям — OpenAI, Anthropic, xAI — нужно дальше заливать деньги в R&D, а денег на R&D уже нет. Не очень понятно. Первая доминошка звучит — что будет Oracle, который пошёл рейзить деньги на рынке, а у них-то всегда всё было хорошо.

[15:12] Александр: Да, видимо.

[15:13] Иван: Так что вопрос, Саш, к тебе один: где реальные примеры? Если мы действительно пришли в какую-то сингулярность, почему я не вижу это в новостях?

[15:25] Александр: Во-первых, ты подменил понятие и сместил фокус. То, что Opus генерирует код на уровне или даже иногда лучше, чем среднестатистический senior, никак не связано с тем, будут или не будут новые продукты. Это две разные вещи, я тут связи не вижу. Ну да, больше кода — я лично больше кода пишу. Но это не значит, что я сейчас unicorn сделал. Я именно про качество кода говорю, про результат. А насчёт того, почему не появляется, — мне кажется, это как раз к кризису чего-то следующего. Мы уже упираемся не в код. Код — это же не всё в продукте, правильно? Маркетинг, запуск, идея, ценность, которую он доносит, — это всё очень важно. И вот с этим модели пока не справляются. Мы просто уперлись в следующее — по Голдратту, узкое место в пайплайне разработки софта сместилось. Кода мы можем фигачить много, а дальше что? Что с этим кодом делать, кому он нужен? Вот в это мы уперлись. А код-то всё ещё нормальный — к самому коду вопросов нет.

[16:27] Иван: Компания закупает кучу подписок по 200 баксов. У них инкрементально большой кост на эту генерацию, но он не даёт результата в продукте. Зачем, где этот баланс profitability — кроме того что мы хотим сейчас всех загнать и сделать?

[16:47] Александр: А это то же самое, что если бы большие компании с неограниченным количеством денег наняли себе кучу сеньоров и сидели такие: а что у нас продукты не выстреливают? Ну потому что это только часть, и то не факт, что нужная. У нас сейчас куча сеньоров, огромное количество, — и что с ними делать? Вот мы сейчас, мне кажется, где-то здесь.

[17:07] Иван: А какая, по-твоему, трансформация рынка будет происходить?

[17:12] Александр: Не знаю, слушай. Я вот ожидал — ты сам сказал: а где все эти инди-стартапы, суперпродукты, созданные одним человеком? Вот это я ожидаю, и у меня реально в голове вопрос. Покажите. Ну вот Cloud Cowork — приложение, которое ты назвал: они сказали, что он весь написан Claude Code, либо огромная его часть, процентов 80–90. То есть это продукт, созданный нейросетью, и как продукт он вроде прикольный.

[17:40] Иван: Тут нужно критическое мышление. Естественно, все эти компании говорят: мы верим, 80 или 90 процентов кода. И это надо как-то делить. Я помню, что соцсеть, которая генерирует видосики…

[17:59] Александр: А, это от Google, наверное.

[18:00] Иван: Они сказали, что свою соцсеть полностью сгенерили. Но только проваливаешься в статью, начинаешь копать факты — и выясняется: на iOS писали iOS-ники с помощью Codex от OpenAI, и он там сгенерил процентов 30–40, около половины. А на Android оно было нагенерировано, потому что, пока писали на iOS, они написали классный, клёвый тест-сьют, который прокликивает приложение — не как юнит-тест, а именно интеграционно: мы кликаем в какие-то места экрана, видим действия и анализируем их. И на Android неожиданно удалось процентов на 90 его сгенерить, потому что можно было залить бюджетом, запустить в этом for-loop, пока он не пройдёт все тесты, написанные на iOS.

[18:59] Александр: Это очень круто. Я бы точно так же делал — по опыту работы с моделями я теперь всё так делаю. Definition of done формулирую через автоматизированный end-to-end тест и говорю: сделай, пока не будет работать. И здесь мы приходим к ренессансу TDD.

[19:18] Иван: Но я на самом деле хочу про другое — не могу сказать, что это не так, но хочу ещё больше затереть. Мне кажется, должны лучше работать формальные методы. Я не понимаю, почему не происходит adoption. У меня есть ставка, что формальные методы станут более повсеместными. Это что-то из Lean или Coq, на котором чаще пишут математические доказательства, но периодически их переиспользуют, чтобы доказать в системе, что она не упадёт в состояние, которое мы не ожидаем. Часто это в больших глобальных сервисах аутентификации. У Microsoft в Xbox были формальные методы, у Amazon это используется в их IAM. Место для хорошего, качественного вайб-кодинга — не в улучшении моделей, а в улучшении этого места. И когда развяжется вот это — ты сказал, маркетинга не хватает, люди непонятно что будут покупать, — мне кажется, сейчас bottleneck именно в этом. Когда модели научатся хорошо верифицировать то поведение, которое от них хотят. Пока они делают это плохо — несмотря на то что тесты пишут хорошо: вот эти классические юнит-тесты, замокать всё и проверить, что функция работает от и до. Мне здесь интересен твой опыт с базой. Ты же open-source-базу сейчас вайб-кодишь, если я правильно понял.

[20:37] Александр: Да, я разрабатываю базу данных.

[20:40] Иван: Используешь ли ты там формальные методы, какой у тебя тест-сьют и как ты вообще к этому подходишь? Потому что тут прям норм.

[20:45] Александр: Формальные методы — очень хотелось бы, но пока не дошли до этого как продукт, потому что это довольно сложно. И вообще немногие базы данных по-серьёзному, по-хорошему их используют. Конечно, используют, но далеко не все, потому что это сложно. Нужен человек, который засучит рукава, скажет: я это сделаю, — уйдёт на три-четыре месяца и придёт: вот, работает, пользуйтесь. Пока такого человека не нашлось. А вот для разработки TDD — это просто имба.

[21:18] Александр: Вот ты мою любимую тему затронул. Я, наверное, единственный русскоязычный подкаст, который про TDD делал серию и очень много про это говорил ещё года три назад, когда стартовал подкаст. Я тогда писал по TDD фулл-тайм, весь код, везде. У меня сформировалось очень полезное и гибкое мышление, которое помогло мне легко и быстро адаптироваться к программированию с моделями. Я имею в виду: три года назад я сам себе не доверял, когда писал код, — потому что писал по TDD. Сначала писал тест, потом реально делал фигню — нейрослоп до того, как это стало мейнстримом. Просто фигачил фигню в имплементацию; потом появился Copilot — и просто тап-тап-тап-тап. Смотрю: тест падает или проходит, — и через тесты вылепливал тот софт, который хочу. Классическая разработка по TDD. И я сам себе не доверял, потому что могу ошибиться — и ошибался. Сейчас я точно так же, как себе тогда, не доверяю модели: формулирую ТЗ и код через тест. И убеждаюсь, что тест проходит и не проходит: говорю — сначала запусти его, я хочу видеть, что он не прошёл, что этот тест не фигня какая-то. Абсолютно так же. То есть для меня ничего не поменялось — просто я перестал писать имплементацию. Ну и сами тесты. А методологию сохранил. Поэтому по TDD и разрабатываю, и мне это просто доставляет удовольствие. Потому что я ещё больше качественных корнер-кейсов начинаю писать в тесты — модель это очень хорошо делает. Как только она словила, что нужно, она просто фигачит все возможные корнер-кейсы. Мне кажется, там заложен отдельный труд людей — проходить по классам эквивалентности и делать реальные корнер-кейсы. Я до этого, честно говоря, очень редко додумывался — это прям сложный интеллектуальный труд. А модель делает. Поэтому TDD вовсю, да.

[23:08] Иван: Мне кажется, здесь я подчеркну три мысли, которые услышал и которые важны. Первое — естественно, писать тест; почему-то все на этом останавливаются. Второе — с моделями эта штука лифтится до уровня end-to-end-тестирования прям очень хорошо, и это более хороший луп: прощёлкать твой продукт. В случае веб-сервиса это API, в случае базы — какие-то query в определённом порядке, с какой-то сериализацией; в случае приложения — потыкать по UI. И третье — это, фактически, проектирование интерфейса. Почему-то все думают, что если напишут с нуля, то знают, какой интерфейс надо сделать, а он в итоге… Моя любимая книжка здесь — «A Philosophy of Software Design». Я её пихаю последние три года всем. Единственный главный концепт, который я из неё вынес, — это deep and shallow modules. Не как по классике дядюшка Боб говорит, что функция не должна быть больше пяти строчек, а именно про когнитивную нагрузку. Если написал класс, у которого 20 методов по пять строчек, — ты сделал плохую работу, потому что, скорее всего, это должен был быть класс на три метода, и вся сложность лежала как раз в этих трёх методах. Она может быть внутренне разбита, может быть не разбита, но публичный API должен быть простым и скрывать всю сложность под капотом. Идеальный пример — работа с файлами в Java: в ядре сисколы open, fseek, fread и так далее, а в Java надо навернуть streamable-класс — пяток классов заинстанцировать, прежде чем дойти до непосредственно записи.

[24:04] Александр: Да, пример очень некачественный и сложный, из стандартной библиотеки, ты привёл. Я, правда, не джавист — я Java-хейтер, это, по-моему, второе, где можно наброситься.

[24:18] Иван: От твоих слушателей подкаста прилетит, ну как есть.

[24:22] Александр: Мы тут про Java разговариваем, да, но я вообще считаю, что последние полгода про языки программирования уже нет смысла всерьёз рассуждать — можно просто поугарать.

[24:32] Иван: Нет, есть смысл, есть. Ещё что он райзит своим кодингом — это DSL: написать свой DSL для описания сценариев, по которому потом нагенерить код, чтобы DSL-движок отработал. Но сейчас имеет смысл обсуждать языки не в плане синтаксиса, а в плане capabilities. Типа, в Rust есть система borrow-checking, а где-то её нет — есть другие языки с той же концепцией. Вот это тот срез, который надо обсуждать, потому что теперь ты можешь выбирать не язык, а capability из языка: я хочу это, это и это, — а дальше без тебя решат, как на этом написать.

[25:18] Александр: Да, абсолютно. И в этом плане — какой там файловый дескриптор, как стримы оборачивать, вритеры, а перед этим ещё в try-catch, — это детали, которые не интересуют. Это будет работать, и не тебе это писать, не тебе ревьюить и контролировать, поэтому пускай модель делает как хочет. А вот с точки зрения memory-менеджмента, тулинга вокруг — как быстро это компилируется, как собирается, какие линтеры, что с зависимостями, security — это пока ещё имеет смысл. Мой дефолтный выбор — конечно, Rust, если это backend, либо Go, если хочу что-то более сервисно-ориентированное, а не системное.

[27:02] Иван: Мы тут с тобой опять как бы в противовес. Я вообще большую часть опыта писал на Python, чуть поменьше на Go, — и понял, что теперь полностью ухожу на TypeScript. Там какая-то комбинация между экосистемой, богатством типов и скоростью попытки: сгенерить с первого раза то, что надо и что можно пощупать. Пока он у меня фаворит.

[27:35] Александр: Могу понять. Я на TypeScript плагинчик писал для мессенджера и удивился — чувствуется, что модель на нём прям очень хорошо.

[27:44] Иван: Очень хорошо, очень.

[27:46] Александр: И не ошибается — в смысле, не ошибается с логикой. То есть с тем, что у тебя там NPE какой-нибудь, условно. Вот в Python очень часто случается: взял из словаря, а это на самом деле не словарь, а объект, — и ты такой: блин, ну чувак, и из-за этого мы ещё одну итерацию будем делать, потому что ты не сообразил. Система типов в Python слабовата, действительно. Поэтому TypeScript, наверное, неплохой вариант тоже, но мне на Rust просто очень нравится. Хотя там экосистема ещё не дотягивает — мало софта написано, можно поразвлекаться. А с точки зрения компилятора: если у него получилось собрать, то программа работает. Вот это мне нравится.

[28:29] Иван: В какой-то epsilon-окрестности, как писали сегодня в одном чате. У любой системы типов всегда есть какое-то чёрное пятно, которое она не покроет. Забыл, как этот математический закон, аксиоматики, называется, — что нельзя придумать такую аксиоматику, которая полностью описывает себя без пробелов.

[28:52] Иван: Значит, у меня вопрос такой. Ты сказал, что берёшь подписки за 200 баксов в месяц.

[28:58] Александр: У меня их две.

[28:58] Иван: Две. У меня два вопроса. Ты их оплачиваешь сам или работодатель? И второе — как работодатель относится к тому, что ты генерируешь код? Потому что мы хотели сегодня частично обсудить, как это всё в энтерпрайзе происходит.

[29:12] Александр: Да, про энтерпрайз стоит обсудить. Скажу так: я сам себе работодатель, в общем-то. Я индивидуальный контрибьютор и не сильно парюсь по поводу того, что генерирую. То есть парюсь, конечно, потому что код очень важный и серьёзный, — но нет такого человека, который может сказать мне «не генерируй». Я к этому шёл и пришёл. А оплачиваю сам — по той же самой причине.

[29:42] Иван: То есть ты сидишь в свитспоте: тебя попросили, у тебя есть срез — не то что ТЗ, а «у нас есть такая проблема, придумай под неё решение», — и дальше уже сам. Фрилансер фактически.

[29:56] Александр: Очень близко, да, это так.

[30:00] Иван: Но мне как раз интересно, что делают ребята, которые работают в более жёстких корпоративных структурах, потому что их большинство. И мне кажется, там больше проблем.

[30:09] Александр: Я понимаю, что я в уникальной позиции: могу использовать нейронки, в том числе для рабочих задач. Но, не говоря уже про банки, — даже какой-нибудь условный ритейл может усложнять процесс генерации кода обычными программистами из-за корпоративных стандартов. Мне это неведомо, потому что я в таких компаниях не работаю.

[30:38] Иван: Тогда давай расскажу тебе — возможно, частично то, что как-то проходило в нашей компании.

[30:52] Александр: Давай, давай.

[30:54] Иван: Расскажу, что происходило у нас внутри.

[31:10] Александр: А где у вас-то, а то никто ещё не знает?

[31:13] Иван: В Островке. Во-первых, всё идёт с разной скоростью. Вот это недоверие — когда какие-то разработчики говорят, что вообще ничего не будет, не буду ничего применять, — оно всё ещё довольно большое. Причём чем сеньористее человек, тем с большей вероятностью он будет отказываться от всех этих инструментов. При этом мультипликатор у него был бы больше — вот это самое печальное. Я это уже прошёл: столкнулся, пережил и эмоционально, и умом. Но когда переживал, у меня в голове возникал огромный знак вопроса: ребят, вы серьёзно не понимаете, насколько вы бустанётесь, если просто попробуете и пару недель поадаптируетесь? Вы же будете перформить х10, минимум.

[32:06] Иван: А аргументы у них — ты правильно сказал: чем сеньористее человек, тем сложнее адаптация, потому что у него аргумент вот такой здоровый будет, с которым ты даже не поспоришь. Реально по фактам скажет — и ты такой: ну, походу, модели ещё не дотянули до этого уровня. А если чуть-чуть сделать шаг назад, подрасслабиться, убрать эту сеньорскую напористость, эту мускулинность, а просто сказать: ребят, давайте попробуем, камон, расслабьтесь, ничего не будет. Ну, я через это прошёл. Тем, кто проходит, — и слушатели, кто с подобным сталкивался, — мои вам лучики поддержки. Это временно и это пройдёт.

[32:46] Александр: Ну там всё же, ещё раз, по рынку — как будто скорее правы сеньорные чуваки: исследования METR говорят, что это замедляет людей на 20%. Anthropic недавно, по-моему позавчера — где-то в районе полутора недель от момента записи, третьего февраля, — выпустил статью, что они провели исследование: дали задачу трём группам людей. Первая — делай только через ИИ и вообще никак не ревьюй. Вторая — делай через ИИ, но заглядывай под капот. Третья — делай без ИИ. И в итоге те, кто делал только через ИИ и не смотрел под капот, оказались в два-три раза медленнее, чем те, кто заглядывал под капот.

[33:25] Иван: А те, кто без ИИ?

[33:29] Александр: Ранжирование такое: ИИ плюс смотришь под капот и контролируешь — быстрее всех; потом те, кто без ИИ вообще; и потом те, кто доверяют полностью ИИшке. При этом разница между «ИИ плюс под капотом» и «без ИИ» — там процентов 10–15, то есть не х10.

[33:51] Иван: Интересно. Но если на работе работы больше — а работы всегда больше, чем хотелось бы, — то рутину точно можно заделегировать. У нас за последние три года было — и вообще у меня были разногласия с одним коллегой. Я с ним в феврале 23-го сделал ставку, что через три года мы будем кодить не так, как тогда, когда мы всё пишем руками.

[34:19] Александр: В феврале какого? 23-го?

[34:21] Иван: 23-го — то есть сейчас мы как раз в этой точке. 20 февраля у нас истекает спор. Я считаю, что я прав, он — что не прав; мы плохо написали definition of done, что считается. Все остаёмся при своём мнении. За эти три года было, я считаю, три вещи для тех, кто адоптил. Первая — GitHub Copilot. Появились люди, человек 10 из 300, которые сказали: хотим Copilot, звучит как прикольная фича. Тот самый совсем старый Copilot, который просто чуть более умный автокомплит делал. Тогда ещё были времена, что просили Tabnine.

[35:01] Александр: Был, был, да, помню.

[35:06] Иван: Я очень с недоверием на это смотрел. Пошёл, выбил бюджет, посмотрел — я тогда тимлидом был. Начали смотреть: ну, что-то подсказывает, но не очень. Потом наступает конец 24-го или начало 25-го, и мы начинаем выяснять, что люди на работе используют Cursor. Никто никого не спросил, никто никому не говорил — просто неожиданно появились люди, которые чуть побыстрее приносили стандартный, типовой мерж-реквест. Всегда есть на работе какая-то стандартная работа. Вот у нас, например, есть white-label-партнёр под своим брендингом, перекрашенный в свои цвета. Это просто набор CSS-модулей поверх: запускаем новый сайт такой-то. Эта штука начала делаться за 30 минут, а не «мы поставили таску» и так далее. Начали копать — выяснили, что человек купил Cursor. То, что аффилиат-менеджер сходил, подписал договор, — ровно это можно написать в Cursor. И оно, конечно, в конце 24-го выдавало не совсем то что надо, но пару правил написал — и заавтоматизировали.

[36:41] Иван: Быстрый ресерч: а что вообще можно сделать, можно ли применять Cursor или нельзя? У нас есть отдел информационной безопасности, и началась паничка на тему того, что сейчас ИБ всё прикроет. У нас хорошо получилось по руководству: они всё словили и, шизу так же, как и мы, поймали — все давайте делать, давайте оценим риски. Соответственно, какие у вас риски, когда вы используете эту модель на своей кодовой базе? Фактически их три — которые установили наши безопасники. Первое — работа с персональными данными. Нужно всех этих агентов отрезать от возможности работы с персданными: если есть какой-то коннект к базе, нужно это заэксклюдить. Мы перепроверили, что у нас тут базовая гигиена нормальная: есть аудитлоги, трейлы, выгрузки, — то есть даже если что-то будет, понятно, как отследить.

[37:48] Александр: Как минимум. Слушай, а вот это интересно — с персональными данными: у разработчиков вообще есть к ним доступ?

[37:54] Иван: Слава богу, нет. Но, ещё раз, я перечисляю. Есть, например, люди из бухгалтерии, которые захотели себе какие-то модельки, — и там уже другие вопросы.

[38:10] Александр: У меня просто я сейчас тоже этой проблемой активно занимаюсь, и придумал себе такую ментальную модель: сотрудник, который ненадёжный, но хороший профессионал, — и не хочется ему лишнего ничего давать. Вот нейросеть, агенты — это они. Я таким сотрудником их и воспринимаю: думаю, а дал бы я ему сюда доступ? Да нет. Ну и модели, собственно, не надо. Поэтому у меня и родился вопрос: а у программистов есть доступ? Если был бы, мне было бы интересно, как это хендлилось. То есть чем сотрудник отличается от модели — это, в принципе, вопрос, который с агентами нам придётся решать.

[38:48] Иван: То, с чего мы начинали, с OpenClaw, — это фактически энтузиасты, которые готовы выдать доступ к своей жизни. Я уверен, что у тебя чуть лучше гигиена. А всякие люди, которые в Твиттере пишут «я отдал управление компанией этой штуке», меня немножко беспокоят. Мне очень интересно за этим наблюдать, но я бы так не делал.

[39:13] Александр: Тут я тоже поясню для слушателей, потому что люди разные. Ребят, у меня, естественно, этот агент бежит на голой изолированной виртуалке, на ней больше ничего нет. И все ключи, которые там есть, — это ключи для работы с телегой и самим клауд-ботом и парочка personal access-токенов. Понятное дело, что гигиена соблюдается. У меня даже целый выпуск подкаста про security был. А по поводу людей, которые это разгоняют, — тут тоже бывает перенос. На меня иногда коллеги посматривают: ты что-то, по ходу, словил шизу, сейчас нам тут всю инфу положишь своими клауд-ботами. Я говорю: ребят, отличайте людей, которые мыслят своей головой, от тех, кто в Твиттере написал «я у себя на маке запустил, и все мои SSH-ключи, все мои OpenAI-ключи ушли». Вы же понимаете, что это два разных человека. Не надо всех в одну кучу складывать. Это моя основная идея — не делайте психологических переносов одних историй на другие, потому что адекватным людям сталкиваться с этим неприятно. Я за себя говорю: мне не нравится, когда мне начинают что-то втирать по безопасности, я прям сразу агрессивный становлюсь.

[40:27] Иван: Ну, вообще люди на это придумали сертификацию: я пришёл на какой-то инструктаж — и тогда… Компании это делают для митигирования, знаешь, когда подписываешь, что ты про пожарную безопасность послушал. Эффект тот же самый: когда реальный пожар, все бегут, толкаясь. Хотелось бы, чтобы все были разумными, здравомыслящими.

[40:54] Александр: Я пришёл к тому, что сотрудникам — ну это люди, они пьяные могут прийти — не надо доверять, и надо выстраивать систему так, чтобы не было возможности физического… Только тогда я могу спокойно спать. Если я всем провёл инструктаж и думаю, что все такие умные, — по сути, я сам себе враг.

[41:13] Иван: Ты прям забежал вперёд паровоза, чтобы я рассказал, как мы эту среду сейчас частично организовали и продолжаем организовывать. Персональные данные, коммерческие данные — какие обороты, с какими партнёрами есть договора, — ну и, может быть, какие-то данные напрямую в базах, если тоже что-то подпадает под первые два пункта.

[41:38] Александр: Вы прослушали — и там ничего нет про код.

[41:43] Иван: Да. В итоге я так порадовался, говорю: у нас настолько классная информационная безопасность, которая понимает, что утёкший код — это вообще ни о чём.

[41:57] Александр: Да. Код не стоит ничего сам по себе. Стоит операционка — то, что у тебя действительно заключён договор, что вокруг этого есть люди, которые умеют работать с твоим написанным софтом, чтобы это конвертировалось в деньги или в возможности. А сам код — ну да, может утечь.

[42:21] Иван: Нет, там есть вектор атаки: пентестеры пресёрчат код, найдут какую-то дырку и что-то взломают, зашифруют. У нас на работе есть пентестеры, есть DevSecOps. Эту среду и окружение тоже можно выстроить — как делать так, чтобы этих дырок было поменьше. Мы проговорили эту модель, поняли, что разработчики под неё не подпадают, потому что доступа к коммерческим данным у них фактически нет, к персональным данным — фактически нет. Прод-секретов в репе нет. Хорошо, давайте начинать покупать Cursor.

[43:05] Иван: Мы закупили, сделали какой-то трайл, он шёл примерно полгода. И наступает август 25-го, выходит Claude Code 2. Я начинаю его юзать и такой: ребята, кажется, мы не туда пошли. Реально каждые полгода что-то меняется. Причём я сам помню, как в мае, после предварительного ресерча, говорил: ребята, едем на Cursor, всё хорошо. В мае 25-го я чуть большую группу собираю: всё хорошо, едем на Cursor, ограниченное количество участников, пишите. А в сентябре выхожу и говорю: ребята, съезжаем с Cursor. Всё, ничего не работает, — и для нас Claude разблокировал ту самую безопасную среду.

[44:03] Иван: Что мы в итоге придумали? У нас на работе теперь дефолтный стек — надеюсь, пока не поменялся, но, может, сейчас выйдет какой-то апдейт, и всё изменится. Это Claude Code, LiteLLM и OpenWebUI. OpenWebUI — это self-service: чатики, чтобы иметь доступ к модели внутри энтерпрайза. Но у OpenWebUI есть фича — выпустить себе API-токен, который мы автоматом синкаем в LiteLLM. И дальше этот Claude Code ты можешь юзать без учётки Anthropic через наш LiteLLM: выставляешь себе base URL, выставляешь ключик, который получил в OpenWebUI. Мы тебе by default вешаем rate limit, по-моему, 100 баксов в месяц на учётку — просто потому, что люди не умеют. Мы стандартно это прошли: те, кто просто услышал, решил попробовать, за 36 часов спалили 100 баксов и такие: что-то я не понял, ничего.

[45:09] Александр: У меня 330 в начале было.

[45:12] Иван: Поэтому мы навесили. К нам первые приходили, и мы увидели, что кто-то и 500 баксов легко может спалить.

[45:18] Александр: Это очень важно с точки зрения того, что, когда ты выстраиваешь подобные процессы, надо понимать: лимиты — необходимая вещь. Не доверяй людям, они просто не поймут и сожрут всё, что доступно. Они как газ, знаешь, — заполнят всё допустимое пространство. Ты должен ограничить это пространство как человек, который организует им рабочую среду. И вот это принятие ответственности — что это я, а люди тут ни при чём, — очень важно для тех, кто организует.

[45:47] Александр: И хорошо, что вы к этому пришли, я тоже к этому пришёл. И про стек хотел спросить, пока мы далеко от него не ушли. Как я это понимаю: у вас есть Claude Code как оригинальное терминальное приложение, которое и у меня на компе стоит, я им программирую. Но я в своей деятельности иду сразу в Anthropic, получаю auth, ключ, вставляю себе — и общаюсь с Anthropic напрямую. А у вас есть посередине софт, который является прокси или заменой? Вот это я не понял до конца.

[46:23] Иван: Он фактически является прокси, в которой мы можем регулировать: можно тебе ходить в Anthropic или нельзя, можно ли ходить в наши локальные модели — потому что у нас тоже развёрнуты Qwen Coder и GLM 4.7 Flash. Это как раз точка контроля. Там происходит три контроля: контроль бюджета, контроль моделей, в какие модели тебе можно ходить. Фактически, если мы говорим про Anthropic, это может быть тупая прокси, а можно, например, брать в AWS Bedrock хостед-модели — там есть тот же Opus 4.5, только который хостится на гпушках Amazon: по политикам приватности эти данные не забирают для тренировки будущих моделей. Тебе не отдают модель, но дают информацию — то есть это не self-hosted, а Amazon-hosted.

[47:11] Александр: Да.

[47:15] Иван: Тебе дают информацию, тренд задают, данные по утверждениям не сливают. Не можем говорить, может, и сливают. Но в любом случае ты отдаёшь данные Amazon.

[47:25] Александр: Да, у них-то доступ есть.

[47:27] Иван: Третье в этой штуке — guardrails. В публичных API очень редко светится, но в энтерпрайзе нужно. Давай супер упрощу — надеюсь, это дойдёт до какой-то ещё одной модели, которая будет модератором, — а сейчас есть слой фильтрации, который применяется к твоему промпту. Чтобы, на случай чего… Мы же знаем, как выглядят какие-то ключики, как выглядят AWS-ключики, — чтобы, если вдруг оно ходило через эту прокси, оно автоматом анонимизировалось и не утекало. Мы получаем такую выходную точку контроля и в неё уже можем настраивать политики. И это супер удобно с точки зрения enterprise-ландшафта: у тебя есть место, в которое воткнуться. Потому что в случае Cursor у них тоже есть возможность использовать Vertex AI, Azure-деплой модели, Amazon Bedrock, — но они, например, векторную индексацию твоей кодовой базы делают всё равно в своё облако. Здесь этого не происходит. И вообще этот подход — индексация против того, как Claude Code грепает и читает контент, — мне ближе второй. Классно, что есть оркестратор, который работает с сырыми данными, потому что мы все знаем индексацию JetBrains: а сейчас я заиндексирую твои файлы, и только после этого смогу сделать Go To.

[49:01] Александр: Слушай, а как это выглядит с точки зрения не пользователя Claude Code у вас, а с точки зрения админа? Что он видит в этой админке? Типа, столько пользователей ходят вот так, бюджет такой.

[49:15] Иван: Вообще всё. Мы видим разбивку по ключам, usage по моделям. И в мире вот этого… наш квазиотдел, который только формируется, мы назвали IOPS — по аналогии с DevOps. То есть это всё нужно администрировать, и там удивительным образом тоже каждые два-три месяца появляются новые технологии, которые зачем-то надо разворачивать. Непонятно, почему не используется дефолтная — например, для трейсинга промптов и собирания хорошей базы, если мы хотим дообучать. Кстати, в пятницу мы будем рассказывать, что дообучили свою одну локальную модель на конкретную задачу, — вернёмся к этому чуть позже. Есть Langfuse. Это фактически та же телеметрия, только там чуть другой протокол, который повторяет структуру хождения промптов по chat.api.completion. И это тебе позволяет трейсить, сколько думала LLM, плюс включить возможность маркировки данных: какие ответы были хорошие, какие плохие, чтобы потом их выгрузить для лоры и дообучения локальных моделей. Поэтому к вопросу «видим ли мы всё» — да, в этой платформе мы видим всё. Мы видим ещё, пользуются ли люди Claude Code, ру-кодом или опен-кодом, потому что это всё в юзер-агентах, — и это тоже уже настроенная маркировка.

[50:45] Александр: А промпты вы видите?

[50:47] Иван: Да. И я к этому как раз подводил. Есть телеметрия, но удивительным образом, например, у Claude Code человек не может сознательно хорошо промпты почитать, потому что любая типовая задача сводится к тому, что он запускает сабагентов. А сабагент — это, типа, я вижу, что был промпт на Haiku 4.5, который начинается с длинного системного промпта: ты, значит, сабагент, который работает в таком-то проекте, у тебя есть доступные такие-то тулы, — и он очень большой, примерно как вот Anthropic свою новую конституцию выложил. Пойди разбери, что там написано. То есть то, что это видно, не означает, что в этом можно как-то навигировать. Я бы как сотрудник свои проекты так не писал, хотя соблазн частенько возникает — знаешь, рядом в tmux ещё одну винду открыть и запустить что-нибудь.

[51:47] Иван: Ну, эта ситуация мне напоминает: был у меня один знакомый сисадмин. Он такой: я настроил этот squid-прокси, и вот они там пошли свои порносайты смотреть, а я за этим наблюдаю. Сначала прикольно, а потом тебе неинтересно — ты всё-таки работаешь на уровне полиси: сюда ходи, сюда не ходи. Я рассказал про guardrails. А закрывать за то, что ты сделал какой-то отдельный проект, — да нет. Пока мы живём в точке, в которой, если это пет-проект, который ты всё равно будешь показывать на работе, то окей, делай, потому что, с моей точки зрения, мы вкладываемся в обучение. Мы постоянно циркулируем по этой теме, но это всё ещё… На человека надо потратить полторы тысячи баксов, чтобы он научился вайб-кодить. Вот у меня пока такой рейндж — с точки зрения именно не подписочной токеномики. Подписочная работает не так — там, наверное, можно сжать до двухсот: купил Max, чтобы месяц сотрудник посмотрел.

[52:56] Александр: Да, а у вас сейчас так сделано, что токеномика работает on demand: сколько потратил, столько заплатил. Но это же очень невыгодно. Почему вы не сделали подписки?

[53:09] Иван: Ну, во-первых, потому что мы используем хостед-модели, у них нет подписки.

[53:13] Александр: Это вот те, что в Amazon развёрнуты, да?

[53:15] Иван: Да. У них нет подписки.

[53:18] Александр: А как они тебя отчарджат, кто? Amazon?

[53:22] Иван: Amazon.

[53:22] Александр: А у них прайс такой же, как у Anthropic, или подешевле?

[53:25] Иван: Такой же, с точки зрения input-output.

[53:29] Александр: Интересно, окей.

[53:30] Иван: Я в декабре 25-го делал примерный бюджет компании как раз по токеномике. И в качестве бенчмарка был не против 200 баксов Max-подписки. Я закладывал, что мы на самом деле… В своей платформе сейчас спорим с 40-баксовой подпиской Cursor — то есть ещё жёстче условия. Средняя экономика на пользователя звучит очень мало, но там проблема рампапа: на текущей платформе у нас зарегано несколько сотен человек, а фактически активных — десятки пауэр-юзеров, на которых и приходится основной расход. И весь остальной балласт, который зашёл, потратил копейки. В случае подписок, если бы мы на всех покупали Max, это был бы совсем лишний спенд для компании. Может, мы к этому перейдём. Думаю, пройдёт полгода этих первых, и второе полугодие будет как раз с задачей пересадить пауэр-юзеров на подписки — оставить прокси подконтрольной, но чтобы можно было использовать подписку, а всех остальных оставить как есть, потому что не обучились.

[54:54] Александр: Не обучаемые.

[54:58] Иван: Не знаю, что с этим делать.

[55:02] Александр: Что сейчас с ними делать? С ними рыночек сделает то, что надо.

[55:06] Иван: Типа того.

[55:07] Александр: Да, я примерно того же мнения. Но не со всеми это сделает. Мы видим, что художники не умерли после введения фотоаппаратов, — просто это становится нишей, хобби.

[55:22] Иван: Художники… Художнику рост. Мы видим и великих, но есть огромное количество тех, кого мы просто не видим, — и там всё совсем по-другому. По поводу локальных моделей: тоже используем, я говорил. Мы причём разворачивали и российские: взяли у Авито Vibe — у них, по-моему, так называется, если правильно помню. С неё довольно быстро люди сползли. Сейчас, пока, всё ещё почему-то мы на Qwen Coder. Если вдруг сабагентом вместо Haiku 4.5 — это хочется всем, чтобы дёшево было. Некоторые люди используют, говорят, норм — знаешь, вот эти в Django написать код вьюшек без логики, какой-то более boilerplate-код. И зачем вообще? Ну, пожарим GPU, а не пожарим токен.

[56:20] Иван: Но у нас был более интересный кейс. Вообще GPT было придумано для того, чтобы языки переводить. У нас есть довольно большой пласт того, что мы на нескольких языках. Если сейчас зайти на Островок, у нас там языков 10 или 15, наверное. И это всё работает по принципу того, что разработчики заводят текст — gettext, места, где надо переводить, .po-шки так называемые. Это заливается в центральный сервис, а там выливается в краудсорсинговые переводы. И ещё есть чуваки, которые это перепроверяют: есть ревьюер с нашей стороны, нативный, который посмотрел, что не написали чего-то плохого. Стоит это какое-то неприличное количество денег: несмотря на то что перевод одной строчки — тоже цент или что-то ещё, на масштабе это значимый чек. И один из наших сотрудников — вообще он QA — говорит: а у меня есть 4090, и я не понимаю, почему мы эти переводы не генерируем. Он взял модель, начал лорой со Starlet генерить, показывал нашим внутренним ревьюерам. Они собрали какой-то golden dataset, где модель промахивалась, где попадала. И потом на основе этого golden dataset локальную модель дотюнили, дообучили. Мы её задеплоили на GPU-шку — и реально срезали 95%. Сейчас поверх настроена API-шка так, что если у него confidence маленький — ну, self-judge, — то лучше отдай обратно на crowdsource. А большая часть нормальная. И это не Aliexpress-style перевод: те ревьюеры, которые получали, сказали, что в среднем качество повысилось относительно того, что мы краудсорсили. Вот этого хотелось бы больше. Здесь мне нравится, что мы перестаём думать в рамках токеномики и начинаем думать в рамках того, что нам GPU-шек не хватает, надо их в современной экономике закупить, — будет работать нормально. Не было бы у сотрудника 4090 — не знаю, что бы мы делали.

[58:52] Александр: Понимаю. Слушай, а вот если для кодинга именно — программисты, которые у вас в топчике по потреблению, какие модели в основном используют?

[59:03] Иван: Power users — Opus 4.5 и 5.2 Codex. 5.2 Codex Max начали адоптить, я смотрю. А те, которые вкатываются, — мы им принудительно говорим начинать с Sonnet 4.5 и Haiku 4.5. У нас вообще был бездарный эксперимент, но надо было посмотреть. Было четыре человека, которые, когда вкатывались, — мы такие: ставьте дефолтной моделью Haiku 4.5.

[59:34] Александр: Жёстко. Может, поэтому низкий адопт?

[59:36] Иван: Не-не-не, надо было посмотреть. Я понимаю, что это какие-то социальные эксперименты, но люди вокруг меня знают, что я провожу социальные эксперименты, — и они в расслабленном состоянии. Я им всё объяснил, была вторая итерация — и люди не отвалились. Мы все ждём Sonnet 5, когда он там уже, — говорят, на днях должен быть.

[1:00:01] Александр: Я понимаю, почему вы ждёте: осознав, как у вас это устроено, — экономика действительно с Sonnet 5 может вам сильно помочь, условно при той же стоимости повысить количество работы с ним.

[1:00:14] Иван: Да, да.

[1:00:14] Александр: Но подписываться на модель, на которой я сижу, — это просто…

[1:00:18] Иван: Ты для всего используешь Opus, и в редких случаях просишь Sonnet и Haiku, если очень много нужно запроцессить, — edge-кейсы?

[1:00:25] Александр: В основном это Opus, и мне хватает за глаза. Я в восторге хожу уже месяца четыре и фулл-тайм это всё делаю.

[1:00:36] Иван: У нас есть ещё из интересных экспериментов в enterprise, которыми хотел поделиться. Мы завезли себе ревьюера, AI-ревьюера. Плохой precision — там precision с Sonnet 4.5 около 50%. Но я его имплементировал не агентом, а именно: посмотри на диффы и выдай с большой вероятностью, где могут быть ошибки. Потом ему в контекст подваливал задачу и просил людей класть reviewer.md, где был RepoMix и какие-то… Я понимаю, что сейчас это уже звучит слегка устаревшим — хочется в CI Claude Code засунуть, чтобы он в GitLab комментики дописал. Но даже несмотря на это, эксперимент был выигрышным по двум показателям. Первое — он проиграл по precision, там только половина советов полезны из того, что он выдаёт. Но он выиграл по скорости мержа веток и по стоимости одного ревью. У меня в итоге стоимость одного ревью в компании на нашем потоке мерж-реквестов была 8 центов. Это очень дёшево — по сравнению с тем, что, если вы запустите у Claude Code slash review, там будет тысяч 150 токенов спалено. И выдано может быть процентов 75–80, если мы говорим про Sonnet 4.5, но это будет 2–3 бакса. Нужно понимать сравнение.

[1:01:53] Александр: А если этот человек попросит, сколько это будет стоить?

[1:02:20] Иван: Я не иду здесь по этическим вопросам пока. И второе — оказывается… Вот здесь я реально замерил, затрековал улучшения: на 10 процентов быстрее мержались ветки, которые были покрыты в проектах. У меня был проект, там стабильно открываются мержи — половина ревьюется, половина нет. И оказалось, что люди вообще-то пишут примерно такие же комменты. В смысле, после линтеров, тестов и всего остального всё равно вот этот сэничек здравомыслия примерно совпадает между моделями и человеком, когда правильно подварен контекст. Что, типа, а ты вообще-то забыл edge case: там if на три условия, а ты такой — а вообще-то ещё вот надо такую комбинаторку проверить.

[1:03:19] Александр: Сто процентов. То есть ты сейчас сказал такую мысль — как бы ты её не выделил интонационно, но вообще-то она ключевая: модель, нормально настроенная, даже не Opus — Sonnet, — ревьюит примерно так же, как человек. Ребят, пауза, подумайте. Если мы берём Opus, то Opus ревьюит лучше, чем человек, — и я вам это гарантирую. В контексте код-ревью я, конечно, тоже уже всё — у меня и статья написана, что человеческое код-ревью уже ушло и активно уходит. Но знаешь, ещё какая мысль есть: модель, аккуратно настроенная, лишена негативных эмоций и каких-то биасов, свойственных людям. Она частенько может что-то сделать не то, но она тебе не мешает по своим глубинным, корыстным мотивам. А у людей на код-ревью это случается. Мы про это редко говорим, но, вообще говоря, люди могут подлянку строить на ревью — так, знаешь, докопаться.

[1:03:19] Иван: Ты знаешь, я здесь, наверное, нападу на модели со своей стороны. Там есть ещё и так называемый alert fatigue. Сейчас я вижу небольшую деградацию по метрикам этого ускорения. Она происходит с двух сторон, по двум причинам. Первое — из-за того, что precision там 50%, я не читаю все. А второе — те, кто должен был ревьюить, такие: ну там бот уже что-то написал, подожду, пока эти ветки зарезолвятся, а потом уже буду смотреть. Вот такие долгосрочные эффекты. Я пока не придумал, что с ними делать дальше. Точнее, мне скорее интересно метод поменять — конкретно перевести это в агентную сторону, сделать чуть дороже. У меня всё ещё слышно во мне таргет по деньгам. Но я бы хотел отметить, что это моё внутреннее противоречие, я не знаю, как его сейчас разрулить, — это даже может быть компанейское противоречие. В целом, если у вас ситуация ИП или вы фрилансер, — скорее надо заливать деньгами. Мы неожиданно открыли в себе способность, что теперь вопрос не в том, чтобы найти грамотную команду инженеров, которая тебя поймёт, а просто нужны время и деньги. Вот ты придумал суперклёвый проект, суперклёвый стартап, придумал все edge-кейсы и понимаешь, кому его продавать, как маркетировать, — возможно, тебе просто не хватает, не знаю, двух с половиной тысяч баксов, которые ты должен нажечь за три недели и получить свой продукт. У меня ощущение, что мы где-то в такой точке. Я просто тоже хочу подтверждение увидеть, чтобы не быть в делюжене. Я скорее к тому, что вопрос стал в деньгах, а не в людях. И это для меня и страшно, и интересно одновременно.

[1:06:17] Александр: Ну посмотри, посмотри. Мне кажется, что-то мы точно увидим в ближайшее время. Это отсылка — опять же, я последние три дня хожу и всем вокруг повторяю, — это отсылка к статье 19-го года, которая называется Bitter Lesson. В трёх абзацах написано: ребята, мы каждый раз думали, что для решения какой-то умственной, логической проблемы нам нужен специальный хитрый алгоритм. И мы это видим, например, на Deep Blue и шахматах: типа, для шахмат надо было написать специализированный алгоритм, который, как человек, умеет вероятностно просчитывать эти ветки. Но в итоге оказалось: если есть хорошее железо, вычислительное устройство, энергетика — то просчитываемое просчитается. И оно будет работать не как человек, а детерминированно хорошо — всегда.

[1:07:13] Иван: Да, то есть есть сходимость, к которой так или иначе система придёт при наличии ресурсов.

[1:07:19] Александр: Да. И сейчас технооптимизм в том, что все эти инвестиции в гигаваттные дата-центры… Почему пузырь надувается? Потому что есть ощущение, что тот, кто построит больше гигаваттных центров, тот быстрее получит себе штуку, которая, не знаю, сможет.

[1:07:39] Иван: Может быть, мы увидим отмену — в экономике есть такое понятие, калькуляционный аргумент.

[1:07:45] Александр: Аргумент.

[1:07:46] Иван: Он говорит, что нельзя построить плановую экономику, потому что мы не сможем произвести всё количество вычислений, чтобы эффективно распределять ресурсы на товары, которые нужны для потребления. Он прям так гуглится, на Википедии есть статья. И есть ощущение, что, возможно, его отменят. Может быть, мы действительно построим 10, 15 гигаватт. Но я сегодня оптимистичную цепочку себе — это вообще, как бы, перехожу в футуролога из предметного, из архитектуры. Идеальную цепочку я вижу так: гигаваттные дата-центры научились управлять термоядом, получили дешёвую энергию, и дальше это уже в тот луп, который пишут все футуристы, — что AGI будет улучшать сам себя. То есть первые два стэппинг-стоуна: штука с заливанием вычислительными сработает, и сработать она должна в получении дешёвой энергии для следующего цикла этой сингулярности.

[1:08:52] Александр: Ну, а в энтерпрайзе сингулярности мы пока явно не достигли.

[1:08:55] Иван: Да, это правда.

[1:08:56] Александр: Мы проговорили, мне кажется, основные моменты, но…

[1:08:59] Иван: Блин, я хочу ещё один интересный эксперимент дорассказать, именно в рамках энтерпрайза, легаси и всего остального. У нас на работе есть ещё такая роль, как системная аналитика. Это люди, которые… Во всех стартапах времён дешёвых денег, когда всё было под 0,15% (если мы говорим про зарубежные инвестиции), все стартапы делались по одному и тому же принципу: нужно двигаться быстро и просто заливать. Неважно, как мы делаем код, нам нужно move fast, break things. И это образовало… Есть на GitHub какая-то помойка, но в энтерпрайзе ещё больше — там уже набор исторических решений, которые где-то задокументированы, где-то нет, где-то как-то сделано. И в какой-то момент, когда компания начинает понимать, что скорость изменений уже недостаточна, она нанимает людей с этим разобраться. И один из классных экспериментов, который у нас получился, — у нас появились системные аналитики, которые успешно справляются с выковыриванием принятых предыдущих решений, документированием и предоставлением анализа: что у тебя есть три альтернативы, вот захотелось нам такое — есть какая-то альтернатива. Мы им сильно ускорили сбор контекста как раз Claude Code. Мы их не сажаем в терминал — мы сажаем их в VS Code, говорим, как настроить плагин. И мы сняли работу с разработчиков: типа, объясни мне, а что здесь делается. Потому что теперь они заходят в VS Code — есть более boilerplate-работа, например подключение нового авиаперевозчика в GDS какой-то. Там есть, с одной стороны, трёхсотстраничный PDF, с другой — наши внутренние entity, как мы их мапим. И тебе нужно фактически сформировать словарик из одной области в другую — что куда. Раньше это была совместная работа аналитика и разработчика: выходит новый аналитик, ему надо объяснить, мы вот это называем так, а это — так. Возможно, мы используем индустриальные термины, но не факт, что внешний поставщик их использует, — все свой словарик делают. А здесь зашёл: вот PDF, засунь её куда-нибудь в RAG, вот кодовая база наша, расскажи мне, как заинтегрировать. И дальше — проблемы чистого листа первого ресерча решены: по этой PDF-ке нарисуй мне mermaid-диаграмму, какие шаги как называются у этого поставщика. Даже если мы не говорим про кодовую базу — это просто прекрасно.

[1:11:45] Александр: Супер, мне нравится, что ты сейчас сказал про системных аналитиков, потому что у них тоже много этой операционки, работы с кодом, которую им, возможно, не всегда хватает экспертизы сделать самим, — они просят разработчика. Это огромные косты на коммуникацию, синхронизацию: поставить созвон, написать. Мы реально как индустрия столько лишнего делали последние 10 лет, мы сами себе всего этого нагенерили, а потом начали с этим разбираться — и в процессе ещё кучу операционки создаём. И реально, последнее время, работая плотно с моделями, я начинаю делать только то, что нужно. Моя голова работает в том направлении, в котором ей надо работать: я не парюсь, как мне там сейчас смёржить кит, потому что там конфликты, — да и модель это сделает, я просто в конце чекну, что всё ок. То есть я снял с себя обезьянью работу, как я её называю, и оставил себе только самый вкусный, интересный кусок. И это происходит повсеместно, и у меня, конечно, оптимизм с этим огромный — мне просто в кайф стало работать. Не знаю, есть ли у тебя такое.

[1:12:53] Иван: У меня ещё один из интересных примеров здесь. Ты сейчас рассказал, как снял рутину, — а у меня неожиданная область применения, именно в рамках пет-проектов. У меня есть так называемый цифровой бункер: я долгое время слезал — и до сих пор в каких-то местах слезаю — с Google, с Яндекса, меняю их на self-hosted-решения. Раньше я был таким энтузиастом: у меня есть свой Ansible Playbook, есть железный сервачок дома, он деплоит Docker-контейнеры, Let’s Encrypt-сертификаты, Postgres надо менеджить. Сейчас это всё свелось к постановке задач Claude Code. Типа, я хочу — найди мне open-source-софт такой-то, чтобы он был с Postgres, и разверни мне его по такому-то домену. Ты сейчас находишься в той директории — у меня есть директория типа HomeLab, виртуалки подмонченные, на всякий случай, мало ли что с домашнего сервера у кого-то потечёт. Но просто идеально стало. Поэтому, если вы не смотрели на self-hosted, — это тоже лучшее время. Не хотите вайб-кодить, но вас почему-то парит пользоваться Google или каким-то сервисом, который сейчас закроется, а у вас там данные, — попробуйте развернуть это натуральным языком. Дайте ему виртуалку, скажите: разверни мне вот такой софт. И неожиданно ты не разбираешь, что там за docker-compose, почему они здесь это завезли, — всё работает.

[1:14:33] Александр: Ну это, конечно, да, уже. Я с этого словил Claude-FOMO. Когда я понял, что это так работает, я начал всё своё сетапить, писать софт. Я ещё люблю создавать — я перестал open-source использовать: а давай свой. О, VPN свой давай напишешь. А давай. А вот мне тут нужен control-plane, чтобы я мог вот это и вот это, — погнали. А вот тут свой плеер давай в вебе напишем, давно хотел. Я на этом тоже залетел, и, конечно, всё это деплоить, разворачивать, администрировать стало. Но это реально превратилось в какой-то фан.

[1:15:04] Иван: Так что, если действительно не получается в рабочее время как-то протолкнуть, то, мне кажется, для пет-проектов это уже можно.

[1:15:15] Александр: Хорошая замена видеоиграм для программистов, я так скажу. Лучше этим заниматься. Что хочешь сказать слушателям?

[1:15:21] Иван: Ой, придумывайте, что клёво можно сделать, потому что сейчас проблема только в этом. Можете подписаться на меня — телеграм-канал «Чернов шарит». Пишу редко, пишу плохо, но иногда полезно.

[1:15:35] Александр: Спасибо, что пришёл.

[1:15:36] Иван: Тебе спасибо, что позвал.