Назад в блог

Мы потратили три дня на настройку Copilot. Вот что я сделал бы иначе

Мой коллега потратил три дня, чтобы поднять GitHub Copilot для команды из пяти человек. У каждого своя конфигурация VPN. Billing не проходит через карты. На корпоративный аккаунт нужен иностранный способ оплаты. Итог: двое работают с AI, трое — нет. Разрыв в скорости виден уже через неделю.

Я прошёл через это в 2024. И сделал один вывод, который стоило сделать с первого дня.

Почему это инженерная задача, а не административная

Обычная реакция — пойти в HR или бухгалтерию. Найти корпоративную карту, подписать NDA с вендором, разослать инструкцию «как подключить». Это работает для одного инструмента в одной стране. Для распределённой команды это зоопарк: у каждого свой Cursor, свой Copilot, свой промпт-стиль, свои лимиты.

Проблема не в платёжных схемах. Проблема — в отсутствии архитектурного решения. Кто принял решение, какой toolchain стандартизировать? Какой API-ключ в CI/CD? Что делает junior, которому не оформили подписку?

Эти вопросы — инженерные. И отвечать на них нужно один раз, а не каждый раз когда новый разработчик заходит в команду.

Три пути, которые я рассматривал

Первый — GUI-подписки на каждого: Copilot, Cursor, Windsurf, каждый выбирает сам. Каждый доволен своим инструментом. Нет единого стандарта, стоимость растёт линейно, в CI/CD ничего из этого нет.

Второй — self-hosted через Ollama: Llama 3.3, Mistral, без внешних запросов и billing. Я проверял на Bitrix-задачах. Ускорение есть — примерно 20-30% на рутинных задачах. Claude 3.5 Sonnet через API даёт 60-70%. Разрыв заметный, и именно на реальном PHP-коде, а не на генерации hello world.

Третий — API-first через прокси: один API-ключ на команду, прокси на сервере, все разработчики подключены через него. Любой редактор — Continue.dev в VSCode или JetBrains, или Cursor в API-режиме.

Я выбрал третий. Вот почему.

API-first на практике: Continue.dev + Claude API

Continue.dev — это open-source IDE-расширение, которое работает с любым LLM через OpenAI-совместимый API. Один config.json в репозитории — все разработчики получают одинаковую конфигурацию через git pull.

Структура простая:

  • Nginx-прокси на сервере пробрасывает /v1/ на api.anthropic.com с подставленным ключом
  • Разработчики в config.json указывают http://your-proxy.com/v1/ без токена
  • В CI/CD runner использует тот же ключ напрямую

Стоимость для пяти разработчиков в режиме active daily use — около $50-70 в месяц на Claude API. GUI-подписки (Cursor Pro × 5) — $100-150 в месяц, и без единого стандарта.

Что важнее денег: Context Files в Continue.dev — это CLAUDE.md в репозитории. Один файл определяет, что модель знает о проекте: архитектура Bitrix, стайл-гайд PHP, запрещённые паттерны. Каждый новый разработчик получает это автоматически. Промпт-дрейф минимален.

Что я убрал из рассмотрения

Self-hosted я не отбросил полностью — он живёт у меня локально для экспериментов. Но для production-разработки, где я хочу стабильное качество на Bitrix/PHP-задачах, local Llama не дотягивает. Проверял конкретно: review типичного Bitrix-компонента, генерация тестов, рефакторинг с сохранением контракта. Claude через API стабильнее на сложных задачах. Ollama лучше для быстрого автодополнения простых конструкций — там latency ниже.

Copilot через GitHub Enterprise с иностранным аккаунтом — пробовал. Три недели административных согласований, ограниченная кастомизация контекста, нет прямого доступа к API из CI. Не стоило.

AI в CI/CD без GUI

Это отдельный аргумент в пользу API-first, который редко упоминают.

AI code review в GitHub Actions — это curl в CI-скрипте. Подаю diff, получаю комментарии. Работает независимо от того, где живёт разработчик, какой у него редактор и есть ли у него подписка. CI runner в Германии, разработчик в Москве — настройка одинакова.

То же с генерацией тестов: скрипт в pre-commit hook вызывает API, генерирует заготовку test-класса для нового метода. Это не требует GUI вообще.

У меня сейчас три таких скрипта в рабочем процессе: review diff на PR, генерация базовых тестов, краткое описание изменений для changelog. Всё через API, всё идемпотентно, всё логируется в JSONL.

Что не сработало

Continue.dev с JetBrains IDE у нескольких разработчиков работал нестабильно в первые недели — крашил indexer при большом контексте. Решилось обновлением плагина и ограничением maxTokens в конфиге. Не критично, но два дня потеряли на диагностику.

Попытка использовать разные модели через один прокси (Claude для одних задач, GPT-4o для других, local Ollama как fallback) — в теории звучит хорошо. На практике разработчики начали выбирать модель вручную, промпт-стиль разъехался, стандарт исчез. Убрал выбор — оставил одну модель для всей команды.

Итог

Одно инженерное решение на старте — API-first, Continue.dev, общий Context Files в репозитории — дешевле и надёжнее, чем три недели согласований на каждого нового разработчика.

Это не про обход billing-проблем. Это про то, что у команды должна быть единая среда так же, как есть единый .editorconfig или единый phpstan.neon. AI-tooling — не исключение.

Вопрос «как настроить Copilot для команды» у меня теперь закрыт один раз. Работает на пяти разработчиках, масштабируется без административной нагрузки.


*Связанные статьи: Я пишу спецификацию до того, как прошу AI написать код · Что нельзя давать AI: фреймворк из 13 задач в production*