Инженерия · · 15 мин чтения
Cortex Loom внутри GrantTap: откуда берётся экономия токенов
Настоящий Engine сократил повторяющийся контекст на 56,2%, сохранив все источники. Как ссылки, бюджеты и права доступа делают эту экономию полезной.

Когда coding агент читает вывод инструмента, разбирает исходники или поручает другой модели подготовить ответ, он расходует токены. Значительная часть этих затрат необходима для работы. Лишний расход появляется там, где один исходник возвращается несколькими инструментами, где вместе с нужной функцией в контекст попадают посторонние файлы или где агент заново восстанавливает уже известные проекту решения. В GrantTap мы рассматриваем такую экономию как задачу подготовки данных. Компьютер может собрать evidence до обращения к основной модели, сохранив при этом идентичность Task, привязку репозитория и границы доступа к информации.
Часть этой подготовки выполняет Cortex Loom. Его компилятор контекста подключён к GrantTap Engine рядом с анализом репозиториев Weavatrix. Интеграция включается для конкретного Project при доступном Engine. В этом исследовании мы проверили настоящий локальный Engine через его сокет и использовали исходники самого GrantTap. Повторяющееся evidence стало заметно меньше, а все проверяемые строки сохранились. Контрольный сценарий с однократным чтением дал почти нулевую экономию. Эти два результата вместе показывают, где механизм полезен и каким образом приложение ограничивает собственные накладные расходы, вместо того чтобы объявлять любую короткую выдачу доказательством эффективности.
Путь от компьютера до модели
Начало пути — представление Project, подготовленное для конкретной Task и Execution. GrantTap определяет текущую задачу, привязку репозитория, события, записи памяти, другие активные задачи и доступные ограничения политики. Фильтрация памяти по видимости происходит до компиляции. Приватная запись другой Task не должна попадать в пакет только потому, что она могла бы помочь ответить на вопрос. Вместе с evidence сохраняются идентификатор репозитория и сведения о снимке исходников. Такой порядок позволяет выбирать контекст среди данных, которые этому исполнению действительно разрешено получить, и упрощает последующую проверку происхождения каждого существенного утверждения.
Engine принимает структурированные элементы evidence: идентификатор, источник, текст, приоритет, состояние доверия, способ получения и snapshot. Cortex ранжирует их и собирает пакет внутри заданного бюджета. Если доступна проверенная локальная привязка репозитория, Weavatrix может добавить связи и точечные окна исходников. Результат сопровождается версией и revision компилятора. Основная модель получает ограниченный контекст и может открыть нужное расширение. Этот механизм работает на стороне компьютера: телефону не нужно анализировать весь репозиторий, а coding агенту не нужно сочинять дополнительный отчёт, чтобы приложение узнало, какие факты были подготовлены и какой объём данных доставлен.

Повторение заменяется ссылкой на evidence
Дедупликация не требует пересказывать код другой моделью. Cortex может оставить первое вхождение повторяющейся строки, а следующие заменить ссылкой на уже включённое evidence. Сама строка остаётся доступной для чтения и проверки. Это особенно полезно, когда поиск символа, дополнительное чтение результата поиска и раскрытие определения возвращают пересекающиеся части одного файла. Каждый инструмент имеет собственную причину обратиться к исходнику, но основной модели не обязательно читать одинаковую часть три раза. Компилятор способен согласовать эти результаты до того, как повторение займёт ещё одну часть контекстного окна и увеличит стоимость последующего рассуждения.
Ссылка при этом накладывает конкретное требование: её источник должен присутствовать в пакете. Нельзя объединять сведения из разных revision или с разным уровнем доверия только из-за похожего текста. Текущий код, предложение изменения и старый снимок репозитория могут содержать одинаковые строки, но отвечают на разные вопросы. Поэтому Cortex сохраняет provenance и показывает включённые и пропущенные идентификаторы. В выдаче видно, требуется ли дополнительное evidence и сколько строк было устранено как повтор. Экономный ответ должен оставаться проверяемым: читатель понимает, что именно известно, откуда это получено и какие выводы пока нельзя считать установленными.
Что показал настоящий Engine
Для контролируемого эксперимента мы взяли три реальные TypeScript файла из модуля доставки контекста GrantTap. В первом варианте каждый исходник подавался один раз. Во втором те же три файла подавались по три раза: это воспроизводит перекрывающиеся чтения уже известного evidence. Оба варианта использовали подключённую Rust библиотеку через Unix сокет Engine, бюджет 16 000 оценочных токенов и отключённые модели. Проверки требовали включения всех поданных элементов и наличия каждой существенной строки исходного кода в результате. Это эксперимент над механизмом дедупликации, а не предположение, что каждая повседневная задача обязательно начинает работу с трёх одинаковых чтений.
При однократной подаче компилятор сообщил 4 189 токенов кандидатов и 4 176 токенов доставленного пакета: примерно 0,3 процента сокращения. При трёх повторных чтениях результат составил 12 567 и 5 506 соответственно: сокращение на 56,2 процента. Устранено 325 повторных строк, не пропущен ни один элемент evidence. В измеренном запуске эта компиляция заняла восемь миллисекунд на тестовом Mac. Это оценки конкретного компилятора и локальное измерение времени. Они не являются счётом провайдера, гарантией для любого репозитория или утверждением, что вся сессия агента стала дешевле ровно на тот же процент.
Считать нужно весь доставленный ответ
Экономия внутри компилятора может исчезнуть, если приложение добавляет готовый пакет поверх уже полного ответа с теми же фактами. В GrantTap выбор компактной выдачи теперь учитывает сериализованный ответ целиком. В сравнение входят Task, Execution, другие задачи, claims на ресурсы, ограничения истории, ссылки на evidence и метаданные компилятора. Автоматически выбирается представление с пакетом только тогда, когда он покрывает все события и записи памяти, показанные обычной компактной выдачей, а полный альтернативный ответ меньше и по числу символов, и по объёму UTF-8. Идентификаторы событий сохраняются для последующего просмотра и продолжения чтения по курсору.
Если условия не выполнены, приложение возвращает компактные факты, статус компилятора и ссылку на раскрытие. Второй экземпляр того же контекста автоматически не добавляется. Это детерминированное правило не вызывает модель и не расходует токены на объяснение собственного выбора. Размер в символах и байтах служит практическим ограничителем, но не выдаётся за точную токенизацию конкретного провайдера. Полный режим остаётся доступен явно, когда нужен подробный разбор, проверка источника или анализ противоречия. Так обычная работа получает экономную стартовую выдачу, а сложная задача сохраняет путь к необходимым деталям, которые нельзя безопасно заменить общим резюме.
Роль моделей и их собственная стоимость
В Cortex существуют необязательные пути классификации и подготовки черновика с помощью модели. В зависимости от конфигурации локальная модель или явно настроенный proxy может предложить структурированный intent либо ограниченный draft. Это полезно, когда пользовательский запрос неоднозначен или когда небольшая предварительная операция уменьшает работу более сильной основной модели. Однако название Qwen или конфигурация Sonnet само по себе ничего не доказывает. Дополнительный вызов имеет собственный вход, выход, время выполнения и риск ошибочного преобразования запроса. Эти затраты нужно учитывать вместе с тем контекстом основной модели, который такая подготовка действительно позволяет заменить, а не рассматривать их как бесплатные.
В описанном эксперименте Engine не вызывал ни классификатор, ни модель черновика. Экономию обеспечили алгоритмы, повторное использование исходных строк и ссылки на evidence. Для пользователя это означает, что базовая подготовка контекста не нуждается во втором агенте, пересказывающем всё первому. Необязательная модель должна подтвердить пользу на своих задачах и в своей конфигурации. Без неё граф и компилятор продолжают собирать, ранжировать, ограничивать и дедуплицировать evidence. Советы маршрутизации также отделены от разрешений: рекомендация выбрать другой backend не позволяет автоматически менять репозиторий, запускать чувствительную команду или обходить решение политики компьютера.

Сценарии работы и предварительный refactor
Типизированные sequences Cortex представляют инженерную методику ограниченными шагами с требованиями к evidence. Шаг диагностики может запросить конкретное определение и подходящий тест, вместо того чтобы добавлять большой методологический документ в каждое взаимодействие. Шаг реализации определяет, какие исходники нужны до предложения изменения. Проект описывает эти sequences как собственную переработку инженерных механик, вдохновлённых Superpowers, без зависимости от runtime Superpowers. Экономия возникает благодаря активации применимого сейчас шага, явным требованиям к фактам и структурированному хранению повторяемых инструкций. Компьютер выполняет механическую часть подготовки, а модель получает информацию для текущего решения, вместо необходимости заново разбирать весь общий процесс работы.
Weavatrix Refactor добавляет возможность предварительно проверить точный план изменения относительно исходников и показать его последствия. Граф помогает найти кандидатов и зависимости, а preview помогает оценить конкретную правку. Ни одно из этих действий само по себе не разрешает применить изменение автоматически. Coding агент отвечает за соответствие решения запросу пользователя, а тесты репозитория подтверждают поведение. Такое распределение позволяет алгоритмам выполнять повторяемую инспекцию, пока модель занимается инженерным выбором. Для экономии особенно полезно не перечитывать механически найденные связи без необходимости и не считать предлагаемую трансформацию уже выполненной работой: статусы подготовки, применения и проверки должны оставаться различимыми.
Полнота делает экономию полезной
Пакет определения должен содержать саму функцию, а не только начало файла, в котором она находится. В ходе этого исследования мы усилили привязку definition evidence к именованной цели в Cortex. Когда запрос содержит несколько символов или путь к исходнику, одна найденная цель не должна подменять другую. Регрессионный сценарий помещает TypeScript функцию после длинного вступления и проверяет наличие её тела и корректное определение полноты. Это проверка полезности выдачи: уменьшенный контекст имеет смысл только в том случае, если агент по нему действительно способен изучить поведение, ради которого обратился к инструменту, и не вынужден повторять неудачное чтение.
Дополнительное раскрытие тоже должно быть адресным. Если не хватает вызывающих функций, тестов или полного определения, следующий запрос обращается именно к отсутствующей части. Полный повтор первоначального вопроса может снова вернуть карту модулей и то же неполное окно, потратив ещё токены без устранения неопределённости. Citation и признаки полноты дают агенту конкретное основание для следующего чтения. Завершение инженерной работы подтверждается тестом, сборкой или другой подходящей проверкой. Успешная компиляция контекста подтверждает подготовку evidence; она не доказывает сама по себе исправление бага, сохранение поведения после refactor или готовность приложения к публикации на пользовательские устройства.
Где проходит граница результата
Удобно разделять три слоя. Анализ репозитория поставляет факты исходников и связи. Cortex собирает ограниченный пакет со ссылками. GrantTap сохраняет вокруг него Task, координацию, политику и видимость. Экономия одного слоя не переносится автоматически на все остальные. Проект с повторными чтениями способен заметно выиграть от дедупликации. Маленькая правка известного файла может уже иметь дешёвый обычный путь. Сложная задача иногда требует больше evidence на старте, зато помогает избежать гораздо более дорогого ошибочного изменения или повторного исследования. Оценивать нужно всю работу до проверенного результата, а не только длину одного ответа инструмента.
Для повседневной работы полезно начинать с минимального релевантного представления, сохранять идентификаторы и раскрывать источник, когда недостаёт конкретного факта. Статус компилятора важнее предположения, что включённый переключатель гарантирует доставку нужного evidence. При оценке модельной подготовки следует сравнивать весь обмен, включая дополнительные вызовы. GrantTap должен делать такие решения дешевле и удобнее для проверки, не поручая агенту строить телеметрию или снова рассказывать историю проекта. Подтверждённый результат этого прохода конкретен: реальное повторяющееся evidence сократилось без потери проверяемых строк, а компактная доставка получила алгоритмический ограничитель, который препятствует увеличению контекста из-за второй копии уже показанных данных.
Как исследовать архитектуру на телефоне
В GrantTap карта Weavatrix открывается на весь экран и подстраивается под доступное окно. Граф сохраняет глубину: его можно вращать перетаскиванием и приближать двумя пальцами. Кнопка сброса возвращает все полученные компоненты в поле зрения. Это помогает быстро перейти от общего устройства проекта к конкретной зависимости без нового запроса к модели. Подписи и цвет позволяют узнавать компоненты; цвет обозначает тип узла, а не оценку качества кода или разрешение выполнить действие.
Нажатие на компонент выделяет его соседей. В карточке доступны переходы по связям и окно «Сведения о компоненте». Оно показывает идентификатор, тип, полную ревизию отчёта, направления связей и количество наблюдений, если анализатор его передал. Для связи без такого числа интерфейс сохраняет неизвестность. Переход к соседу позволяет продолжить исследование, а «Показать на графе» возвращает выбранный компонент в пространственную карту. Полный список компонентов доступен из нижней панели; поиск по названию, типу и идентификатору не ограничивает список первыми двадцатью результатами.
Город кода дополняет карту компонентов уровнем исходников. Башня представляет файл из отчёта, а её секции сохраняют имена символов и измеренные позиции в исходнике. Нажатие на башню или подпись секции открывает Секции, Связи и Состояние. Секции — прокручиваемый список всех символов полученного отчёта; поиск по файлу или имени символа ведёт к тому же списку. Выбор связи открывает её настоящий адресат, включая наблюдаемый внешний сервис. Идентичность репозитория остаётся частью выбора: одинаковые пути в двух связанных репозиториях не смешиваются.
Новый полученный отчёт обновляет и уже открытый город кода. Текущая камера и выбор исходника сохраняются; на Mac идентичность секции переживает вставку новых строк, а выбранная вкладка состояния и положение прокрутки остаются на месте.
Управление камерой видно рядом с инспекцией: масштаб, обзор всей карты, вид сверху и изометрия, вращение или сдвиг. На Mac подписи секций Repo Lens также прокручиваются колесом или пальцем. Полный экран сохраняет выбранный файл или секцию и положение камеры. На iPhone и iPad нативная сцена сохраняет камеру при изменении цветов и видимости, а компактная панель оставляет место карте. Окно управления объясняет жесты; для этого не нужно обращаться к модели.
Подсветка описывает полученные данные. На Mac порог размера секции использует измеренное число строк и меняется в настройках; панели исходника и состояния показывают ревизию отчёта и статус анализа. Покрытие тестами, сложность и структурная оценка остаются неизвестными, если анализатор их не передал. Цвет и предупреждение о размере помогают навигации, но не подтверждают корректность кода и не разрешают действие. Сохранённый отчёт Mesh обеспечивает эту инспекцию без сети: прокрутка секций и движение камеры не добавляют токены контекста.
Health и Graph показывают общее состояние построения архитектуры. Для активного Project отсутствующий или изменившийся отчёт запрашивается автоматически. Ручное перестроение получает отдельное подтверждение от компьютера: очередная публикация уже сохранённого графа не считается ответом на этот запрос. Когда два телефона одновременно просят обновить один Project, компьютер выполняет общий анализ и возвращает подтверждение каждому. Готовые отчёты и их связи сохраняются на устройстве вместе с Mesh и доступны при отсутствии сети.
Карточка построения объединяет действие, загрузку и пояснение. Во время обновления предыдущая сохранённая карта остаётся видимой. Ошибка доставки завершает ожидание и предлагает повторить запрос: телефон не оставляет бесконечный индикатор для компьютера, который не принял команду. Окно информации объясняет автоматическое обновление и разницу между Git-ревизией репозитория и отпечатком содержимого анализа. Git-ревизия указывает на исходники, а отпечаток определяет проанализированное содержимое; это отдельные проверки актуальности.
MCP сохраняет пригодные отчёты анализа в приватном кеше компьютера и использует их после перезапуска процесса. Завершённый новый анализ заменяет сохранённый результат. Работа планируется по репозиториям: готовый Project публикует отчёт, пока другой ещё анализируется. Несколько репозиториев делят бюджет доставки так, чтобы осталось место для каждого отчёта и метаданных Mesh. Частичный или недоступный результат сохраняет свой статус; сам факт получения ответа не превращает его в полную архитектуру.
Анализ репозитория использует отдельное соединение с Engine. Это сохраняет доступность запросов политики и Backbone во время работы Weavatrix. Передача списка чатов также продолжается независимо от фонового обогащения Mesh. В итоге работа с архитектурой помогает подготовке контекста без задержки решений пользователя. Полученный частичный граф остаётся явно помеченным как частичный; интерфейс показывает его компоненты, связи и доступные файлы.
Отдельное окно информации объясняет жесты, легенду цветов, версию Weavatrix, ревизию и объём полученного отчёта. COMPLETE относится к обработанным входным данным анализа. Этот статус сам по себе не подтверждает знание каждой зависимости репозитория. Частичный отчёт сохраняет отметку о неполноте и числа полученных и заявленных компонентов и связей. Компонент без показанных связей тоже не обязательно независим: анализатор мог не получить нужный источник или не поддерживать конкретный вид отношения.
Карта и её информационные окна читают уже полученный отчёт. Вращение, поиск и переходы между компонентами не вызывают Cortex, модель или повторный анализ репозитория. При сохранённом Mesh эта инспекция доступна без сети. Так интерфейс дополняет экономию контекста: человек может проверить структуру и происхождение связи до того, как поручит агенту следующее чтение. Иллюстрация интерфейса использует тестовую ревизию; результаты эксперимента по токенам получены отдельно через настоящий Engine.
