Константин Рядов Инженер JVM, ушедший в инженерию ИИ. То, что я сделал.

Привет, меня зовут Костя Рядов. Я разработчик, и SDLC — это моя жизнь: от инструментов для JVM, которыми я занимался годами, до ИИ-агентов, которые делаю сейчас.

Последние записи

  1. Рубрика бэк ту скул: почему появились микросервисы и откуда взялся Polyglot Architecture?

    Микросервисы появились не ради разных языков, а ради масштабирования организаций. Polyglot Architecture стала следствием, а не причиной.

Читать блог

Избранное

Гонки по городу вживую

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

  • TypeScript
  • Three.js
  • OpenStreetMap

Калькулятор стоимости инференса вживую

Считает, во что на самом деле обходится селф-хостинг Kimi, GLM, DeepSeek, Qwen или MiniMax: от числа ускорителей и схемы параллелизма до стоек, питания, людей и цены за миллион токенов. Каждая отвергнутая конфигурация объясняется с точностью до размера промаха.

  • TypeScript
  • vLLM
  • GPU
2026 Открыть демо Исходникиllm-hardware-calculator

Art Morph вживую

Фракталы на GPU в WebGL с палитрами хохломской и гжельской росписи. Масштаб, панорама, поворот и глубина итераций — всё считает видеокарта.

  • JavaScript
  • WebGL
  • GLSL

Лаборатория вживую

Генеративные скетчи, которые работают прямо в браузере: рекурсивные фракталы на p5.js на восьми глубинах, контрольный лист из четырнадцати рукописных SVG-спиралей и индикатор загрузки по одному пути.

  • p5.js
  • SVG
  • Canvas

Видео в документ

Превращает ссылку на YouTube или локальный файл в структурированный ODT, DOCX или PDF: речь распознаётся, слайды вырезаются из кадра, а связный текст собирает языковая модель.

  • Python
  • Whisper
  • FFmpeg
2025 Исходникиvideo2docs

Ещё один лабиринт

Лабиринт от первого лица на Java 21 и JavaFX 3D. Каждый уровень — свежесгенерированный лабиринт; дошёл до анимированного выхода, следующий стал больше.

  • Java
  • JavaFX
  • FXGL
2025 Исходникиlabyrinth7

ИИ для бизнеса вживую

Учебник для тех, кто продаёт, покупает и оценивает ИИ-проекты, не будучи ИИ-инженером. Написан, чтобы развести четыре слова, о которые спотыкается почти любой разговор об ИИ-стратегии: ассистент, RAG, text2SQL, агент.

  • TypeScript
  • MDX
2026 Открыть демо Исходникиai-for-business-tutorial

Агент поиска людей

Конечный автомат на LangGraph ищет публичные профили, останавливается и спрашивает, кто из кандидатов нужен, и собирает карточку со ссылками на источники. Только открытые данные.

  • Python
  • LangGraph
  • Chainlit
2026 Исходникиsearch4people_v2

MCP-сервер для Payara

MCP-сервер на Java, через который ассистент управляет сервером приложений Payara по STDIO: статус доменов, развёрнутые приложения, конфигурация каждого из них.

  • Java
  • MCP
  • Gradle
2026 Исходникиpayara-mcp-server

Корпоративный ассистент на LangGraph

Ассистент для регулируемой среды: отвечает по документации, внутренним вики, базам данных и логам компонентов — с аудит-логом, анонимизацией персональных данных и проверкой на инъекции в промпт.

Что это

Диалог устроен как поток LangGraph: данные собираются из нескольких источников параллельно, контекст сохраняется между репликами. Запросы и ответы проходят через защитный слой — персональные данные распознаются и обезличиваются до того, как попадут в модель, а промпты проверяются на попытки инъекции. Доступ аутентифицирован, частота запросов ограничена по пользователю, каждый обмен пишется в аудит-лог. То, на что ассистент не может ответить уверенно, эскалируется, а не додумывается.

  • Python
  • LangGraph
  • Presidio
2025 Закрытый код

Сервис поиска уязвимостей в JVM

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

Что это

Java-агент, подключённый к работающему процессу, сообщает, что JVM загрузила на самом деле, а не что заявлено в сборочном файле. Сервис сверяет этот инвентарь с открытыми базами уязвимостей и уведомляет команду-владельца, ранжируя находки по важности и прилагая варианты устранения. Узлы заводит администратор, состояние видно через JMX и интерфейс сервиса. К каждой находке приложено основание: видно, какой именно загруженный артефакт дал совпадение, ещё до решения что-то менять. Смысл — в зазоре, который он закрывает: манифест зависимостей и живой процесс расходятся, а эксплуатируется только второй.

  • Java
  • JMX
  • CVE
2022 Закрытый код

Остеопатический осмотр

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

  • Python
  • Flask
  • Bootstrap
2025 Исходникиosteopathic-examination-and-treatment-plan

You should know IT вживую

Разговоры с людьми из ИТ о том, чем они на самом деле занимаются: архитекторы, аналитики, SRE, тестировщики, дизайнеры, основатели. Три сезона, 45 выпусков, здесь — указатель по темам; есть аудио и видео.

  • Podcast

Всё остальное

ИИ-инженерия и агенты

  • Поиск людей

    Более ранний подход к той же задаче, что и агент поиска людей: FastAPI, DuckDuckGo, цикл подтверждения кандидата и отчёт от языковой модели — граф выписан процедурно, без LangGraph.

    2025 Python Исходники
  • Сайт в документ

    Обходит сайт в пределах одного домена и выгружает найденное одним PDF, DOCX или ODT. Нарочно лёгкий: без headless-браузера, читаемый текст вытаскивается простыми эвристиками.

    2026 Python Исходники
  • Писатель книг на ИИ

    Десктопный редактор прозы на Flutter, где рукопись разложена на книгу, части, главы и сцены. Помощь приходит от того провайдера, на который его направишь: локальная Ollama или OpenAI, Gemini, Perplexity, OpenRouter.

    2026 Dart Исходники
  • PDF в аудио

    Превращает PDF в аудиокнигу: языковая модель приводит извлечённый текст в пригодный для прослушивания вид, а видеокарта озвучивает результат.

    2026 Python Исходники
  • Многоязычная расшифровка

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

    2026 Python Исходники
  • Перевод подкастов

    Берёт расшифровку с разметкой по говорящим, переводит её, размечает SSML и синтезирует новый MP3 — тот же эпизод на другом языке, с отдельным голосом на каждого участника.

    2026 Python Исходники
  • RAG-поиск по рабочим документам

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

    2026 Python Исходники
  • Эталонный сервер Vanna v2

    Минимальный референсный сервер для Vanna v2: FastAPI, встроенный чат и один и тот же диалог через SSE, поллинг или WebSocket, поверх четырёх провайдеров моделей.

    2026 Python Исходники
  • Интервью о внедрении ИИ

    Ассистент-интервьюер, который проводит компанию из финансового сектора через discovery по внедрению ИИ. Нарочно маленький стек на AWS: одна Lambda, Bedrock, DynamoDB.

    2026 Python Исходники
  • MCP-сервер ИТ-трендов

    MCP-сервер, который собирает сигналы о том, какие технологии набирают вес — Reddit, Google Trends, GitHub Trending, Stack Overflow — и сводит их в отчёты в HTML, PDF или Excel.

    2025 Python Исходники
  • Телеграм-бот ИТ-трендов

    Потребитель того же сервера трендов: бот на aiogram запускает анализ по расписанию и публикует результат в канал.

    2025 Python Исходники
  • vLLM под Windows

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

    2026 Batchfile Исходники
  • Статистика артистов в Shazam

    CLI без единой зависимости, показывающий, сколько раз артиста шазамили, с разбивкой по трекам. Такого API у Shazam нет — утилита обходит каталог iTunes и снимает счётчики с публичных страниц песен.

    2026 Python Исходники
  • Мультиагентный аналитический ассистент

    Мультиагентный аналитический ассистент, отвечающий на бизнес-вопросы, собирая данные из баз, документов и REST-сервисов сразу. Планировщик выбирает маршрут, специализированные агенты добывают данные, критик проверяет ответ перед выдачей.

    Что это

    Оркестратор нарочно не хранит состояние: на каждом шаге он загружает и сохраняет его снаружи, поэтому диалог можно продолжить или передать другому воркеру. Инструменты обнаруживаются, а не прописываются заранее, и у каждого своё ограничение по частоте. Вопрос раскладывается на подвопросы, которые считаются параллельно там, где не зависят друг от друга, — за счёт этого ответ по нескольким источникам укладывается в приемлемое время. Агент-критик появился потому, что в аналитике опасен не сбой, а уверенно названное неверное число. Если критик не может подтвердить цифру найденными данными, ассистент прямо об этом говорит, а не сглаживает.

    2026 Python Закрытый код
  • Text2SQL для PostgreSQL

    Вопросы на естественном языке превращаются в SQL к PostgreSQL — из CLI, веб-интерфейса или Slack. Обучающий конвейер поглощает схему, разобранные примеры и текстовую документацию.

    Что это

    Обучающие данные здесь — полноценный артефакт, а не промпт: определения схемы, пары «вопрос-запрос» и документация загружаются в локальное векторное хранилище и версионируются вместе с кодом. Провайдер модели заменяем — это важно, когда до базы нельзя допускать облачную модель. Сгенерированный SQL показывается до выполнения, а доступ только на чтение не даёт неудачной генерации превратиться в инцидент. Три интерфейса работают через один сервис, поэтому запрос из Slack и тот же запрос из веба идут одинаковым путём. Полезным на практике оказалась не столько генерация, сколько цикл дообучения: каждый исправленный запрос возвращается в хранилище, и тот же вопрос перестаёт быть ошибочным.

    2025 Python Закрытый код
  • Мультиагентный ассистент на AG2

    Более ранний мультиагентный ассистент на AG2: работа разложена между менеджером, агентом баз данных, агентом документации, агентом кеширования и агентом безопасности, который проверяет и запросы, и ответы.

    Что это

    Запросы классифицируются и уходят к профильному агенту, а не обрабатываются одним универсальным; агент баз данных сам переспрашивает после неудачного запроса, а не выносит ошибку наверх. Агент кеширования сопоставляет новые вопросы с прежними по близости — это срезает и стоимость, и задержку на тех вопросах, которые люди действительно повторяют. Агент безопасности стоит с обеих сторон обмена, проверяя и то, что уходит в модель, и то, что возвращается: ответственность собрана в одном компоненте, а не размазана по остальным. Такое явное разделение ролей сделало каждую из них тестируемой отдельно — это и перешло в следующую версию. Ограничение было оборотной стороной того же решения: маршрутизация жила внутри разговоров агентов, и когда она ошибалась, смотреть было не на что.

    2025 Python Закрытый код
  • Бот для аудиокниг из PDF

    Тот же конвертер PDF в аудиокнигу, но телеграм-ботом на много пользователей сразу: очередь на Celery и Redis, живой прогресс с оценкой времени, токены доступа и история по каждому.

    Что это

    Конвертация книги занимает минуты даже на видеокарте, поэтому интересна не она, а всё вокруг. Очередь должна пережить перезапуск, не потеряв задачу, которую человек ждёт уже десять минут, а прогресс — что-то говорить ждущему, а не прыгать от нуля к готово. Доступ устроен на токенах с ограниченным сроком по каждому пользователю: одна видеокарта не обслужит неограниченную аудиторию, и ограничение должно быть политикой, а не тихо растущей очередью. Админская часть показывает состояние воркеров и текущий затор — по ней и понятно, дело в файле или в машине. Сама конвертация — тот же конвейер, что и в однопользовательской утилите; почти весь код здесь — эксплуатационная оболочка вокруг него.

    2025 Python Закрытый код
  • Голосовой ассистент книжного клуба

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

    Что это

    Книга заранее разбивается на отрывки и индексируется для полнотекстового поиска, поэтому ответ ссылается на конкретное место, а не пересказывает целое. Речь распознаётся локально, ответ произносится системным голосом, а в саму встречу ассистент заходит через веб-клиент Zoom под управлением браузерной автоматизации — на стороне встречи ничего ставить не нужно. Распознавание идёт непрерывно, но вмешивается ассистент только услышав своё имя: книжный клуб — это разговор людей, и ассистент, отвечающий без спроса, его портит. Настоящее ограничение — задержка: ответ, пришедший когда обсуждение ушло дальше, хуже, чем отсутствие ответа, поэтому поиск локальный, а индекс собран заранее. Цитата источника оказалась важнее самого ответа — она позволяет группе спорить с книгой, а не с ассистентом.

    2026 Python Закрытый код
  • Обогащение списков участников

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

    Что это

    Работа разбита на независимые единицы, чтобы агент мог раздать их параллельно и проверить каждый результат отдельно. У каждого свидетельства указан источник, а источники размечены по степени открытости — потребитель отчёта может отбросить тот уровень, на который не хочет опираться. На выходе не свободный текст, а документ, проверенный по схеме: именно это позволяет подать его на вход чему-то ещё, а не заставлять человека читать и перенабирать. То, что источники не подтверждают, остаётся пустым, а не додумывается: пустая ячейка — это информация, выдуманная — это риск. Сделано не приложением, а навыком для агента: набор инструкций и схем, который кодинг-агент исполняет там, где он уже запущен.

    2026 Python Закрытый код

JVM и безопасность

  • Поиск уязвимых классов

    По идентификатору CVE выясняет, какие именно классы Java уязвимы: читает бюллетень, связанные коммиты и все доступные ссылки и возвращает полные имена классов с указанием источников.

    Что это

    Запись CVE называет библиотеку и диапазон версий, но почти никогда — конкретные классы, а именно это нужно, чтобы понять, задет ли твой код. Агент тянет данные из баз бюллетеней и хостингов исходников, сопоставляет описания с именами классов и отдаёт структурированный результат, а не прозу. Если к записи привязан коммит с исправлением, изменённые в нём классы — самый надёжный доступный сигнал, поэтому изменения коммита читаются прежде текстового описания. Работает и без ключей к поисковым API, переключаясь на более простой путь получения данных. У каждого названного класса указана ссылка, из которой он взят: список имён классов без источника — не то, по чему стоит действовать.

    2025 Python Закрытый код
  • Анализатор CVE

    Второе поколение той же идеи, переписанное на LangGraph: тот же вопрос об уязвимых классах Java, но через явный граф, со сменными провайдерами моделей и поисковыми бэкендами.

    Что это

    Переписывание агента в явный граф сделало видимыми повторные попытки и запасные пути, прежде размазанные по потоку управления. Он обрабатывает репозитории и коммиты, на которые ссылается запись CVE, вытаскивает что может из нерепозиторных ссылок и отдаёт JSON. Провайдер модели и поисковый бэкенд заменяемы — за счёт этого один и тот же граф работает и с облачной моделью, и с локальной, без правок логики. При отказе узла он спускается к более слабому источнику, а не прерывается: частичный ответ с указанными источниками лучше, чем никакого. Вместе с предшественником и сервисом уязвимостей JVM это третий подход к одной и той же задаче, каждый раз дальше от ручной работы.

    2025 Python Закрытый код
  • Образы Tomcat на Zulu

    Матрица сборок контейнеров Tomcat на Azul Zulu: три поколения Tomcat и JDK на пяти базовых дистрибутивах, всё генерируется из одного конфигурационного файла.

    2025 Shell Исходники
  • Пример модулей Java

    Разобранный пример системы модулей Java в двух частях: сначала зависимые модули, затем модуль, который нарочно тянет компоненты с известными уязвимостями, упакованный через jlink.

    2023 Java Исходники

Интерактив и графика

  • Replax

    Приложение для Android на Expo. Его политика конфиденциальности и условия использования до сих пор лежат в этом репозитории и раздаются с него.

    Что это

    Само приложение закрыто, но два его артефакта остаются публичными и должны оставаться доступными: политика конфиденциальности и условия использования, на которые ссылаются снаружи. Из-за них эти два файла исключены из любой уборки — и из-за них же эта запись вообще существует, а не выброшена. Expo был выбран, чтобы получить одну кодовую базу под Android без нативного тулчейна: на тот момент размен верный, и именно поэтому проект вышел. Осталась от него наименее интересная часть работы — и единственная, которая обязана продолжать работать. Он в списке потому, что портфолио, тихо опускающее то, что закончилось, честным не является.

    2021 TypeScript Закрытый код

Просвещение

  • Учебный трек по ML

    Год практики по машинному обучению, который с первого дня ведётся открыто: от векторизации в NumPy до обучения на видеокарте. Репозиторий и есть портфолио.

    2026 Python Исходники
  • Туториал по GPT

    Пронумерованный проход по работе с языковыми моделями, где один и тот же материал разобран на Python, Java и Node — чтобы читатель шёл на своём языке.

    2024 Python Исходники
  • Вайбкодинг, эпизод 1

    Артефакт первого эпизода живого кодинга: погодная утилита без сторонних зависимостей, с вшитыми историческими средними и живым источником по флагу.

    2025 Python Исходники
  • Вайбкодинг, эпизод 2

    Артефакт второго эпизода: поиск курса валют, собранный как React-фронтенд поверх сервиса на TypeScript, за один присест.

    2025 TypeScript Исходники

Медицина и остеопатия

  • Пять остеопатических моделей

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