Блог

Что такое DeepSeek Harness (dsh)? Агентный фреймворк, который запускается одной командой

Короткий ответ

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

Запомните одну формулу:

text
Агент = модель + harness

Модель — это мозг, а harness — всё остальное: инструменты, файловая система, shell, взаимодействие субагентов, доступ к контексту и решение «когда остановиться». DeepSeek Harness не привязан к конкретной модели: по умолчанию он настроен на семейство DeepSeek V4, но одна переменная окружения направляет его на любой OpenAI-совместимый эндпоинт.

Пять вещей, которые стоит запомнить:

  • Всё является плагином: файловая система, shell, адаптер модели, веб-интерфейс, субагенты — даже сам цикл агента оформлен как плагин. Привилегированного ядра, которое нужно патчить, просто нет.
  • Журнал сессии — единственный источник истины: всё, что видит модель, восстанавливается из воспроизводимого журнала. Fork, resume и сжатие контекста получаются как бесплатный побочный эффект.
  • Агент может изменять сам себя: работающий агент способен на лету определить новый плагин и внедрить его в живую среду выполнения — новый инструмент сразу становится виден модели.
  • Взрывной рост: 20K+ звёзд за первый час, 28K–31K к концу первого дня — один из самых быстрорастущих open-source проектов за последнее время.
  • Это явно developer preview: интерфейсы будут меняться, итерации идут быстро. Если строите на нём продакшен, закладывайте время на погоню за релизами.

Что на самом деле представляет собой DeepSeek Harness

Официальное определение — «agent harness». Сначала разберёмся с частой путаницей: это не очередное чат-приложение и не модель.

  • Не модель: по умолчанию используется семейство DeepSeek V4, но модель заменяема. Можно направить его на Claude, GPT или Gemini.
  • Не чат-приложение: скорее это «фронтенд для среды выполнения агента». Вы ставите цель, а агент по кругу вызывает инструменты, пока не закончит. Веб-интерфейс — лишь окно, через которое вы наблюдаете и управляете.
  • Это фреймворк: набор строительных блоков для сборки агента. Какие возможности ему дать, какую модель, какую песочницу — всё решается конфигурацией.

Главное отличие от традиционных агентных фреймворков: нет привилегированного ядра

Большинство агентных фреймворков устроены одинаково: ядро с циклом агента, а по бокам навешаны плагины инструментов, памяти и песочницы. Ядро неприкосновенно, расширения попадают внутрь только через хуки, которые заранее предусмотрел вендор.

DeepSeek Harness переворачивает это правило:

Каждая часть продукта — плагин: адаптер модели, реестр инструментов, журнал сессии, даже сам цикл агента. Привилегированного ядра, которое нужно патчить, не существует.

Под капотом он включает в себя (vendored) плагинный фреймворк Cordis (его дизайн опирается на статью A Programming Paradigm for Spatiotemporal Composability). В этой модели:

  • Плагин — это обратимый побочный эффект: любая регистрация — это побочный эффект, который автоматически отменяется при выгрузке плагина. Reload / HMR чисто перезапускается в порядке объявления — никакого остаточного состояния в духе «установил и не могу удалить».
  • Зависимости объявляются, а не оркестрируются: плагин объявляет нужные ему сервисы через inject (ctx.tools, ctx.llm, ctx.sessions…), а фреймворк сам выводит порядок загрузки из этих зависимостей. Вы никогда не импортируете конкретную реализацию — вы находите сервис по ключу. Поэтому любой сервис можно целиком заменить через конфигурацию.
  • Перехват — это просто подписка на события: события поддерживают четыре режима диспетчеризации — emit (наблюдение), waterfall (оборачивающее middleware), parallel (fan-out) и serial (по порядку). Чтобы добавить подтверждение или перехватить вызов инструмента, повесьте на него waterfall-слушатель. Сам цикл трогать не нужно.

Одной строкой: dsh расширяется тем, что вы монтируете плагины рядом с другими плагинами. Никаких чёрных ходов, никаких привилегий.

Почему проект собрал 20K звёзд за час

Этот хайп — не маркетинг. Почитайте исходники, и вы увидите, что популярность держится на трёх контринтуитивных архитектурных решениях, каждое из которых заслуживает отдельного разбора.

Решение 1: то, что видит модель, уже записано

Самая острая идея dsh — инвариант среды выполнения:

Всё, что попадает в запрос к модели, должно восстанавливаться из журнала.

Журнал сессии (SessionEvent log) — единственный источник истины. Каждое сообщение, которое видит модель, каждый вызов инструмента и его результат, каждый внедрённый контекст — это событие в журнале, работающем только на дозапись. История модели проецируется из журнала, поэтому у UI и у истории модели всегда один источник.

Следствия идут каскадом:

Возможность Как это делает dsh Традиционные фреймворки
Fork сессии Ответвление от граничного события — консистентность обеспечена естественным образом Нужно отдельно копировать состояние
Возобновление сессии Воспроизведение журнала — никакой «сериализации памяти» Нужно сохранять состояние из памяти
Сжатие контекста Одно явное событие replace в журнале Часто ломает консистентность истории
Воспроизведение / UI Читает сырой журнал напрямую Нужна отдельная копия

Большинство фреймворков считают журнал сессии отладочной функцией. dsh считает его единственным источником истины. Есть ещё хранилище spill: слишком объёмный вывод инструментов пишется на диск, а модель получает только локатор, так что контекст больше не раздувается гигантскими текстовыми блоками. Отсюда и пошли разговоры о том, что «dsh экономит токены».

Решение 2: агент может изменять сам себя

В dsh есть набор самореферентных инструментов: cordis_define / cordis_run / cordis_stop / cordis_undefine.

Смысл прямой: работающий агент может определить совершенно новый плагин Cordis, внедрить его в живую среду выполнения — и инструменты, которые зарегистрирует новый плагин, сразу становятся видны модели.

Это не игрушка. За инструментами стоят vm-песочница и реестр определений; запущенный пакет может даже регистрировать дополнительные инструменты, видимые модели, — пока его не остановят, не удалят определение или пока процесс не перезапустится. Механизм намеренно сделан opt-in и по умолчанию не входит ни в одно дерево релизов (динамический код пакетов, попадающий в живую среду выполнения, заслуживает предупреждения), но сам по себе это замкнутый цикл:

text
использовать фреймворк → определить новый компонент внутри него → изменить свой набор инструментов → продолжить работу

Почти ни один другой фреймворк на рынке не готов отдать модели такой полный цикл метапрограммирования в виде инструментов.

Решение 3: песочница — это матрица, а не одна песочница

Песочница процессов в dsh — это seam (ctx.sandbox), то есть интерфейс, позволяющий заменить реализацию отдельной возможности, а бэкенд выбирается под платформу:

Платформа Бэкенд песочницы
Linux bwrap / Landlock (с нативным landlock-run)
macOS Seatbelt
Windows ограниченные токены ACL (приватные временные каталоги + SID на сессию/рабочее пространство)
Облако удалённая Linux-песочница E2B

Уровень изоляции честно сообщается как full / partial (старые версии ABI Landlock и пограничные случаи Windows ACL считаются partial), и предполагается, что потребители, которым нужны абсолютные гарантии, будут отказываться от partial, — фреймворк не изображает безопасность, которой нет. А поскольку файловая система и выполнение процессов используют одну и ту же абстракцию провайдера, достаточно направить fs / subprocess на E2B — и Bash, PTY и LSP целиком переезжают в удалённую песочницу, без платформенных ответвлений под каждую возможность.

Начало работы: одна команда

Предварительное требование одно: Node.js. Установка и запуск — одна и та же команда:

bash
npx @deepseek-ai/dsh web

При первом запуске подтягиваются пакеты и поднимается локальная веб-консоль по адресу http://127.0.0.1:3080.

Чтобы агент действительно мог работать, направьте бэкенд модели на нужный эндпоинт. dsh читает конфигурацию из переменных окружения — важнее всего две:

bash
export DEEPSEEK_API_KEY="sk-teamo-your-key"
export DEEPSEEK_BASE_URL="https://api.teamorouter.cn/v1"

Добавьте обе строки в ~/.zshrc или ~/.bashrc (либо экспортируйте их перед запуском), и dsh будет отправлять запросы к модели на OpenAI-совместимый эндпоинт TeamoRouter: вы не привязаны к официальному API DeepSeek, прямое подключение из Китая работает стабильнее, а один ключ переключает между DeepSeek, Claude, GPT и Gemini. Полная настройка — в статьях Руководство по установке DeepSeek Harness и Подключение DeepSeek Harness к TeamoRouter.

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

text
Look at the current directory, find the README, summarize its first paragraph in one sentence, and write it to /tmp/summary.txt

dsh последовательно вызовет bash и инструменты чтения/записи файлов, а затем отчитается. Это самый наглядный способ почувствовать, как «harness превращает модель в исполнителя».

Трезвый взгляд

Эту часть в большинстве постов пропускают, но для любой технической оценки она необходима:

  1. Это явно developer preview. Официальная позиция: ломающие изменения будут. Если вы сегодня возьмёте это как зависимость в продакшен, закладывайте время на погоню за версиями.
  2. Интерфейсы будут меняться. Версия 0.1.0-rc.5 — всё ещё пре-релиз. Полагаться на конкретные детали API рискованно.
  3. Cordis включён как vendored-зависимость, а не написан с нуля. Это фундамент dsh, но доверие к Cordis придётся учитывать в вашей оценке.
  4. 54 npm-пакета выпускаются синхронно. Цена синхронных релизов — механическая суета: каждый релиз поднимает номера версий в 222 файлах.
  5. «Убийца Claude Code» — это медийный нарратив. Называть preview на стадии rc.5 «заменой» преждевременно. Реально здесь то архитектурное направление, которое проект доказывает.

FAQ

DeepSeek Harness — это модель?

Нет. Это агентный фреймворк (harness), который по умолчанию использует семейство DeepSeek V4, но DEEPSEEK_BASE_URL может указывать на любой OpenAI-совместимый эндпоинт. Заменяемость модели — прямое следствие принципа «всё является плагином».

Заменит ли dsh Claude Code / Codex?

В ближайшей перспективе — нет. Глубина рассуждений и надёжность инструментов Claude Code по-прежнему остаются эталоном. dsh выигрывает по стоимости (DeepSeek V4 примерно по $0.14/$0.28 за миллион токенов — малая доля от цены флагманских моделей) и по настраиваемости (можно урезать набор возможностей, менять провайдеров). Они рассчитаны на разные задачи; большинство будет комбинировать их в зависимости от задачи. Полное сравнение — в статье DeepSeek Harness vs Claude Code / Codex / OpenCode.

Можно ли уже использовать его для реальной работы?

Да. Для личной разработки, изучения архитектуры агентов и дешёвых агентных запусков он вполне пригоден. Строить продакшен-зависимости на конкретных деталях API я бы не стал — итерации идут слишком быстро.

Официальный API или TeamoRouter?

Зависит от того, где вы находитесь. С официальным API меньше всего возни; если прямое подключение из Китая работает нестабильно, вам нужен один ключ с маршрутизацией на несколько моделей или вы хотите сначала попробовать на бесплатном тарифе — TeamoRouter подойдёт лучше.

Безопасна ли песочница?

Это матрица: bwrap / Landlock в Linux, Seatbelt в macOS, ограниченные токены ACL в Windows, E2B в облаке. Но уровень изоляции partial действительно существует, поэтому в продакшене придётся проверять полноту изоляции для вашей платформы в каждом конкретном случае.

Чтобы запустить dsh почти бесплатно, получите ключ в TeamoRouter, укажите его адрес в DEEPSEEK_BASE_URL — и на бесплатном тарифе вы сможете бесплатно запускать DeepSeek V4 Pro / Flash в dsh.

Готовы подключиться?Войдите в консоль, пополните баланс и создайте API-ключ.
Что такое DeepSeek Harness (dsh)? Агентный фреймворк, который запускается одной командой · TeamoRouter