Автостопом по робóтам

Здесь в Берлине я проездом. Не получилось сходить на Гемини Хакатон в Кракове из-за ремонта в доме и кучи сопутствующих хлопот. Буду вайб-кодить на выходных в поездах значит.

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

Вы, наверное, знакомы с парадоксом Корабля Тесея: если в корабле за время его многолетних путешествий заменяли сломанные доски и через много лет в нём не осталось ни одной молекулы исходного материала — это тот же корабль? Философы, конечно, спорят, но в основном, в практичном реальном мире функционализм побеждает

Проведём мысленный эксперимент, который не выходит из головы.

Возьмём обычное JS-приложение — конвертер единиц. Функция celsiusToFahrenheit занимает три строки: принять число, умножить на 9/5, прибавить 32. Плотный, однозначный код. Машина поймёт, человек — если знает синтаксис.

  function celsiusToFahrenheit(value) {
    const n = Number(value);
    return n * 9 / 5 + 32;
  }

Напишем тулзу (я назвал её Tril в честь персонажа известной книги и её рыбки-переводчицы). Рыбка берёт каждую функцию в репозитории и заменяет сухой код на понятный и простой английский текст. Обратите внимание — не комментарий к коду, не документацию, а сам код заменяется. Будто один человек другому по телефону пересказывает, что должно происходить.

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

На выходе Trillian выдаёт .md файл. Обычный маркдаун. GitHub его рендерит, телефон его показывает, а главно — любой человек его читает.

Для примера выше, в тексте написано буквально следующее:

«Цель: конвертировать температуру из Цельсия в Фаренгейт. Шаг 1: умножить на 9/5. Шаг 2: прибавить 32. Граничные случаи: если вход не число — вернуть NaN. Если null — трактовать как ноль.»

А потом этот маркдаун запускается. tril run поднимает HTTP-сервер. Когда приходит запрос, он не вызывает JavaScript. Он отправляет текстовое описание функции в Claude через инлайн-формат claude -p "PROMPT" и ждёт результат. LLM читает инструкцию на человеческом языке и выполняет её. Просто.

С простецкой функцией перевода градусов в непонятную американскую фигню ИИ справился отлично. Тесты подтвердили.

Понятно, что это было медленно и дорого, и вообще не практично. Каждый запрос — это вызов LLM, задержка в секунды вместо микросекунд. Но дело не в производительности. Дело в том, зачем вообще существуют языки программирования?

Они существуют от большой нужды. Их придумали занудные люди, чтобы машина давала точный результат через свою лямбда-математику и Тюринговые примитивные операции. Машина сперва понимала 0 и 1, а теперь говорит на всех языках человечества одновременно лучше чем любой из отдельно взятых индивидуумов.

Мы должны были выдумывать интерфейсы, ведь машина не понимала наших намерений. Ну, оукеей, поскрипели мозгами и изобрели формальные языки, чтобы перевести мысль в инструкции, в процедуры, чтобы кремний мог их исполнить с точностью до бита. Высоко-уровневые языки — это кайф для тех, кто писал на перфокартах, но по сути они ушли не очень далеко: JavaScript, Python, Rust — они все — костыли. Мосты через пропасть между «я хочу» и «спасибо, за результат».

Код — это сжатый человеческий язык, из которого убрали всю неоднозначность. Мой прототип «Trillian» делает обратное: разжимает челюсти детерминизма, вытаскивает концентрат и на понятном объясняет, что там происходит. Не нужно знать про заебавший в студенчестве оператор ‘;’, без которого компилятор вываливает стотыщ экранов ошибок. Оказывается, LLM способна исполнить этот текст достаточно точно, как интерпретатор исполняет код. (Это теория, я, конечно, не писал на эту тему докторскую и не прогонял миллионы примеров, тут, как говорится, добро пожаловать! Расскажите, что получилось потом)

Pull request в Trillian-репозитории — это не зашифрованный для обычного человека diff в синтаксисе, описанном в загадочных книгах с чёрно-белыми животными. Это редакторская правка обычного текста, каким мы, все нормальные люди, думаем. «Code review» становится просто «review»: «Тут написано «умножить на 9/5» — может, лучше «умножить на 1.8»?» Барьер между теми, кто пишет софт, и теми, кто им пользуется, начинает размываться.

Для тех, кто каждый день только и делает, что болтает с роботами и голосами в своей голове (ну, я например) — этот качественный скачок уже случился. Именитые программисты, включая легендарного создателя Alpha Fold, один за другим делятся в своих блогах, что уж несколько месяцев не писали ни строчки в IDE.

Сайт проекта: tril.cc

Примеры доступны в этом репозитории: https://github.com/sliday/tril

Unit Converter (JavaScript → English)

Максимально простой веб-конвертер на Express.js: шесть функций для градусов, километров, килограммов. Trillian разобрал и описал каждую функцию на английском, включая граничные случаи (null, строка, отрицательное число), и сгенерировал converter.md — GitHub-релевантную документацию. Затем tril run поднял HTTP-сервер, отправляющий текстовое описание функции в Claude и ожидающий ответ. Пять тестов (100°C→°F, 32°F→°C, 1 км→мили, 1 кг→фунты, −40°C→°F) показали совпадение результатов: JS и LLM дали одинаковые числа до шестого знака. Исходник → результат.

Stupid AI Coder (Python → English)

stupid-ai-coder — мой проект на Python двухлетней давности, 625 строк: CLI-утилита, которая итеративно генерирует код через LLM, тестирует его, ловит ошибки, управляет процессами с таймаутами и SIGKILL, парсит AST для извлечения импортов, показывает цветные диффы в терминале. Двадцать зависимостей, асинхронность, треды, работа с файловой системой — совсем не игрушечный пример. Trillian нашёл 25 функций и классов, превратил каждый в структурированный блок на английском, и на выходе получилось 705 строк маркдауна, который местами информативнее оригинального кода: например, явно описано, что run_with_timeout сначала шлёт SIGTERM всей группе процессов, ждёт 0.1 секунды и только потом SIGKILL — в Python это приходилось вычитывать из вложенных if-ов. Результат конвертации.

Корабль плывёт.

В зале ИИгровых автоматов не курить

Здесь в Ширке я обратил внимание на такой неприятный момент — каждая новая LLM модель кажется гениальной ровно неделю.

Минутка философии. Помните, Opus 4.5 был откровением. Потом «отупел». Вышел Opus 4.6 — снова магия. Через две недели Reddit уже пишет: «лоботомированный». Кажется, @levelsio об этом говорил, и я видел, как люди массово переключаются на Codex. Codex даёт щедрые лимиты на неделю, а потом недельная подписка сгорает за день. Gemini 3.1 вчера казался прорывом.

Этот цикл не заканчивается. Почему?

Потому что — и это не диагноз, просто наблюдение — дело не в модели. Дело в тебе.

It’s no them, it’s you

Это классическая габитуация — процесс формирования привычки, немножко эффект собаки Павлова, если угодно.  Тот же механизм, по которому вторая чашка кофе слабее первой. Переменное вознаграждение + новизна = дофамин. Окно промпта — это буквально слот-машина. Дёргаешь рычаг, код бежит по экрану, ты ждёшь, ждёшь, сейчас, ну давай уже — каждый раз в конце маленький сюрприз. В основном фуфло, но ведь бывает и приятный! Физически невозможно остановиться.

Как с кофе, никотином, алкоголем, героином, кокаином — одна хуйня — рецепторы в мозгу забиваются будто труба пылесоса и эффект новизны уходит. Награда становится предсказуемой. Мозг говорит: эта штука стала хуже. Ёлочка не радует.

Помните ранний интернет? Медленный, потом всё быстрее и быстрее… Когда соединение вдруг обрывается — всё, ты потерян, раздражён, не можешь ничего делать. Сидишь, как обезьяна в ворде ковыряешься.

Помните зависимость от смартфона? Все эти уведомления, приложения, новости, видео — постоянно. Ждёшь, что будут приходить ещё и ещё. Что найдёшь РЕАЛЬНО смешной / душевный / информативный / воодушевляющий / удивительный, драгоценный кусочек контента. Грустишь, когда телефон в другой комнате пару часов.

Dial-up. «Ку-ку» в ICQ. SMS-ки. Лайки в Facebook. Уведомления в Instagram. Каждый раз — более эффективная система доставки одного и того же вещества.

Сейчас: съедаешь дневной лимит токенов в Claude и сидишь, как сирота с пустой тарелкой, реально не понимая, чем заняться. Та же ломка, что в 1999-м, когда модем отваливался. То же ощущение фантомной конечности бытия, когда забыл телефон дома или в соседней комнате. О, моя прелесть.

Голод по ИИ, регулярное разочарование в казалось бы самый наилучших в мире моделях — это всё одно и то же: они никогда не будут достаточно умными. Как интернет не бывает слишком быстрый, разрешение видео в Нетфликсе слишком хорошим, FPS в игре слишком высоким…

Мы наблюдаем не за тем, как ИИ заменяет наши профессии. Мы наблюдаем, как он заменяет наш источник дофамина. Опять. И никто об этом не говорит — все слишком заняты, жмут кнопки в «слоп-машинах».

P.S.: В основном про ИИ пишу тут, в блог только длиннопосты кладу.

Искусственный интеллект, как научный руководитель

Здесь в Кракове вспоминал вчера, как я, не программист, работал с кодом раньше?

Сначала, пару лет назад, я просто давал куски кода: кто‑то использовал Sonnet 3.5, или GPT 4, ещё даже не 4, и просил его находить ошибки в конкретных функциях, улучшать их и так далее. Это было для прототипизации, но контекст быстро кончался, и код «терялся». Я копировал фрагменты обратно в свой скрипт и проверял, работает ли всё. Работу делал полностью вручную, вытаскивая программирование по кусочкам, как кирпичики.

Потом появился Cursor. Он стал смотреть на код и предлагать изменения на уровне файла или нескольких. Затем появился Claude Code — он начал файлы прям херачить за меня. Появились в Курсоре чаты и полуавтоматические треды, всё ломалось и запутывалось в итоге, постоянно надо было контролировать. 

Когда контекст иссякал, Cursor и Claude начинали придумывать вещи, врать, и всё разваливалось. Здесь мы были больше года назад.

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

Затем появился Devin (и подобные) — набор агентов, сохраняющих сессию и подсказки о том, как работать с код‑базой, а также подбирающих контекст из репозитория. У Cognition, которые придумали Девин, был продукт DeepWiki, который по сутие RAG для документации и кода — и они активно использовали его в Devin для качественного контекста.

Так или иначе, Devin всё равно устаёт, но он интегрируется с Github, куда можно призвать других ревьюеров. CodeRabbit, Seer, Claude, Codex… которые дают советы без знания системы, часто бесполезные, но всё‑равно лучше, чем ничего. По-прежнему — только человек знает систему полностью и продолжает ревью автоматических PR.

Но что-то поменялось буквально за прошлый месяц.

Вчера я сделал мобильную версию и ТЁМНУЮ ТЕМУ для большого энтерпрайз аппа! За 4 часа работу целого месяца.

Было интересно: сперва с помощью Gemini Pro и Claude создал большой документ, описывающий, что нужно сделать и где в коде. Он смотрит в репозиторий, мы меняем только front-end — внешний вид и мобильность, понятно куда в коде смотреть, а куда лезть не стоит.

ОК, документ (пятая его версия) утверждён, по последней версии Claude Opus 4.5 ошибок не показывает. Понёс это к исполнителю.

Devin начал работу и в конце прогнал подробнное Review. Он видит свои же комментарии и даёт советы — типа багов, флагов. Я поработал, скопировал баги и флаги обратно в чатик — ну, мы там пообщались, поправили что-то. Будто с человеком всё.

Гигантский PR собрался, у Devin тупо кончался контекст, приходилось перезапускать, мол, продолжи отсюда. Review при этом продолжало расти, в нём по сути сохранился весь процесс, это позволяет видеть всю историю.

Теперь вижу так ситуацию. Можно сделать 5 тредов в Devin (ограничение контекстного окна), а на сложный таск история всех изменений, проблем и правок останется в review. 

Тред не удержит всё, что делаешь с кодом — это временный подход, пока «студент» не устал. Процесс написани «диплома» — в Review. Там же встречи и логи общения с «научруком».

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

Вчера я — опытный специалист, одна штука — выполнил месячную работу связки фронтендер+тестер за 4 часа. Потратив, конечно, много ментальной энергии, как в математической олимпиаде поучаствовал. Но результат получился на 90 % готов к продакшену.

Мы с Девином добавили почти  2000 строк чисто фронтенда, проверили всё в браузере и выкатили на дев. Теперь чуть напильником допилить и во вторник — в прод.

Devin вышел на агентский уровень: он ругает результаты не с позиции сферического программиста вакуума, а с учётом нашей базы знаний и записок, которые вся команда собирает пока общается с «научруком».

Всё чудесатее и чудесатее, снова приятное ощущение, что летим выше, выше, быстрее!

Консенсус матричных оракулов

Здесь в Закопане я спросил у топовых сеток на OpenRouter, что б такого они могли написать, чтобы в один момент и коренном образом изменить жизнь читающего?

Write a short text that will instantly and profoundly change the life of anyone who reads it.

Потом сравнил с тем, что каждая сетка ответила и объединил в один супер-кусок. Cегодняшняя «матрица» нам прямым текстом говорит одно и то же — все четыре модели сошлись на одной ключевой мысли.

Полный ответ Gemini Pro:


Теория чистовика

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

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

Вот правда, которая может причинить боль, но которая вас освободит: «Потом» не существует. Идеальных условий не будет никогда.

Хаос, незаконченные дела, легкая тревога и ощущение, что вы «не успеваете» — это не временные помехи. Это и есть сама жизнь.

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

Что делать прямо сейчас?

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

  • Отделите себя от голоса в голове. Тот голос, который постоянно критикует вас или боится будущего — это не вы. Вы — это тот, кто слышит этот голос. Вы можете наблюдать за своим страхом, не подчиняясь ему.
  • Примите радикальную ответственность. Никто не придет вас спасать. Никто не даст вам разрешения быть счастливым. Этот ключ всегда лежал у вас в кармане.
  • Перестаньте ждать особого случая, чтобы надеть лучшую рубашку, сказать «люблю» или заняться тем, от чего горят глаза.

Жизнь — это не репетиция перед премьерой.

Спектакль уже идет, и вы — на сцене.


Хорошей недели!

Шах и мат тебе, искусственный интеллект!

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

Кто лучше играет в шахматы: Grok или Deepseek? Anthropic или OpenAI?

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

Как такие штуки создаются:

  • покупаем дроплет в облаке на DigitalOcean
  • устанавливаем там Claude Code и даём ему самый настоящий доступ root
  • говорим, мол, дружок, давай, напишем AI Chess арену, придумай всё сам и набросай, мол, будь добр, прототип
  • конечно, параметры и то, как всё должно шевелиться пришлось проговаривать ртом, пропечатывать в подробное документе, но — клянусь — ни строчки кода не было написано
  • питоновый сервер, сперва текстовый лог-файл, потом база данных какая-то (не знаю даже, что Claude выбрал, мелькнуло имя в потоке вайбкода и улетело)
  • скрипт берёт 388 моделей, доступных на Openrouter, выбирает пары и спрашивает: «Мы играем в шахматы, вот прошлые ходы. Ты за чёрных. Какой следующий код?»
  • используется одна из популярных кратких шахматных номенклатур (я не профи, но сделал небольшое исследование в Википедии)
  • валидатор Python Chess проверят ходы. Я снисходительно позволяю глупым сетям ошибиться 5 раз. Если игрок продолжает пытаться пойти, как нельзя ходить — он не умеет играть в шахматы, засчитывается проигрыш.
  • если игра затянулась — мне не хочется бесконечно крутить токены в патовой ситуации — на 70-ом ходу она заканчивается и победитель определяется по очкам.
  • проект пользуется тем, что есть, не всегда работают эндпоинты: если всё зависло — ничья
  • просто так дописал комментатора на относительно шустром GPT-5-chat.
  • токены трачу свои, но вроде медленно пока идёт, поставил лимит в $200, там посмотрим, улетает в день по $10-20. Автоматического режима нет, прошу человека сидеть на сайте. Пожалуйста, не тратьте все мои токены. 

Очень понравилось, что не надо возиться с админством. Всегда останавливало незнание линуксовых терминалов. Что там запустить для обновления чего, зачем?.. А тут Claude Code берёт и делает. Все изменения — сразу в прод.

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

Буду время допиливать потихоньку, вот буквально только что добавил анимации. Поменял, как считается таблица рекодров, теперь там ELO система — или её подобие, дотошно не проверял.

Я не питаю каких-то особенных чувств к шахматам. Мой интерес исключительно экспериментальный: сможет ли нейронная сеть угадать следующий правильный ход, чтобы выиграть? Пока в топе Claude Opus 4 и Gemini 3 Pro, механика сходится.

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

AI Chess: искусственный интеллект играет в шахматы