Короткий ответ
DeepSeek Harness (dsh) — это среда выполнения ИИ-агентов (agent harness) с открытым исходным кодом от DeepSeek AI: фреймворк, который превращает чат-модель в агента, способного реально править код, выполнять команды и доводить работу до результата. Лицензия MIT, сейчас проект в статусе developer preview.
Запомните одну формулу:
Агент = модель + 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 и по умолчанию не входит ни в одно дерево релизов (динамический код пакетов, попадающий в живую среду выполнения, заслуживает предупреждения), но сам по себе это замкнутый цикл:
использовать фреймворк → определить новый компонент внутри него → изменить свой набор инструментов → продолжить работу
Почти ни один другой фреймворк на рынке не готов отдать модели такой полный цикл метапрограммирования в виде инструментов.
Решение 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. Установка и запуск — одна и та же команда:
npx @deepseek-ai/dsh web
При первом запуске подтягиваются пакеты и поднимается локальная веб-консоль по адресу http://127.0.0.1:3080.
Чтобы агент действительно мог работать, направьте бэкенд модели на нужный эндпоинт. dsh читает конфигурацию из переменных окружения — важнее всего две:
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.
Когда всё запустится, дайте агенту в веб-интерфейсе примерно такую задачу и понаблюдайте за работой:
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 превращает модель в исполнителя».
Трезвый взгляд
Эту часть в большинстве постов пропускают, но для любой технической оценки она необходима:
- Это явно developer preview. Официальная позиция: ломающие изменения будут. Если вы сегодня возьмёте это как зависимость в продакшен, закладывайте время на погоню за версиями.
- Интерфейсы будут меняться. Версия
0.1.0-rc.5— всё ещё пре-релиз. Полагаться на конкретные детали API рискованно. - Cordis включён как vendored-зависимость, а не написан с нуля. Это фундамент dsh, но доверие к Cordis придётся учитывать в вашей оценке.
- 54 npm-пакета выпускаются синхронно. Цена синхронных релизов — механическая суета: каждый релиз поднимает номера версий в 222 файлах.
- «Убийца 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.