Что такое агентная обвязка и как она работает
Узнайте, чем агентная обвязка отличается от языковой модели. Разбираем архитектуру цикла, управление инструментами, права доступа и состояние сессии для создания AI-агентов.
Что такое агентная обвязка
Агентная обвязка — это программа, которая работает поверх языковой модели и превращает её в агента. Она содержит цикл, который постоянно обращается к модели, определения инструментов, доступных модели для вызова, правила разрешений, определяющие выполнение этих вызовов, состояние сессии, сохраняющееся между итерациями, и рабочую директорию, где выполняются задачи. Модель внутри этой обвязки можно заменить.
Последнее предложение — самое важное. Сама по себе модель отвечает на вопрос и забывает о вас. Обвязка спрашивает модель, что делать дальше, выполняет запрошенную моделью команду, возвращает результат и спрашивает снова. Именно эту повторяемость имеют в виду, когда говорят «агент». Если терминология всё ещё кажется неясной, разница между AI-агентом, LLM и ассистентом поможет прояснить понятия перед выбором инструмента.
Инструментарий — это не модель
Эти понятия часто путают, так как вендоры выпускают их под одним брендом.
dsh и DeepSeek — это разные продукты. DeepSeek Harness, опубликованный на github.com/deepseek-ai/deepseek-harness 13 августа 2026 года под лицензией MIT, представляет собой программу на Node, которую вы устанавливаете на машину. Модели DeepSeek — это веса, доступные через API (интерфейс прикладного программирования). Укажите dsh на модель от другого вендора, и она продолжит работать, так как инструментарию нужно лишь то, что принимает сообщения и возвращает вызовы инструментов.
Claude Code и Claude — это такая же пара. Claude Code — это инструментарий: терминальная программа с циклом работы, системой разрешений, а также инструментами для работы с файлами и оболочкой. Claude — это семейство моделей, которое программа вызывает по умолчанию. Codex и Gemini CLI разделены таким же образом.
Вот тест, который позволяет определить это в любом случае. Вы устанавливаете инструментарий. Вы вызываете модель. Если у программы есть версия на вашем диске и файл конфигурации в домашней директории, это инструментарий. Если это строка внутри файла конфигурации, например deepseek-chat, то это модель.
Что на самом деле делает цикл
Один виток цикла обвязки выглядит следующим образом. Читайте внимательно, так как почти все различия между инструментами обвязки кроются именно в этих пяти шагах.
- Обвязка отправляет текущую историю диалога вместе со списком определений инструментов в модель.
- Модель отвечает текстом или запросом на вызов одного из этих инструментов.
- Обвязка проверяет запрос на соответствие правилам доступа и либо выполняет его, либо останавливается, чтобы запросить ваше подтверждение.
- Обвязка запускает инструмент, захватывает вывод и код завершения, а если вывод слишком длинный — обрезает его.
- Обвязка добавляет результат в историю диалога и возвращается к шагу 1.
Шаг 3 — это то, чем инструменты обвязки больше всего различаются в повседневной работе. Обвязка, которая запрашивает подтверждение перед каждой командой, безопасна, но утомительна. Обвязка, которая никогда не спрашивает, рано или поздно выполнит деструктивную команду по неверному пути, выбранному моделью. В каждом серьезном инструменте сейчас есть промежуточный вариант: список разрешенных команд, которые выполняются без подтверждения, и запрос для всех остальных действий.
Шаг 1 — это то, где кроются остальные различия. Диалог растет с каждым витком, а у модели фиксированное окно контекста, поэтому обвязка должна решать, что отбросить, что сократить, а что записать в файл, чтобы прочитать позже. Именно это решение в основном определяет, почему два разных инструмента обвязки, управляющие одной и той же моделью, выдают разное качество работы.
Большинство инструментов обвязки сейчас подключают внешние инструменты через MCP (model context protocol) — стандартный способ предоставления инструмента любой обвязке, которая его поддерживает, поэтому одна интеграция работает сразу с несколькими инструментами. В Запуск MCP-серверов на VPS рассматривается эта сторона вопроса.
Agent harness против agent framework
Этот вопрос возникает каждый раз, когда появляется новый harness, и ответы на него противоречивы, отчасти из-за разногласий среди самих вендоров. Вот версия, которая выдерживает критику.
Framework — это библиотека, которую вы импортируете. Вы пишете цикл, решаете, когда обращаться к модели, и самостоятельно обрабатываете результаты работы инструментов. LangChain — известный пример: вы получаете строительные блоки и собираете агента в коде.
Harness — это программа, которую вы запускаете. Цикл уже написан, инструменты уже существуют, модель разрешений уже имеет настройки по умолчанию. Вы получаете работающего агента с первой команды и настраиваете его в процессе работы.
Тест на установку обычно расставляет всё по местам. Если вы устанавливаете продукт, а затем пишете код — это framework. Если вы устанавливаете продукт, а затем начинаете с ним взаимодействовать — это harness.
Граница между ними действительно спорная, и самое явное доказательство — документация самого LangChain. По состоянию на август 2026 года она описывает Deep Agents как «автономный, готовый к работе» (batteries-included) framework, построенный на базе LangGraph, в то время как репозиторий langchain-ai/deepagents называет себя «готовым к работе agent harness». Оба описания верны. Deep Agents — это Python SDK (software development kit), который вы импортируете, поэтому тест на установку классифицирует его как библиотеку, но он поставляется с таким набором стандартного поведения, что люди используют его как harness. В августе 2026 года Microsoft выпустила harness и хостинг агентов в общий доступ, что доказывает: теперь это не просто жаргон, а категория продуктов.
Поэтому задавайте вопрос, который поможет определить ваш объем работы. Если вы пишете цикл, вы отвечаете за него: за повторные попытки, обрезку контекста, запросы разрешений и логирование событий. Если цикл поставляется в готовом виде, вы принимаете чужие решения по всем этим пунктам: это гораздо быстрее на старте, но сложнее в изменении в дальнейшем.
Чем harness отличается от окна чата
Окно чата и harness отображают вывод модели. Разница заключается в том, на чьем компьютере выполняются вычисления. В окне чата любой код, запускаемый моделью, выполняется внутри изолированной среды (sandbox) поставщика, работает с загруженными вами файлами и исчезает после завершения сессии. Harness запускает инструменты на той машине, где вы его активировали, от имени пользователя, который его запустил, используя ваши реальные файлы и ваши реальные учетные данные в своей среде.
В этих двух предложениях заключены все преимущества и все риски. Агент наконец-то может выполнять работу. Агент также может эту работу удалить.
Инструменты, которые реально используются
Этот список намеренно датирован 19 августа 2026 года. Категория развивается еженедельно, и любые обзоры быстро устаревают.
- Claude Code и Codex — это проприетарные инструменты. Они ориентированы на работу в терминале, по умолчанию привязаны к моделям своих разработчиков и обладают наиболее проработанной системой управления правами доступа. В статье Сравнение Claude Code, Cursor, Codex и Copilot приводится их подробный разбор.
- DeepSeek Harness (
dsh) распространяется по лицензии MIT и построен на одной идее: всё является плагином, поэтому модели, инструменты, сессии, изолированные среды (sandboxes) и пользовательский интерфейс — это взаимозаменяемые компоненты. На 19 августа 2026 года, через шесть дней после публикации, проект набрал около 166,800 звезд на GitHub. - Hermes от Nous Research — это скорее автономный агент общего назначения, чем инструмент для написания кода. Он был выпущен под лицензией MIT в феврале 2026 года и хранит свои воспоминания и навыки в локальной базе данных SQLite на вашем компьютере. В руководстве Самостоятельный хостинг Hermes на VPS описан процесс его настройки.
- Omnigent — это мета-инструмент: он управляет другими инструментами, включая Claude Code и Codex, через единый API с общими сессиями, лимитами расходов и изолированной средой на уровне операционной системы. В статье Omnigent как мультиагентный инструмент рассказывается о преимуществах такого подхода.
- OneCLI — это изолированный инструмент для команд, построенный вокруг шлюза, который внедряет реальные учетные данные в исходящие запросы, поэтому сам агент видит только ключи-заполнители.
Быстрый старт dsh выполняется одной командой, и её запуск — самый быстрый способ понять, что представляет собой такой инструмент. Для работы на машине требуется Node.js.
npx @deepseek-ai/dsh webЭта команда запускает веб-интерфейс (user interface) на http://127.0.0.1:3080. Прочитайте README, прежде чем использовать его в работе, так как dsh позиционируется как версия для разработчиков (developer preview), и в документации прямо указано, что возможны изменения, нарушающие обратную совместимость. В статье Запуск DeepSeek Harness на VPS описана установка на сервер, а в почему этот адрес начинается с 127.0.0.1 объясняется, почему по умолчанию используется loopback-интерфейс.
Маршрутизаторы располагаются над обвязкой
Модельный маршрутизатор — это локальный прокси-сервер между обвязкой и API провайдера. Claude Code Router является типичным примером: он по умолчанию привязывается к 127.0.0.1:3456, принимает запросы, которые Claude Code отправил бы своему поставщику, и перенаправляет их выбранному вами провайдеру. Обвязка не «знает» о том, что что-то изменилось.
Маршрутизаторы существуют, так как модели взаимозаменяемы, поэтому они служат хорошим подтверждением основного тезиса этой статьи. Они также концентрируют риски, поскольку прокси-сервер видит каждый запрос и хранит ключи всех провайдеров. Относитесь к ним как к инфраструктуре, а не как к удобному инструменту. Где обвязка хранит свои API-ключи и настройки моделей — это та же проблема, но на уровень ниже.
Что меняется при запуске инструмента на VPS
При переносе работы с локального ноутбука на арендованный сервер меняются четыре аспекта.
Процесс продолжает работу после закрытия крышки ноутбука. Длительная задача не прервётся из-за поездки или разрядки аккумулятора. Запустите её внутри tmux и отсоединитесь:
tmux new -s agent
# start the harness, then press Ctrl-b and then d to detach
tmux attach -t agentДля задач, которые должны возобновляться после перезагрузки, пользовательский сервис (user service) подходит лучше, чем сессия терминала:
loginctl enable-linger $USER
systemctl --user status my-agent.serviceloginctl enable-linger — это то, что часто упускают из виду. Без этой настройки systemd завершает пользовательские сервисы сразу после закрытия последней SSH-сессии. В результате агент прекращает работу при выходе из системы, не выводя сообщений об ошибках. В запуске dsh в фоновом режиме через systemd приведён пример файла юнита. Как только на сервере запущена одна сессия, вторая не требует дополнительных ресурсов, а два экземпляра Claude Code на одном хосте могут обмениваться сообщениями. Таким образом, сессия, запущенная утром, может передать задачу другой без вашего участия.
Сервер хранит ваши ключи. Ключ провайдера теперь находится в конфигурационном файле на сервере. Проверьте права доступа к нему:
ls -l ~/.configЛюбой процесс, запущенный от имени вашего пользователя, может прочитать этот файл, включая самого агента и всё, что он запускает.
Сервер имеет доступ к другим вашим машинам. VPS в той же частной сети, что и другие ваши устройства, открывает агенту маршрут к ним. В этом и заключается основная цель, но это также определяет радиус поражения в случае компрометации.
Сервер доступен отовсюду. Большинство инструментов предоставляют веб-интерфейс, и обычно они привязываются к loopback не просто так. Проверьте настройки:
ss -tlnp | grep 3080127.0.0.1:3080 означает, что подключиться может только сам сервер. 0.0.0.0:3080 означает, что доступ открыт любому, кто знает адрес. Получайте доступ к интерфейсу через SSH-туннель вместо изменения адреса привязки:
ssh -N -L 3080:127.0.0.1:3080 you@your-serverЗатем откройте http://127.0.0.1:3080 в браузере на своём ноутбуке. Трафик передаётся внутри SSH-сессии, поэтому в интернет не выставляется ничего лишнего.
Каждый из этих пунктов также является аргументом в пользу безопасности
Прочитайте эти четыре свойства еще раз с точки зрения злоумышленника.
Агент работает без присмотра, поэтому никто не заметит момент, когда модель неверно интерпретирует путь. Он хранит ваши ключи, поэтому один доступный для чтения конфигурационный файл — это доступ ко всей вашей учетной записи провайдера. Он имеет доступ к другим вашим машинам, поэтому prompt injection (инструкции, скрытые на веб-странице или в файле, который читает агент) теперь открывает путь к хосту вашей базы данных. Он доступен отовсюду, поэтому веб-интерфейс, привязанный к 0.0.0.0 без пароля — это командная оболочка, открытая для всего интернета.
Решение в каждом случае скучное, но оно всегда одинаковое. Предоставьте агенту его собственную непривилегированную учетную запись вместо вашей:
sudo adduser --disabled-password --gecos "" agentОставьте веб-интерфейс на loopback и подключайтесь к нему через SSH. Предоставьте агенту минимально необходимые права, которые позволяют ему выполнить задачу; подробнее об этом в хранении секретов вне AI-агентов. Для всего, что работает без вашего присмотра, одноразовая машина лучше, чем тщательно настроенная: запуск агентов для программирования в одноразовой VM и безопасный запуск Claude Code на VPS — оба этих подхода следуют данному принципу.
Нужен ли вам агентский каркас?
Если ваша работа заключается в выполнении одного запроса за раз, достаточно обычного окна чата, а каркас лишь добавит цикл, который придется контролировать. Каркас начинает окупаться, когда задача требует множества шагов при работе с реальными файлами или когда она должна продолжать выполняться, пока вы спите.
Большинство инструментов в этой категории еще молоды. dsh в своем README по состоянию на август 2026 года указывает статус developer preview, а остальные развиваются настолько быстро, что конфигурационный файл, написанный сегодня, может потребовать правок уже в следующем месяце. Это повод сохранять настройки минималистичными и воспроизводимыми, а также записывать все внесенные изменения. Та же сдержанность полезна и внутри цикла, где навык, подталкивающий агента к минимально возможным рабочим изменениям оставляет вам diff, который можно прочитать по завершении автоматического запуска. Начните с одного каркаса на одном сервере, дайте ему одну задачу и один ключ с ограниченными правами, и расширяйте доступ только после того, как эта первая задача станет для вас скучной в течение недели. Self-hosted агенты, которые стоит использовать сегодня — подходящее место для выбора первого инструмента.
FAQ
Что такое агентная обвязка (agent harness) простыми словами?
Это программа, которая окружает модель. Модель генерирует текст и запросы на использование инструментов. Обвязка поддерживает цикл взаимодействия: она отправляет запросы, выполняет инструменты, которые запрашивает модель, контролирует правила запуска инструментов без подтверждения, а также сохраняет состояние сессии и файлы между итерациями. Если заменить модель, обвязка продолжит работу — это главный признак того, что они являются независимыми компонентами.
Claude Code — это модель или обвязка?
Claude Code — это обвязка. Это терминальная программа с циклом работы, системой разрешений и встроенными инструментами для работы с файлами и оболочкой. Claude — это семейство моделей, к которым программа обращается по умолчанию. Такое же разделение применимо к DeepSeek Harness (dsh): это Node-программа, которую вы устанавливаете, и модели DeepSeek, доступные через API. Обвязку вы устанавливаете на машину. Модель вы вызываете по сети.
В чем разница между агентной обвязкой и агентным фреймворком?
Фреймворк — это библиотека, которую вы импортируете и используете в своем коде; вы сами управляете циклом, повторными попытками и обработкой контекста. Обвязка — это готовая программа, которую вы запускаете; все механизмы в ней уже настроены по умолчанию, и вы лишь меняете конфигурацию вместо написания кода. На практике грань размыта: Deep Agents от LangChain — это SDK, который в собственном репозитории по состоянию на август 2026 года называют агентной обвязкой «все включено». Задайте себе вопрос: будете ли вы писать цикл обработки самостоятельно? Ответ на него определит, какой термин подходит для вашей ситуации.
Нужен ли мне VPS для запуска агентной обвязки?
Нет. Каждая упомянутая здесь обвязка работает на обычном ноутбуке. Использование сервера меняет четыре аспекта: агент продолжает работать, когда вы закрываете крышку ноутбука; ключи хранятся на машине, которая всегда включена; агент получает доступ к другим вашим серверам; вы можете вернуться к одной и той же сессии с любого устройства. Каждый из этих пунктов требует внимания к безопасности, поэтому создайте для агента отдельную учетную запись пользователя и привяжите любой веб-интерфейс к 127.0.0.1.
Могу ли я использовать другую модель внутри той же обвязки?
Обычно да, это определяющее свойство обвязки. Большинство из них позволяют указать имя модели и базовый URL в конфигурации, поэтому переключение на другого провайдера требует лишь правки настроек, а не переписывания кода. Если обвязка не поддерживает это напрямую, между ней и провайдером можно установить локальный маршрутизатор, такой как Claude Code Router, который будет транслировать запросы, по умолчанию привязываясь к 127.0.0.1:3456. Будьте осторожны с таким прокси, так как он видит каждый промпт и хранит все ключи.