Продвинутый

AI‑агент как ленивый старший разработчик в продакшн

Алексей Кузнецов
Алексей Кузнецов
Системный администратор11 ноября 2026 г.12 мин чтения

Узнайте, как настроить AI‑агент, который работает как ленивый, но опытный старший разработчик, экономя ваше время и повышая предсказуемость кода.

AI‑агент как ленивый старший разработчик в продакшн

Узнайте, как настроить AI‑агент, который работает как ленивый, но опытный старший разработчик, экономя ваше время и повышая предсказуемость кода.

Принцип работы ленивого AI‑агента

Принцип работы ленивого AI‑агента

Стратегия «делай минимум»

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

Пример: в функции process_data условие проверки выглядит так:

python
# до
if x > 5:
    result = "big"

Ошибка проявляется, когда x равно 5, но y не проверяется. Вместо того чтобы переосмысливать всю логику, агент предлагает изменить только строку:

diff
- if x > 5:
+ if x > 5 and y == 0:

Команда для быстрой проверки (bash, Linux):

bash
# запуск теста, который фиксирует проблему
pytest tests/test_process.py -q

Если тест падает, агент сразу предлагает минимальный патч, как в примере выше.

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

ini
[scope]
# Перечисляем директории, в которых агент может работать
allowed_paths = src/,tests/
# Исключаем большие логи и тестовые данные
exclude = logs/,fixtures/

Такой подход описан в статье Ponytail: AI Agent Thinks Like the Laziest Senior Dev и подтверждает, что минимальный набор изменений даёт максимальный результат.

Автоматическое тестирование без вмешательства

Ленивый старший разработчик не ждёт ручного запуска тестов после каждого правки. Он настраивает CI‑pipeline, чтобы тесты запускались автоматически, а при успехе — изменения применяются без дополнительного подтверждения.

Пример GitHub Actions workflow (.github/workflows/ai-agent.yml):

yaml
name: AI Agent CI

on:
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: "3.11"

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt

      - name: Run tests
        run: |
          pytest --cov=src tests/ -q
        env:
          CI: true

      - name: Apply AI‑agent patch (if tests pass)
        if: success()
        run: |
          # скрипт, который автоматически применяет патч, подготовленный агентом
          ./scripts/apply_patch.sh

Скрипт apply_patch.sh (bash):

bash
#!/usr/bin/env bash
set -euo pipefail

# путь к файлу, который поправить
PATCH_FILE="patches/fix_process_data.patch"

# применяем патч
git apply "$PATCH_FILE"
git add -A
git commit -m "Apply AI‑agent minimal fix"

Как это работает:

  1. Разработчик открывает PR, агент предлагает патч (минимальный, как в примере выше).
  2. CI автоматически запускает pytest. Если тесты проходят, apply_patch.sh применяет изменения без вмешательства.
  3. Если тесты не проходят, разработчик получает фидбек, а агент может предложить уточнённый вариант.

Для анализа кода удобно подключить Graphify – утилита, которая строит граф зависимостей и показывает, какие модули затронуты патчем. Инструкция по установке и настройке есть в Установка и настройка Graphify для анализа кодовой базы.

Автоматизация тестирования подтверждает предсказуемость конфигураций, о чём часто пишет CLAUDE.md: улучшение поведения Claude Code по Karpathy. Когда тестовый набор покрывает все ветки, агент может работать без риска «сломать» продакшн.


Если вы хотите увидеть, как ускорить работу agent harness для Claude Code, посмотрите Ускорение agent harness через ECC для Claude Code.

Для списка готовых навыков, которые можно подключить к вашему агенту, см. Навыки для AI‑агентов из репозитория mattpocock/skills.

Настройка базовой инфраструктуры

Для того чтобы AI‑агент функционировал как ленивый, но опытный старший разработчик, требуется отдельная инфраструктура, изолирующая его задачи и обеспечивающая мониторинг. Ниже описаны два ключевых элемента базовой инфраструктуры: Docker‑Compose для изоляции задач и система мониторинга с алертами.

Docker‑Compose для изоляции задач

Docker‑Compose позволяет описать все зависимости AI‑агента в одном файле и гарантировать, что его процессы работают в полностью изолированном окружении. Это упрощает воспроизводимость и уменьшает риск «загрязнения» хоста.

yaml
version: "3.9"
services:
  ai-agent:
    image: ghcr.io/your-org/ai-agent:latest
    container_name: ai-agent
    restart: unless-stopped
    volumes:
      - ./agent-workdir:/app/workdir
    environment:
      - LOG_LEVEL=info
    networks:
      - agent-net

  redis:
    image: redis:7-alpine
    container_name: ai-agent-redis
    restart: unless-stopped
    ports:
      - "6379:6379"
    networks:
      - agent-net

  prometheus:
    image: prom/prometheus:v2.53.0
    container_name: ai-agent-prometheus
    restart: unless-stopped
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
    ports:
      - "9090:9090"
    networks:
      - agent-net

networks:
  agent-net:
    driver: bridge

Шаги развертывания

  1. Сохраните файл docker-compose.yml в каталоге проекта.
  2. Выполните docker compose up -d — контейнеры поднимутся в фоне.
  3. Убедитесь, что порт 6379 доступен для взаимодействия с Redis, а Prometheus собирает метрики из ai-agent (см. пример правила ниже).

Ссылка на более детальное описание подхода: Ponytail: AI Agent Thinks Like the Laziest Senior Dev.

Система мониторинга и алерты

Предсказуемость кода поддерживается не только правильными конфигурациями, но и постоянным наблюдением за состоянием сервисов. Наиболее лёгкий набор инструментов — Prometheus для сбора метрик, Alertmanager для формирования алертов и Grafana для визуализации.

Prometheus‑конфиг (prometheus.yml)

yaml
global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'ai-agent'
    static_configs:
      - targets: ['ai-agent:8000']
    metrics_path: '/metrics'
    relabel_configs:
      - source_labels: [__address__]
        target_label: instance
        replacement: ai-agent

  - job_name: 'node-exporter'
    static_configs:
      - targets: ['localhost:9100']

Пример правила алерта (alerts.yml)

yaml
groups:
  - name: ai-agent.rules
    rules:
      - alert: HighCpuUsage
        expr: rate(container_cpu_usage_seconds_total{container_name="ai-agent"}[5m]) > 0.8
        for: 2m
        labels:
          severity: warning
        annotations:
          summary: "AI‑агент потребляет более 80 % CPU"
          description: "CPU‑нагрузка на узле {{ $labels.instance }} превысила 80 % в течение 2 минут."

Alertmanager‑конфиг (alertmanager.yml)

yaml
global:
  smtp_smarthost: 'smtp.example.com:587'
  smtp_from: 'alerts@example.com'
  smtp_auth_username: 'alerts@example.com'
  smtp_auth_password: 'secret'

route:
  receiver: 'email-team'
  group_by: ['alertname', 'instance']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 1h

receivers:
  - name: 'email-team'
    email_configs:
      - to: 'dev-team@example.com'
        send_resolved: true

Запуск стека

bash
docker compose up -d prometheus alertmanager grafana

После старта откройте Grafana (http://localhost:3000), импортируйте дашборд, использующий данные из Prometheus, и настройте алерты в Alertmanager. При превышении порога (например, высокая CPU‑нагрузка) будет отправлено уведомление на корпоративную почту.

См. рекомендации по улучшению поведения Claude Code: CLAUDE.md: улучшение поведения Claude Code по Karpathy.
Для анализа кодовой базы удобно подключить Graphify: Установка и настройка Graphify для анализа кодовой базы.
Список готовых навыков для AI‑агентов: Навыки для AI‑агентов из репозитория mattpocock/skills.
Ускорение работы harness через ECC: Ускорение agent harness через ECC для Claude Code.

Таким образом, Docker‑Compose обеспечивает чистую изоляцию, а Prometheus + Alertmanager + Grafana предоставляют системный мониторинг и своевременные алерты, что делает работу AI‑агента предсказуемой и экономит ваше время.

Оптимизация кода и автоматизация

Шаблоны конфигураций для repeat‑less development

Когда мы говорим об AI-агенте в роли «ленивого старшего разработчика», мы подразумеваем не нежелание работать, а стремление минимизировать дублирование кода и рутину. Опытный инженер не будет писать один и тот же блок конфигурации трижды — он создаст шаблон или абстракцию. Чтобы агент действовал так же, ему нужны четкие границы и набор готовых паттернов.

Если агент просто получает задачу «добавь новый микросервис», он может нагенерировать кучу разного кода, который потом будет сложно поддерживать. Чтобы обеспечить предсказуемость, нужно внедрить подход, при котором агент опирается на существующие стандарты проекта. Хорошим инструментом для этого станет использование CLAUDE.md (в контексте Claude Code), где прописаны правила архитектуры и предпочтения по стилю.

С практической точки зрения, я рекомендую подготовить набор конфигурационных шаблонов (scaffolding). Например, если вы используете Docker Compose для локальной разработки, создайте директорию templates/, где будут лежать эталонные файлы.

Пример структуры шаблона для нового сервиса в templates/service-template.yml:

yaml
# Шаблон для нового микросервиса. 
# Агент должен использовать его как основу, меняя только имя и порты.
services:
  ${SERVICE_NAME}:
    image: ${IMAGE_NAME}:latest
    restart: unless-stopped
    networks:
      - backend
    environment:
      - NODE_ENV=production
      - DB_HOST=postgres-db
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

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

CI/CD‑pipeline с предсказуемыми результатами

Автоматизация — это не только написание кода, но и проверка того, что этот код не сломал всё остальное. «Ленивый старший» не выпустит фичу, если не уверен в её работоспособности. Поэтому задача агента в рамках CI/CD — не просто «пройти тесты», а обеспечить предсказуемость процесса деплоя.

Вместо того чтобы позволять агенту произвольно менять .github/workflows/ или .gitlab-ci.yml, нужно ограничить его набор инструментов. Я использую подход, при котором агент может предлагать изменения в пайплайне только на основе заранее определенных навыков (agent-skills).

Для повышения эффективности работы агента в пайплайне, особенно при использовании Claude Code, стоит обратить внимание на оптимизацию agent harness через ECC. Это сокращает время ожидания ответа от модели, что критично, когда пайплайн «завис» на этапе анализа изменений.

Пример фрагмента GitHub Actions, который агент должен использовать для проверки линтинга и тестов, прежде чем предлагать Merge Request:

yaml
name: AI-Agent Validation

on:
  pull_request:
    branches: [ main ]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.11'

      - name: Install dependencies
        run: pip install ruff pytest # Используем быстрые инструменты для предсказуемости

      - name: Lint with Ruff
        run: ruff check .

      - name: Run tests
        run: pytest tests/

Если агент видит, что тесты упали, он не должен просто сообщать об ошибке. Его задача — проанализировать логи journald или выводы тестов, найти причину и предложить исправленный вариант, который соответствует установленным правилам из Ponytail.

Предсказуемый CI/CD превращает AI-агента из «генератора случайного кода» в полноценного участника процесса, который берет на себя рутинную проверку соответствия стандартам, оставляя вам только принятие архитектурных решений.

Интеграция с Claude‑Code

Интеграция с Claude Code

Если мы рассматриваем AI-агента как полноценного участника процесса, то Claude Code — это не просто чат в браузере, а полноценный CLI-инструмент, который работает непосредственно в вашем терминале. С практической точки зрения, это меняет парадигму: вы перестаёте копировать куски кода в окно браузера и начинаете давать агенту контекст всей файловой системы.

Для того чтобы агент не превратился в «генератора мусора», а работал именно как опытный инженер, его нужно правильно интегрировать в рабочий процесс.

Написание эффективных prompt-engineering

Когда вы работаете с Claude Code, важно понимать: агент обладает огромным контекстным окном, но без чётких инструкций он склонен к избыточности. Чтобы добиться предсказуемости, о которой мы говорили в предыдущей части, нужно использовать принцип «ограничения свободы».

Вместо абстрактного «исправь баг в API», используйте структурированные запросы, которые задают рамки исследования. Хороший промпт для агента должен содержать:

  1. Область поиска: конкретные директории или модули.
  2. Ожидаемое поведение: что именно должно измениться.
  3. Запреты: чего делать категорически нельзя (например, менять сигнатуру существующих функций).

Если вы хотите, чтобы поведение агента стало более системным, рекомендую изучить подход к созданию CLAUDE.md. Этот файл служит своего рода «конституцией» для агента в рамках конкретного проекта.

Пример эффективного запроса в терминале:

bash
# Вместо простого исправления, даем агенту задачу проанализировать и предложить план
claude "Проанализируй ошибки в /src/auth/ и предложи изменения, которые исправят проблему с истечением JWT, но не затрагивают логику обновления рефреш-токенов. Сначала выведи план изменений."

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

Автоматическое генерирование конфигураций

Один из самых рутинных процессов для любого инженера — это написание конфигурационных файлов: Docker Compose, Nginx, CI/CD пайплайны или манифесты Kubernetes. Здесь Claude Code проявляет себя лучше всего, так как он видит текущую инфраструктуру проекта.

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

Сначала убедитесь, что у агента есть доступ к необходимым инструментам для проверки созданного конфига. Например, если мы генерируем Docker Compose, полезно сразу попросить агента проверить синтаксис.

Пример сценария: создание конфигурации для нового микросервиса на базе уже существующих.

bash
# Запрос на генерацию Docker Compose с учетом текущих сетевых настроек
claude "Создай docker-compose.yml для нового сервиса 'worker'. Используй существующую сеть 'backend_network', описанную в основном compose-файле, и привяжи volume к /data/worker, как это сделано в сервисе 'db'."

Чтобы процесс был максимально предсказуемым, я рекомендую комбинировать работу Claude Code с инструментами визуализации и анализа кодовой базы. Например, Graphify поможет вам понять, как новые конфигурации повлияют на связи между компонентами системы.

Если же вы работаете с высоконагруженными системами и вам нужно оптимизировать работу самого агента (например, при использовании сложных harness-тестов), стоит обратить внимание на ускорение agent harness через ECC. Это позволит сократить время ожидания ответа при генерации тяжелых конфигураций.

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

Часто задаваемые вопросы

Как ограничить область работы агента, чтобы он не переписал весь проект

Для этого необходимо использовать конфигурационный файл, например .agentrc, где через секцию [scope] задаются разрешённые пути и исключения. С практической точки зрения это позволяет агенту фокусироваться только на директориях с исходным кодом, не затрагивая логи, временные файлы или тяжелые наборы данных в fixtures/. Такой подход обеспечивает предсказуемость: вы точно знаете, какие файлы могут подвергнуться изменениям.

Можно ли доверять агенту автоматическое применение патчей в main

Автоматическое слияние изменений допустимо только в том случае, если у вас настроен надёжный CI-пайплайн с полным покрытием тестами. Если агент предлагает минимальный патч, а тесты в GitHub Actions проходят успешно, риск регрессии минимален. Однако в критически важных узлах системы я рекомендую оставлять этап ручного аппрува, чтобы сохранить контроль над архитектурой.

Что делать, если агент предлагает слишком сложные решения

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

Как проверить, что предложенное решение не нарушило логику системы

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

Поделиться:TelegramX / TwitterVK

Читайте также