
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 с одним bash | OpenHands: журнал событий и параллельные действия |
| Связь с моделью | Mini-SWE-Agent: один вызов LiteLLM | Hermes: пять своих транспортов, 29 профилей провайдеров |
| Инструменты | Mini-SWE-Agent: только bash | Claude Code: 43 типизированных инструмента |
| Память и контекст | Mini-SWE-Agent: вся история подряд | Codex: память между сессиями, которую ведёт сам агент |
| Права и безопасность | Mini-SWE-Agent: лимит шагов и денег | Codex: правила, LLM-ревьюер команд и песочница на трёх ОС |
| Субагенты | Aider: их нет, так задумано | Claude Code: субагенты, которые запускают субагентов |
| Расширения | Mini-SWE-Agent: протоколы Python | Pi: всё есть расширение; 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. В апреле был равный счёт
Скиллов нет только у 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:
- Начните с линейного цикла и одного bash. Новые инструменты добавляйте только под замеченную проблему: сначала чтение и запись файла, потом поиск, потом точечная замена строки.
- Когда инструментов больше пятнадцати, грузите их схемы по запросу. У Claude Code это сокращает стартовый промпт примерно на 40%.
- Для правки файлов на сильной модели берите точную замену уникальной подстроки, а не номера строк: модели путаются в номерах сильнее, чем в контексте.
- Ищите код через ripgrep и tree-sitter, контекст кладите в AGENTS.md по папкам, фреймворк для рантайма не берите.
- Оставайтесь с одним агентом, пока не появится этап, где параллельный поиск явно быстрее последовательного.
Если же вы не пишете агентов, а работаете в Claude Code, самая полезная часть работы это раздел про скиллы. Начать можно с готовых скиллов, которые закрывают типовую работу.
Версии на 6 октября 2026: Claude Code 2.1.292, препринт arXiv 2609.00006v1 от 15 июля 2026 с версиями агентов на июль. Агенты обновляются еженедельно, перед выбором проверяйте актуальные возможности.
Источники2развернуть
- 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
- npm, @anthropic-ai/claude-code, история версий, проверено 6 октября 2026 — https://www.npmjs.com/package/@anthropic-ai/claude-code




Комментарии