Сколько параллельных вызовов инструментов открыть в DeepSeek Harness в 2026 году?
Материал помогает разработчикам и платформенным командам определить безопасный режим выполнения инструментов в DeepSeek Harness. Вы получите последовательность проверок для maxParallelToolCalls, критерии перехода от последовательного режима к ограниченному параллелизму и признаки, при которых выгоднее разделить рабочие области или арендовать отдельный Mac.
Содержание
- Кому пригодится этот материал
- Сначала зафиксируйте базовый сценарий, а не желаемое число
- Категория инструмента важнее числа ядер
- Общая рабочая область делает параллелизм опасным
- Ресурсный предел нужно измерять на вашем Mac
- Отмена и восстановление показывают, можно ли расширять лимит
- Логи должны доказывать, какой вызов дал какой результат
- Пошаговая процедура приёмки
- Итоговая шкала решений
В опубликованном 9 мая 2026 года протоколном аудите параллельные фрагменты tool_call были перемешаны по индексам вызовов во всех 3 из 3 проверенных испытаний V4-Pro и V4-Flash — это уже достаточная причина не считать параллелизм безопасным «по умолчанию». Описание испытаний и исходные фикстуры показывают, что порядок передачи результата сам по себе требует отдельной обработки.
Вывод: не устанавливайте maxParallelToolCalls по числу ядер Mac. На этой неделе начните с последовательного режима, классифицируйте инструменты как только читающие, независимо записывающие, совместно записывающие и вызывающие внешние побочные эффекты, затем разрешайте ограниченный параллелизм только после проверки изоляции, пиковых ресурсов, отмены и журналов. Если хотя бы один из этих пунктов не подтверждён, оставляйте выполнение последовательным или разделяйте рабочие области и среды.
Кому пригодится этот материал
Разработчикам агентов — чтобы сократить время многошагового сценария без конкуренции между результатами.
Платформенным инженерам — чтобы установить границы ресурсов для общей среды выполнения.
Техническим закупщикам — чтобы по реальной нагрузке понять, нужен ли ещё один независимый Mac, а не просто более высокий лимит параллельных вызовов.
Сначала зафиксируйте базовый сценарий, а не желаемое число
Перед изменением настройки вам нужен один воспроизводимый базовый тест: тот же репозиторий, та же ветка, одинаковый набор файлов, одинаковые команды и одинаковая версия DeepSeek Harness. В сценарий можно включить поиск по коду, чтение конфигурации, запуск тестов, сборку и один внешний вызов, но каждый инструмент должен иметь собственный идентификатор задания.
Официальный репозиторий DeepSeek Harness описывает архитектуру, в которой модели, инструменты, циклы агента и окружение выполнения оформлены как заменяемые компоненты. Это означает, что риск определяется не названием инструмента вроде test или build, а тем, какие объекты он читает, изменяет, блокирует или отправляет наружу. Архитектура и исходные компоненты DeepSeek Harness следует использовать как отправную точку, но не как готовое доказательство безопасности вашей конфигурации.
Для каждого инструмента составьте короткую карту:
- что он читает: исходный код, кэш зависимостей, переменные окружения, секреты, артефакты сборки;
- что он записывает: файлы проекта, индекс, журнал, каталог сборки, временные файлы, состояние Git;
- что он блокирует: lock-файлы, порт, каталог, базу данных, удалённую очередь;
- что отправляет наружу: HTTP-запросы, результаты тестов, исходный код, токены, логи;
- может ли он продолжать работу после отмены основного вызова.
На этом этапе не нужно добиваться ускорения. Ваша цель — получить контрольную версию, где каждый результат можно связать с конкретным вызовом и вернуть рабочую область в исходное состояние.
Для проверки протокольной части отдельно убедитесь, что клиент корректно сохраняет reasoning_content в многошаговом цикле, а потоковые фрагменты агрегирует по индексу tc.index, а не по позиции в списке. В опубликованном техническом отчёте указано, что именно перемешивание потоковых частей параллельных вызовов требует агрегации по индексу; там же приведены 12 проб и 270 испытаний, выполненных 9 мая 2026 года. Технический отчёт с методикой воспроизведения не заменяет ваши нагрузочные тесты, но помогает не принять ошибку транспорта за проблему Mac.
Категория инструмента важнее числа ядер
Для первой оценки разделите инструменты на четыре класса.
Только чтение. Поиск по файлам, чтение исходников, получение статуса ветки, анализ журналов и вычисление зависимостей без записи в рабочую область. Такие операции первыми допускаются к ограниченному параллелизму, если они действительно не создают общий кэш или индекс.
Независимая запись. Генерация отчёта в уникальный каталог, сохранение результата под уникальным идентификатором задания или сборка в заранее выделенную директорию. Здесь параллелизм возможен только при доказанной принадлежности каждого результата одному заданию.
Совместная запись. Изменение исходников, применение патчей, обновление общего индекса, работа с одной базой данных, запись в общий каталог сборки или использование одного lock-файла. Даже разные команды могут конкурировать за один объект. Например, npm test и npm run build выглядят разными операциями, но способны одновременно читать и изменять общий кэш, временные файлы или сгенерированный код.
Внешние побочные эффекты. Публикация пакета, отправка сообщения, создание задачи, изменение удалённого ресурса, выполнение миграции или обращение к API с изменяющим запросом. Для таких операций последовательный режим обычно должен быть барьером, пока не доказаны идемпотентность, повторяемость и корректная отмена.
В официальном руководстве DeepSeek по tool calls показана модель, способная выполнять несколько раундов рассуждения и вызовов инструментов, однако наличие нескольких tool_calls в ответе модели не означает, что нижележащий исполнитель может безопасно запустить все операции одновременно. Описание жизненного цикла tool calls в API подтверждает поддержку вызовов инструментов, но не даёт универсальной рекомендации по числу одновременных процессов на конкретном Mac.
Практическая оценка должна выглядеть так:
- только чтение без общего состояния — кандидат на ограниченный параллелизм;
- запись в уникальные каталоги — кандидат после проверки принадлежности артефактов;
- запись в один репозиторий или каталог — последовательный режим;
- внешний вызов с изменением состояния — последовательный режим до отдельного подтверждения;
- смешанная партия — её безопаснее разделить на независимые фазы.
Общая рабочая область делает параллелизм опасным
Параллельные вызовы DeepSeek Harness действительно могут одновременно изменить один файл, если инструменты получили одну и ту же рабочую директорию и имеют право записи. Модель может сформировать несколько вызовов в одном ответе, но защита от конфликта должна находиться в исполнительном контуре: через очередь, блокировку, отдельную ветку, копию рабочей области или отказ от запуска.
Проверьте минимум четыре объекта:
- Репозиторий и ветку. Зафиксируйте
git status, текущую ветку и список изменённых файлов до запуска. - Каталог сборки. Убедитесь, что параллельные задания не используют один
build,dist,DerivedDataили аналогичный каталог. - Lock-файлы. Проверьте блокировки менеджера пакетов, базы данных, тестового раннера и самого рабочего процесса.
- Временные артефакты. Найдите файлы с фиксированными именами, общие сокеты, PID-файлы и кэш, который очищается одной задачей во время работы другой.
Оценка «команды разные, значит конфликтов нет» здесь не подходит. Конфликт может произойти на уровне файловой системы, процесса или общего сервиса, даже если инструменты не вызывают одну и ту же команду.
Для каждого пробного запуска сохраняйте:
- снимок состояния до и после;
- перечень изменённых файлов;
- идентификатор ветки или рабочей копии;
- сообщения о блокировках;
- список созданных артефактов;
- связь артефакта с идентификатором задания.
Если два параллельных вызова закончили работу, но один отчёт нельзя уверенно связать с конкретным заданием, проверка изоляции считается непройденной. В этом случае повышение maxParallelToolCalls только ускорит появление трудно воспроизводимой ошибки.
Для нескольких проектов заранее изучите подход к изоляции рабочих сред DeepSeek Harness, а не пытайтесь решить проблему только увеличением лимита. Один Mac может обслуживать несколько независимых рабочих областей, но это не превращает общий каталог, общий кэш и общий процессный лимит в изолированные ресурсы.
Ресурсный предел нужно измерять на вашем Mac
Универсального значения для «стабильного» maxParallelToolCalls нет: предел зависит от состава задач. Четыре чтения исходников и четыре параллельные сборки имеют совершенно разный профиль нагрузки. При оценке Mac вам нужно измерять не среднюю загрузку, а пик и продолжительность давления на систему.
Наблюдайте за следующими группами ресурсов:
- CPU: загрузка основного процесса, компилятора, тестового раннера и дочерних процессов;
- память: общий объём, давление памяти, рост swap и резкие задержки при запуске новых процессов;
- файловые дескрипторы: открытые файлы, сокеты, процессы-наследники и ошибки исчерпания лимита;
- временное хранилище: рост каталогов сборки, кэша, логов и промежуточных файлов;
- сетевые операции: одновременные загрузки зависимостей, обращения к API и передача крупных артефактов.
На macOS фиксируйте показатели до теста, в момент максимальной нагрузки и после завершения. Для системной картины можно использовать документацию Apple по Activity Monitor, а для процессных и файловых наблюдений — штатные средства командной строки, если они разрешены вашей политикой эксплуатации.
Сигналы к снижению параллелизма:
- память постоянно находится под давлением, а swap растёт;
- новые процессы запускаются с заметной задержкой;
- сборки или тесты начинают нестабильно завершаться без изменения кода;
- временное хранилище быстро заполняется;
- дочерние процессы остаются после завершения задания;
- система регулярно убивает процессы из-за нехватки ресурсов.
Не превращайте число ядер в формулу настройки. Ядра не показывают, сколько памяти потребляет один компилятор, сколько файлов открывает тестовый раннер и какие лимиты задаёт внешний инструмент. Если параллельный сценарий постоянно насыщает CPU, но при этом вызывает обмен, блокировки или рост времени окончания, это не успешное ускорение, а перегрузка.
Для закупки полезнее сопоставить реальный профиль с планированием количества облачных Mac для DeepSeek Harness: отдельная среда может дать больше предсказуемости, чем общий Mac с высоким лимитом конкурентных вызовов.
Отмена и восстановление показывают, можно ли расширять лимит
Проверка отмены обязательна до перехода от последовательного режима к ограниченному параллелизму. Запустите базовый сценарий и остановите его в трёх разных фазах:
- когда инструменты только созданы, но ещё не начали выполнение;
- когда один инструмент завершился, а остальные продолжают работу;
- когда дочерние процессы уже выполняют сборку или тесты.
После отмены проверьте не только ответ переднего процесса. Разделите наблюдения на три уровня:
- возврат основного вызова — получил ли Agent Loop корректный статус отмены;
- остаточные процессы — завершились ли компиляторы, тесты, сетевые операции и дочерние оболочки;
- состояние рабочей области — не остались ли частично записанные файлы, незакрытые блокировки и незавершённые артефакты.
Отдельно повторите тест, в котором один инструмент возвращает ошибку. Остальные вызовы должны либо завершиться безопасно, либо получить явный сигнал отмены. Нельзя засчитывать проверку как успешную, если интерфейс показал ошибку, но фоновые процессы продолжили менять репозиторий.
Для повторяемости после остановки выполните восстановление:
- дождитесь исчезновения дочерних процессов;
- проверьте блокировки и временные файлы;
- сравните состояние рабочей области с контрольным снимком;
- повторите тот же сценарий с чистого состояния;
- сравните результаты и журналы.
Если после отмены требуется ручное удаление случайных файлов или восстановление ветки из резервной копии, среда ещё не готова к повышению maxParallelToolCalls. В таком случае используйте последовательное выполнение для операций записи, а параллельно запускайте только независимые чтения.
Логи должны доказывать, какой вызов дал какой результат
Скорость не является критерием приёмки, если результат нельзя расследовать. Для каждого вызова сохраняйте только реально доступные поля и не придумывайте структуру журнала, которой нет в вашей реализации.
Минимальный набор доказательств:
- идентификатор задания;
- имя инструмента и параметры, очищенные от секретов;
- время начала и окончания;
- статус: запущен, завершён, отменён или завершён с ошибкой;
- идентификатор родительского шага Agent Loop;
- перечень ключевых артефактов;
- код возврата или нормализованная ошибка;
- факт завершения дочерних процессов.
В потоковом режиме результаты могут приходить не в порядке запуска. Поэтому связывайте их с исходным индексом вызова и отдельным идентификатором задачи. В аудите протокола DeepSeek зафиксировано, что параллельные фрагменты tool_call могут перемешиваться между индексами; это относится к обработке потока и должно быть учтено до анализа производительности. Раздел о межфрагментной агрегации вызовов полезен как проверка транспортного слоя.
Также учитывайте жизненный цикл рассуждений. В опубликованной проверке удаление reasoning_content из предыдущего сообщения с tool_calls приводило к ошибке HTTP 400 во всех 3 из 3 повторов. Это не показатель Mac-производительности, но типичный пример того, как ошибка сохранения состояния может выглядеть как случайный сбой параллельного агента. Нормативное описание сохранения reasoning-контента стоит включить в проверку клиента.
Пошаговая процедура приёмки
Выполните процедуру в таком порядке:
- Зафиксируйте версию DeepSeek Harness, модель, параметры Agent Loop, операционную систему Mac и дату теста.
- Опишите чтение, запись, блокировки и внешние действия каждого инструмента.
- Запустите один и тот же базовый сценарий последовательно не менее чем в нескольких повторениях, сохраняя длительность, ошибки и итоговые артефакты.
- Проверьте рабочую область после каждого запуска: ветку, изменения, lock-файлы, временные каталоги и дочерние процессы.
- Включите ограниченный параллелизм только для инструментов без общего состояния и повторите тот же сценарий.
- Во время теста снимите пики CPU, памяти, файловых дескрипторов, временного хранилища и сетевой активности.
- Прервите выполнение в начале, середине и во время дочернего процесса, затем проверьте отмену и восстановление.
- Сопоставьте каждый результат с идентификатором вызова, индексом
tool_callи созданным артефактом. - Увеличивайте лимит только после прохождения предыдущего уровня; при первом невоспроизводимом конфликте возвращайтесь к последнему подтверждённому режиму.
- Если независимые задачи всё ещё конкурируют за память, хранилище или ответственность за рабочую область, разделите их по средам, а не продолжайте повышать лимит.
Для ответа на вопрос о том, сколько установить в maxParallelToolCalls, используйте условия:
- Если инструменты только читают данные, рабочая область не меняется, ресурсы не достигают устойчивого насыщения, отмена очищает процессы, а журналы однозначно связывают результаты с вызовами, то выбирайте ограниченный параллелизм и повышайте его небольшими шагами.
- Если инструменты пишут в общий репозиторий, используют один каталог сборки или один lock-файл, то оставляйте такие операции последовательными.
- Если запись независимая, но результат хранится в уникальном каталоге и после сбоя рабочая область восстанавливается автоматически, то разрешайте параллелизм только внутри этого изолированного набора.
- Если CPU или память длительно насыщены, начинается активный обмен, растёт временное хранилище или процессы завершаются системой, то снижайте лимит.
- Если задачи требуют независимых секретов, постоянных фоновых процессов, разных веток или отдельной ответственности за артефакты, то разделяйте рабочие области или запускайте отдельные среды.
- Если порядок и происхождение результатов невозможно доказать по журналам, то приёмку не засчитывайте даже при сокращении общего времени.
Итоговая шкала решений
| Режим | Когда выбирать | Что разрешать | Что проверять перед запуском | Оценка |
|---|---|---|---|---|
| Последовательный | Общая запись, внешние изменения, неясная отмена или неполные журналы | Один инструмент за раз | Чистое состояние, возврат ошибки, восстановление | 5/5 по контролю, 2/5 по скорости |
| Ограниченный параллелизм | Только чтение или независимые записи с подтверждённой изоляцией | Небольшую проверенную группу инструментов | Пики ресурсов, принадлежность артефактов, порядок результатов | 4/5 по балансу |
| Разделённые среды | Независимые проекты, постоянная нагрузка, разные права и секреты | Параллельные рабочие процессы по отдельным окружениям | Сетевую связность, хранение, доступы, стоимость эксплуатации | 5/5 по предсказуемости |
| Повышение лимита без приёмки | Только на временном стенде для поиска границы | Непроизводственные тесты | Полный набор доказательств до переноса в работу | 1/5 по надёжности |
Эта таблица не является готовой конфигурацией и не заменяет измерения. Она нужна, чтобы не смешивать три разных решения: разрешить несколько безопасных инструментов внутри одного шага, оставить опасные операции последовательными или вынести независимые нагрузки в разные Mac-среды.
Если сейчас вы запускаете всё на одном Mac, у текущей схемы обычно есть четыре слабых места: общий каталог допускает конкурирующую запись, один пик сборки влияет на остальные задания, отмена может оставить дочерние процессы, а общий журнал усложняет разбор результата. Увеличение maxParallelToolCalls не устраняет эти ограничения. Для временного стенда, проверки новой версии, нагрузочного сравнения или нескольких независимых рабочих областей аренда Mac у VPSMAC может дать более понятную границу ответственности: вы сначала повторяете свой базовый тест последовательно и с ограниченным параллелизмом, а затем переходите к подбору отдельного Mac-окружения для нагрузок DeepSeek Harness, если именно изоляция и ресурсный пик стали узким местом.
Для долгосрочной постоянной нагрузки сначала сравните стоимость отдельного собственного Mac с эксплуатацией нескольких сред. Если нужны физические интерфейсы, локальные периферийные устройства или непрерывная работа без сетевой зависимости, аренда подходит не всегда. Но для временного вычислительного стенда и воспроизводимой проверки параллельного выполнения независимая среда часто безопаснее, чем один общий Mac с неподтверждённо высоким лимитом.