Что изменил DeepSeek Harness? От AI Agent Framework к инфраструктуре Coding Agent нового поколения
В августе 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 сотрудничают, не импортируя внутренности друг друга. Три роли встречаются снова и снова:
- Definition: объявить контракт сервиса (например, интерфейс bash-раннера).
- Provider: реализовать контракт (локальный shell, удалённый sandbox, mock).
- 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-контракты — нет.
Дальше по теме
- Что такое AI Agent? Tool Calling и JSON Runtime-цикл vs чат-бот vs Function Calling
- Почему ИИ нужен JSON Schema Schema как контракт исполнения
- MCP Tool Schema vs Function Calling Где живёт JSON инструментов в протоколах
- JSON Schema в workflow AI-агентов Гейты между многошаговыми хопами
- Локальные инструменты JSONSort Формат, проверка, Diff в браузере
- Все статьи Ещё заметки о JSON и AI-разработке
Журнал: первая публикация