# Agent Harness (обвязка ИИ-агента): что это и как работает

> **Agent Harness** (обвязка ИИ-агента) — это весь код и конфигурация вокруг языковой модели, которые превращают её в агента: цикл «подумал — вызвал инструмент — получил результат», набор инструментов, управление контекстом, права доступа и сохранение сессий. Модель только рассуждает и выбирает следующее действие, а harness выполняет его и возвращает результат.

Короткая формула, которая встречается в документации и README проектов: **агент = модель + harness**. Одна и та же модель в разных обвязках работает по-разному: где-то она редактирует файлы и гоняет тесты, где-то лишь отвечает текстом. Поэтому при выборе инструмента вроде Claude Code, Codex или OpenCode вы выбираете не только модель, но и harness.

## Как это работает {#kak-rabotaet}

В основе любого harness лежит цикл агента (agent loop): модель получает контекст и решает, что делать дальше, harness выполняет действие (читает файл, запускает команду, вызывает API), добавляет результат в контекст, и цикл повторяется, пока задача не решена. В документации Claude Code этот цикл описан как три фазы: сбор контекста, действие и проверка результата. Сама модель действовать не может: у неё нет «рук», только текстовый вывод и [вызов инструментов](/pages/tool-calling-api).

Из чего состоит harness:

- **Инструменты.** Чтение и правка файлов, поиск, выполнение shell-команд, веб-запросы. Расширяются через [MCP](https://modelcontextprotocol.io/) и навыки (skills): например, Goose подключает расширения по MCP, а в deer-flow есть расширяемые skills.
- **Управление контекстом.** Окно контекста ограничено, поэтому harness чистит старые результаты инструментов и сжимает историю (компактизация). Claude Code сначала удаляет старые выводы инструментов, затем при необходимости суммаризирует диалог; постоянные правила советуют хранить в `CLAUDE.md`. Подробнее об этой дисциплине — в статье про [контекст-инжиниринг](/pages/kontekst-inzhiniring-context-engineering).
- **Права и изоляция.** Режимы подтверждения действий, песочницы, контейнеры. В Claude Code есть режимы разрешений от «спрашивать перед каждой правкой» до автоматических, плюс откат файлов через checkpoints. В deer-flow команды можно исполнять локально, в Docker-контейнерах или в Kubernetes. Pi, напротив, не имеет встроенной системы разрешений и запускается с правами пользователя, а для изоляции его предлагают класть в контейнер.
- **Сессии и память.** Сохранение истории, возобновление работы, заметки между сессиями. Anthropic в статье про долгоживущих агентов описывает схему «агент-инициализатор + кодирующий агент»: каждая сессия оставляет артефакты для следующей, потому что новая сессия начинается без памяти о прошлой.
- **Субагенты.** Подчинённые агенты со своим окном контекста: их вызовы инструментов не засоряют основной контекст, а в ответ приходит краткая сводка.

## Чем отличается от модели и от фреймворков {#otlichiya}

**От модели.** Модель — это веса, доступные через API. Harness — программа на вашей стороне (или на стороне сервиса), которая вызывает модель, исполняет её решения и решает, что именно модель «видит» на каждом шаге.

**От фреймворков.** Фреймворки вроде LangChain дают строительные блоки: цепочки, графы, коннекторы, и из них вы собираете систему сами (см. [фреймворки для LLM](/pages/llm-frameworks-langchain-llamaindex) и [Orchestration Framework](/pages/orchestration-framework)). Harness — это уже собранный и настроенный рантайм с готовым циклом, инструментами и политиками. Граница условна: LangChain сам называет harness'ом свой готовый стек Deep Agents, а [оркестрация агентов](/pages/orkestraciya-ii-agentov) и [мультиагентные системы](/pages/multiagentnaya-sistema) часто работают поверх harness.

## Почему от harness зависит качество {#kachestvo}

При той же модели результат меняют:

- набор и описания инструментов: плохо описанный инструмент модель вызывает неверно;
- то, что попадает в контекст и что из него вытесняется;
- проверки: запуск тестов и линтеров после правок возвращает модели ошибки, и она их исправляет;
- права: слишком жёсткие дают бесконечные запросы подтверждений, слишком мягкие — риск необратимых действий.

## Примеры {#primery}

| Harness | Что это |
|---|---|
| [Claude Code](/pages/vibe-coding-claude-code) | Агент Anthropic для терминала; в документации сам назван «agentic harness» |
| [Codex](/pages/vibe-coding-codex) | Кодирующий агент OpenAI, запускается локально |
| [OpenCode](/pages/vibe-coding-opencode) | Open-source кодирующий агент |
| [Pi](https://github.com/earendil-works/pi) | Минимальный расширяемый harness: расширения, skills, шаблоны промптов; субагентов и plan mode в комплекте нет |
| [Goose](https://github.com/block/goose) | Универсальный open-source агент (десктоп, CLI, API), 15+ провайдеров, расширения по MCP |
| [deer-flow](https://github.com/bytedance/deer-flow) | «Super agent harness» от ByteDance: субагенты, память, песочницы, skills, задачи на минуты и часы |
| [ruflo](https://github.com/ruvnet/ruflo) | «Мета-harness» поверх Claude Code и Codex: рои агентов, память, защитные правила |

## Связь с RouterAI {#svyaz-s-routerai}

Большинство harness умеет работать с несколькими провайдерами: для этого достаточно указать другой Base URL. RouterAI даёт единый API: `https://routerai.ru/api/v1` для OpenAI-совместимых клиентов и `https://routerai.ru/api` для Anthropic Messages API. Ключ и оплата в рублях одни, работает из России без VPN, а [каталог моделей](/models) общий для всех инструментов. Подключение конкретных harness описано в гайдах: [Claude Code](/pages/vibe-coding-claude-code), [Codex](/pages/vibe-coding-codex), [OpenCode](/pages/vibe-coding-opencode), [OpenClaw](/pages/openclaw-web-telegram-routerai-claude-gpt-5-deepseek-mistral), [DeepSeek Harness](/pages/deepseek-harness-routerai).

### Что менять в harness, а что в модели

Менять **модель** (одной строкой в настройках, без смены harness), когда не хватает качества рассуждений, нужна экономия или скорость. Менять **harness**, когда проблема не в рассуждениях: агент теряет контекст, не умеет запускать тесты, не видит нужный инструмент, нет изоляции.

Переход между моделями возможен, если новая модель поддерживает вызов инструментов: проверка запросом с `tools` через RouterAI вернула `tool_calls` и у `anthropic/claude-sonnet-5.5`, и у `deepseek/deepseek-v4-flash`. Актуальный список смотрите в [каталоге](/models).

| Задача | Пример модели из каталога |
|---|---|
| Основная работа агента | `anthropic/claude-sonnet-5.5` |
| Быстрые и недорогие шаги, субагенты | `anthropic/claude-haiku-5.5`, `deepseek/deepseek-v4-flash` |
| Альтернатива от OpenAI | `openai/gpt-5.5` |

Цены на токены зависят от модели и смотрятся в каталоге.

## Что почитать {#chto-pochitat}

- [Как работает Claude Code](https://code.claude.com/docs/en/how-claude-code-works): цикл, инструменты, контекст и разрешения
- [Effective harnesses for long-running agents](https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents), Anthropic Engineering
- [The Anatomy of an Agent Harness](https://www.langchain.com/blog/the-anatomy-of-an-agent-harness), LangChain
- [AI Agent](/pages/ai-agent) и [Tool Calling API](/pages/tool-calling-api) на нашем сайте
