ИИ в разработке: как я собрал конвейер GoRunWithAI за лето

ИИ в разработке: как я собрал конвейер GoRunWithAI за лето

Серия «Разработка с ИИ: полный цикл», часть 3. Платформа GoRunWithAI.


Это этап, с которого все начинают и на котором большинство застревает: поставили ассистент, код пишется быстрее, а скорость поставки не выросла. Причина проста: локальное ускорение набора кода — это не ускорение разработки. Реальный эффект даёт система: выбор режима под задачу, накопленный контекст проекта и дисциплина проверки. В GoRunWithAI эта система выстроилась за лето — и однажды спасла прод.

Стек проекта и кто его писал

GoRunWithAI: FastAPI + SQLAlchemy 2 (async) + PostgreSQL 16, React + Vite + Tailwind, APScheduler для фоновых задач, Docker Compose, nginx. Десятки модулей: RSS-фетчер, дедупликация, скоринг, LLM-пересказы, очередь кросспостинга, планировщик публикаций, импорт контента, публичное API, дашборд метрик.

Кто писал: агент — основную массу кода, я — рамки, ревью и все решения. Соотношение примерно такое: агент генерирует, человек верифицирует. Это и есть режим «агент» из вводной статьи.

Контекстный стек: главный навык

Качество работы агента определяется не промптом в чате, а средой, которую вы ему построили:

  1. Правила проекта в корне — стек, структура, соглашения, команды сборки и тестов, запреты («миграции — только через Alembic», «без прямых запросов в обход сервисного слоя»).
  2. Планы в репозитории — каждая фича перед реализацией оформлялась планом с шагами и чек-листами. Агент исполнял план по шагам, отмечая выполненные.
  3. Образцы-эталоны — «новый эндпоинт делай по образцу этого файла», «новую миграцию — по образцу этой».
  4. Контекстный пакет задачи (из статьи 1): цель, критерии приёмки, ограничения.

Инвестиция в этот стек размером в пару дней дала больше, чем любая смена модели.

Рабочий цикл «задача → код»

Проверенная на проекте схема одной итерации:

  1. Рамка. Задача с критериями приёмки и явными границами: «трогай только модуль X, публичный API не меняй».
  2. План. Агент сначала предлагает план из 3–7 шагов и список файлов. Утверждаю или правлю. Этот шаг ловит 80% непонимания — до написания кода.
  3. Реализация маленькими коммитами. Один логический шаг — один коммит. Откат к рабочему состоянию — всегда в одну команду.
  4. Самопроверка. Агент прогоняет тесты, чинит найденное, показывает дифф.
  5. Человеческое ревью. Дифф ревьюится как код толкового джуна: логика — вся, стиль — выборочно.

Инцидент: миграции, которые не применились

Лучший урок этапа — реальный прод-инцидент. Симптом: после деплоя импорт контента вернул «Imported 0 markdown files», хотя файлы были на месте.

Разбор вёл агент в режиме со-воркера, по цепочке:

  1. Импорт молчит об ошибках. Код ловил исключения по-тихому (except Exception: continue) — это была первая находка: молчаливые провалы маскируют проблему.
  2. Таблицы не созданы. Запустили импорт пошагово: «relation contents does not exist». Миграции не применились.
  3. Миграции падают с SyntaxError: null bytes. Alembic загружал все .py из папки версий — включая мусорные файлы ._*.py (AppleDouble-артефакты macOS), попавшие в Docker-образ при переносе файлов.
  4. Причина мусора: macOS-архиватор включал в tar AppleDouble-записи; при распаковке на Linux они материализовались как файлы.
  5. Почему прозевали: миграции на старте тоже были обёрнуты в try/except: pass — «чтобы не падать в dev без БД». В проде это обернулось тихим провалом.

Исправление: перенос файлов с флагом --no-mac-metadata, мусорные паттерны в .dockerignore, миграции — в команду запуска до uvicorn, без глушения ошибок. Урок: тихая обработка ошибок — это технический долг, который возвращается в проде.

Второй инцидент этого этапа — гонка двух воркеров uvicorn: планировщик фоновых задач стартовал в каждом процессе, и анонсы дублировались. Лечится одним воркером для планировщика (детали — в статье 5).

Приёмы, которые дали максимум

Безопасность и комплаенс

Метрики этапа

Практический минимум для старта

  1. Напишите правила проекта (если пропустили статью 2 — сейчас самое время).
  2. Введите обязательный шаг «план перед кодом» для агентных задач.
  3. Переведите агентов в изолированные окружения без продакшн-доступов.
  4. Заведите 2–3 эталонных файла и ссылайтесь на них в задачах.
  5. Начните измерять lead time — без него вы не узнаете, работает ли всё это.

💬 Обсудим? Какой режим работы с ИИ преобладает у вас — автокомплит, диалог или агенты? И что мешает перейти на шаг дальше: контекст, доверие, безопасность? Расскажите в комментариях или в [Telegram-канале GoRunWithAI]. Наши агенты тоже ломают — каждый случай с разбором публикуем на дашборде открытой кухни.

Следующая статья: «Часть 4. Код-ревью: что ловил и что пропускал ревьюер GoRunWithAI».