Глава 12 · Тур по реальным harness

Что под капотом: Claude Code, Cursor, Manus

Одиннадцать предыдущих глав разбирали компоненты harness по одному: цикл, инструменты, контекст, память, сессии, sub-агенты, права, hooks, streaming, деньги. Теперь, когда вы понимаете части, посмотрим на три зрелых системы, которые собраны из тех же кубиков. Они решают одну и ту же задачу — превратить LLM в агента, способного работать долго и автономно, — но архитектурные выборы у них принципиально разные.

Claude Code · Anthropic

Локальный CLI + Agent SDK

Архитектура: двухпроцессная модель — тонкий REPL/UI спереди и долгоживущий QueryEngine на каждый разговор сзади. Весь стек открыт пользователю: Agent SDK (query({ prompt, options }) как async iterable) переиспользует тот же оркестратор, что и CLI. Расширение — через MCP-серверы, plugins и skills, материализованные из директорий commands/ agents/ skills/ hooks/ output-styles/. Память — это файлы под /memories с контрактом memory_20250818.

Главная фишка: расширяемость как первый класс. Marketplace плагинов плюс skills — markdown-документы с frontmatter, которые загружаются как промпты-инструкции по запросу модели. Memory-tool как стандартизированный, документированный контракт, а не закрытая внутренняя кишка. Hooks (PreToolUse, PostToolUse, SessionStart) дают точки вклинивания пользовательского кода в цикл.

Trade-off: привязан к Anthropic API и подписке, требует локального окружения (CLI плюс редактор), не для нетехнической аудитории. Plugin-система мощная, но добавляет поверхность для конфликтов имён, политики и hot-reload — это уже не «маленький while», а распределённый по диску каталог расширений.

Источники: Agent SDK overview, claude-cli INDEX, 08-plugin-system

Cursor · Anysphere

IDE + облачный оркестратор

Архитектура: форк VS Code (Electron + TypeScript) на клиенте, монолитный Rust-сервис Anyrun на бэке, GPU-инференс на Azure. Внутри — мультимодельная оркестрация с роутером (режим Auto выбирает модель под сложность шага), собственная агентская модель Composer (MoE-трансформер плюс speculative decoding с маленькой draft-моделью). Индексация кода — клиентские Merkle-trees, синхронизация раз в три минуты, на сервере зашифрованные чанки в Turbopuffer + векторное хранилище в Pinecone. Sandbox — собственный VM-планировщик под burst-нагрузку, сетевые вызовы заблокированы по умолчанию, FS — только workspace и /tmp/.

Главная фишка: «диф-проблема» решена через узкую специализацию. Главная модель производит семантический патч (только изменённые куски с комментариями-маркерами), а отдельная маленькая apply-model превращает его в реальный файл, чинит мелкие синтаксические артефакты, прогоняет линтер и кормит ошибки обратно в цикл. Encrypted indexing с Merkle-trees позволяет давать «awareness» по корпоративному коду, не храня исходники на сервере.

Trade-off: закрытая система, заточена под код и IDE — за её пределами (web-задачи, ресёрч, long-running agents) её преимущества обнуляются. Сложность multi-model orchestration — это десятки тысяч H100 в инференсе и собственный VM-scheduler, что переносится в цену подписки. Латентность каждого инструмента умножается на число итераций — компания живёт под постоянным давлением «скорость как фича».

Источники: How Cursor AI IDE Works, Shipping Cursor's Coding Agent, Building Cursor — Pragmatic Engineer

Manus

Web + VM-per-task

Архитектура: чисто облачный web-агент: на каждую задачу пользователя поднимается свежая виртуальная машина с пустым контекстом, полной toolchain и независимым выходом в интернет. Стратегически выбран context engineering поверх готовых frontier-моделей вместо обучения собственной (фреймворк переписывался четыре раза). Файловая система — основной носитель состояния: контекст укорачивается, но не теряется (URL и пути остаются, тело — нет). Для широких задач — параллельные sub-агенты с собственными VM, центральная агрегация результатов. Первичная метрика — KV-cache hit rate при типичном соотношении вход/выход 100:1.

Главная фишка: побег из context window через изоляцию. Каждая большая задача — не один длинный диалог, а свежая среда; todo.md, который агент сам переписывает, выступает как attention recitation — план постоянно перетягивается в недавнее окно внимания, чтобы избежать «lost in the middle». Wide Research — горизонтальное масштабирование: 50 однотипных элементов разбираются с тем же качеством, что и 5, потому что каждый идёт в своём sub-агенте со своим окном.

Trade-off: высокая инфраструктурная стоимость — каждая задача оплачивает свежую VM и cold start; web-only (нет IDE, нет локальной интеграции, нет своего файла рядом). Подход требует, чтобы префикс оставался байт-в-байт стабильным ради cache hit — это дисциплина, которая исключает многие «удобные» оптимизации вроде динамического добавления и удаления инструментов на лету (вместо этого используется logit masking).

Источники: Context Engineering — Peak Ji, Wide Research

Все трое согласны в основах

Если убрать брендинг и форматирование, ядро у всех трёх систем — одно и то же: agentic loop (модель в цикле решает, что делать), tools (закрытый каталог функций с JSON-аргументами), permissions (политика, что выполнять без подтверждения, что — с разрешением, что — никогда), контекст-менеджмент (как ужимать историю, чтобы не вылетать из окна). Это ровно те главы, что вы только что прочитали: 02 «Цикл», 03 «Tools», 08 «Permissions», 04 «Context», 05 «Память». Anthropic в «Building Effective Agents» формулирует это прямо: реализация агента «как правило, проста — это просто LLM, использующие инструменты на основе обратной связи от окружения, в цикле». Cursor, описывая Composer, использует ту же терминологию: orchestrator, tools, sandbox, ReAct. Manus делает то же самое, просто на других моделях. Различия начинаются на уровне выше — не что делать, а как организовать долговечность: где живёт память, как переживаются сессии, как масштабируется long-running работа.

Где они расходятся: process model

Ключевая ось различий — где физически работает агент. Claude Code — локальный процесс на машине разработчика, общается с моделью через API, инструменты выполняются в текущей рабочей директории. Cursor — гибрид: IDE-клиент локальный, но оркестратор и sandbox для агентских команд (cmd-i, background-агенты) — облачные, со своим VM-планировщиком. Manus — pure cloud: пользователь видит только веб, всё происходит в чужой VM, которая создаётся под задачу и уничтожается после. От этой оси прямо зависит UX и стоимость: локальный harness дешёвый в инфраструктуре, но привязан к одной машине; облачный — дорогой в провизионинге, но переживает закрытие ноутбука и позволяет долгие задачи. Cursor берёт середину: лёгкие интерактивные операции локальны, тяжёлые автономные — в облаке.

Кто на что ставит

У каждой системы есть один архитектурный выбор, который определяет всё остальное. Claude Code ставит на расширяемость через пользовательский код: plugins, skills, hooks, MCP. Идея — сделать сам harness платформой, а конкретное поведение под задачу пользователь дописывает сам или ставит из marketplace. Это объясняет, почему у Anthropic такая агрессивная стандартизация контрактов (memory-tool, hook events, plugin manifest) — без стабильных интерфейсов экосистема расширений не живёт. Cursor ставит на качество применения изменений: специально обученная маленькая apply-модель, MoE plus speculative decoding ради скорости, тренировка на edit-trajectories вида (original_code, edit_command, final_code), чтобы патчи не били мимо строк. Всё остальное — индексация, sandbox, scheduler — обслуживает эту главную ставку: чтобы код, который агент пишет, без ошибок попадал в файл. Manus ставит на параллелизм: вместо борьбы с длинным контекстом — горизонтальное разделение на свежие VM, каждая со своим коротким контекстом. Wide Research — буквально манифест этого подхода: «не пытайтесь анализировать 50 элементов одной моделью, разнесите их в 50 sub-агентов».

Что не решает ни один

Если посмотреть на все три honest, на поверхности остаются open problems, которые никто пока не закрыл. Общая память между пользователями: у каждой системы memory приватная и привязана к одному пользователю или одному репозиторию — нет общего пула знаний, который аккумулируется командой. Кросс-проектный recall: Cursor индексирует один workspace, Claude Code хранит файлы в локальной /memories, Manus стартует с пустого диска — ни один не умеет нативно подтягивать «то, что вы делали в прошлом квартале на другом проекте». Agent-to-agent протоколы: sub-агенты внутри одной системы — да, но единого языка между Claude Code, Cursor и Manus нет, и MCP только начинает закрывать эту дыру со стороны инструментов, а не координации. Это всё ещё фронтир инженерной работы; то, что в курсе названо «главой 7» как Task / AgentTool, в реальности живёт ровно в границах одного harness.

Как выбирать

Критерий — не «какой harness лучше», а «какой подходит под задачу». Если вы пишете код локально и хотите кастомизировать поведение под свою команду (внутренние плагины, проектные skills, hooks с компанейскими правилами) — Claude Code или Agent SDK напрямую дают максимум рычагов. Если ваша работа на 90% — IDE и редактирование больших репозиториев, и вам нужно, чтобы патчи применялись без артефактов — Cursor, с его apply-model и индексированной семантической навигацией, оптимизирован ровно под этот сценарий. Если задача — долгий автономный web-агент: ресёрч на 50 источниках, генерация отчётов, обзвон списков, мониторинг — это территория Manus с её VM-per-task и параллельными sub-агентами; локальные harness просто не выдержат недельный uptime и flaky network. А если вы строите свой продукт поверх Claude — Agent SDK напрямую, без CLI-обвязки, даёт тот же цикл и тот же tool-каталог программируемо, и это легитимный четвёртый путь, который мы вынесли отдельно в главе 2.

"

The KV-cache hit rate is probably the single most important metric for a production-stage AI agent. It directly affects both latency and cost.

— Yichao «Peak» Ji · Manus, «Context Engineering for AI Agents»

Цитата Peak Ji — про экономику, но за ней стоит более общее наблюдение: архитектура определяет цену ошибки. Если префикс контекста нестабилен — каждый поворот цикла стоит в десять раз больше; если apply-model плохо обучена — каждый патч может сломать билд; если VM провизионится десять секунд — sandbox-старт съедает время решения. То, что мы прошли в одиннадцати предыдущих главах как абстракции, у этих трёх компаний — продуктовые трейд-оффы стоимостью в миллиарды долларов.

Источники главы