Отдай контекст, Claude, я всё прощу
Играюсь сейчас с MCP для Unreal Engine. Claude сам пишет C++ классы, блупринты поверх них как слой репрезентации + простого тюнинга, тыкает живой Editor, запускает игру, делает скрины, сам всё тестит... Прикольно, но чёт заметил что лимиты стали кончаться сильно быстрее обычного. А контекст даже на довольно небольшой задаче распухает как не в себя.
Пошёл разбираться вместе с ChatGPT (потому что читать ахинею от Opus/Sonnet 5 -- это пытка). Первым делом тот посоветовал не сидеть в километровых чатах. Спасибо, кэп, но я и так всегда начинаю новый чат на каждую задачу. Иногда даже на новый этап предыдущей.
Открыл /context в свежем чате: 66.5k, из них Messages всего 100 токенов. Остальное уже занято инструментами, системными инструкциями, памятью и скиллами проекта.

Потом дал ему простую задачку: несколько конкретных исправлений в уже работающем прототипе. Минут через одиннадцать Claude ещё ковыряется. К концу задачи — 292.2k контекста, из них 225.4k в Messages.

В Messages копится вся рабочая история: мои сообщения, ответы Claude, прочитанные файлы, результаты вызовов инструментов. Снаружи это свёрнуто в безобидное Used 14 tools. Внутри он успел почитать граф, найти нужный API, запросить логи, ошибиться, повторить запрос и проверить результат в редакторе. Всё это остаётся с ним на следующих шагах. В документации Claude Code это тоже описано.

В полном логе нашёл чудесное: Claude запрашивает логи анрила и делает print(out), печатая весь ответ. Там были выводы на 116, 186 и 326 тысяч символов. Самые жирные Claude Code уже складывал в отдельные файлы, так что все 225k на них не спишешь. Но привычка выгребать всё подряд прекрасная.
Попробовал compact и subagents
Перед следующим экспериментом сделал /compact. В Messages осталось около 16k. Дальше попробовал выносить исследование в subagent, чтобы основной чат снова не забивался блупринтами и логами.
У subagent своё окно контекста. Пусть там разбирается, а в основной чат приносит результат, по которому можно продолжить работу.
Просто «используй subagents» оказалось мало. Пришлось уточнить: вся исследовательская возня остаётся у subagent, а обратно нужны конкретные ответы — что сломано, где поправить и как проверить. Иначе основной Claude получает ответ и сам лезет заново во всём разбираться)))
В итоге получилось вот такое правило для CLAUDE.md:
Правило для CLAUDE.md целиком
## Context efficiency — PROJECT OVERRIDE
Context isolation takes priority over VibeUE's general guidance to discover, inspect, and verify directly in the current agent.
- Keep the main agent focused on the overall task, decisions, coordination, and final result.
- Exploratory Unreal work belongs in a focused subagent when the answer is not already known and may require Blueprint/editor/runtime/log/API inspection. This includes API discovery and investigative MCP/Python calls.
- The subagent may use VibeUE's normal discovery, inspection, and verification workflow as needed.
- A subagent must return an actionable handoff sufficient to continue without repeating the investigation. Include:
- the verified root cause or conclusion;
- exact assets, files, graphs, functions, nodes, properties, pins, or components involved;
- the relevant current state and relationships between them;
- the exact minimal change to make;
- any identifiers, values, or small code/graph details required to perform that change;
- a narrowly scoped verification procedure;
- unresolved uncertainty, if any.
- Keep the handoff compact by omitting exploratory history, failed attempts, raw dumps, full logs, and unrelated observations — not by omitting implementation-relevant details.
- Do not repeat a subagent's investigation in the main agent. If the handoff is missing information required to continue, delegate the specific missing question back to a subagent.
- Do not force investigation and implementation into separate agents when that would require reconstructing expensive Unreal context. If a subagent has already built the working context needed to safely make a tightly coupled change — for example Blueprint graph surgery — let that subagent implement and narrowly verify that change too.
- Direct source/file work and known, local implementation steps may stay in the main agent when they do not require exploratory Unreal inspection.
- When using MCP or Execute Python in any agent, filter and aggregate inside the call. Return only information needed for the current decision or implementation; do not print broad raw logs, graph dumps, property dumps, asset lists, or large collections.
- VibeUE's "discover before you call" and evidence requirements apply inside the agent that owns that working context; they do not require the main agent to repeat discovery, inspection, or verification already performed by a subagent.
И Claude таки начал делегировать. Здесь сам занимается C++, а исследование материала и рендера отдаёт subagent:

К концу задачи основной контекст остановился на 105.1k, из них 49.2k Messages.

После compact было около 16k Messages, стало 49.2k. То есть рабочая история основного агента прибавила примерно 33k. В предыдущей задаче она набрала около 225k.
Задачи разные: сначала был набор исправлений одной механики, потом более узкая проблема с z-буфером и материалами. На финальных скринах ещё и основной агент уже Opus, а раньше был Sonnet. Поэтому «сэкономил в семь раз» из этого не получается. Но исследование через subagent реально произошло, и основной чат закончил работу с 49k Messages. Вот этот результат мне уже нравится.
Начал я вообще с попытки растянуть лимиты. С ними ещё надо разбираться, но хотя бы основной чат перестал пухнуть от всей этой разведки.