Решили: выставить свой редакторный тулинг агенту как custom MCP tools — первой партией
balance_bench, battle_trace, dev_command, capture_view; тул живёт в Editor-сборке своей
подсистемы, ссылка на пакет закрыта versionDefines.
Почему: агент видел наши тридцать девять пунктов меню как ряд кнопок без подписей.
execute_menu_item умеет только НАЖАТЬ — ни параметров, ни возвращаемого значения, дальше гадай по
консоли, твоя ли это строка; execute_code параметры даёт, но с готчами (тело метода без using,
SaveAssets уносит чужие правки) и с риском на каждый вызов. Отвергли общую сборку
Alebardium.AgentTools: она стала бы складом ссылок на все подсистемы разом, а тул — отстающей от
того, что оборачивает. Отвергли белый список команд для dev_command: он отстанет от реестра, а
половинчатый доступ погнал бы агента в обход через execute_code — ровно тот дефект, против
которого инструмент и заводится.
Сказано: развилки закрыты выбором Макса 02.08.2026 — состав «все четыре», права dev_command
«весь реестр», захват «оба механизма в один заход» (вопреки рекомендации делать синхронный первым),
владелец композиции листа — Presentation.Editor.
Грабли:
compile-check.ps1показывает зелёное на коде, которого не компилировал. Скрипт собирает по готовым.rspизLibrary/Bee, а их пишет Unity. НовыйversionDefineв.rspне попадает, весь файл под#if MCP_FOR_UNITYсхлопывается в пустоту — и сборка проходит за полторы секунды, «успешно». Ловится не цветом, а проверкой:Select-Stringпо.rspна имя дефайна. Проверять такой код пришлось вручную —cscиз установки редактора по тому же.rspплюс-define:MCP_FOR_UNITY,-r:наMCPForUnity.Editor.dllи явный список новых исходников (их в старом.rspтоже нет).- Правка
.asmdefвообще выводит заход из режима «код мимо редактора»: новая ссылка и новая сборка требуют одного прохода через Unity, иначе тулы не появятся. BalanceCliзаканчивает работу черезEditorApplication.Exit— обёртка над ним из живого редактора убила бы редактор вместе с несохранённой работой. Тулы встали рядом с ним на общем ядре.- Имя параметра уходит в схему как есть:
ToolDiscoveryService.ExtractParametersберётprop.Nameбез приведения к snake_case, хотяConvertToSnakeCaseв классе рядом лежит. Свойства вParametersназываются строчными, иначе агент увидитBenches. - Generic
TryResolve(out T)у VContainer — extension в неймспейсеVContainer; без него компилятор видит толькоTryResolve(Type, out object, object)и падает невнятным CS7036.
Владелец правды: Balance/Editor/Agent/BalanceAgentTools.cs,
DevTools/Editor/DevCommandTool.cs, Presentation/Editor/Agent/CaptureViewTool.cs,
Presentation/Editor/FrameSheet.cs; ход захода — docs/agent-loop-progress.md.