DeepSeek Harness: агент, который целиком собран из плагинов

от автора

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: бриф и структура

FrameFactory: бриф и структура
Prompt-Polish: улучшение запроса

Prompt-Polish: улучшение запроса
Detector-Remover: снятие AI-отпечатков

Detector-Remover: снятие AI-отпечатков

Четыре шага: от брифа до человеческого текста

  1. FrameFactory формирует бриф: темы, заголовки, план статьи и чек-лист.

  2. Prompt-Polish переписывает черновой запрос, убирая повторы и сокращая формулировки.

  3. Improve-Prompt показывает diff до отправки — важные термины и ссылки сохраняются без изменений.

  4. 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/