DeepSeek Harness — это сторонний агент с открытым исходным кодом, разработанный компанией DeepSeek AI. В README проекта это названо ранней предварительной версией для разработчиков. В нем также содержится предупреждение о том, что изменения могут нарушить совместимость. Карта служб описывает рассматриваемую редакцию проекта. Она не обещает совместимость с будущими изменениями плагинов или конфигурации.
В этой статье используется официальная документация DeepSeek Harness. В ней не описываются продукт, интеграция, партнёрство или обязательства по поддержке OdiRouter. В ней объясняется, как проверять связи между службами перед изменением композиции.
Что означают три метки
В официальной карте возможностей каждой записи ctx присваивается одна из трёх меток: базовая служба, capability seam или точка композиции. Эта метка помогает выбрать уровень внесения изменений.
Базовая служба отвечает за одну общую функцию среды выполнения. В документации хранилище сеансов, реестр инструментов, сборка системного промпта и реестр активных агентов перечислены как базовые службы. Второй независимый владелец той же функции может привести к конфликтующему поведению.
У capability seam есть три роли. Определение службы объявляет интерфейс. Поставщик реализует интерфейс. Потребитель использует его через ctx. Один пакет может содержать более одной роли. Сам по себе поставщик не является полной границей замены.
Точка композиции выбирает, какие плагины работают вместе. В руководстве по архитектуре dsh описывается как дерево плагинов, построенное из упорядоченных слоев. Профили и наборы добавляют строки конфигурации. В последующих обновлениях можно будет заменять или добавлять строки. Выбор компонентов отличается от проектирования интерфейса.
Читайте запись о службе по порядку
Начните с владельца службы. Затем определите поставщиков услуг, указанных на текущей карте. Наконец, отследите непосредственных потребителей. Эта последовательность демонстрирует, на что может повлиять смена поставщика услуг.
Для ctx.llm в документации указано, что цикл агента и базовое сжатие используют общую службу LLM. Это обозначает границу проектирования. Это не означает, что каждый адаптер совместим с каждой конфигурацией. Перед использованием другого адаптера проверьте активную конфигурацию, учётные данные, поведение интерфейса и целевую редакцию.
Для ctx.sessionPersistence карта перечисляет провайдеры JSONL и SQLite. В документации указано, что оба сохраняют один и тот же словарь SessionEvent и что приложение выбирает бэкенд во время композиции. Это служит основанием для проверки конфигурации хранилища и её потребителей. Это не служит доказательством наличия неперечисленного бэкенда, пути миграции, уровня производительности или политики хранения данных.
Карта также перечисляет нескольких провайдеров для ctx.shell и ctx.fs. Инструменты, ориентированные на модели, используют эти сервисы. Изменение провайдера в любой из этих областей требует проверки политик, процессов, границ рабочего пространства и поведения инструментов. Карта не заменяет проверку безопасности для конкретного развёртывания.
Обязательные и необязательные зависимости
Руководство по сервисам использует inject для обозначения обязательной зависимости. Когда запускается apply, сервисы, названные inject, готовы. Если обязательный сервис отсутствует, плагин ожидает, а не запускается при отсутствии интерфейса.
Не используйте порядок строк конфигурации в качестве контракта зависимостей. В руководстве по первому плагину указано, что записи могут запускаться одновременно. Порядок действий определяется зависимостями сервисов, а не позицией строки.
Используйте ctx.get() только в том случае, если отсутствие услуги является ожидаемым. Плагин может проверить наличие сервиса и использовать определённый резервный вариант. Если работу невозможно корректно выполнить без сервиса, объявите зависимость через inject.
Если необходимая служба исчезает, в руководстве указано, что зависимый от неё плагин также удаляется. Плагин может снова загрузиться, когда сервис вернётся. Протестируйте этот переход жизненного цикла, прежде чем считать провайдера заменяемым.
Проверки перед изменением в предварительной версии
Какому пакету принадлежит интерфейс, и как карта его обозначает?
Какие провайдеры и прямые потребители документированы для целевой редакции?
Определяет ли интерфейс ошибки, жизненный цикл и границы политик, необходимые для изменения?
Требуется ли
inject, или отсутствие сервиса действительно допустимо дляctx.get()?Какой слой композиции выбирает провайдера и что содержит фактическая конфигурация?
Что подтвердит совместимость этого изменения: редакция, тег выпуска, тест и политика развёртывания?
Одна лишь карта не может ответить на последний вопрос. Официальный список выпусков, полученный для этой страницы, помечает dsh-v0.1.0-rc.7 как предварительный выпуск. Прежде чем заявлять о совместимости, проверьте целевую редакцию, интерфейсы пакетов, интеграционные тесты и политику развёртывания.
Источники и OdiRouter
Перед изменением развёртывания ознакомьтесь с DeepSeek Harness capability-seams reference,DeepSeek Harness architecture guide,service dependency guide и официальным репозиторием DeepSeek Harness.
Актуальную информацию о платформе для разработчиков OdiRouter см. на OdiRouter. Эта ссылка ведёт только к OdiRouter. Она не подтверждает, что DeepSeek Harness является продуктом OdiRouter, встроенной интеграцией, партнёрством или поддерживаемой целевой платформой для плагинов.