Что такое DeepSeek Harness dsh?
DeepSeek Harness — опенсорс-фреймворк рантайма агента от DeepSeek, лицензия MIT, командная строка dsh. На странице продукта: модель, инструменты, Skills, сессии, песочница, хранилище, цикл и UI — сменные плагины; снизу Cordis, слоган Everything is a plugin. (deepseek.com/harness)
Когда ищут «что такое DeepSeek Harness», нужно развести три вещи — а не ещё раз слушать протокол вызова функций.
API — двигатель, dsh — рантайм с рулём, ящиком инструментов и логикой езды. Свой while на chat/completions — другой путь; августовский гайд DeepSeek Harness по AI-агентам про свой цикл. Здесь принимаем только официальный стартер: как поставить, где открывается Web, когда первая задача на код считается пройденной.
| Подход | За что отвечает | Кому подходит |
|---|---|---|
| DeepSeek API | Модель, Tool Calling | Кто сам пишет агента |
| dsh | Рантайм, инструменты, сессии, права, UI | Кто хочет сразу запустить официального агента |
| Свой цикл агента | Своя архитектура цикла | Кто хочет полностью контролировать устройство |
На сайте перечислены несколько режимов. В первый раз хватит Web UI режима Standard: полноценный coding-агент, правки файлов, shell, поиск. Режим Code поверх этого даёт модели оркестрировать многошаговые вызовы инструментов на TypeScript — когда 3080 уже стабилен. Minimal почти только bash и редактор: удобно сравнивать модели, не как повседневная IDE. Creator — смотреть рантайм и пробовать плагины; первый час можно пропустить.
Что подготовить перед установкой dsh?
Нулевой путь из официального README — две фразы: поставить Node.js и выполнить npx @deepseek-ai/dsh web. В сообществах встречались Node ^22.19.0 или >=24.0.0; ориентир — тянет ли ваш локальный npx пакет @deepseek-ai/dsh. Системный Node не понижайте ради чужого поста.
Ключ CLI ищет так: окружение процесса → ~/.dsh/.credentials.yaml → .env в текущем каталоге → ~/.dsh/.env. В первый раз один источник, не четыре копии, которые не сходятся:
export DEEPSEEK_API_KEY=sk-ваш-ключ mkdir -p ~/.dsh printf 'DEEPSEEK_API_KEY=sk-ваш-ключ\n' >> ~/.dsh/.env chmod 600 ~/.dsh/.env
Официальный адаптер — deepseek-official, по умолчанию официальная маршрутизация моделей. Свой шлюз — второй шаг; сначала решите, нужен ли вообще OmniRoute на практике. В первый час Base URL не меняйте.
CLI считает workspace’ом каталог, из которого вы запускаете команду. Заведите пустой репозиторий или копию, например ~/work/dsh-first-run. SAFETY.md советует минимальные права и предпочитает одноразовую ВМ, контейнер или отдельную среду. Ключ и изолированный каталог не готовы — npx пока не запускайте: интерфейс без контроля хуже, чем неудачная установка.
- Отдельный workspace, не
$HOMEи не продакшен-репозиторий - Первая задача только на чтение; права по умолчанию, без
danger-full-access - Ключ только в окружении или в
~/.dsh/.env;~/.dsh/sessions/оставьте, чтобы пересмотреть вызовы
Как установить DeepSeek Harness и открыть Web UI?
В первый раз клонировать не нужно. В изолированный каталог:
cd ~/work/dsh-first-run npx @deepseek-ai/dsh web
Это вход установки из официального README. dsh web — псевдоним --profile web; при первом запуске ~/.dsh/profiles/web/ создаётся из шаблона. По умолчанию рабочий стол на http://127.0.0.1:3080; локально ещё открывается браузер по умолчанию. Через SSH печатается только URL хоста, локальный проброс делает SSH-клиент или редактор. На превью команды меняются; ориентир — README и справка CLI deepseek-ai/deepseek-harness на этот день.
npx @deepseek-ai/dsh web --no-open npx @deepseek-ai/dsh web --port 8080
По умолчанию слушает только loopback. Удалённый UI — через SSH local forward; в первый день не выставляйте интерфейс в LAN. В официальном руководстве workspace выбирают селектором каталога в Web UI, не флагом CLI. Когда 3080 открылся, убедитесь, что текущий каталог — изолированный репозиторий, и только потом шлите задачу.
Конфиг лежит в ~/.dsh/: домашний каталог пусть создаст сам; sessions/ — чтобы пересмотреть вызовы инструментов; в .env только ключ, права 600; profiles/web/ в первый день руками не патчьте.
Клонировать имеет смысл в трёх случаях: держаться конкретного коммита, менять плагин, или npx не тянет пакет и нужны артефакты сборки. Тогда git clone официального репозитория, pnpm install, pnpm run build, pnpm dsh web. pnpm dsh web берёт артефакты и не собирает заново. В дереве исходников следуйте AGENTS.md; демо-команды из README в продакшен-скрипты не копируйте.
Как пользоваться dsh Headless?
dsh run убрали. Разовые задачи — через headless: новая сессия, последний непустой текст ассистента в stdout, затем выход.
cd ~/work/dsh-first-run npx @deepseek-ai/dsh --profile headless "Перечислите имена файлов в текущем каталоге и не изменяйте никакие файлы"
Это первая практика, которую стоит записать: код выхода, есть ли финальный ответ в stdout, появился ли в ~/.dsh/sessions/ журнал, который можно пересмотреть. Задача должна быть только на чтение. Официально есть ещё профили sdk / sdk-minimal / acp, чтобы другой процесс подключался по JSON-RPC или ACP — это вторая неделя, не параллелите в первый час.
Как делать AI Coding в DeepSeek Harness?
Если Web или headless уже «разговаривают», это ещё не значит «можно отдать репозиторий на перепись». По официальным возможностям Standard он умеет менять файлы, запускать shell, искать и поднимать субагентов; превью плюс модель, которая пишет команды, требуют первой задачи на код, которую вы сверите с git diff. Это не бенчмарк, а проверка: меняет ли dsh нужную функцию в выбранном вами каталоге.
Сделайте маленький репозиторий, где верное и неверное видно глазами: greet.ts нарочно возвращает hi Ada, тест ждёт Hello, Ada. Вам не нужно, чтобы модель «звучала убедительно».
mkdir -p ~/work/dsh-first-run && cd ~/work/dsh-first-run
git init
printf '%s\n' 'export function greet(name: string): string {' ' return "hi " + name' '}' > greet.ts
printf '%s\n' 'import { greet } from "./greet.ts"' 'if (greet("Ada") !== "Hello, Ada") {' ' throw new Error("unexpected greeting")' '}' > greet.test.ts
git add . && git commit -m "chore: isolated dsh first-run repo"
- Только чтение:
Прочитайте greet.ts и greet.test.ts и объясните, почему тест падает. Не изменяйте никакие файлы.Успех: указывает на расхождение возврата и теста,git statusчистый. - Один файл:
Измените только greet.ts, чтобы greet("Ada") возвращал Hello, Ada. Тест не трогайте и не делайте commit.Потом сами прогоните тест; без раннера посмотрите возврат функции и сделайтеgit diff. Успех: diff только вgreet.ts, возврат совпал с тестом. - Если тест снова падает, верните вывод и дайте править тот же файл. Перед commit смотрите diff сами. Если задача на код провалилась, откройте
~/.dsh/sessions/или Trajectory на сайте: не тот инструмент, невалидные аргументы, вы отклонили approval, или workspace — вовсе не этот каталог.
В первый раз — инструменты Standard / native. Когда однофайловая задача стабильна, можно смотреть DSH_TOOLS_MODE=code или both, чтобы модель оркестрировала несколько шагов на TypeScript. В официальной справке процессный запасной вариант DSH_PERMISSION_MODE близок к workspace-write; danger-full-access почти не спрашивает разрешения — список первого запуска его исключает. Застряли на JSON-аргументах инструмента — сначала JSON Schema и AI Agent, потом уже меняйте модель. Слишком большая задача и чехарда правок: воркфлоу AI Coding — dsh отвечает только на вопрос, есть ли официальный рантайм.
Установка DeepSeek Harness прошла?
«Практика» в заголовке — не таблица результатов, а получасовой чеклист. Все пять строк должны сойтись, прежде чем говорить «dsh на этой машине работает». Чего-то нет — вернитесь к шагу, не расширяйте правки файлов.
| Проверка | Успех | Если нет — сначала |
|---|---|---|
| Процесс | npx @deepseek-ai/dsh web держится на переднем плане |
Проверить Node, кэш npx, порт |
| Интерфейс | Открывается 127.0.0.1:3080 |
--no-open и зайти вручную; сверить --port |
| Ключ | Нет сообщения об отсутствии credentials official provider | Оставить одну рабочую DEEPSEEK_API_KEY |
| Задача только на чтение | Headless печатает ответ и выходит, нового diff нет | Сжать задачу |
| Траектория | В ~/.dsh/sessions/ можно пересмотреть этот вызов |
Проверить DSH_HOME |
Не хватает любой из пяти — не переходите к «автоматически править десятки файлов». Превью быстро ломает совместимость. Запишите команду, версию Node, версию пакета dsh и дату: на следующей неделе отличите сдвиг своей среды от breaking change сверху.
Частые ошибки dsh и что делать
npx падает или очень медленный. Первый запуск тянет @deepseek-ai/dsh. Сеть нестабильна — собирайте из исходников или сначала проверьте npm registry. Полупустой кэш — это не «уже установлено».
3080 не открывается. Добавьте --no-open и зайдите сами; порт занят, или вы передали --port, а открываете всё равно 3080.
Интерфейс есть, модель молчит. Чаще всего слой ключа. Окружение процесса важнее, ~/.dsh/.env только запасной. После правки перезапустите web-процесс; ключ на горячую не подхватывается.
Поправили не тот каталог. Смотрите текущий каталог при запуске и репозиторий, выбранный в Web UI. Самая частая ошибка — взять домашний каталог как workspace.
Всё ещё dsh run, или headless не выходит. В руководстве пользователя подкоманда снята; разовые задачи — --profile headless. Сожмите задачу до одной инструкции только на чтение, убедитесь, что процесс не ждёт approval, затем смотрите, на каком шаге застрял журнал сессии.
dsh — не оболочка Claude Code или Codex. Издатели — DeepSeek, Anthropic и OpenAI; у dsh свой рантайм плюс Web / headless, у остальных свои CLI. Каталоги конфигурации не общие: dsh живёт в ~/.dsh. Первая приёмка: 3080 или одна headless-задача; остальные стеки — своими официальными смоками. Ставить рядом можно; ключи, права и сессии общими не считайте. Сводить три потока в один вход — только когда шлюз реально нужен; в первый день доведите до работы сам dsh.
Как продакшен-рантайм сейчас не годится. README прямо пишет developer preview и ломающие изменения. SAFETY.md жёстче: без аудита; выполняет команды модели, грузит сторонние плагины, трогает сеть и файлы, которые вы ему отдали. Песочница и approval снижают риск, но это не единственный контроль. Сейчас подходит: приёмка установки в изолированном каталоге, AI Coding на уровне одной функции, опыты по логам сессий. Сейчас не подходит: высокие права на продакшен-репозитории, безнадзорная перепись монорепо, preview во внешнем SLA.
Частые вопросы
Что такое dsh?
dsh — командная строка опенсорс-фреймворка агента DeepSeek Harness. Она ведёт сессии, инструменты, права и веб-интерфейс, это не Chat API.
Как установить dsh?
Сначала Node.js, затем в изолированном каталоге npx @deepseek-ai/dsh web. Клонируйте и запускайте pnpm run build только если меняете плагин, держитесь коммита или сверяете артефакты сборки.
Нужен ли dsh API-ключ?
Да. Без ключа интерфейс откроется, задачи на код не пойдут. Положите DEEPSEEK_API_KEY в окружение процесса или запишите ~/.dsh/.env и chmod 600.
Есть ли у dsh веб-интерфейс?
Да. npx @deepseek-ai/dsh web по умолчанию открывает рабочий стол на http://127.0.0.1:3080. Чтобы не всплывал браузер — --no-open; если порт занят — --port.
Может ли dsh делать AI Coding?
Может менять файлы, запускать shell и искать, но в сентябре 2026 это всё ещё developer preview. В первый раз в изолированном репозитории: анализ только на чтение, одна функция, тесты, git diff — и только потом расширять.
Чем dsh отличается от Claude Code?
dsh — отдельный рантайм DeepSeek, конфиг в ~/.dsh. Ключи и сессии с Claude Code и Codex не общие. Ставить рядом можно; в первый день доведите до работы сам dsh.
Чтобы гонять dsh дольше, вынесите тестовую среду
dsh трогает workspace, API-ключ, сессию и выполнение команд. Закрыли крышку ноутбука — 3080 и headless-сессии останавливаются. Держать preview-агента в каталоге, который можно снять в снимок и у которого можно отозвать права, проще сбросить, чем постоянно занимать свой домашний каталог.
Когда локальные задачи только на чтение и diff одной функции уже прошли, и нужна отдельная macOS-среда, доступная круглосуточно, тогда смотрите облачный узел — это ближе к повторяемому эксперименту, чем сразу отдавать продакшен-репозиторий preview-софту. Смотреть тарифы облачных Mac mini ZekVPS