# DeepSeek Harness (DSH) РАЗБОР | Всё — плагин

> *Машинный перевод (AI-generated content)*

**Published:** 9 ноября 2026 г.
**Author:** Hugging Face
**Source:** YouTube — Hugging Face
**Language:** ru-RU
**HTML:** https://aiqazaqstan.com/ru/articles/deepseek-harness-dsh-explained-everything-is-a-plugin

Доброе утро всем! Как у вас дела? Сегодня мы разберём DeepSeek Harness. Нам предстоит сделать немало вещей, ведь тема обширная. Но суть видео в том, что к концу вы сможете…

Доброе утро всем. Как дела сегодня? Сегодня мы рассмотрим подвесную систему Deepsea. На самом деле сегодня мы собираемся сделать довольно много вещей, потому что это довольно длинная тема. Но идея этого видео заключается в том, что к концу вы сможете понять архитектуру подвески Deepsea, что такое оценка, что представляет собой система плагинов, которая обеспечивает эту очень инновационную архитектуру и системный дизайн этой новой подвески. И позже в видео мы также собираемся создавать наши собственные плагины. Если хотите, посмотрите главы. И если вы хотите сразу перейти к этому. И я собираюсь показать вам, как плагины выглядят в коде и как они загружаются в саму обвязку. И мы собираемся показать это в реальном времени прямо здесь с вами. Перед этим мы сделаем некоторый обзор архитектуры, а также очень краткий обзор настольного приложения. Итак, давайте перейдем к делу. Итак, обо всем по порядку, давайте взглянем на само приложение. Я просто проведу для вас очень краткую экскурсию, чтобы вы поняли, о чем мы говорим. Мы будем говорить о применении подвески Deepsea, как вы можете видеть прямо здесь. И большую часть времени я буду использовать настольное приложение, которое представляет собой электронное приложение, выпущенное всего несколько дней назад. И на самом деле это оболочка предыдущей версии приложения, которое они изначально выпустили, которое представляло собой веб-приложение, которое вам приходилось запускать самостоятельно на локальном хосте, как вы можете видеть прямо здесь. [фыркает] Но оба работают по сути одинаково. У вас есть милое маленькое окошко чата прямо здесь. У вас есть история ваших сессий прямо здесь. И вы можете, я имею в виду, что одна из самых интересных частей системы Deepsea заключается в том, что у вас есть разные режимы, которые позволяют вам загружать разные вещи, разные плагины в ваше приложение. Например, стандартный режим просто запускает обычный режим агента кодирования. Режим PTC на самом деле интересный режим. По сути, это то же самое, что и простой обычный стандартный режим, но здесь он заключается в том, что всякий раз, когда он вызывает инструменты, он не вызывает инструменты процедурно, как будто он не просто вызывает инструмент и затем ожидает результата, а на самом деле пишет небольшой симпатичный скрипт с инструментами. Таким образом, инструменты запускаются в сценарии, который позволяет им распараллеливать различные инструменты, которые они хотят вызвать, или вызывать несколько инструментов в рамках одного вызова инструмента. Это действительно классная вещь и приятная маленькая мелочь прямо здесь. Так изначально работали мелкие агенты. Так что действительно очень приятно видеть прямо здесь. У нас есть минимальный режим, который просто добавляет как можно меньше контекста, и режим создателя, который по сути то же самое, что и стандартный режим, но с добавленными навыками и контекстом о том, как обновляться, верно? Потому что помните, что одна из самых приятных особенностей системы Deep Seek — это то, что все это плагин. И это означает, что вы можете просто попросить его изменить и обновить себя, и он сможет делать то же самое, что и Пи, но на гораздо более глубоком уровне. Поскольку все является плагином, на самом деле это означает, что все является плагином, включая цикл агента, включая поставщиков LLM, инструменты, внедряемый контекст, все до единого. И через мгновение мы увидим еще немного этого. Но в рамках экскурсии я бы хотел, чтобы вы прежде всего зашли в режим создателя прямо здесь и попросили его создать для себя плагин. Давайте спросим что-нибудь вроде: создайте плагин, который зарегистрирует новый инструмент для системы Deep Seek, и этот инструмент будет просто инструментом Hello World, который приветствует кого-то по имени. И мы можем просто отправить это, и он начнет работать над этим. Теперь кое-что интересное, пока это работает: позвольте мне показать вам, что прямо здесь я на самом деле использую GLM 5.3 Flash. Как мне это сделать? Очень красиво, очень прямолинейно. Итак, все, что вам нужно сделать, это зайти в настройки прямо здесь, перейти к моделям, и здесь вы можете просто добавить нового поставщика моделей. В моем случае я запускаю это через Hugging Face, но, конечно, вы можете использовать DeepSeek, который в любом случае является моей любимой моделью, но я просто хотел показать вам, что вы можете запускать дополнительные модели, если хотите, просто добавив прямо здесь. Вы можете добавить его с помощью стороннего поставщика модели или с помощью пользовательского API модели. Просто добавьте свой собственный идентификатор провайдера, отображаемое имя и базовый URL-адрес или, если он предварительно настроен, например, Hugging Face 1S, Moonshot или Mistral и т. д. В моем случае я просто пошел прямо сюда и искал Hugging Face. Ну, я этого не вижу, потому что я уже добавил его, но просто нажмите «Обнимающее лицо» и добавьте свой токен, и все будет готово, и вы сможете выбрать модели, которые хотите использовать. И затем, как только это будет сделано, давайте посмотрим на это. Ну, там написано, что дело сделано. Давайте посмотрим. Я создал каталог под названием плагин Hello World Greeter со следующей структурой. У нас есть пакет JSON и мой index.js, который является фактическим плагином, как мы увидим позже в этом видео. Плагины — это просто файлы TypeScript или JavaScript, которые реализуют определенную функцию и сообщают Cordis или системе плагинов, какие зависимости необходимо использовать. У нас есть имя инструмента и результаты теста, которые работали правильно. Теперь позвольте мне просто открыть новую задачу прямо здесь и задать ее, используя инструмент приветствия пользователя, чтобы поприветствовать Алекса. Давайте посмотрим на это, и здесь мы увидим приветствие вызова инструмента, и оно приветствовало Алекса. Здравствуйте, Алекс. И вот мы идем. Так что вроде работает правильно. Он создал инструмент. Он создал и зарегистрировал сам инструмент. В этом видео мы увидим, как это на самом деле работает за кулисами, как строится архитектура, а в конце видео мы увидим сам код плагина. Если вы хотите взглянуть на это непосредственно, взгляните на главы. Так что да, давайте сразу к делу. Хорошо, чтобы начать с обзора архитектуры системы DeepSeek, я хотел бы начать с очень краткого определения, чтобы мы все знали, о чем говорим. Прежде всего, как мы видели ранее, комплектация DeepSec — это комплектация агента, которая, несмотря на то, что она в первую очередь была создана для агентов кодирования, на самом деле представляет собой комплектацию общего агента, которую вы можете использовать для любых других агентных приложений, а это означает, что она поставляется со своим собственным циклом, своими собственными инструментами и вашим собственным способом подключения к нему ваших собственных инструментов. Он имеет собственные системные подсказки, которые вы также можете изменить. Он поставляется со своими собственными файлами сеансов и собственным пользовательским интерфейсом, который в данном случае является основным интерфейсом, с которым вам приходится взаимодействовать. Это приложение Electron, которое я вам только что показал, которое отлично работает, но это немного другой основной интерфейс, чем тот, который вы увидите, например, в Pi или других агентах кодирования на основе CLI. Хотя для него можно создать собственное приложение на основе CLI, но это выходит за рамки текущей реализации. Возможно, позже мы увидим для этого инструмент CLI. Девиз этого агента кодирования: все является плагином. Причина этого в том, что эта подвеска построена на основе системы плагинов под названием Cordis. Теперь мы собираемся более подробно рассказать о том, что на самом деле представляет собой Cordis, хотя мы все равно будем держать его на немного высоком уровне. Если вы хотите конкретное видео, посвященное Кордису, дайте мне знать в комментариях. Мы также можем рассказать об этом позже. Но на данный момент все, что вам нужно помнить, это то, что Cordis — это система плагинов, которая позволяет всему в приложении быть плагином, включая цикл агента, инструменты, системное приглашение, все, уровень выполнения инструментов, все само подключается к одной и той же поверхности плагина. И это, пожалуй, самая инновационная часть системы DeepSec. Чуть позже мы рассмотрим это более подробно. Но прежде чем перейти к следующей части, давайте отметим, что на самом деле оно поставляется разными способами, поэтому оно поставляется как веб-приложение, которое мы видели ранее. Он также поставляется в виде настольного приложения, которое по сути представляет собой оболочку Electron веб-приложения. Он поставляется в виде SDK как для TypeScript, так и для Python, а также для ACP. Хорошо? В данном случае мы будем говорить о сути этого, но знаете ли вы, что существует несколько способов и несколько интерфейсов для взаимодействия с этим оборудованием. Давайте перейдем к следующей части прямо сейчас. Хорошо, давайте поговорим о самом Кордисе, и мы собираемся сделать это снова, как я уже говорил вам ранее, на очень высоком уровне, но, прежде всего, позвольте мне кратко рассказать вам историю Кордиса, потому что я слышал много разных утверждений о нем. Итак, первое, что вам нужно знать, это то, что Cordis сам по себе не совсем то же самое, что DeepSeek, и он не обязательно был разработан DeepSeek, хотя история Cordis и DeepSeek очень тесно связана друг с другом. Итак, у нас есть репозиторий обвязок DeepSeek, и, как вы можете видеть, Cordis указан в качестве его основной архитектуры. И когда мы заходим в репозиторий Cordis прямо здесь, то видим, что он не принадлежит DeepSeek. Тем не менее, он связывает DeepSeek с официальной страницей проекта, веб-сайтом DeepSeek. И если вы посмотрите на эту статью, вы увидите, что она также была опубликована самой DeepSeek. Тем не менее, первый коммит системы плагинов Cordis появился еще до существования DeepSeek как компании. Итак, через год, насколько я понимаю, создатель Cordis позже присоединился к DeepSeek и начал работать над системой DeepSeek и интеграцией Cordis в качестве основы, которая затем стала основой DeepSeek. Но, как вы можете видеть, например, здесь, основным участником проекта также является сотрудник DeepSeek. Так очень тесно связаны друг с другом, это не обязательно одно и то же. И Cordis — это не просто система плагинов, созданная только для агентов кодирования. На самом деле он может использоваться в любом приложении, хотя он наиболее полезен для агентов кодирования из-за возможности компоновки. Если вас интересует более подробный обзор Coordis, я рекомендую вам прочитать хотя бы первые несколько страниц официального документа. Если вы не знакомы с статьями DeepSeek, они безумно хорошо написаны, поэтому у вас не возникнет проблем с чтением первых нескольких страниц. Через некоторое время это становится немного сложнее, и вам нужно действительно сосредоточиться, чтобы следовать дальше, но первых нескольких страниц должно быть более чем достаточно, если вы просто хотите получить представление о том, что это пытается решить. Давайте теперь посмотрим на архитектуру Coordis и на то, что на самом деле означает наличие этой системы, в которой все является плагином. Все в порядке. Итак, теперь давайте взглянем на саму архитектуру Coordis. И для этого я создал для вас очень быстрый набор слайдов. И как вы можете видеть, когда они говорят, что все является плагином, они на самом деле имеют в виду, что все является плагином, включая (и это довольно удивительно) сам цикл агента, а это означает, что теоретически вы можете заменить цикл агента DSH своим собственным циклом агента и заставить вашего агента делать что-то совершенно другое. Например, я имею в виду, что обычно вам этого не хотелось бы, но, например, предположим, что вы хотите заменить существующий цикл агента DSH другим циклом агента в качестве плагина, который никогда не вызывает языковую модель и никогда не вызывает какие-либо инструменты. Он просто каждый раз возвращает эхо пользовательского запроса. И тогда все, что вам нужно сделать, это создать этот плагин и подключить его непосредственно туда, где этот плагин будет. И тогда ваш агент всегда будет возвращать эхо пользовательского запроса. На самом деле, это пример, который мы собираемся построить чуть позже, в конце видео, но да, просто имейте это в виду. Как и все, включая цикл агента, это сам плагин. То же самое касается, например, реестра инструментов и каждого отдельного инструмента. Так, например, функциональность инструмента или способность вашего агента вызывать инструменты сами по себе являются плагином. А инструмент bash — это сам плагин, файловая система, клиент MCP — они тоже сами являются плагинами. Системная подсказка представляет собой плагин. Уровень выполнения самих инструментов также является плагином, а это означает, что вы можете поменять уровень исполнения своих инструментов, ничего не сломав. Так, например, прямо из коробки он поставляется с песочницей bash, песочницей файловой системы и плагинами подпроцесса DSH для выполнения инструментов, что означает, что инструменты будут выполняться в разных песочницах. И теоретически вы можете просто создать свой собственный плагин, который будет запускать инструменты, например, в удаленном месте на удаленной машине. Например, если вы хотите добавить дополнительную безопасность, а затем просто подключите ее к прослушивателям уровня выполнения, и она будет работать так же, как и другие. То же самое и с поставщиками моделей. Интеграция с общими языковыми моделями сама по себе является плагином. Интеграция с языковыми моделями глубокого поиска также является плагином. То же самое касается навыков, журнала сеансов и хранилища. И что интересно, пользовательский интерфейс тоже представляет собой плагин. Извините, но графический интерфейс пользователя, который вы видите как электронное приложение, кстати, сам по себе является отдельным приложением. Итак, на самом деле у вас есть два приложения в системе глубокого поиска. У вас есть серверная часть, которую мы сейчас и изучаем. И у вас есть интерфейс, который также является приложением, которое взаимодействует с этим сервером. И оба созданы с использованием И, чтобы дать вам представление о том, как все эти плагины работают вместе, подумайте об этом как об общем контексте, который предоставляется для всего приложения. А контекст определяется как CTX. И все, что вы к нему подключаете, имеет доступ к одним и тем же вещам во всем приложении, верно? Так, например, плагин сеанса DSH является провайдером, поэтому он предоставляет некоторые инструменты для контекста. То же самое касается инструментов, плагина Tool Bash или поставщика моделей. И есть несколько плагинов, основная функция которых также заключается в прослушивании событий в контексте. Например, плагин сжатия, плагин хуков. Существуют разные хуки, которые можно подключать к контексту. Безголовый пользовательский интерфейс также может прослушивать все события в контексте. Я имею в виду, что мы можем углубиться в это немного позже в видео, но просто для того, чтобы вы имели в виду, что все связано с одним и тем же контекстом и все имеет доступ к тому, что раскрывает контекст. И вообще, у меня есть небольшой симпатичный пример кода. Давайте на самом деле взглянем на это и посмотрим, что сами плагины могут делать в контексте. Все в порядке. Итак, теперь давайте посмотрим на реальный пример кода. Это не фактическая реализация кода плагина, а просто дает представление о том, как он работает. Но перед этим я хочу показать вам, что на самом деле может делать плагин, чтобы вы могли увидеть это в коде, который у меня есть прямо здесь. Итак, первое, что может сделать плагин, — это предоставить услугу. И для этого вам необходимо сначала зарегистрироваться или создать заявку на имя для вашего плагина. И для того, чтобы это сделать, вам просто нужно сделать это вот так. И вы просто даете ему имя. В данном случае это будет создание плагина под названием «tools», который уже существует, но давайте предположим, что вы воссоздаете плагин под названием «tools», который дает вашему агенту возможности вызова инструментов. А это означает, что это имя связано с вашим плагином и услугами, которые вы предоставляете. Поэтому, если вы хотите, чтобы другие плагины использовали эти сервисы, они знают, где их получить. И тут на помощь приходит внедрение. Итак, второе, что может сделать плагин, — это внедрить другие плагины в их функциональные возможности. По сути, это просто внедрение зависимостей. Что происходит, например, предположим, что вы хотите создать сам новый инструмент, и вы хотите его создать, поэтому вам нужно создать плагин, реализующий этот инструмент. Но чтобы создать плагин инструментов, вам понадобится плагин инструментов, который даст вашему агенту возможность вызывать инструменты. Поэтому все, что вам нужно сделать, это просто упомянуть об этом как о зависимости, чтобы плагин инструментов был установлен перед вашим конкретным инструментом. И именно так работает вся экосистема: внедряя зависимости и гарантируя, что другая монтируется раньше той, которую вы только что определяете. Третье, что вы можете сделать, это зарегистрироваться в сервисе с помощью метода Registration. Мы увидим пример через минуту. И вы также можете настроить плагин для прослушивания событий, как и в других агентах кодирования, таких как Pi. События лежат в основе функциональности агента кодирования. И в этом случае вы получаете их прямо из контекста. Таким образом, каждый отдельный плагин может получить доступ к контексту событий, которые происходят в контексте. И как видите, это очень просто. Вы просто слушаете любое событие, которое хотите, а затем ваш плагин что-то с ним делает. И вообще, позвольте мне показать вам реальную реализацию псевдокода пары плагинов. Предположим, вы хотите создать два плагина. Один будет вашим инструментом приветствия, а другой — регистратором инструментов, который будет регистрироваться каждый раз, когда вы вызываете инструмент. Инструмент приветствия, как я вам уже говорил, первым делом вам нужно будет дать ему название. Затем вам нужно будет определить, какие зависимости он будет использовать и которые вы собираетесь в него внедрить. Поскольку мы создаем инструмент, нам понадобится плагин, который позволит вашему агенту вызывать инструменты. Таким образом, вам придется подождать, пока плагин инструментов будет смонтирован, прежде чем будет установлен плагин инструмента приветствия. А затем вам просто нужно определить, что будет делать ваш плагин. И в этом случае он зарегистрирует инструмент в плагине инструментов, вот так. И в этом случае мы просто определяем его с помощью имени, просто задаем ему параметр, а затем просто указываем, что он будет делать. Но, как видите, это очень просто. Итак, определите внедрение зависимостей, то есть плагины, которые ему требуются, а затем используйте их. И в данном случае он использует их для регистрации чего-то внутри себя, в плагине инструментов. Допустим, вы хотите создать второй инструмент, который сам по себе будет еще одним плагином. И это также требует внедрения плагина инструментов. А вот этот вот ничего не зарегистрирует. Он просто регистрируется каждый раз, когда вы вызываете инструмент в терминал. И, как видите, в данном случае именно это и происходит. Он прослушивает событие результата инструмента, а затем просто записывает его в консоль. Это, по сути, все, что происходит. Итак, я имею в виду, я надеюсь, что это, конечно, пример абстракции очень высокого уровня того, как работают плагины. Но я надеюсь, что стало немного яснее, что сами плагины взаимодействуют с одним и тем же контекстом, и вы можете использовать разные плагины, предоставляющие услуги другим плагинам, если вы укажете их как зависимости, верно? Скорее всего, вы не будете писать плагины самостоятельно, но важно иметь представление о том, как работает компоновка. И, конечно, кстати, когда вы создаете плагин таким образом, базовая система запоминает все, что вы определяете прямо здесь, поэтому она знает, как отключить ваш плагин, если вы его отключите. Итак, как что, что нужно почистить. Таким образом, он будет знать, что ему необходимо очистить порядок, чтобы не удалить плагин, который в данный момент используется другим. Он знает, какие функции ему нужно отменить, а какие имена освободить. Однако также возможно создать и добавить свою собственную функцию очистки, что на самом деле является хорошей практикой при создании плагинов для DSH, но мы увидим это через мгновение. Просто учтите, что эти плагины — это плагины, и вот как они работают. Хорошо, давайте очень быстро рассмотрим, как плагины могут генерировать различные события. И я собираюсь немного объяснить вам о различных способах генерации этих событий, хотя я не ожидаю, что вы изучите это и будете кодировать это вручную и сами выбирать, какой режим использовать всякий раз, когда вы генерируете свои события в своих плагинах. Большую часть времени это будет делать ваш агент, ваша система DeepSeek. Так что не беспокойтесь слишком сильно о технических деталях. Я просто хочу, чтобы вы получили высокоуровневую абстракцию или высокоуровневую интуицию того, что происходит и как запускаются эти события. Итак, я уже говорил вам, что когда плагин регистрируется как служба, он может генерировать события, чтобы другие плагины могли использовать эти события или прослушивать эти события и выполнять другие действия всякий раз, когда эти события срабатывают. И есть четыре способа, которыми ваш плагин может генерировать событие. Таким образом, вы можете сделать это с помощью обычного метода эмиссии, который просто запускает события и забывает. И примером этого являются результаты инструментов. Поэтому, когда ваш плагин может запускать инструмент, он завершает выполнение инструмента и выдает результат инструмента. Итак, это событие, которое не зависит от других событий. Это может быть каскадное излучение, и об этом полезно думать в терминах примеров. Таким образом, генерация потока LLM представляет собой каскадную генерацию, потому что, конечно, вы можете получать все события одно за другим во время завершения. Другим примером является выполнение инструмента, нескольких инструментов, которые выполняются во время хода агента. Также вы можете отправлять события последовательно, и это означает, что они ожидаются одно за другим. Например, остановка хода агента может произойти после того, как агент был создан, верно? А это значит, что этому вот здесь придется ждать, пока этот действительно появится. И вы также можете создавать разные события параллельно. Важным также является то, что ваш собственный плагин может объявлять новые события, чтобы другие плагины могли просто прослушивать эти вновь созданные события. И это полезная вещь, если вы создаете свои собственные плагины. Интересным примером является плагин сжатия, который создает собственное событие сжатия. И еще кое-что, о чем я [прокашливается], как бы забыл упомянуть, это то, что эти события ограничиваются контекстом, в котором они создаются. [фыркает] И чтобы это понять, вы должны учитывать, что плагины также могут быть вложены друг в друга. Вот. Таким образом, плагины могут быть вложены вместе. Таким образом, когда у вас есть один плагин, вы можете зарегистрировать под ним новые плагины, а это означает, что все эти плагины будут иметь доступ к контексту этого плагина-отца. И в большинстве случаев это используется для создания нескольких пакетов или нескольких агентов, которые могут выполнять несколько задач. Итак, несколько агентов, с которыми связаны разные плагины. И обычно здесь это определяется именно так. Итак, этот вот этот будет иметь кучу разных плагинов, связанных с этим. Поэтому, когда плагин генерирует событие, оно будет отправлено в этот контекст прямо здесь. Хорошо? Таким образом, все они отправляют события в родительский контекст прямо над ним. Вот почему вам не следует просто вкладывать все свои плагины. В идеале ваши плагины подключаются к одному и тому же контексту, а зависимости добавляются посредством внедрения зависимостей, как мы упоминали ранее. Именно так и работают события. Короче говоря, все они обращаются к одной и той же таблице в том же контексте, что и в их области, так что другие плагины в том же контексте и в той же области могут получать доступ к этим событиям, прослушивать их и применять свои действия поверх этих событий. Ваши плагины могут создавать новые события, и существует несколько способов их создания в зависимости от характера события, которое будет создано. Все в порядке. [фыркает] Итак, давайте посмотрим, как создавать свои собственные плагины. И чтобы сделать это, я создал три демонстрационных плагина прямо здесь, чтобы посмотреть на них. Но перед этим я просто хочу убедиться, что мы понимаем, что вы обычно создаете свои плагины не так. Как будто вы обычно не пишете их вручную в коде. Что вам нужно сделать, так это пойти прямо сюда, к ремням безопасности Dipsy. В данном случае я запускаю приложение, но вы также можете запустить его на локальном хосте в веб-профиле. И вы перейдете прямо сюда, в режимы, и выберете режим создателя. Это автоматически загружает плагины, которые дают вашему агенту знания о самой системе Deep Seek, ее расширяемости и архитектуре плагинов, чтобы он мог сам создавать свои собственные плагины, верно? Это все, что делает режим создателя. Он просто дает ему навыки и контекст, необходимые для создания собственных плагинов, и это то, что вы обычно используете для создания собственных плагинов. При этом я хочу показать вам, как выглядит реальный код, чтобы, когда вы попросите свой инструмент Deep Seek создать новый плагин, вы более или менее знали, чего ожидать от того, что он на самом деле создает. Итак, здесь я фактически клонировал репозиторий из системы Deep Seek. Как видите, на самом деле это то же самое, просто клонировать с GitHub, и прямо здесь я добавил новый каталог под названием Scratch Plugin, потому что почему бы и нет? И мы добавили прямо сюда три разных плагина. Первый — вот этот, мой плагин. Помните, я уже говорил вам, что когда вы создаете плагин, единственное, что ему нужно сделать, это экспортировать эту функцию применения, верно? И это, по сути, все, что вам нужно для создания плагина. В данном случае я использую эту функцию, но все, что я делаю, это просто записываю в консоль журнал Hello World прямо здесь. Просто прямо, не ничего больше. И эта функция apply, как мы упоминали ранее, всегда принимает в качестве аргумента контекст Deep Seek от Cortis, ясно? И это все, что происходит прямо здесь. Очень просто. Если вам нужен более сложный плагин, который делает немного больше, давайте взглянем на этот инструмент — инструмент приветствия. Это пример, который вы видели на слайдах только что. Итак, как и раньше, помните, что самая важная вещь и необходимое условие для плагина — это наличие вашей функции Apply прямо здесь, которая экспортируется, и эта прямо здесь на самом деле требует другой зависимости или еще одного, да, внедрения другого плагина. И в этом случае, поскольку мы будем иметь дело с инструментами, мы будем создавать инструмент, нам нужно будет уже загрузить плагин инструментов на момент загрузки этого плагина. Итак, мы экспортируем имя. Кроме того, это обнаружит Кордис. Мы передаем ему массив ввода, который представляет собой список зависимостей, которые необходимо загрузить перед загрузкой этого плагина. И еще у нас есть функция применения, о которой я вам говорил раньше. И здесь мы подключаемся к службе инструментов и регистрируем новый инструмент прямо здесь, используя метод определения инструмента, который мы также импортируем из того же пакета. И просто, просто добавил инструмент. И как только мы добавим этот плагин к нашему агенту DSH, мы сможем просто запустить этот инструмент, как я вам сейчас покажу. И, наконец, у нас есть еще один пример плагина. Это тоже очень просто. То же самое, экспортируем имя и инжект. Для загрузки этого плагина нам также необходимо загрузить плагин инструментов. И что он делает, так это прослушивает несколько-пару событий, верно? Итак, сначала он слушает результаты инструмента и просто записывает их. По сути, это все, что он делает на этом конкретном мероприятии. Но он также прослушивает и перехватывает другое событие, которое предварительно выполняет инструмент. И вот здесь, он будет делать следующее: если модель вызывает инструмент bash, а инструмент bash включает команду RM RF, то мы собираемся отрицать это и просить модель попросить пользователя самому запустить это. И это, по сути, то, что происходит прямо здесь. Если команда включает RM RF, то мы зарегистрируем заблокированный Dallas и вернемся к модели, в которой он не может его запустить, и он должен попросить пользователя запустить его самостоятельно. Помните, я говорил вам, что некоторые события вызываются в каскадном режиме, и это одно из них. А когда у вас есть событие-водопад, вам нужно вернуться следующим, чтобы оно продолжило свой обычный ход. And if you're going to be interrupting it, then you return this deny, for example, object. По сути, это три примера или три плагина, с которыми мы будем работать. И когда вы просите DeepSeek на пульте создания создать новый плагин, это то, что вы будете создавать за кулисами. Теперь, когда у вас есть эти плагины, как система DeepSeek на самом деле их загружает? Типа, потому что они есть прямо здесь, в коде, но как они загружаются при запуске приложения? Давайте посмотрим на это. Хорошо, мы уже видели, как выглядит код плагина. Теперь давайте посмотрим, как он загружается в Cordis. Помните, я говорил вам, что плагины в Cordis — это конфигурация, а не код. По крайней мере, они так загружены. А это означает, что для загрузки ваших плагинов вам нужно будет создать файл YAML, файл конфигурации, который выглядит примерно так. Итак, вам нужно будет добавить свойство вставки прямо здесь, а затем вам нужно будет указать идентификатор и имя добавленным вами плагинам. В данном случае, в этом конкретном случае, вот эти добавляются как пакеты NPM. Вот почему они так названы. Но если у вас нет пакета NPM или вы просто хотите напрямую запустить такой код, вы также можете сделать это следующим образом. Просто дайте им идентификатор и добавьте вместо имени пакета только абсолютный путь к реальному файлу, содержащему ваш плагин. И затем, когда у вас будет вот это, вот это, вы добавите его в свой файл. Позвольте мне показать вам. Итак, вы собираетесь запустить это в моем примере. В этом примере я собираюсь показать вам это на локальном хосте в веб-профиле, а не в приложении Electron. Я собираюсь на минутку показать вам приложение Electron. А затем просто укажите путь к моему файлу конфигурации Cordis YAML, который находится вот здесь. [фыркает] И это, по сути, все, что мне нужно сделать. Но что это на самом деле делает? Происходит то, что эта штука прямо здесь сообщает, что мы собираемся запустить веб-профиль и исправить его, чтобы добавить эти строки прямо здесь, в конец существующей конфигурации Cordis. И что это за конфигурация Кордиса? Где оно живет? Ну и найти его очень просто. Вы переходите прямо сюда, к пакету, и мы собираемся сделать то же самое с пакетами прямо здесь. Мы собираемся перейти к пакету, и здесь, в пакете, мы можем увидеть веб-приложение прямо здесь, а здесь вы можете видеть, что есть еще один файл cordis.patch.yaml, и этот прямо здесь также перечисляет все плагины, которые предварительно загружены в веб-приложение, верно? Итак, все это прямо здесь составляет все приложение Cordis, и, по сути, именно так оно и загружается. Итак, позвольте мне показать вам, что происходит, когда я запускаю это. Итак, я просто собираюсь использовать DSH Web и исправить его своим патчем прямо здесь, и он откроется прямо здесь, в другом, в другом окне. Позвольте мне открыть его, и поехали. Итак, поехали. Здесь у нас есть мое локальное приложение, и давайте назовем его. Я собираюсь проверить его, попросив сделать это прямо здесь. Итак, у меня загружено три плагина, поэтому я сначала попрошу его использовать инструмент приветствия для приветствия Ады, затем запущу именно эту пакетную команду RF и давайте посмотрим, что произойдет. Итак, как вы можете видеть, он добавил некоторую инъекцию контекста и назвал инструмент Ada, который теперь находится в его инструменте в каталоге инструментов, а также сообщает мне, что RMRF был заблокирован плагином Guard, поэтому он не запустился, поэтому вам следует проверить его и запустить самостоятельно. По сути, это именно то, что мы хотели, и это произошло потому, что мы запустили систему Deep Sick в веб-профиле с нашим патчем прямо здесь, который добавляет наши плагины поверх предварительно настроенных плагинов для веб-профиля, верно? И, как вы можете видеть прямо здесь, у нас также есть мой инструмент плагина hello прямо здесь с плагином hello, плагином hello world прямо здесь, который также просто записывает в консоль это загруженное сообщение, как мы видели раньше. Как видите, мои плагины работают. Они загружены, но давайте посмотрим, как мы можем загрузить их в обычное настольное приложение, потому что вы, скорее всего, будете работать над этим, а не на локальном хосте, и для этого вам нужно будет превратить ваши плагины в пакеты npm, чтобы добавить их вот так. А потом они будут добавлены через сервис DeepSeek, который добавляет сами плагины. Так что вам не придется запускать этот патч. Это просто для того, чтобы показать вам, что происходит за кулисами, но когда вы создаете свои собственные плагины, подобные этому, вам не нужно будет вручную редактировать файлы Cordis. Просто чтобы показать вам, как выглядит этот файл конфигурации Cordis. Итак, вот этот — из базового пакета, а вот этот — тот, который я добавил, но вы можете сказать, что это набор файлов, которые строятся друг на друге, верно? И это исправляет, обновляет или добавляет новые вещи в вашу конфигурацию. И последний уровень — это пользовательская конфигурация, которая имеет приоритет над всем остальным. И [фыркает] эта пользовательская конфигурация живет внутри, позвольте мне показать вам. Эта пользовательская конфигурация находится внутри вашего Sage и ваших профилей. И здесь у вас есть разные конфигурации для каждого профиля, который у вас может быть. Итак, как вы можете видеть на моем рабочем столе, которым я пользуюсь чаще всего, у меня есть прямо здесь, позвольте мне просто открыть его и показать вам, что здесь внутри. У меня есть YAML-файл Cordis dot patch dot. Так что я просто собираюсь открыть его. Cordis точка патч точка YAML. И, как вы можете видеть, это мой настоящий файл Cordis для пользователя в моем пользовательском каталоге Sage, и он обновляет и изменяет конфигурацию моего существующего настольного приложения. Как вы можете видеть, вот некоторые настройки, которые я добавил. Флаги конфигурации прямо здесь, свойства конфигурации — это те, которые передаются в плагины, связанные с этим свойством конфигурации. Итак, это перейдет в модель по умолчанию и в чат пользовательского интерфейса. И, например, я добавил Hugging Face в качестве поставщика выводов прямо здесь. Итак, у меня есть любимые модели Hugging Face, которые я использую. Итак, я запускаю это с помощью V4.1 Flash, Inklang и GLM 5.3 Flash. По сути, это то, что делает Кордис и как это работает. И я уже загрузил эти плагины в виде пакетов и добавил их с помощью помощника рабочего стола. В вашем случае DSH сделает это сам, но позвольте мне показать вам, что вы также можете сделать это прямо здесь. Просто собираюсь вставить то же самое приглашение с просьбой приветствовать данные, а затем запустить эту команду прямо здесь. И как видите прямо здесь, давайте откроем список задач. Вы можете видеть, что он вызывает инструмент, потому что он доступен. И он сказал мне, что не может запустить RMRF, потому что у нас есть плагин защиты, который его заблокировал. По сути, теперь мы знаем, как работают плагины. Мы видим, как они загружаются. И теперь, когда вы зайдете прямо сюда, создадите свой новый плагин в режиме создателя и попросите его что-то сделать, вы будете знать, что он на самом деле создает и как он это загружает. Хорошо? Надеюсь, это было хорошее введение и полный обзор того, как работают плагины в Deep Seek. Если у вас возникнут какие-либо вопросы, дайте мне знать, и увидимся в следующем выпуске.

---

*Материал агрегирован из первоисточника: [YouTube — Hugging Face](https://www.youtube.com/watch?v=9F9x3MufdMQ). Открыть оригинал.*

**Теги:** #Hugging Face #DeepSeek #Mistral AI #YouTube

---

*AI Qazaqstan — non-commercial informational portal about AI in Kazakhstan. Machine translations and summaries are AI-generated.*