AI-разработка

Что изменил DeepSeek Harness? От AI Agent Framework к инфраструктуре Coding Agent нового поколения

Около 15 мин

В августе 2026 DeepSeek выложил в open source DeepSeek Harness (dsh). Это не новая модель и не ещё одно chain API в духе LangChain. Официально агент разделён: модель — душа; harness — всё, что позволяет модели видеть окружение, вызывать инструменты и продолжать работу. Разбираем, что меняет этот сдвиг — и почему JSON Schema, события сессии и деревья конфигурации вдруг важнее более длинного prompt.

Кратко заранее

Слой Одной строкой Что вы поддерживаете
Agent Framework Оркестрирует prompts, инструменты и шаги в коде приложения Графы вызовов Python/TS
Agent Harness Runtime, который монтирует tools, FS, sandbox и loop как plugins Profile / Bundle / SessionEvent
DeepSeek Harness MIT open-source dsh на Cordis: everything is a plugin Сервисы ctx.* + JSON tool schemas

Держите разрез: Framework поставляет цепочки; Harness поставляет заменяемый хост. Модели меняются; seams и JSON-контракты должны оставаться.

Что такое DeepSeek Harness?

DeepSeek Harness (dsh) — open-source runtime, который связывает языковую модель с реальным миром: файловой системой, терминалом, браузером и инструментами, которые вы монтируете. Это не новый релиз модели. Официальный разрез прост: модель — душа; harness — всё, что даёт модели видеть окружение, вызывать инструменты и продолжать работу между ходами.

Слоган дизайна — Everything is a Plugin. Модели, инструменты, sandboxes, sessions, storage, Agent Loop и даже UI загружаются как plugins Cordis. Вы пересобираете агента в конфигурации, а не форкаете монолитный класс.

  • Связывает LLM с FS, терминалом и web через заменяемые plugins
  • Пишет каждый видимый модели вход в append-only Session Log
  • Открывает инструменты через контракты JSON Schema (inputSchema), а не только прозой в prompt

Если вы всё ещё схлопываете «чат-бот», «модель с Function Calling» и «многошаговый runtime» в одно слово, начните с Что такое AI Agent?. Эта статья про harness-половину того стека.

От Agent Framework к Agent Harness

Традиционный код Agent Framework обычно прячет Agent Loop внутри одного класса-оркестратора: prompts, dispatch инструментов, retries и память делят один граф вызовов. Расширить — значит править продуктовый код.

Harness переворачивает границу. Loop, tools, sandbox и session становятся заменяемыми plugins за Capability Seams. Продуктовые команды собирают Profile и Bundle; они не переписывают ядро, чтобы добавить поиск по репозиторию.

  • Привилегированное ядро vs plugins: frameworks жёстко кодируют оркестрацию; harnesses монтируют и снимают способности.
  • История чата vs Session Log: frameworks хранят сообщения диалога; harnesses дописывают типизированные события, которые модель реально видела.
  • Sandbox в коде vs seams: frameworks вшивают политику FS/shell в приложение; harnesses открывают Definition / Provider / Consumer.
  • Prompt как продукт vs композиция config: frameworks поставляют более длинные system prompts; harnesses — деревья cordis.yml и JSON-контракты.

Сдвиг важен, потому что модели будут меняться и дальше. Seams и schemas должны пережить любой vendor snapshot.

Plugins Cordis и cordis.yml

DeepSeek Harness работает на Cordis. Plugins монтируются и снимаются обратимо; зависимости и сервисы идут через ctx.*. Форма продукта живёт в конфигурации, а не в приватном форке dsh.

Типичный patch меняет адаптер модели и добавляет инструмент, не трогая Agent Loop:

# cordis.patch.yml — swap model + add a tool
plugins:
  - name: llm/deepseek
    config:
      model: deepseek-v4-pro
  - name: tools/my-repo-search
    config:
      root: ./src

В этом практический смысл «everything is a plugin»: смените Bundle, перезапустите хост, оставьте стабильными формат Session Log и tool schemas.

Capability Seams

Capability Seam — способ, которым plugins сотрудничают, не импортируя внутренности друг друга. Три роли встречаются снова и снова:

  1. Definition: объявить контракт сервиса (например, интерфейс bash-раннера).
  2. Provider: реализовать контракт (локальный shell, удалённый sandbox, mock).
  3. Consumer: вызвать сервис из Agent Loop или другого инструмента, не зная, какой provider победил.

Сами инструменты — seams с JSON-лицом. Модель видит только имя, описание и inputSchema — тот же диаметр, что у Function Calling и MCP.

Инструмент правки файла выглядит так:

{
  "name": "str_replace_editor",
  "description": "Edit a file by exact string replacement",
  "inputSchema": {
    "type": "object",
    "properties": {
      "path": { "type": "string" },
      "old_str": { "type": "string" },
      "new_str": { "type": "string" }
    },
    "required": ["path", "old_str", "new_str"],
    "additionalProperties": false
  }
}

Считайте эту Schema продуктовым кодом. MCP Tool Schema vs Function Calling объясняет границу протокола; Почему ИИ нужен JSON Schema — почему диаметр должен жить в git, а не только в prompt.

Session Log: восстановить, что видела модель

Каждый запуск дописывает Session Log: system prompts, рассуждения, tool_calls, результаты инструментов, планирование subagents и инъекции контекста. Resume, fork, search и replay читают один и тот же поток событий.

Результат инструмента — типизированное событие, а не абзац в чат-UI:

{
  "type": "tool/result",
  "tool_call_id": "call_7f2a",
  "name": "bash",
  "ok": true,
  "content": {
    "stdout": "passed 12",
    "exit_code": 0
  },
  "ts": "2026-09-11T06:12:04.221Z"
}

Когда coding agent «вдруг забыл» падающий тест, откройте лог до переписывания prompt. форматируйте и проверяйте синтаксис событие локально, затем JSON Diff с вчерашней траекторией. Не вставляйте секреты на публичный JSON-сайт.

Profile, Bundle и Agent Loop

У композиции runtime есть несколько именованных слоёв:

  • Profile: как вы запускаете хост (web UI vs headless).
  • Bundle: стопка plugins, которая задаёт tools, sandboxes и поведение loop.
  • Turn / step: один ход пользователя может содержать много tool-шагов; события остаются гранулярными.
  • События agent/*: lifecycle-хуки, которые другие plugins наблюдают, не патча loop.

Когда слои явны, смена провайдера модели — смена config, а не перепись продуктовой оркестрации.

Четыре режима: Standard, Code, Minimal, Creation

dsh поставляет несколько runtime-режимов, чтобы менять поверхность инструментов без форка репозитория:

Режим Для чего
Standard Полный coding agent: правка, shell, поиск, skills, planning, subagents, workflows
Code Инструменты Standard через Code Mode SDK — модель собирает многошаговые ops в одной TypeScript-программе
Minimal Поверхность из двух инструментов (bash + str_replace_editor) для жёстких бенчмарков
Creation Осмотр runtime, эксперименты с plugins Cordis в памяти, авторство новых presets

Берите самый маленький режим, который отвечает на ваш вопрос. Minimal Mode часто хватает, чтобы оценить модель; Creation Mode — для разработчиков harness, не для недоверенных пользователей.

Что значит «инфраструктура Coding Agent нового поколения»

Называть dsh инфраструктурой — не маркетинг. Это четыре инженерные привычки:

  • Capability Seams вместо приватных импортов между tools и loop
  • Fail-closed безопасность вокруг монтирования FS, shell и сети
  • JSON-контракты для аргументов инструментов и событий сессии
  • Воспроизводимые Session Logs вместо невоспроизводимых скриншотов чата

Эти привычки совпадают с тем, как уже устроены production-workflow агентов. workflow агентов с JSON Schema проецирует ту же идею на Schema-гейты между хопами.

Framework vs Harness одним взглядом

Таблица на случай вопроса, нужен ли вам ещё «ещё один Agent Framework»:

Измерение Agent Framework Agent Harness
Расширение Править оркестратор / наследовать класс Смонтировать plugin / патч cordis.yml
Наблюдаемость Логи и трассы, прикрученные сбоку Session Log — главный артефакт
Смена backend Переписать адаптеры в коде приложения Заменить Provider за seam
Граница продукта Код цепочек и есть продукт Schemas, seams и Bundles — продукт

Frameworks по-прежнему удобны для прототипа. Harnesses нужны, когда хост должен переживать смену моделей и сторонние инструменты.

Частые ошибки

  • Считать DeepSeek Harness новой моделью. dsh — runtime-инфраструктура. Качество модели и дизайн harness — разные ручки.
  • Форкать весь репозиторий ради одного инструмента. Напишите Cordis plugin и JSON inputSchema.
  • Пропускать Schema-валидацию аргументов. tool_calls всё равно нуждаются в проверке на хосте до эффектов shell или FS.
  • Игнорировать Session Log. Если нельзя восстановить, что видела модель, coding agent не отладить.
  • Запускать Creation Mode в недоверенной среде. Он для осмотра и сборки plugins — держите его вне общих production-хостов.

FAQ

Чем это отличается от Claude Code и других coding agents?

Продуктовые coding agents поставляют opinionated Bundle. DeepSeek Harness открывает заменяемый хост: plugins, seams, Session Log и режимы. Можно собрать опыт вроде Claude Code — или гораздо тоньше — без форка закрытого runtime.

Нужна ли модель DeepSeek, чтобы пользоваться dsh?

Нет. Адаптер модели — plugin. Модели DeepSeek — естественный выбор, но идея harness не привязана к вендору: смените Provider, оставьте seams и schemas.

Обязателен ли Cordis?

Для DeepSeek Harness «как поставляется» — да, Cordis это ядро plugins. Идеи seam и Session Log всё равно можно перенести на другой хост.

Какова роль JSON здесь?

inputSchema инструментов, события сессии и деревья config — стабильные контракты. Function Calling и MCP — два способа проецировать одну Schema. Prompt не источник истины.

Готово ли это к production?

Это developer preview. Ждите breaking changes. Используйте сейчас, чтобы проектировать plugins и контракты; пинните осторожно, прежде чем ставить на on-call.

Вывод

DeepSeek Harness не поставил «более умный DeepSeek». Он поставил вторую половину агента: заменяемый хост, где tools, sandboxes, loops и UI — plugins.

Если вы строите coding agents в 2026, сначала пишите schemas и Capability Seams. Модели будут сменяться. Session Log и JSON-контракты — нет.

Дальше по теме

Журнал: первая публикация