Company harness для агента: куда встроить веб-поиск

Company harness - обвязка вокруг модели: через неё агент работает с инструментами компании. Веб-поиск живёт в слое инструментов, а не в промпте и не в памяти. Ниже схема размещения и код подключения срезAI по MCP. Текст поста LangChain про пять компонентов я прочитать не смог, об этом тоже сказано.

Виталий Болгар4 мин чтенияcompany harnessDeep AgentsLangChainархитектура агентапоиск по Рунету
Company harness для агента: куда встроить веб-поиск
Схема ИИ-агента: модель, память, планирование и внешние инструменты вокруг неё
Внешние инструменты - отдельный блок вокруг модели; именно сюда подключается веб-поиск.

Что известно про пять компонентов harness

В ленте блога LangChain есть пост под названием The five components of building a "company harness" от 24 октября 2026 года, авторы H. Chase и C. Broekhuizen.

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

Почему внутренний harness упирается во внешние данные

Внутренние знания компании лежат в вики, тикетах и репозиториях. Всё остальное агент берёт снаружи: цены конкурентов, реестры, новости, документацию чужих сервисов.

Если harness не даёт для этого штатного канала, разработчики вшивают поиск в промпт или в отдельный скрипт. Такой скрипт сложно ограничивать по числу вызовов, логировать и заменять. Для русскоязычных задач добавляется своя проблема: общие поисковые API хуже знают российские реестры и СМИ.

В каком слое harness поселить поиск

Harness удобно разложить по функциям. Схема ниже моя, не из поста LangChain.

СлойЧто в нём живётПодходит ли для веб-поиска
ИнструкцииСистемный промпт, правила компанииНет: только политика ("когда искать"), не сам поиск
ИнструментыMCP-серверы, внутренние APIДа: основное место, вызов по решению агента
Память и контекстФайлы, суммаризация, выгрузка результатовЧастично: сюда уходит найденное, а не сам вызов
ОркестрацияСубагенты, расписанияЧастично: отдельный субагент-исследователь
НаблюдаемостьТрейсы, эвалы, лимитыНет: здесь считают вызовы, но не выполняют их
Встроенный поиск моделиНативный web search провайдераПроще в подключении, но без контроля выдачи и без фокуса на Рунете

Нативный поиск модели проще в подключении, потому что включается одним флагом, но проигрывает там, где нужен контроль над числом вызовов, чтением страниц и языком выдачи.

Как подключить срезAI к Deep Agents по MCP

Агент получает инструменты web_search, read_url, extract, deep_research и image_search. Дальше он сам решает, какой вызвать. Заголовок авторизации сверьте с документацией: ключ берётся в личном кабинете.

python
import asyncio
import os from deepagents import create_deep_agent
from langchain_mcp_adapters.client import MultiServerMCPClient async def main(): client = MultiServerMCPClient( { "srezai": { "transport": "streamable_http", "url": "https://srezai.ru/docs "headers": { "Authorization": "Bearer " + os.environ["SREZAI_API_KEY"] }, } } ) tools = await client.get_tools() agent = create_deep_agent( tools=tools, system_prompt=( "Для фактов о российских компаниях и ценах сначала вызывай web_search. " "Страницу читай через read_url только если сниппета мало. " "Не делай больше пяти поисковых вызовов на один вопрос." ), ) result = await agent.ainvoke( {"messages": [{"role": "user", "content": "Какие тарифы у Яндекс Облака на GPU?"}]} ) print(result["messages"][-1].content) asyncio.run(main())

Пять вызовов в промпте - лимит мягкий: модель может его нарушить. Жёсткий ставьте на стороне harness, в оркестрации или в трейсах.

Регистрация даёт 100 ₽ - примерно 1000 запросов, чтобы отладить агента.

Подключить срезAI

Как не засорить контекст найденным

  • Начинайте с web_search без полного текста страниц: заголовки и ссылки стоят в контексте дёшево.
  • Когда нужны два-три значения, зовите extract со схемой вместо чтения страницы целиком.
  • Крупные результаты выгружайте в файл и передавайте субагенту. Паттерн Retrieve, Offload, Delegate описан в блоге.

Шаг с лимитом вызовов легко пропустить. Без него агент в нашем опыте охотно повторяет один и тот же поиск с чуть изменённой формулировкой.

Что не сработает

Схема выше не заменит чтение оригинального поста: если в нём пять компонентов выделены иначе, слои придётся переразложить.

Поиск не поможет, если данных нет в открытом вебе: внутренние документы остаются за собственным retrieval компании. На бенчмарке GAIA срезAI занимает 2-е место с 87,3 %, Tavily впереди с 91,2 %. Если задача англоязычная и важна точность, учитывайте эту разницу.

Связанные материалы блога

Подключение срезAI к Managed Deep Agents описано в статье про Exa Agent Ultra. Там же рассказано про extract и рендер страниц на нашей стороне. Здесь я этого не повторяю.

Что такое company harness?

Обвязка вокруг модели. Через неё чат с моделью превращается в агента, который работает с инструментами и данными компании.

Где в harness подключать веб-поиск?

Среди инструментов, как MCP-сервер. В промпт идёт только правило: когда и как часто искать.

Какой адрес MCP у срезAI?

Это MCP-эндпоинт срезAI. Ключ создаётся в личном кабинете, формат заголовка описан в документации.

Сколько стоит поиск при отладке harness?

0,10 ₽ за запрос. Регистрация даёт 100 ₽, то есть примерно 1000 запросов. Бесплатный план ограничен 200 запросами в сутки.

Можно ли поставить срезAI без Deep Agents?

Можно: есть интеграции с LangChain, n8n и Claude Desktop, плюс REST API. Список на странице интеграций.

Свой веб-доступ для агента: поиск, чтение страниц и извлечение данных по одному ключу.

Читайте также