DeepSeek Harness (CLI: dsh) рассматривает агента как композицию плагинов: оболочка, редактор, MCP, браузер, память и каталоги Skills крепятся к графу Cordis. Официальный репозиторий deepseek-ai/deepseek-harness формулирует замысел прямо—Everything is a Plugin. Это ещё превью для разработчиков, совместимость будет ломаться. Ежедневный рабочий инструмент определяют не следующая модель, а какие плагины вы монтируете, откуда обнаруживаются Skills и насколько далеко заходят разрешения.
Сообщество за недели заполнило тему dsh-plugin тысячами репозиториев. Этот обзор — рабочий короткий список: возможности ядра, рынки Skills, поиск/зрение/память/браузер и как не затопить каталог инструментов. Каноническая документация: DeepSeek Harness Docs и руководство по плагинам.
Что такое harness: плагины, профили, Skills
Считайте это рантаймом агента, а не ещё одним сайтом чата.
- Пакеты ядра
@deepseek-ai/*идут с дистрибутивом: bash, редактор, ресурсы MCP, plugin_manager и официальный инструментskill. - Пакеты сообщества (имя npm или
github:owner/repo) попадают в текущий профиль черезdsh plugin --profile web add …. После установки бандла нужен перезапускdsh web. - Skills — необязательные файлы инструкций (
SKILL.md), не события сессии. Провайдер файловой системы сканирует корни проекта и пользователя по рангу; каталог для модели обычно показывает толькоnameиdescription, а тело подгружает по запросу.
Порядок локального сканирования в поставке (dsh-skill-filesystem): проект .dsh/skills → проект .agents/skills → свои каталоги → пользовательские DSH skills → пользовательский .agents/skills → встроенные. При совпадении имён побеждает копия ближе к проекту. Корень проекта — ближайший предок с .git.
Раскладка my-skill/SKILL.md. Во frontmatter нужны хотя бы name и description. Имена — строчные буквы, цифры и дефисы. Рекурсивное обнаружение **/SKILL.md не поддерживается.
Запуск: web-профиль и команды установки
Нужен Node.js (плагины сообщества часто хотят 22+). Локальный предпросмотр:
npx @deepseek-ai/dsh web
Веб-интерфейс по умолчанию на http://127.0.0.1:3080. Документация и авторы плагинов согласны: привязывайте loopback и не слушайте неаутентифицированный dsh web на 0.0.0.0. По SSH пробрасывайте порт; не выносите панель плагинов на публичный IP.
Стандартная установка бандла:
dsh plugin --profile web add skillhub-plugin
# or a git source (pin a commit in production)
dsh plugin --profile web add "github:minivv/dsh-agent-skills"
# restart
# dsh web / dsh --profile web
dsh plugin add передаёт спецификацию в pnpm: npm, git или локальные пути link:. Подпакеты монорепозитория используют источник репозитория в Настройках (github:owner/repo#ref&path:/packages/foo); plugin add не разбирает &path:.
Состав смотрите через dsh web --dump-config | grep name. dsh plugin --profile web remove pkg снимает зависимость, но не переписывает вручную вставленные строки в $DSH_HOME/profiles/web/cordis.patch.yml—удалите их сами.
Стартовый стек 2026 (оставьте так)
Не кликайте двадцать карточек на радаре плагинов. Зафиксируйте этот набор на неделю, потом добавляйте:
| Слой | Выберите одно | Задача |
|---|---|---|
| Рантайм | Официальный dsh web | Инструменты ядра + официальный инструмент skill + менеджер плагинов |
| Обнаружение Skills | dsh-agent-skills или dsh-skills-anywhere | Подтягивает каталоги Skills Claude / Codex / Cursor / OpenCode |
| Интерфейс установки | skillhub-plugin или официальный Discover | Искать Skills/плагины в чате или Настройках, подтвердить, затем установить |
| Веб-поиск | modsearch (или уже запущенный MCP) | Структурированный поиск, если у модели нет встроенного |
| Зрение | Либо modlens, либо dsh-vision-toolkit | OCR/вёрстка вставленного изображения; не запускайте оба |
| Память | Один официальный MCP-оверлей из примеров | Memorix / MCP Reference Memory / Engram |
Два плагина одной категории заставляют модель рыться в дублирующих инструментах и забивают контекст саммари. Добавляйте только HTTPS-индексы рынков, которым доверяете.
Agent Skills: порядок сканирования и три менеджера
Скорее всего у вас уже есть деревья SKILL.md в ~/.claude/skills, ~/.codex/skills или ~/.cursor/skills. Сам DSH предпочитает .dsh/skills и .agents/skills. Плагины сообщества регистрируют дополнительные провайдеры на ctx.skills.
dsh-agent-skills: страница Настроек поверх локальных каталогов
Репозиторий: minivv/dsh-agent-skills.
dsh plugin --profile web add dsh-agent-skills
Затем Настройки → Agent Skills, возьмите управление, перезапустите. Сканирует ~/.agents/skills, ~/.claude/skills, ~/.codex/skills, ~/.config/opencode/skills, ~/.gemini/skills. Включайте и выключайте каталоги или отдельные Skills, не переписывая исходные файлы. Состояние лежит в $DSH_HOME/agent-skills/state.json. Заметки о совместимости — в README (0.1.x и 0.2.x).
dsh-skills-anywhere: без копирования, много агентов, git-репозитории Skills
Неофициально: noteflowai/dsh-skills-anywhere. Регистрирует ещё один провайдер; официальный инструмент skill остаётся:
- 60+ каталогов Skills уровня пользователя и проекта (Claude Code, Codex, Cursor, Gemini CLI, OpenCode и другие).
- Skills, вложенные в маркетплейсы плагинов Claude Code.
- Поверхностный clone любого git-репозитория Skills в кэш; правка в Cursor видна при следующей загрузке DSH.
- Веб-интерфейс Pin / Hide / Exclude по источнику. Также как MCP:
npx dsh-skills-anywhere mcp.
dsh plugin --profile web add dsh-skills-anywhere
npx dsh-skills-anywhere list
npx dsh-skills-anywhere add anthropics/skills
npx dsh-skills-anywhere doctor
Skills, написанные вами для DSH в проекте, выше дубликатов с маркетплейса. Не ставьте два плагина обнаружения с «захватом»; выберите один основной искатель.
skillhub-plugin: поиск, просмотр, установка в чате
cocofhu/skillhub. Имя npm — skillhub-plugin (не посторонний пакет skillhub; не берите сырой git-источник, который запускает prepare):
dsh plugin --profile web add skillhub-plugin
Карточки в чате для Skills, версий, флагов безопасности, zip-установка в обнаруживаемый каталог; Настройки могут поднимать релизы GitHub. Площадка плагинов ищет плагины DSH и ставит с карточки, затем просит перезапуск. Нужен Node 22+. Привязывайте dsh web к 127.0.0.1.
Рынки Skills и официальный рынок плагинов
Два разных «рынка»:
- Рынок Skills: кладёт бандлы
SKILL.mdв~/.dsh/skills(корень user-dsh, который официальный инструмент уже читает). - Рынок плагинов: один JSON-индекс устанавливаемых бандлов DSH (npm или зафиксированный git-коммит).
Рынки Skills сообщества
- dsh-skill-market (QQ-M/dsh-skill-market): поиск git-репозиториев Skills на GitHub из Настроек.
dsh plugin --profile web add "github:QQ-M/dsh-skill-market", затем перезапуск. - dsh-skills-marketplace (cxdyun/dsh-skills-marketplace): git URL + ref + sparse-путь, раскладывает в
~/.dsh/skills/…, групповые переключатели; удаление трогает только то, что установил сам.
Один и тот же SKILL.md может служить DSH, Claude и Codex. Смотрите звёзды, свежие коммиты и скрипты установки, прежде чем писать в пользовательский корень.
Официальные Custom plugin markets
Гайд: Plugin markets. DSH не поставляет источник индекса. Включите Custom plugin markets среди экспериментальных плагинов, затем добавьте URL индекса https:// на Discover. Подтверждение по-прежнему гоняет обычные проверки совместимости. Тексты рынка — сторонние; ядро проверяет форму JSON, не правдивость рекламных абзацев.
Каталоги вроде dshmarketplace.dev дают поисковый API и опциональный dshmarketplace-plugin (/store). Считайте их справочником; ставьте по спецификации npm/git из подтверждения и фиксируйте версии.
Плагины возможностей: поиск, зрение, сессии, браузер, память
Поиск: modsearch
liustack/modsearch закрывает модели без встроенного веб-поиска: спросите веб или X, получите структурированные JSON-доказательства. Если уже крутится стабильный Brave/Tavily MCP, вторую прослойку не добавляйте.
Зрение: modlens или dsh-vision-toolkit
Для чисто текстовых моделей:
- modlens (liustack/modlens): вставить изображение → OCR / вёрстка / семантический JSON.
- dsh-vision-toolkit (Anionex/dsh-vision-toolkit): многоизображённый Q&A, OCR длинных скриншотов, восстановление UI, pixel diff.
Включайте один набор. Пересекающиеся схемы инструментов заставляют модель кликать не туда.
Поиск по сессиям: dsh-session-search
Пример из документации: dsh plugin --profile web add "github:dsh-external/dsh-session-search#main". Межсессионный запрос со стороны модели — opt-in и требует точного совпадения cwd: сначала решите границу приватности. Индекс sqlite может существовать, не отдавая модели инструмент запроса.
Браузер: официальный browser-use плюс один провайдер
Монтируйте dsh-browser-use и ровно один провайдер: Playwright MCP, Chrome DevTools MCP или Stagehand. Второй провайдер отклоняется. Запущенный браузер принадлежит этому Agent/Session; уничтожение сессии сбрасывает запущенное состояние (подключённый внешний браузер остаётся).
Память: официальные примеры MCP, все выключены по умолчанию
examples/mcp-memory/ поставляет оверлеи Memorix, MCP Reference Memory и Engram. Это образцы совместимости, не рекомендация. Патчьте только один:
dsh web --patch "$PWD/examples/mcp-memory/memorix.cordis.yml"
Чтобы сохранить между запусками, влейте insert в cordis.patch.yml профиля — не перезаписывайте существующий файл патча. Мост stdio срезает переменные окружения, похожие на секреты, и DSH_*; кладите секреты в config.env оверлея, не в промпты.
Каналы и рабочий стол: IM, Telegram, dsh-desktop
- dsh-im: QR или учётные данные для Feishu, WeChat, DingTalk, WeCom, QQ, Slack, Telegram, Discord, WhatsApp. Самая большая исходящая сетевая поверхность — читайте исходники и где лежат токены.
- Отдельные плагины telegram / qqbot требуют той же проверки исходящего трафика и адресов привязки webhook.
- dsh-desktop: оболочка рабочего стола как хост плагинов; нормально на ноутбуке. На облачном хосте лучше web + проброс SSH.
Плагины каналов доставляют сообщения внутрь. Они не заменяют вашу бизнес-машину состояний. Тикеты, сборки и биллинг по-прежнему живут в вашем репозитории и базе.
Как выбирать, снимать и не поставить плохое
- Читайте
dsh.bundleи README; убедитесь, что имя профиля —web(или ваше). - Фиксируйте версии:
name@x.y.zилиgithub:owner/repo#<40-char sha>в проде. - Следите за скриптами установки: если git требует
allowBuilds/prepare, берите готовый npm-пакет. - Столкновения имён инструментов: не гоняйте два плагина зрения или два захвата Skills; проверяйте
--dump-config. - Удаление:
remove, удалите соответствующий insert в патче, перезапустите. Если Настройки пустые, проверьте клиентскую половину пакета и консоль браузера. - Индексы рынков: только HTTPS; http-индекс может подменить источники установки на пути.
Официальный README пишет THERE WILL BE COMPATIBILITY-BREAKING CHANGES. После обновления dsh читайте engines.dsh каждого плагина, прежде чем массово обновлять пакеты сообщества. Держите полезные Skills в Git (проектный .dsh/skills); не считайте весь node_modules профиля бэкапом.
Запуск на Cloud Mac
Harness подходит для cron 7×24, MCP stdio и длинных сессий. Cloud Mac в фиксированном регионе с SSH может держать dsh web на loopback, пока вы пробрасываете 3080 в браузер ноутбука. Коммитьте Skills и cordis.patch.yml; секреты — в связку ключей или KMS, не в репозиторий.
Работа iOS / Xcode по-прежнему идёт через Xcode и симуляторы на этом Mac; DSH только оркестрирует агента и инструменты. Выберите один провайдер браузера, чтобы он не боролся с headless CI за тот же профиль Chromium.
FAQ
Полные вопросы и ответы — в JSON-LD страницы. Коротко: Skills — не плагины; каталоги Skills Claude работают после плагина обнаружения; не ставьте два рынка Skills; один оверлей памяти; веб-интерфейс держите на 127.0.0.1 и пробрасывайте по SSH.