DeepSeek Harness: агент, который целиком собран из плагинов
DeepSeek Harness (dsh) — открытый агентский харнесс от DeepSeek AI. Внешне это команда для запуска моделей, внутри — конструктор, где плагином является каждый слой: хранение сеансов, песочница, сжатие контекста и сама модель. Статья разбирает архитектуру, профили, механизмы запуска субагентов и практическую сборку цепочки из четырёх плагинов.
Плагин как единица сборки
Харнесс работает поверх Cordis, а архитектурный принцип описан в работе о пространственно-временной композируемости. Приложение не программируется, а собирается из слоёв-патчей. Профиль — список бандлов и файл cordis.patch.yml; каждый последующий слой может отменить или дополнить предыдущий. Команда dsh --dump-config выводит собранное дерево целиком, и по выводу видно, какой бандл добавил конкретный узел.
Профили вместо флагов
Одна команда переключает поведение через профиль:
-
dsh web— локальный веб-интерфейс наhttp://127.0.0.1:3080; -
dsh --profile headless "задача"— одноразовый сеанс, ответ в stdout, выход: применимо в CI; -
dsh --profile sdk— JSON-RPC для внешних клиентов; -
dsh --profile acp— тот же агент внутри редактора.
Профиль хранится в отдельной папке, патчи перезагружаются без перезапуска процесса: правка плагина подхватывается на лету. Собственный набор добавляется командой dsh plugin --profile web add.
Запуск агентов внутри агента
Харнесс умеет запускать другие агенты в четырёх режимах:
-
субагенты работают в фоне, каждый со своим контекстом; родительский агент продолжает работу и забирает результат по готовности;
-
наследник контекста — субагент, который видит уже состоявшийся разговор, для задач вида «продолжи и проверь»;
-
workflow — JavaScript-сценарий, распределяющий десятки субагентов по фазам, конвейером или с барьером; оркестрация задаётся кодом, а не диалогом;
-
ralph — цикл свежих агентов по одному неизменному заданию, где рабочая папка выступает долговременной памятью.
Инструменты как сменные модули
Базовый набор собран из плагинов, каждый отключается отдельно: чтение и правка файлов, поиск по репозиторию, фоновые задания, веб-поиск и загрузка страниц, подключение внешних серверов по MCP, «скиллы» — папки с инструкциями, которые агент подгружает по необходимости.
Песочница и хранение сеансов
Файловые операции ограничены песочницей: workspace-write пускает только в рабочую папку. Отказ не завершает работу падением, а фиксируется пометкой «доступ запрещён» — её можно показать человеку и запросить расширение прав. Граница задаётся заранее: в одних участках агент спрашивает перед каждым опасным действием, в других действует без подтверждения.
История сеанса сохраняется в файл и переживает перезапуск: сеанс можно возобновить, сжать, посмотреть расход токенов. Долгая цель хранится в состоянии сеанса, а не в контексте модели.
Что это даёт командам
Для небольшой команды DSH снимает выбор между собственным агентом и готовым сервисом: сервис даёт фиксированный набор функций, харнесс — конструктор. Старт возможен с одного профиля, дальше плагины добавляются по мере появления задач: публикация статей, разбор конкурентов, автоматическая выгрузка метрик.
Каждый вызов инструмента, каждое изменение файла и каждый переход состояния попадают в журнал. Это рабочий инструмент, а не отладочные логи: при ошибке агента видно шаг и причину. Тот же журнал позволяет проверять, какие шаги фактически понадобились, вместо оплаты по счёту без разбора.
DSH не требует полного переезда. Профиль собирается под одну задачу и работает рядом с привычными инструментами: агент по ключу обращается к вашему сервису, забирает результат и возвращает его в привычное рабочее окружение.
Практическая цепочка из четырёх плагинов
Четыре шага: от брифа до человеческого текста
-
FrameFactory формирует бриф: темы, заголовки, план статьи и чек-лист.
-
Prompt-Polish переписывает черновой запрос, убирая повторы и сокращая формулировки.
-
Improve-Prompt показывает diff до отправки — важные термины и ссылки сохраняются без изменений.
-
Detector-Remover добавляет разговорные обороты и небольшую стилистическую неровность, чтобы текст реже срабатывал на AI-детекторах.
Порядок внедрения
Для пробы на одной задаче сначала ставится сам харнесс и запускается dsh web — этого достаточно, чтобы увидеть базовый набор плагинов. Затем добавляется один-два плагина под задачу: для работы с текстом — генерация брифа и полировка запроса. Субагенты и workflow имеет смысл подключать позже, когда задач много и они повторяются.
Собирать «идеальный профиль» заранее не требуется. Профиль — рабочий набор, а не конфигурация на годы: сегодня один состав, завтра плагин добавлен, послезавтра лишний убран. Патчи перезагружаются на лету, поэтому неудачный слой откатывается, а не требует переписывания всего.
Модель тоже не зафиксирована: конкретный провайдер или модель задаётся плагином. Два варианта сравниваются на одной задаче без переписывания агента.
Ограничения
Проект находится в developer preview: ломающие изменения обещаны прямо в README, поэтому обновления между версиями могут требовать правки профилей. Режим ralph опирается на файловую систему как на память — при параллельных запусках с общей рабочей папкой возможны конфликты записи. Цепочка из четырёх плагинов в примере собрана под текстовые задачи; на других классах задач потребуется иной набор.
Итог
DSH — не «CLI для LLM», а среда, где агент собирается под задачу: свои инструменты, свои политики, свои профили. Ценность не в наборе готовых функций, а в том, что любой элемент заменяется своим: харнесс не диктует устройство агента, а предоставляет способ его собрать. Распространяется под MIT.
Код и документация: github.com/deepseek-ai/DeepSeek-Harness.
ссылка на оригинал статьи https://habr.com/ru/articles/1084320/