DeepSeek Harness: опыт использования, 4 режима сессий и живая счётность токенов
После успехов с Pro и Flash моделями DeepSeek зашла и в нишу агентных харнессов. DeepSeek Harness (по команде — dsh) — это открытый агентный харнесс с философией «всё — плагин», очень похожей на ту, что лежит в основе агента Pi. На момент обзора проект находится в developer preview, а команда прямо пишет об этом в README репозитория.
Что такое DeepSeek Harness
Каждая часть продукта — от адаптера модели и журнала сессии до самого агентного цикла — это плагин. Harness построен на фреймворке Cordis, поэтому у него нет ядра, которое нужно патчить: чтобы заменить компонент, достаточно смонтировать рядом другой плагин.
Возможности агента типовые для современного coding-агента: чтение и редактирование файлов в рабочем пространстве, запуск команд, делегирование задач субагентам и ведение плана по ходу работы.
Поставляется проект в основном как веб-интерфейс на http://127.0.0.1:3080, но это лишь один из способов использования: есть также headless-режим и Python SDK для программного доступа.
Установка из исходников
В репозитории на GitHub рекомендуют быструю установку одной командой:
npx @deepseek-ai/dsh web
Но в обзоре эта команда не сработала и упала с ошибками. Обходной путь — клонировать репозиторий и запускать из исходников:
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
Процесс занимает чуть больше минуты. В терминале появляется адрес http://127.0.0.1:3080; при первом открытии показывается предупреждение о внутреннем тестировании и предложение ввести официальный API-ключ DeepSeek или настроить его позже.
Настройка провайдера
Вопреки первому впечатлению, harness работает не только с официальным провайдером DeepSeek: поддерживаются почти все крупные провайдеры, а для любого OpenAI-совместимого эндпоинта можно добавить свой. Всё это настраивается в Settings > Models.
Автор обзора подключил ключ OpenCode Go и сразу получил внутри harness свои модели DeepSeek v4 Pro и Flash с теми же уровнями thinking. Ключ сохраняется в ~/.dsh/.credentials.yaml, а в файле настроек хранится только ссылка на него — интерфейс секрет обратно не показывает. Конфигурация выглядит так:
llm-pi-ai:
providers:
opencode-go:
apiKeyEnv: OPENCODE_GO_API_KEY
agent-default-model:
provider: opencode-go
model: deepseek-v4-pro
reasoningEffort: max
Любопытная деталь: ключ llm-pi-ai — это не случайность. Универсальный адаптер провайдеров построен на pi-ai — библиотеке работы с моделями от той же команды, что делает агент Pi. Так что harness и терминальный агент Pi разделяют не только плагинную философию. Изменения моделей применяются со следующего запроса — перезапуск сервера не нужен.
Работа с harness
Интерфейс очень похож на Codex app или веб-версию ChatGPT: слева список сессий, между которыми легко переключаться, в том числе между разными проектами. Дизайн и UX обзору понравились.
Первый реальный тест — глубокая read-only аудитория репозитория собственного сайта. Агент первым делом прочитал файл AGENTS.md, так что все правила проекта попали в контекст диалога, затем разбил аудит на шесть параллельных субагентов: один взял scripts/, другой — _data/, один прошёлся по всем 161 постам блога, другой — по 491 заметке, остальные — по шаблонам, CSS и контентным страницам.
Сильное впечатление произвела организация субагентов: у каждого — собственная сессия, а выпадающий список сверху показывает, сколько субагентов активно трудится и каков прогресс каждого. Отдельно отмечены «честные» метрики в нижней панели: tokens/sec, cache hit rate, число tool-вызовов, ходы и шаги. Ни одна из них не обязательна, но вся сессия от этого ощущается прозрачной.
Для каждой сессии есть вкладка Trajectory, показывающая всю сессию в виде таймлайна: каждый ход, шаг, tool-вызов и вложенный tool-вызов — со своими токенами и временем исполнения. Клик по запросу открывает его вход, выход и тайминги. Автор называет это самым прозрачным агентским интерфейсом из тех, что ему попадались.
Безопасность тоже на высоте: всё происходит внутри рабочего пространства, а перед действиями, требующими одобрения, интерфейс явно спрашивает разрешения.
Четыре режима сессий
Режим сессии фиксируется при её создании — переключиться на лету нельзя, для другого режима нужна новая сессия:
- Standard mode — полный coding-агент: редактирование файлов, shell, файловый и веб-поиск, навыки, планирование, цели, субагенты и workflow. Режим по умолчанию.
- Code mode — все возможности Standard, но инструменты подаются через Code Mode SDK: вместо одного tool-вызова на действие модель пишет единую TypeScript-программу против сгенерированного SDK и запускает её одним заходом. Последовательность, которая заняла бы пять round-trip'ов, превращается в один.
- Minimal mode — противоположный полюс: всего два инструмента — постоянная bash-оболочка и файловый редактор
str_replace_editor. Без поиска, навыков, субагентов и планирования. Максимально маленький coding-агент. - Creator mode — для создания собственных пресетов: все возможности Standard плюс инструменты, позволяющие инспектировать работающий harness, экспериментировать с плагинами и собирать собственные пресеты. Любой встроенный пресет можно продублировать и сделать своим — или попросить агента начерновить собственный прямо в Creator mode.
Пресеты живут в разделе Agent presets, и там же можно задать режим по умолчанию для новых сессий.
Что понравилось
- Всё — плагин, по-настоящему. Ядра для патчинга нет, в отличие от большинства инструментов, где вы получаете ровно то, что поставил вендор. Проект полностью открыт под MIT — никакая компания не решает, какие фичи вам доступны.
- Чистый веб-интерфейс. Сессии слева, workspace, ощущение Codex/ChatGPT/Gemini — без отказа от локальных файлов.
- Субагенты с живым прогрессом. Параллельный аудит в один поток занял бы вечность: шесть агентов, один выпадающий список и живой прогресс по каждому.
- Честная статистика внизу. tokens/sec, cache hit rate, вызовы, ходы, шаги. Хотелось бы, чтобы больше инструментов показывали такие цифры.
- Любой провайдер. Подключение OpenCode Go заняло минуту, ключи остались в
~/.dsh/на своей машине. - Безопасно по умолчанию. Песочница в границах workspace и запрос на одобрение перед рискованными операциями.
Что не понравилось
- Установка через
npxне заработала, пришлось запускать из исходников. Не критично, но заявленный «одной командой» путь должен работать. - Запуск не мгновенный: нужно поднять сервер из терминала и открыть localhost-адрес в браузере. Это больше трения, чем команда
piв терминале. - Нет уведомлений о завершении задачи: ни звука, ни пуш-нотификации — harness просто ждёт во вкладке браузера. Для долгих задач приходится периодически переключаться и проверять, закончил ли агент.
- DeepSeek-модели текстовые, поэтому вставка изображения в harness не работает. В Pi автор использует пакет vision-handoff, который описывает картинки отдельной vision-моделью, и аналога в harness он пока не нашёл.
Итог
DeepSeek Harness — это «GUI-образный» плагинный агент, которого автор не знал, что хочет. Pi остаётся его терминальным агентом для сайд-проектов и экспериментов, а harness — сильным дополнением, но пока не заменой: философия «всё — плагин» из Pi, OMP и им подобных явно распространилась, и DeepSeek поставляет её версию с настоящей полировкой.
Если что-то сломается — сообщать об этом принято в GitHub Discussions и на Discord-сервере репозитория.