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

DeepSeek Harness (dsh) — открытый агентский харнесс от DeepSeek AI, распространяемый по лицензии MIT и находящийся в стадии developer preview. Внешне это ещё одна утилита для запуска моделей, внутри — конструктор, в котором плагином является буквально всё: хранение сеансов, песочница, сжатие контекста и сама модель.

Плагин как единица всего

Харнесс работает на Cordis, а его архитектура описана в материале про пространственно-временную композируемость. Принцип простой: приложение не пишется как монолитный код, а собирается из слоёв-патчей. Профиль представляет собой список бандлов плюс ваш cordis.patch.yml, и каждый следующий слой способен отменить или дополнить предыдущий. Для контроля за сборкой есть dsh --dump-config: команда печатает всё дерево целиком, и по выводу видно, какой бандл что именно добавил.

Профили вместо флагов

Одна команда умеет работать по-разному, и разница задаётся профилем, а не набором ключей:

  • dsh web — локальный веб-интерфейс на http://127.0.0.1:3080;
  • dsh --profile headless "задача" — один свежий сеанс, ответ в вывод и завершение: подходит для 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 на одной задаче, порядок такой. Сначала ставится сам харнесс и запускается dsh web — этого достаточно, чтобы увидеть базовый набор плагинов. Потом добавляется один-два плагина под задачу: например, для работы с текстом — генерация брифа и полировка запроса. И только после этого имеет смысл думать про субагентов и workflow: они раскрываются там, где задач уже много и они повторяются.

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

И ещё: DSH не прячет модель. Если вам нужен конкретный провайдер или конкретная модель, это тоже плагин. Значит, можно сравнить два варианта на одной и той же задаче, не переписывая агента.

Зачем это нужно

DSH — не «CLI для LLM», а среда, где агент собирается под задачу: свои инструменты, свои политики, свои профили. Самое ценное здесь — не набор готовых функций, а то, что любую из них можно заменить своей: харнесс не диктует, как устроен агент, а даёт его собрать. Ломающие изменения обещаны прямо в README.

Код и документация: github.com/deepseek-ai/DeepSeek-Harness.

11