Официальная документация GitHub показывает, что self-hosted runner можно маршрутизировать по типу исполнителя, операционной системе и архитектуре. Для аренды это означает главное: считать нужно не людей и не число подключённых репозиториев, а реальные задания, которые одновременно требуют исполнения. Описание меток self-hosted runner

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

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

Эта статья для вас, если вы уже выбрали облачный Mac для DeepSeek Harness, но ещё не определили срок аренды, число сред, правила совместного использования и критерии приёмки.

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

01

Почему число сотрудников не равно числу Mac

В команде может быть несколько человек, но в конкретный момент только часть из них запускает агентные задачи. Обратная ситуация тоже встречается: один разработчик запускает несколько долгих сессий, фоновые проверки и автоматические исправления одновременно.

Для планирования разделите четыре величины:

  • число пользователей — кто имеет доступ;
  • число подключённых репозиториев — какие проекты могут запускаться;
  • пиковое число параллельных задач — сколько заданий реально выполняется одновременно;
  • уровень изоляции — какие данные, ключи и права нельзя смешивать.

Именно третья и четвёртая величины определяют базовое количество сред.

У общего облачного Mac есть минимум четыре скрытых ограничения:

  1. Конфликт рабочих каталогов. Два агента могут менять соседние файлы, переключать ветки или запускать тесты с разными зависимостями.
  2. Конкуренция процессов. Один длительный анализ занимает процессорное время, память, дисковый ввод-вывод и сетевые соединения, поэтому интерактивная задача начинает ждать.
  3. Смешение сессий. При совместном терминале или удалённом рабочем столе легко перепутать логи, переменные окружения и активный репозиторий.
  4. Граница полномочий. Доступ к приватному репозиторию, токену публикации или сертификату подписи нельзя считать обычным ресурсом.

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

macOS хранит пароли, сертификаты и ключи в защищённом хранилище Keychain, а доступ к отдельным элементам может контролироваться для конкретных приложений. Поэтому «один Mac для всех» — это не только вопрос нагрузки, но и вопрос того, кто способен получить доступ к секретам. Документация о Keychain Services описывает эту модель доступа.

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

02

Сценарии аренды: от пробного запуска до постоянных агентов

Короткий тест

Для личного запуска или пилота не арендуйте сразу среду под предполагаемый размер команды. Сначала проверьте одну законченную цепочку:

  1. подключение к удалённому Mac;
  2. установка DeepSeek Harness и зависимостей;
  3. настройка модели и переменных окружения;
  4. получение кода из тестового репозитория;
  5. выполнение агентной задачи;
  6. проверка лога и результата;
  7. повторный запуск после выхода из сессии;
  8. удаление временных ключей и рабочих данных.

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

Для пилота выбирайте:

  • одну среду;
  • один тестовый репозиторий;
  • один уровень доступа;
  • одну воспроизводимую задачу;
  • заранее определённый формат логов.

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

Несколько репозиториев и параллельные задачи

При нескольких проектах сначала составьте список одновременных операций:

  • интерактивное исправление кода;
  • фоновый рефакторинг;
  • запуск тестов;
  • генерация документации;
  • сборка;
  • CI-проверка;
  • ожидание внешнего API;
  • повторная попытка после ошибки.

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

Для маршрутизации CI полезно назначать исполнителям собственные метки. Официальная документация показывает, что self-hosted runner можно направлять по операционной системе, архитектуре и пользовательским меткам. Это позволяет отделить сборки от интерактивных задач Agent. Описание пользовательских меток runner

Сценарий Что считать Когда общий Mac допустим Когда нужна отдельная среда
Личный тест Одна законченная цепочка Почти всегда Если нужны разные права или боевые ключи
Несколько низкорисковых репозиториев Пиковые одновременные задачи Разные каталоги, процессы и токены Общие каталоги, порты или кэши
Командная разработка Пиковая нагрузка, а не число людей Короткие независимые задания Долгие сессии и конфликтующие зависимости
CI Одновременные jobs и очереди Фиксированный runner с очисткой Разные уровни доверия и секреты
Клиентские проекты Задачи плюс границы данных Только при документированной изоляции Разные клиенты, ключи и журналы

Длительно работающие агенты

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

Поэтому фиксируйте не только количество задач, но и:

  • время начала и окончания;
  • максимальное число одновременных сессий;
  • среднее окно занятости;
  • максимальное ожидание в очереди;
  • число прерванных задач;
  • причину прерывания;
  • результат восстановления.

Если после восстановления агент продолжает работу с устаревшей веткой, неполным логом или изменёнными переменными, проблема уже относится к согласованности состояния. Простое добавление ещё одного Mac её не устранит.

CI и автоматизация

Для CI важнее не удобство ручного доступа, а воспроизводимость. Среда должна запускать job без ручного входа, использовать заранее закреплённые зависимости и очищаться после выполнения. Долгоживущий рабочий каталог удобен для кэшей и быстрых повторов, но повышает риск «грязного» состояния. Пересоздание среды или рабочей области требует больше времени, зато уменьшает накопление неизвестных изменений.

Сравнивайте два режима:

Режим Преимущества Недостатки Подходит для
Постоянная рабочая область Быстрое повторное выполнение, сохранение кэшей, удобная отладка Остаточные файлы, секреты, скрытая зависимость от состояния Долгих тестов и отладки
Пересоздание перед job Чистый старт, понятная диагностика, проще удаление данных Дольше подготовка, нужно автоматизировать установку Регулярного CI и проектов с разными правами
Общий Mac runner Меньше сред, проще централизованный доступ Очередь, смешение журналов, риск неправильной маршрутизации Низкорисковых заданий с жёсткими метками
Выделенный runner Чёткая граница проекта, предсказуемое состояние Больше арендованных ресурсов Приватных репозиториев и подписывающих операций

Если на одном runner исполняются задания с разным уровнем доверия, не ограничивайтесь названием метки. Проверьте, кто может регистрировать runner, изменять его метки и направлять на него workflow. Маршрутизация без контроля прав создаёт только видимость изоляции.

03

Как составить расчётную таблицу до заказа

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

Сценарий Одновременные задачи Среднее окно занятости Изоляция Допустимая очередь Базовая среда Сигнал расширения
Пробный запуск Низкая / средняя
Интерактивная разработка
Фоновые агенты
CI
Клиентские или подписывающие операции Высокая

Практическая формула выглядит так:

базовое число сред = пиковое число независимых задач, скорректированное по требованиям изоляции.

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

Как выбрать срок аренды

Выбирайте срок по характеру работ:

Тип использования Логика срока Что проверить до продления
Однократный тест Покрыть установку, тест, повторный запуск и очистку Все ли этапы прошли без ручного вмешательства
Нерегулярные задачи Брать периоды под фактические окна работы Не простаивает ли среда между запусками
Ежедневная разработка Сохранять среду, если повторная установка дороже простоя Сколько времени уходит на обслуживание
Постоянный CI Фиксировать runner и правила очистки Очередь, сбои восстановления, загрязнение рабочей области
Долгий проект Зафиксировать правила продления и возврата Как меняются права, ключи и состав команды

Аренда «на месяц» не всегда означает экономию. Если среда используется редко, вы платите за доступность. Но слишком короткий срок тоже может увеличить расходы: повторная установка, ручная настройка ключей и повторная приёмка среды становятся отдельными операциями.

Для выбора региона и доступного способа оформления ориентируйтесь на актуальные страницы заказа облачного Mac. Если нужен другой маршрут, сравните доступные варианты аренды Mac до передачи технических требований. Не фиксируйте в заявке неподтверждённые характеристики, цены или узлы: они должны быть подтверждены текущим предложением KVMNODE.

Напоминание: срок аренды и количество сред — разные решения. Можно оставить одну среду на короткий пилот, но заранее описать, при каком росте очереди или изменении уровня доступа понадобится вторая.

04

Приёмка среды перед передачей команде

До начала реальной работы оформите короткий протокол. Он должен проверять не только факт «Mac доступен», но и пригодность именно для DeepSeek Harness.

  1. Доступ. Проверьте способ подключения, стабильность повторного входа и возможность завершить зависшую сессию.
  2. Права. Зафиксируйте, есть ли административный доступ, кто его получает и какие действия запрещены.
  3. Зависимости. Установите нужные инструменты, проверьте версии и сохраните список команд, которыми воспроизводится настройка.
  4. Модель. Проверьте переменные окружения, endpoint, токен и поведение после истечения сессии.
  5. Репозиторий. Используйте тестовый проект, убедитесь в правильной ветке и проверьте, что незапланированные каталоги недоступны.
  6. Инструменты агента. Запустите чтение файлов, изменение тестового файла, выполнение проверки и откат.
  7. Логи. Убедитесь, что видны начало, команды, ошибки и финальный статус, но секреты не попадают в журнал.
  8. Параллельность. Запустите независимые задания и проверьте отсутствие смешения каталогов, процессов и сессий.
  9. Восстановление. Прервите задачу, подключитесь повторно и проверьте согласованность состояния.
  10. Очистка. Удалите тестовые ключи, временные файлы, логи и рабочие каталоги согласно согласованному правилу возврата.

Для операций подписи отдельно проверьте наличие сертификата, приватного ключа, разрешений Keychain и сценария отзыва доступа. Подпись подтверждает происхождение и целостность кода, но сама по себе не заменяет полный контроль среды. Руководство Apple по подписанию кода указывает, что подпись не гарантирует отсутствие уязвимостей или небезопасных подключаемых компонентов.

Если приложение или компонент распространяется за пределами магазина, отдельно проверьте требования к подписи, hardened runtime и нотарификации. Официальные требования к нотарификации macOS описывают эти проверки.

05

Что выбрать: одна общая среда или несколько изолированных

Критерий Общая среда Раздельные среды
Стоимость ресурсов Ниже при малом числе задач Выше из-за отдельных контуров
Настройка Быстрее на старте Требует повторяемого процесса
Конфликты процессов Возможны Существенно проще контролировать
Рабочие каталоги Нужны строгие правила Разделяются естественнее
Секреты Сложнее ограничить Проще привязать к проекту
CI Нужны метки и очистка Маршрутизация прозрачнее
Клиентские данные Риск смешения Предпочтительный вариант
Масштабирование Очередь растёт быстрее Можно добавлять контуры по сигналу

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

Когда расширять аренду

Расширяйте среду, если наблюдается хотя бы один устойчивый сигнал:

  • очередь регулярно задерживает интерактивную работу;
  • пользователи прерывают чужие процессы;
  • фоновые агенты теряют состояние после восстановления;
  • CI jobs начинают зависеть от порядка запуска;
  • рабочие каталоги требуют ручной очистки;
  • разные проекты требуют несовместимых версий;
  • появляются дополнительные ключи, клиенты или уровни доступа.

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

06

Как оформить запрос на аренду

Перед обращением в KVMNODE подготовьте пять блоков:

  • ожидаемое пиковое число одновременно выполняемых Agent-задач;
  • перечень репозиториев и их уровень конфиденциальности;
  • требования к рабочим каталогам и сохранению состояния;
  • желаемый срок и допустимое время ожидания;
  • критерии приёмки, очистки и возврата доступа.

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

Если после расчёта выяснится, что вам нужна не постоянная машина, а временный контур для проверки DeepSeek Harness, изучите варианты оформления аренды Mac mini и передайте KVMNODE именно сценарий, а не только число сотрудников.

Если ваш текущий вариант — общий локальный Mac, Windows-компьютер с удалённым доступом или обычный облачный сервер, у него есть типичные слабые места: общая рабочая область, непредсказуемая конкуренция процессов, ручное восстановление сессий и сложная граница доступа к ключам. Для короткого эксперимента это может быть приемлемо. Для повторяемых Agent-задач и CI такая схема быстро превращается в ручное администрирование. В этом случае аренда Mac у KVMNODE удобнее, если вам нужен временный проверяемый контур: вы заранее фиксируете параллельность, изоляцию, срок, способ доступа и правила уничтожения данных, не покупая оборудование под ещё не подтверждённую нагрузку.