Наш телеграм канал
tester_kretester_kre · SEO · 23.09.2026

SEO-плагины на DeepSeek Harness: что переезжает из Claude Code, а что нет

Последний год под «SEO-плагинами к нейросети» я понимал одну связку: Claude Code и несколько MCP-серверов — Search Console, DataForSEO, выгрузки краулера. Модель сама забирает цифры, а не сочиняет их. Затем DeepSeek показал свой агентный харнесс DeepSeek Harness, он же dsh, и появился трезвый вопрос: получится ли перетащить весь набор и платить по тарифам DeepSeek, не переучивая ни себя, ни проекты.

Коротко — да, и почти без потерь. Дальше разберу по слоям.

Что такое dsh

Это запускатель профилей. Профиль — упорядоченная стопка плагинов, поверх которой лежит ваш слой настроек: файл cordis.patch.yml в папке профиля. В комплекте сразу идут веб-интерфейс, headless для разовых задач и режимы под автоматизацию. Ставится из npm, пакет @deepseek-ai/dsh.

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

Любой SEO-набор в любом харнессе собирается из трёх слоёв: откуда брать данные, по каким правилам их обрабатывать и что делать, когда модель свернула не туда. Пройду по каждому.

Данные приходят через MCP

За это отвечает плагин dsh-mcp-client. Одна запись — один сервер, без обёрток. Так выглядит DataForSEO, поднятый у вас на машине:

Облачные серверы, например Ahrefs или Semrush, цепляются так же. Меняется одно: вместо stdio идёт transport: streamable-http и адрес. Ключи кладутся в переменные окружения, в файл профиля их не пишут.

Деталь, которая радует: имена инструментов совпадают с Claude Code — mcp__dataforseo__.... Поэтому всё, что у вас привязано к этим именам, будь то правила разрешений или привычные формулировки задач, переезжает без правок.

Теперь то, что стоит проверить до переезда:

  • Мост пропускает только инструменты. MCP-ресурсы и готовые подсказки (prompts) он не поддерживает. Если ваш сервер Search Console отдаёт отчёты через ресурсы, модель до них не дотянется.
  • На вызов стоит таймаут — 60 секунд по умолчанию. Тяжёлая выгрузка выдачи пачкой ключей в него влезает не всегда. Чинится полем toolCallTimeoutMs.
  • Если сервер не поднялся, харнесс всё равно стартует — просто без его инструментов, с ошибкой в логе. Ночному прогону это вредит: задание отработает, но без данных. Ставьте failOnStartupError: true, чтобы падало честно.
Ноутбук с открытым кодом крупным планом. Фото: Marc Mueller, Unsplash, CC0
Ноутбук с открытым кодом крупным планом. Фото: Marc Mueller, Unsplash, CC0

Правила дома живут в навыках

Сервер приносит цифры, но не знает ваших порядков: какой длины заголовки, что вы делаете с дублями, по какому признаку разводите фразы на разные посадочные. Раньше всё это лежало в длинной подсказке, и писал её каждый на свой лад. В dsh для этого заведены навыки — те же skills, что в Claude Code.

Навык — это папка с файлом SKILL.md либо просто файл <имя>.md в одном из корней, которые сканирует харнесс:

  • .dsh/skills в корне проекта;
  • .agents/skills там же;
  • $DSH_HOME/skills — общие навыки пользователя.

Сверху файла — шапка с обязательными полями name и description. По описанию модель решает, нужен ли навык, а тело подгружает только в этот момент. К примеру:

Третий пункт я теперь вставляю в каждую пакетную задачу. Модель умеет молча проглотить сто строк из пятисот и отрапортовать, будто сделала всё. Счётчик на входе и выходе ловит такое надёжнее, чем вдумчивое чтение отчёта.

Ещё две мелочи. Тело навыка перечитывается при каждой загрузке, так что правило можно поменять прямо посреди работы, без перезапуска. И второе: папку .claude/skills харнесс по умолчанию не сканирует. Если навыки уже лежат там, пропишите её в customSkillDirs — копировать ничего не придётся.

Хуки как страховка

Главный вывод из года работы с плагинами: первые месяц-два не давайте модели права записи. Пусть смотрит и предлагает, а меняет человек. В Claude Code это держится на хуках, и тут приятно: в dsh есть мост dsh-hooks-claude-code, который гоняет ваш готовый hooks.json без переписывания.

Основные события на месте: PreToolUse может запретить вызов инструмента или спросить подтверждение, PostToolUse — вернуть модели результат с замечанием, Stop — заставить сделать ещё шаг, если проверка провалилась. Так что хук «не трогай CMS без меня» и хук «не заканчивай, пока не сошлись счётчики» переезжают как есть. Ограничение одно: мост понимает только командные хуки — те, что вызывают внешнюю программу.

Ночной аудит без интерфейса

Для регулярных задач есть профиль headless: одно задание, один ответ, выход.

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

Где экономия

DeepSeek дешевле не только по прайсу. У агента, который долго сидит в одном проекте, почти весь вход — повторное чтение кэша: инструкции, описания инструментов, история шагов. Кэш у DeepSeek стоит копейки, особенно вне пиковых часов.

Но у MCP есть и обратная сторона: описания всех инструментов подключённого сервера уходят в каждый запрос. Сервер на полсотни инструментов — постоянная прибавка к каждому шагу. Пока список не меняется, эта часть остаётся одинаковой и попадает в кэш. А если сервер поменял список инструментов, кэш сбивается с этого места и дальше.

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

Итог

Переезд на DeepSeek Harness для SEO-набора — это скорее перенос файлов, чем переделка:

  • MCP-серверы подключаются одной записью, имена инструментов те же, что в Claude Code;
  • навыки — тот же формат SKILL.md, старую папку можно просто указать в настройках;
  • хуки из hooks.json работают через мост, если они командные;
  • MCP-ресурсы и готовые подсказки не переезжают — проверьте, не висит ли на них что-то важное;
  • для регулярных отчётов есть headless, для разных задач — разные профили.

Не меняется от харнесса одно: модель приносит строки, а не решения. Что развивать, от чего отказываться и что говорить клиенту — это по-прежнему работа на вас.

Популярное
Анна Мельникова2 часа назад

Вот это уже похоже на практичный опыт. Сохранил себе, вернусь позже перечитать.

Елена Морозова2 дня назад

Интересный кейс, особенно понравилось, что объяснили без лишней воды.

Игорь Лебедев3 дня назад

Хороший пример того, как маленькие решения влияют на итоговый результат.