DeepSeek Harness — агентный каркас от Дипсик, где всё является плагином

· 2 мин чтения
deepseek ai-agents harness agentic-coding open-source
📂 Исходный код на GitHub

Опенсорсный агентный каркас от DeepSeek AI с архитектурой «всё — плагин» на базе фреймворка Cordis. Web UI, мультимодельность, песочница, Python SDK, ~150K звёзд, лицензия MIT.

DeepSeek Harness — агентный каркас от Дипсик, где всё является плагином

DeepSeek Harness (команда dsh) — опенсорсный агентный каркас от DeepSeek AI, построенный на радикальном принципе: всё является плагином. Модель, инструменты, журнал сессий и даже сам агентный цикл — всё это заменяемые модули, которые можно переподключить через конфигурацию, не трогая ядро. Проект набрал около 150 тысяч звёзд на GitHub и распространяется под лицензией MIT.

Что это такое

DeepSeek Harness — это среда исполнения (agent harness) для ИИ-агентов, работающих с кодом. Проект разработан компанией DeepSeek AI и построен поверх фреймворка Cordis, архитектурная концепция которого описана в статье A Programming Paradigm for Spatiotemporal Composability.

Главная идея — отсутствие привилегированного ядра. Плагины добавляют в общий контекст сервисы, типизированные события и обратимые эффекты. Адаптер модели, реестр инструментов, журнал сессий и сам агентный цикл (agent loop) — всё это плагины, которые можно заменить из конфигурации. Расширение dsh происходит подключением нового плагина рядом с существующими, а при выгрузке плагина все его регистрации автоматически откатываются.

Проект находится в стадии developer preview и быстро развивается — разработчики прямо предупреждают о грядущих ломающих изменениях.

Ключевые возможности

  • Архитектура «всё — плагин» — каждый компонент продукта заменяем: от адаптера модели до агентного цикла
  • Web UI — браузерный интерфейс, запускаемый одной командой
  • Мультимодельность — DeepSeek API из коробки, другие провайдеры и кастомные OpenAI-совместимые эндпоинты
  • Агентные способности — чтение и редактирование файлов, запуск команд, делегирование задач субагентам, ведение плана
  • Политика одобрения — Web UI запрашивает подтверждение перед операциями, требующими одобрения
  • Python SDK и headless-режим для запуска без сервера
  • Песочница и approval-политика на уровне базового бандла

Быстрый старт

Запуск из npm

Установите Node.js и выполните:

npx @deepseek-ai/dsh web

Команда запускает Web UI, доступный по адресу http://127.0.0.1:3080.

Сборка из исходников

git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web

Первая сессия в Web UI

  1. Откройте Settings → Models, введите ключ DeepSeek API и сохраните — маршрут модели становится доступным сразу, без перезапуска сервера
  2. Нажмите Choose workspace и добавьте директорию проекта, из которой запускали dsh — до выбора workspace создание сессии недоступно
  3. Запустите сессию и отправьте агенту задачу, например: «Summarize this repository and identify its main packages»

Процесс dsh использует директорию запуска как файловую систему по умолчанию. Руководство по Web UI доступно в документации.

Архитектура: профили и бандлы

Запущенный dsh — это дерево плагинов, собираемое при старте из упорядоченных слоёв:

  • Профиль — именованная композиция, хранящаяся в домашней директории Harness. Перечисляет бандлы, содержит вне-деревьевые плагины и пользовательский cordis.patch.yml. В поставке есть шаблоны web и headless
  • Бандл — формат дистрибуции для строк конфигурации Cordis и кода, который они подключают

Ключевые бандлы:

Бандл Что добавляет
dsh-base Адаптеры моделей, инструменты, персистентность, песочница и approval-политика, настройки, учётные данные, телеметрия
dsh-web-app Браузерное приложение
dsh-headless Одноразовый раннер вообще без сервера

Посмотреть реальное дерево конфигурации можно командой:

dsh --profile web --dump-config

Любую выведенную строку можно заменить собственным патчем.

Core-пакеты

Пакет Ответственность Ключ ctx
core/session Append-only журнал SessionEvent и хранилище в памяти ctx.sessions
core/system-prompt Сборка секций промпта и схем инструментов ctx.systemPrompt
core/tools Реестр инструментов и защищённый пайплайн исполнения ctx.tools
core/agent Интерфейс Agent, живой реестр, события agent/* ctx.agents
core/agent-loop Дефолтный драйвер агентного цикла ctx.agentLoop
core/scope Примитив scoped-регистрации для каждого агента библиотека
llm/llm Словарь сообщений и стримов, шов адаптера ctx.llm

Ход выполнения

Шаг (step) — это один запрос к модели плюс вызванные ею инструменты. Ход (turn) — ноль или более шагов: он открывается до получения первого входа и закрывается, когда агенту больше ничего не должно.

Цикл выглядит так: запрос входа → сборка секций промпта и схем инструментов → событие agent/pre-step (можно переписать или отклонить вход) → запрос к модели → стриминг ответа → вызовы инструментов через защищённый пайплайн tools/pre-execute → tools/execute → tools/post-execute → завершение шага. Если инструменты требуют нового запроса или пришёл новый вход — стартует следующий шаг.

Событийная модель делится на три домена:

  • Сессионные события — устойчивые факты, сохраняемые в журнал и переживают перезагрузку
  • Агентные события (agent/*) — inbox, шаги, статусы, запросы — для наблюдения и перехвата работы в реальном времени
  • Capability-события (fs/*, tools/*, telemetry/*) — подключение политики и адаптеров без импорта цикла

Журнал сессий

Журнал сессий — источник контекста, который видит модель. Метод deriveMessages() проецирует историю модели из журнала, а сырые события assistant/chunk сохраняют точность воспроизведения. Форк, resume, транскрипты, телеметрия и персистентность — всё выводится из этого потока.

Ключевой инвариант: model-visible means logged — всё, что попадает в запрос к модели, должно быть восстановимо из журнала.

Capability seams

Шов (seam) — заменяемая capability с тремя ролями: Service Definition (объявление интерфейса), Service Provider (реализация) и Consumer (использование, обычно модельно-ориентированный инструмент). Благодаря швам замена одного провайдера меняет весь продукт: например, файловая система и субпроцессы делят один мир исполнения, поэтому переключение на удалённую песочницу переносит туда же Bash, PTY и LSP — без форков провайдеров.

Куда добавлять новое поведение

События — основные точки расширения. Сессионные события (session/event) — устойчивые факты; агентные события (agent/*) — наблюдение и перехват работы в реальном времени; capability-события (fs/*, tools/*, telemetry/*) — политика и адаптеры:

Цель Механизм
Добавить провайдера модели адаптер на ctx.llm
Добавить инструмент регистрация на ctx.tools, схема попадёт в сборку промпта
Shell-исполнение бэкенд ctx.shell
Фоновые задачи ctx.jobs, инструменты job_*
Доступ к ФС или политика провайдер ctx.fs или события fs/*
Изолировать процессы бэкенд ctx.sandbox
Перехватить запрос или ход события agent/* или tools/*
Добавить модельно-видимый контекст agent.inject()
Сгенерировать заголовок сессии провайдер ctx.sessionTitle
Форк живой сессии ctx.sessions.fork(source, boundary?, childSessionId?)

Пошаговые руководства по добавлению пакетов, инструментов, LLM-адаптеров и Chat-нод собраны в extension cookbook в документации репозитория.

Сообщество и развитие

Проект активно развивается — более 12 000 коммитов. Для обратной связи работают GitHub Discussions и Discord-сообщество. Авторам плагинов рекомендуют добавлять топик dsh-plugin к своему репозиторию для обнаруживаемости.

Лицензия: MIT, сторонние зависимости раскрыты в THIRD_PARTY_NOTICES.md.

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

Источник: https://github.com/deepseek-ai/deepseek-harness