DeepSeek Harness (dsh) — открытый агентский харнесс от DeepSeek AI. С виду это ещё одна команда для работы с моделями, а по сути — конструктор: плагином здесь является всё, включая хранение сеансов, песочницу, сжатие контекста и саму модель.
Каждая деталь системы — отдельный плагин
Харнесс построен на 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 формирует бриф: темы, заголовки, план статьи и чек-лист.
- Prompt-Polish переписывает черновой запрос, убирая повторы и делая формулировки короче.
- Improve-Prompt показывает diff до отправки — важные термины и ссылки остаются нетронутыми.
- Detector-Remover добавляет разговорные обороты и лёгкую стилистическую неровность, чтобы текст реже срабатывал на AI-детекторах.
С чего начать
Если хочется попробовать DSH на одной задаче, порядок такой. Сначала ставится сам харнесс и запускается dsh web — этого достаточно, чтобы увидеть базовый набор плагинов. Потом добавляется один-два плагина под задачу: например, для работы с текстом — генерация брифа и полировка запроса. И только после этого имеет смысл думать про субагентов и workflow: они раскрываются там, где задач уже много и они повторяются.
Важно не пытаться собрать «идеальный профиль» заранее. Профиль — это не конфигурация на годы, а рабочий набор: сегодня он один, завтра вы добавили плагин, послезавтра убрали лишнее. Патчи перезагружаются на лету, так что цена ошибки низкая: неудачный слой можно откатить, а не переписывать всё заново.
И ещё одно: DSH не прячет модель. Если вам нужен конкретный провайдер или конкретная модель, это тоже плагин. Значит, можно сравнить два варианта на одной и той же задаче, не переписывая агента.
Зачем это нужно
DSH — не «CLI для LLM», а среда, где агент собирается под задачу: свои инструменты, свои политики, свои профили. Самое ценное здесь — не набор готовых функций, а то, что любую из них можно заменить своей: харнесс не диктует, как устроен агент, а даёт его собрать. Проект открыт под MIT и находится в developer preview — ломающие изменения обещаны прямо в README.
Код и документация: github.com/deepseek-ai/DeepSeek-Harness.
