CodeariaAcademy
Обложка статьи: разобранный на части механизм под светом и надпись «Что внутри агента»
6 октября 202611 мин чтенияAI-агентыClaude Code

4 миллиона строк кода и ни одного LangChain. Как на самом деле устроены Claude Code, Codex и ещё девять агентов?

Пересказы зовут это сравнением агентов, но рейтинга в нём нет. Авторы прочитали код 11 агентов, от Claude Code до OpenCode: что у всех одинаково и где разница.

В этой статье7
Коротко

Harness engineering это проектирование обвязки: всего, что окружает модель в кодинг-агенте, от цикла и инструментов до памяти, прав и расширений. Препринт arXiv 2609.00006 (15 июля 2026, 83 страницы) разбирает по исходному коду 11 агентов: Claude Code, Codex CLI, Gemini CLI, Mistral Vibe, OpenHands, Aider, Mini-SWE-Agent, Hermes, Pi, OpenCode и OpenClaw. Авторы выделяют 7 подсистем, 29 повторяющихся паттернов и 18 рекомендаций. Главные находки: в 4 млн строк кода ни один агент не использует LangChain или похожий фреймворк и ни один не ищет код через векторные эмбеддинги; скиллы SKILL.md есть в 9 агентах из 11, MCP в 8; за квартал Codex перенял хуки Claude Code почти дословно. Рейтинга и бенчмарков в работе нет, а Claude Code разобран по мартовскому снимку исходников.

Около 4 миллионов строк на Python, TypeScript и Rust. Одиннадцать кодинг-агентов, включая Claude Code, Codex и Gemini CLI. И ноль импортов LangChain, LangGraph, AutoGen или любого другого агентного фреймворка. Gemini CLI не пользуется даже фреймворками самой Google.

Это одна из двух «пустот», которые нашли четверо авторов из Inclusive Brains и Wavestone AI Lab, когда прочитали исходники агентов целиком. Препринт называется «Harness Engineering: Anatomy, Architecture, and Evolution of Coding Agents», в нём 83 страницы, и это второе издание апрельской работы: тогда агентов было восемь.

О нём сейчас пишут как о сравнении: какой агент лучше. Это не так, и авторы говорят об этом прямо: они ничего не запускали и не ранжировали, только описали, как всё устроено. Зато по ней видно, что у этих агентов внутри. Сколько обвязка стоит в деньгах, мы разбирали отдельно, когда сравнивали одну модель в Claude Code, Codex и Pi. Здесь разбираем, из чего она сделана.

Что такое harness engineering и из каких семи частей собран агент

Формула, с которой начинается работа: агент = модель + обвязка. Модель отвечает за интеллект, обвязка (harness) за всё остальное: цикл «подумал, сделал, посмотрел», инструменты, контекст, права и расширения. Сам термин harness engineering вошёл в оборот только в феврале 2026 года, и за пять месяцев у него появились свои руководства и своя линия статей на arXiv.

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

ПодсистемаСамая простаяСамая сложная
Цикл агентаMini-SWE-Agent: линейный while с одним bashOpenHands: журнал событий и параллельные действия
Связь с модельюMini-SWE-Agent: один вызов LiteLLMHermes: пять своих транспортов, 29 профилей провайдеров
ИнструментыMini-SWE-Agent: только bashClaude Code: 43 типизированных инструмента
Память и контекстMini-SWE-Agent: вся история подрядCodex: память между сессиями, которую ведёт сам агент
Права и безопасностьMini-SWE-Agent: лимит шагов и денегCodex: правила, LLM-ревьюер команд и песочница на трёх ОС
СубагентыAider: их нет, так задуманоClaude Code: субагенты, которые запускают субагентов
РасширенияMini-SWE-Agent: протоколы PythonPi: всё есть расширение; Codex: маркетплейс плагинов

Левый столбец почти целиком занимает Mini-SWE-Agent: около ста строк Python, один инструмент, и по самоотчёту авторов 74%+ на SWE-bench Verified. Отсюда первое наблюдение работы: сложность цикла не предсказывает результат. Основная масса кода у больших агентов уходит на то, чего бенчмарк не меряет. У OpenCode примерно три пятых кода без тестов занимают клиенты: терминальный интерфейс, веб, десктоп и SDK.

Чего нет ни в одном из 11 агентов

Две пустоты пережили и расширение выборки, и повторную проверку через три месяца.

Нет агентного фреймворка. Каждый цикл написан вручную на асинхронных примитивах своего языка. Ирония, которую авторы не упускают: сам термин harness engineering придумали и разобрали внутри LangChain, а библиотек LangChain нет ни в одной из обвязок.

Нет векторного поиска по коду. Никакого RAG над репозиторием. Агенты ищут код через ripgrep, glob, tree-sitter и файлы контекста вроде AGENTS.md и CLAUDE.md, которые сами находят по дереву папок. Эмбеддинги встречаются только в памяти о разговорах (по умолчанию у OpenClaw), и никогда по исходникам. Объяснение авторов простое: у кода есть точная структура (пути, символы, разбор синтаксиса), а меняется он поминутно, так что индекс эмбеддингов быстро устаревает.

Для тех, кто пишет своего агента, это два прямых совета из списка рекомендаций: не брать фреймворк для рантайма и не строить RAG над кодом, пока не доказано, что он лучше ripgrep с tree-sitter на ваших задачах.

Скиллы обогнали MCP

агентов поддерживают скиллы SKILL.md. MCP поддерживают 8 из 11. В апреле был равный счёт

Barbaste и др., arXiv 2609.00006, июль 2026

Скиллов нет только у Aider и Mini-SWE-Agent. Ничью сломал Pi, у которого позиция заявлена прямо: скиллы и консольные утилиты с README, без MCP вообще. Рекомендация авторов звучит так: скиллы для повторяемых процедур и знаний предметной области, MCP для внешних систем вроде баз данных и внутренних API, и именно в таком порядке.

Вокруг скиллов за квартал выросло то, что обычно бывает у магазинов приложений: реестры в четырёх агентах, уровни доверия и карантин у Hermes, проверка происхождения у OpenClaw. И первые скиллы, которые агент пишет себе сам. Если вы ставите чужие скиллы, авторы советуют обращаться с ними как с пакетами из интернета, а не как с текстовыми файлами. Как выбирать из того, что уже есть для Claude Code, мы собрали в разборе экосистемы: что брать, а что пропустить.

За три месяца агенты начали копировать Claude Code

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

  • Хуки. В апреле пользовательские хуки были особенностью Claude Code. В июле они есть у 9 агентов из 11. Codex взял словарь событий Claude Code почти дословно: PreToolUse, PermissionRequest, PostToolUse, PreCompact, SessionStart, UserPromptSubmit, SubagentStart, SubagentStop, Stop. Своего добавил одно событие, PostCompact.
  • Переезд. Codex находит сессии Claude Code в ~/.claude/projects, импортирует их и предлагает перевести ~/.claude/settings.json в свой config.toml.
  • Формат. OpenHands читает манифест плагинов Claude Code, OpenCode читает его каталог скиллов.
  • Темп. Отложенная загрузка инструментов (схемы не лежат в промпте, агент ищет их по запросу) за квартал распространилась с одного агента на три. Режим плана теперь есть во всех четырёх агентах от вендоров моделей, а было в двух. Авторы пишут, что отличительная черта в этой области живёт недели.

Второе движение тише, но важнее для тех, кто пишет правила агенту. Codex убрал из промптов новых моделей правила «не коммить» и «не делай лишнего», Mistral Vibe удалил жёсткое правило Never Commit. Поведение переезжает из текста промпта, который модель читает и может проигнорировать, в настройки, которые обвязка исполняет сама.

Для пользователя Claude Code вывод практичный: хуки и скиллы, которые вы пишете, перестают быть привязкой к одному агенту. Как устроены хуки и чем от них отличаются новые моды, есть в нашей статье про моды Claude Code.

Чем отличаются кодинг-агенты: память, песочница, субагенты

Если внутри почти одно и то же, где тогда выбор? По работе их три.

Память. Сжатие контекста сошлось: 7 агентов из 11 пересказывают историю моделью по порогу. Claude Code сжимает, когда до конца окна остаётся 13 тысяч токенов, Gemini CLI на половине окна, сохраняя последние 30% дословно. Различие теперь в том, кто пишет долгую память. В Codex её ведёт отдельный субагент, в Gemini CLI отдельный субагент складывает записи во входящие, а вы одобряете их командой /memory, у Hermes это файлы с жёстким лимитом символов.

Песочница. Изоляция на уровне ОС стоит тысяч строк кода, и это выбор, а не следствие размера. Codex и Gemini CLI держат свои песочницы для Linux, macOS и Windows. Claude Code подключает песочницу Anthropic по желанию. Hermes, один из самых больших агентов, не изолирует процессы вовсе, зато держит 12 жёстких запретов, которые работают даже в режиме --yolo. Pi отказывается от песочницы с объяснением: частичная изоляция внутри процесса выглядит как граница безопасности, а ею не является.

Субагенты. Схема «координатор раздаёт работу исполнителям» появилась независимо почти у всех. Отличаются цели: Claude Code экономит на общем кэше промпта у дочерних агентов, Codex строит дерево потоков с отслеживанием глубины, Mistral Vibe запускает субагентов по очереди ради простоты. Pi сознательно остаётся с одним агентом. Авторы со ссылкой на Anthropic напоминают, что мультиагентные системы тратят примерно в 15 раз больше токенов, чем обычный чат, и советуют не уходить от одного агента без явной причины. Где без координатора не обойтись, мы смотрели на примере Paperclip, который выдаёт агентам начальника и бюджет.

Чего в исследовании нет

Claude Code разобран по старому коду

Исходники Claude Code закрыты. Авторы опирались на снимок исходников марта 2026 года, который разошёлся публично, а не на официальный релиз. В июле рабочей версией была 2.1.206, на 6 октября это уже 2.1.292. Сами авторы называют разбор Claude Code самым слабым местом работы по воспроизводимости.

Самый обсуждаемый агент в выборке описан по самому старому коду. Это не делает выводы неверными: устройство меняется медленнее версий, и авторы сами делят свои утверждения на «инвентарные» (сколько инструментов, какие функции) и «структурные» (как устроен цикл, из чего состоит обвязка). Первые, по их словам, устаревают за недели, вторые пока держатся. Цифра «43 инструмента» относится к первым.

Рейтинга нет. В апрельском издании была таблица SWE-bench Verified, в июльском её убрали: это самоотчёты на разных моделях и настройках. Если вы видели пересказ «исследование показало, какой агент лучше», то этого в работе нет.

Ничего не запускали. Только чтение кода. Как быстро и дёшево работает каждый агент, авторы не утверждают.

Это не новость. Номер в arXiv сентябрьский, но текст отправлен 15 июля. С тех пор у Claude Code вышло больше восьмидесяти номеров версий и появились моды, так что часть таблиц уже описывает прошлое.

90 строк не проверены на бенчмарке. Минимальный каркас агента в конце работы реализует 10 рекомендаций из 18. То, что на сильной модели он повторит результат Mini-SWE-Agent, авторы сами называют предположением «без доказательства».

Что взять себе

Наше мнение, с которым можно спорить: цикл агента больше не то, чем агенты соревнуются. Задачу решает модель: Mini-SWE-Agent со ста строками обвязки, по самоотчёту, держится рядом с агентами в тысячу раз больше. Соревнуется всё вокруг цикла: скиллы, хуки, плагины, импорт чужих сессий. Авторы приходят к тому же: за первую половину 2026 года обвязка превратилась из инструмента в платформу. Мы можем ошибаться, если следующее поколение моделей начнёт заметно выигрывать от сложного цикла, а не от окружения. Пока таких данных в работе нет.

Если вы выбираете агента, смотрите не на число инструментов, а на три вещи из раздела выше: как он пишет долгую память, есть ли песочница на уровне ОС и читает ли он ваши скиллы и хуки. Последнее теперь чаще «да», чем «нет».

Если вы пишете своего, у авторов есть короткий порядок действий, и во многом он совпадает с инженерными советами Anthropic:

  1. Начните с линейного цикла и одного bash. Новые инструменты добавляйте только под замеченную проблему: сначала чтение и запись файла, потом поиск, потом точечная замена строки.
  2. Когда инструментов больше пятнадцати, грузите их схемы по запросу. У Claude Code это сокращает стартовый промпт примерно на 40%.
  3. Для правки файлов на сильной модели берите точную замену уникальной подстроки, а не номера строк: модели путаются в номерах сильнее, чем в контексте.
  4. Ищите код через ripgrep и tree-sitter, контекст кладите в AGENTS.md по папкам, фреймворк для рантайма не берите.
  5. Оставайтесь с одним агентом, пока не появится этап, где параллельный поиск явно быстрее последовательного.

Если же вы не пишете агентов, а работаете в Claude Code, самая полезная часть работы это раздел про скиллы. Начать можно с готовых скиллов, которые закрывают типовую работу.

Версии на 6 октября 2026: Claude Code 2.1.292, препринт arXiv 2609.00006v1 от 15 июля 2026 с версиями агентов на июль. Агенты обновляются еженедельно, перед выбором проверяйте актуальные возможности.

Источники2развернуть
  1. Paul Barbaste, Tristan Darrigol, Germain Vu, Tom Wiltberger, «Harness Engineering: Anatomy, Architecture, and Evolution of Coding Agents. A Source-Code Study of Eleven Systems», arXiv 2609.00006v1, 15 июля 2026 — https://arxiv.org/abs/2609.00006
  2. npm, @anthropic-ai/claude-code, история версий, проверено 6 октября 2026 — https://www.npmjs.com/package/@anthropic-ai/claude-code

Комментарии