SEO-плагины на DeepSeek Harness: что переезжает из Claude Code, а что нет
У DeepSeek появился свой агентный харнесс — dsh. Разбираю, как перенести на него SEO-набор: серверы с данными, правила работы и страховку от ошибок модели.

Год подряд 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, чтобы падало честно.
Слой второй: правила дома в навыках
Сервер приносит цифры, но не знает, как принято у вас: какой длины заголовки, что делать с дублями, по какому признаку разводить фразы на разные посадочные. Раньше это всё висело в длинной подсказке, которую каждый писал по-своему. В 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 это естественно: профиль и есть такая стопка.
Что в итоге
Переезд SEO-набора на DeepSeek Harness — это скорее перенос файлов, чем переделка:
- MCP-серверы подключаются одной записью, имена инструментов совпадают с Claude Code;
- навыки — тот же формат SKILL.md, старую папку достаточно указать в настройках;
- хуки из hooks.json работают через мост, если они командные;
- MCP-ресурсы и заготовленные подсказки не переезжают — проверьте, не висит ли на них что-то важное;
- для регулярных отчётов есть headless, для разных задач — разные профили.
Есть и то, что не меняется ни от какого харнесса: модель приносит строки, а не решения. Что развивать, от чего отказаться и что сказать клиенту — решать по-прежнему вам. Начните с одного профиля под одну задачу, прогоните его в течение недели и только потом переносите следующий слой.




Комментарии