ΣБогорад Сергей

AI-инженер · агентные системы

Строю production-код в паре с агентами. Каждый день.

Не эксперименты в песочнице, а работающие системы: параллельные сессии Factory Droid, Claude Code и Codex, разделение контекстов по git-ветвям, PR-процесс, обязательные quality-гейты, свой сервер и деплой. TypeScript и Rust для кода, Python для исследований.

Профиль

Что я делаю и чем это подтверждено

Короткая версия: я перевёл собственную разработку в режим «человек ставит контракт, агенты пишут код, гейты не пускают мусор в production». Ниже — измеримые следы этого режима.

396коммитов во всех ветвях основного проекта
31параллельная ветвь под агентные сессии
102файла тестов в репозитории
~27nginx-сайтов на своём сервере

Контрактный подход. Версионированные контракты между слоями и языками, fail-closed политики на опасные операции, приватность в архитектуре, а не чек-листом в конце. В des один контракт держит Rust, WASM и TypeScript; в Kognitika гейт не пропускает изменение production-базы без явного подтверждения.

Работа с агентами как процесс. Одна задача — одна ветвь — один PR. Контексты не смешиваются, результат сходится через merge. Для наблюдаемости этого режима написал свои инструменты: live-core (примитивы телеметрии), vimit (расход квот), использую abtop для сессий Claude Code и Codex.

Предметная область. 20+ лет в ОАО «РЖД»: обработка данных промышленных информационных систем, автоматизация отчётности, внедрение и тестирование, руководство отделом. Это то, чего обычно не хватает разработчику — умение понять заказчика и довести до внедрения в масштабе сети.

Проекты

Стек, цель, статус, готовность

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

production рабочая бета прототип приватный

Kognitika

production kognitika.ru репозиторий

Цель: платформа когнитивных тренировок — внимание, память, скорость, критическое мышление. 20+ тренажёров, дуэли в реальном времени, адаптивная аналитика прогресса. Веду один, от идеи до эксплуатации, с агентами.

Стек
TypeScriptReactExpressPrismaPostgreSQL 15Socket.ioTailwindVitepnpm monorepoRust crates
Качество
357 проходящих unit-тестов на Vitest, 102 файла тестов, Playwright e2e (в том числе attached к живому серверу), knip против мёртвого кода. Перед изменениями с production-риском обязательны lint + test + build.
Доставка
Docker Compose, GitHub Actions, health-check отдаёт buildId = хеш коммита, атомарные статические релизы, автосборка Android APK на каждый push в main.
Надёжность
fail-closed гейты на изменения production-базы, durable outbox для аналитики, воспроизводимое восстановление legacy-базы на изолированном стенде.
Приватность
Brain ID-first идентификация: сырой идентификатор, email и хеши паролей не появляются в UI и API. Default-deny телеметрия, инвентарь обработки данных под 152-ФЗ.
Не готово
Миграция аналитического контура с TypeScript на Rust идёт по схеме shadow → canary → primary с временным TS-fallback. Мобильное приложение — APK без публикации в сторах.
Готовность 90%

des · движок дискретно-событийного моделирования

рабочая бета репозиторий

Цель: генерировать синтетические данные железнодорожных операций, на которых можно проверять гипотезы без доступа к реальным закрытым данным. Детерминированный replay: один seed — один и тот же прогон.

Стек
RustWASMTypeScript-биндингиMIT
Что есть
Детерминированные артефакты маршрутизации и replay, единый версионированный контракт между Rust, WASM и TS, browser CI-гейты, политика «в публичный репозиторий попадают только синтетические датасеты».
Не готово
Нет публичного веб-демо и стабилизированного API движка. Набор сценариев узкий.
Готовность 55%

miroboard · бизнес-моделирование

рабочая бета демо репозиторий

Цель: моделировать процессы и сразу их проверять, а не рисовать картинки. BPMN 2.0 с валидацией и XML-интеропом, нотация ARIS (eEPC, VACD), типизированный граф модели.

Стек
TypeScriptReactRust board-coreWASMVite singlefilejj + git
Что есть
Симуляция BPMN на токенах и Монте-Карло, формальная верификация через сети Петри, process mining (discovery и conformance checking), model-as-code DSL с генерацией через LLM. Сборка в один автономный dist/index.html.
Не готово
Совместная работа нескольких пользователей, хранение моделей на сервере, импорт из промышленных инструментов.
Готовность 50%

Инструменты для работы с агентами

Написаны потому, что были нужны мне самому: агентная сессия — это процесс с расходом квоты, окном контекста и состоянием, которое надо видеть.

Rust · MIT

vimit

Цель: понимать, можно ли безопасно продолжать сессию Codex/Droid/Claude, или квота вот-вот кончится. Один бинарник: CLI, TUI, GUI и всплывающий overlay, где остаток кредитов пульсирует как живое существо.

Опрос GET /v1/me, окна 5ч / 24ч / 7д / 30д, desktop-уведомления по порогу, несколько аккаунтов. Ключи не хранит, промпты не логирует. CI зелёный, Windows / Linux / macOS.

113 коммитовготовность 80%
Rust

live-core

Цель: примитивы телеметрии живых автономных агентов — часы, кольцевые буферы метрик, пороги, переходы состояний. Первый трек реализован: clock, rolling_buffer, threshold, activity, idle.

Крейт намеренно маленький и почти без зависимостей, подготовлен к no_std. Есть спецификация и отдельный документ границ безопасности.

библиотекаготовность 45%
Python · stdlib

synaps-research-radar

Цель: прозрачный мониторинг доказательств по управлению изменениями в эпоху ИИ. Evidence cards с ограниченными утверждениями и прямыми источниками, отделение доказательств от интерпретаций.

Сбор только метаданных из arXiv Atom и Crossref, дедупликация по DOI → arXiv ID → URL → отпечаток заголовка. GitHub Actions без write-прав, без ключей и без LLM: никогда не публикует сам. Черновик всегда status: draft.

редакционный контурготовность 40%

Приватные и заказные контуры

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

Rust · проприетарный

КООРД.ОС

Event-first ядро: источник истины — доменные события, а отображение, хранение, API и внешние форматы строятся поверх и не смешиваются с базовым контрактом. Динамическое моделирование железнодорожной работы, лёгкие read-model слои.

Rust workspaceприватный
TS + Rust

CED Integration

Монорепозиторий: API, web, worker, shared-data и WASM-компоненты. Node 22, pnpm 10, Rust 1.96, Docker. Отдельный AGENTS.md с картой архитектуры, инвариантами безопасности и матрицей валидации — агент обязан прочитать его до правок.

монорепозиторийагентный регламент
Rust + WASM

RuVector · локальный RAG

Ядро читает GGUF-модель через Candle, отдельно грузит токенизатор, индексирует Markdown и отвечает из offline HTML-страницы без единого запроса к внешнему API. Сборка в single-file HTML со встроенным WASM.

offline-firstбез внешних API
Инфраструктура — тоже моя. syntog.ru: свой сервер, около 27 сайтов в nginx, поддомены, Let's Encrypt с автопродлением, security-заголовки, reverse-proxy к сервисам, атомарный деплой. Эта страница поднята там же и полностью через SSH-сессию агента: конфиг nginx, сертификат, права, проверка. Отсюда же СИНАПС, Arena и демо KOORD.
Метод

Как именно я работаю с агентами

Это не «пишу промпты». Это процесс с инвариантами, который переживает ошибку модели.

1. Контракт до кода. В репозитории лежит AGENTS.md: карта архитектуры, инварианты безопасности, матрица валидации, порядок деплоя, текущие приоритеты. Агент читает его первым. Без этого он оптимизирует локально и ломает границы.

2. Изоляция контекстов. Одна задача — одна ветвь — один PR. Параллельные сессии не видят чужой контекст, конфликт разрешается на merge, а не в голове модели.

3. Гейты вместо доверия. Опасное действие закрыто по умолчанию. Изменение production-базы требует явного подтверждения, а не «модель обещала быть аккуратной».

4. Наблюдаемость сессии. Токены, окно контекста, rate limits, расход квоты — на экране. Для этого написаны vimit и live-core, для чужих CLI использую abtop.

5. Проверяемый выход. Health-check отдаёт хеш коммита, релизы атомарные, откат — переключение символической ссылки. Я всегда знаю, какой именно код сейчас в production.

6. Дисциплина приоритетов. Issue размечены P0–P3, P0 блокирует всё остальное. Иначе агент бесконечно улучшает второстепенное.

Побочный результат: три достижения GitHub Pair Extraordinaire — за co-authored коммиты с агентом. Формально это метрика парного программирования; фактически — след того, что работа идёт в паре, а история это фиксирует.

Опыт

Двадцать лет до кода

Автоматизация отчётности и обработка данных промышленных систем ОАО «РЖД». Здесь важен не список должностей, а то, что каждая позиция закончилась внедрённым результатом.

  • Ведущий инженер · Красноярская дирекция управления движением, ОАО «РЖД»

    2013 — н.в.

    Группа организации работы локомотивов и локомотивных бригад. Написал утилиты на Rust для обработки данных информационных систем РЖД.

    • Конвейер обработки данных из АСУ Т, СИС «Эффект», АСУНБД, ИХ ЛП, АС ЦУТР, АРМ ЦЕКОН: очистка, перевод в машиночитаемый вид, обогащение, извлечение знаний.
    • Аналитические материалы на 10–100+ листов формируются автоматически. Детализация выросла до каждого случая, подготовка упала с нескольких часов до получаса.
    • 2018: отчёт совместного ввода данных диспетчерской смены ДЦУП — повторный ввод снижен на 74%, добавлены логические проверки полноты перед печатью, обеспечена одновременная работа над одним файлом.
    • Автоматизация отчётности для других дирекций Красноярской ж.д. и ЦУП ВП (приказ ЦД-317 от 12.03.2018).
  • Представитель по внедрению и тестированию ИСУЖТ · ОАО «НИИАС»

    2014 — 2015

    Ежесуточная проверка новых версий ПТК ИСУЖТ, выявление и верификация исправления ошибок, подбор и обучение тестировщиков. Разработал отчёт достоверности справочных и графических данных ИСУЖТ относительно систем РЖД и автоформируемый текстовый доклад по табличным данным.

  • Инженер 1 категории · Красноярская дирекция тяги, ОАО «РЖД»

    2011 — 2013

    Отчёт ежесуточного контроля расхода ТЭР с факторным анализом и автозагрузкой из ЦОММ и ЕК ИОММ. Развернул сетевой ресурс на Windows Server 2008 с разграничением доступа через Active Directory.

  • Заместитель начальника, начальник отдела энергетики · Дорожный ТЭЦ, Красноярская ж.д.

    2007 — 2010

    Сформировал отдел с нуля: подбор, обучение, распределение обязанностей, отладка процессов, команда 10 человек. Факторный анализ причин изменения удельного расхода ТЭР на тягу поездов, энергетический паспорт дороги.

  • Инженер · Служба локомотивного хозяйства, Красноярская ж.д.

    2003 — 2007

    Совместно с разработчиком КИВЦ реализовал автоматическую передачу данных из ИОММ в SAP (ТДС). Учёт топлива стал вестись по каждому баку 150 тепловозов вместо единого склада — недостачи устранены без роста штата. На базе этой и смежных разработок создана сетевая ЕАСУ ДТ на всю сеть железных дорог.

  • Ранее

    1990 — 2003

    Локомотивное депо Красноярск, помощник машиниста электропоезда (1995–2003). Самозанятость 2010–2011: тематический трафик, координация команды разработчиков, публикация книг в Amazon Kindle. Служба в армии, старший водитель-механик БРМ-1к.

Навыки

Стек по слоям

Порядок внутри строки отражает глубину: сначала то, на чём пишу ежедневно.

СлойИнструментыУровень
ЯзыкиTypeScript, Rust, Python, SQL, Node.js 22ежедневно
ФронтендReact, Vite, Tailwind, PWA, WASMежедневно
Бэкенд и данныеExpress, Axum, Prisma, PostgreSQL, Socket.io, durable outbox, миграцииежедневно
ТестированиеVitest, Playwright (e2e и attached), контрактные тесты, knip, quality-гейты в CIежедневно
ИнфраструктураDocker, Compose, GitHub Actions, nginx, TLS, health-checks, атомарные релизыежедневно
AI и агентыFactory Droid, Claude Code, Codex CLI, MCP-коннекторы, OpenAI API, параллельные сессии, промпт-инжинирингежедневно
Генеративные моделиОценка и сравнение моделей под задачу, Midjourney, Kaiber, D-ID, цифровые аватарырегулярно
Безопасностьfail-closed политики, default-deny телеметрия, trust boundaries, 152-ФЗ, ответственное раскрытиерегулярно
Аналитика и ETLобработка и обогащение данных, извлечение знаний, Power BI, Excel + макросырегулярно
ПроцессыBPMN 2.0, ARIS, process mining, Agile и Scrum, управление командой до 10 человекрегулярно

Хакатоны и инициативы

Призовые места

Конкурсы

3 место, Moscow City Hack 2022 — за время хакатона поднял сайт и карту идей. Цифровой прорыв 2020 — кейсы Россетей, Ростелекома и Куйбышевской ж.д.: голосовой ассистент для продажи билетов.

1 место в конкурсе идей «ПроДвижение» (2021), победитель 3 и 4 этапов, 2 место по полугодию. Более 100 поданных идей.

Инициативы

Проекты, которые начал сам

«Цифровая тень локомотивной бригады» с выходом на ИВМ СО РАН. Пилот голосового помощника локомотивной бригады. С кафедрой биофизики СФУ — конкурс РНФ по биосенсорам для выявления критических стрессовых состояний. Проектный офис «Цифровая железнодорожная станция».

Просвещение

Обучение и блог

Вебинар «Знания Live» на сеть дорог по автоматизации отчётности и управлению знаниями, канал поддержки слушателей. Веду блог об ИИ и генеративных моделях на сервисном портале РЖД: обзоры новых моделей, бионический дизайн, 3D-аватары. Бот «Железный диспетчер», навык Алисы на DialogFlow.

Образование

  • 2004 — Омский государственный университет путей сообщения. Электроснабжение железнодорожного транспорта, электромеханика. Высшее.
  • 2022 — ТГУ, «Дата-аналитик: старт карьеры» (opendata.university). Нетология, «ETL-разработчик».
  • 2022 — Корпоративный университет РЖД, «Дизайн цифровых инициатив» (приз за 1 место в конкурсе идей), ДВФУ.
  • 2023 — Корпоративный университет РЖД, «Лидеры цифровой трансформации», «Маршруты преобразований бизнес-реальности».
  • 2019 — Agile: корпоративные семинары в Москве, обучение от Scrumtrek.
Дальше

Два материала под кодом доступа

Прежде чем откликаться, я разобрал ваш Agent API и MCP-коннектор по документации. Разбор и письмо лежат отдельными страницами: они адресные, поэтому закрыты кодом и не индексируются.

Для агентов и парсеров. Страницы отдают статический HTML с семантической разметкой, без клиентского рендеринга контента. Код доступа передаётся параметром ?access= и снимается из адресной строки после проверки. Все три страницы помечены noindex,nofollow. Числовые утверждения о проектах проверяемы по git log публичных репозиториев и по HTTP-ответам живых доменов.