Дайджесты новостей
Натюрморт с матовым шлюзом контроля качества кода, верифицирующим коммиты автономных ИИ-агентов.

От «темной фабрики» к реальному AI-пайплайну: почему автономный кодинг требует жестких рамок

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

В индустрии эту утопию называют «темной фабрикой софта» (Dark Factory) по аналогии с роботизированными цехами без людей. В классификации уровней автономности Дэна Шапиро это высший пятый уровень: человек лишь формулирует абстрактное желание, а флот агентов делает остальное.

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

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

Проблема телепатии: где спотыкается ИИ без человека

Главная причина провала чистой автономии — «проблема телепатии» (mind-reading problem). Языковая модель не обладает интуицией и не знает негласного контекста компании: архитектурных соглашений, скрытых лимитов легаси-сервисов и нюансов бизнес-логики.

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

Инженер Коул Медин показал, что выход лежит не в промптах, а в детерминированной фабрике софта (AI Software Factory). Человек не пишет код руками, но берет на себя роль строгого главного инженера.

Анатомия реальной фабрики: три рубежа обороны

Рабочий процесс фабрики делится на три изолированных этапа:

  1. Человеческое планирование и декомпозиция (Scope Splitting): Инженер готовит строгую спецификацию (PRD) и делит ее на атомарные тикеты. Главный прием Медина — скрытые сценарии проверки (Holdout Scenarios): ты заранее пишешь проверочные тесты, которых агент-разработчик не видит в своем контексте. Это исключает подгонку решения под тест.
  2. Параллельный контур исполнения (Worker Loop): Агент-менеджер распределяет задачи по пулу рабочих агентов в изолированных Docker-песочницах. При этом задаются защищенные файлы (Protected Paths): агентам запрещено трогать пайплайны CI/CD, миграции баз данных и модули безопасности.
  3. Смешение моделей по ролям (Model Tiering): Легковесные быстрые модели используются для чтения логов и сортировки тикетов, а тяжелые сети подключаются только для генерации критической логики.

Контракт задачи и автоматический гейт в CI/CD

Чтобы агент не фантазировал, задача формулируется как жесткий контракт:

issue_id: 104
title: "Implement PostgreSQL pgvector semantic search endpoint"
target_paths:
  - "src/api/search.py"
  - "tests/test_search.py"
protected_paths:
  - ".github/workflows/*"
  - "alembic/env.py"
acceptance_criteria:
  - "Endpoint POST /api/v1/search accepts query vector and limit"
  - "Query latency is under 50ms for 100k items dataset"
  - "All unit tests pass with >= 90% code coverage"
verification_command: "pytest tests/test_search.py -v --cov=src/api"

Когда агент отправляет Pull Request, в дело вступает автоматический контур в GitHub Actions. Если задеты защищенные пути или упали тесты, сборка моментально блокируется:

name: AI Factory Staging Verification
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  validate-agent-pr:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Verify protected files integrity
        run: |
          git diff --name-only origin/main | grep -E '^(\.github/|alembic/)' && exit 1 || echo "Protected paths clean"

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: "3.12"

      - name: Install dependencies & run tests
        run: |
          pip install -r requirements.txt
          flake8 src/ tests/
          pytest tests/ --maxfail=1 --disable-warnings
Контроль зацикливания агентов

При падении тестов агент пытается исправить код. Ограничивай число попыток (не более 5–8), иначе агент уйдет в бесконечный штопор, сжигая баланс API.

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