8.0 KB · updated 2026-07-31 · md

v0.25.0.ru.md

docs/i18n/release-notes/v0.25.0.ru.md

Tesserae v0.25.0 — Descent: навигация по любому графу в пределах одного контекстного окна

<!-- translations:start -->

English · 한국어 · 中文 · 日本語 · Español · Français · Deutsch

<!-- translations:end -->

Выпущено 2026-07-24 · PyPI · GitHub release · pip install --upgrade tesserae==0.25.0

Скомпилированный граф проекта перерастает любое контекстное окно: референсный проект сериализуется уже в 2,5 млн токенов — в 12 раз больше окна в 200k — и продолжает расти. Плоский поиск способен найти узел, но обозреть граф целиком агент не мог никак: единственным ограниченным обзором был самый грубый слой сводок из 47 сообществ, а всё, что ниже него, оставалось невидимым. Этот выпуск приносит Descent: иерархия становится контрактом на этапе запроса, и агент может спуститься от обзора всего графа до отдельного узла за несколько вызовов с фиксированным бюджетом — при любом размере графа.

1 · graph_map — один инструмент спуска для всех графов

Один новый MCP-инструмент, graph_map(scope, budget_chars, cursor), приводит все источники знаний к единому виду: дереву областей (scope), ответы по которому — карточки, упакованные в бюджет. Вызов без scope возвращает корневую карту — счётчики графа, предупреждения о хабах и карточки сообществ самого грубого уровня. Идентификатор сообщества спускает на один уровень дендрограммы; самый мелкий уровень перечисляет узлы-участники. agent:<key> отображает дистиллированный L1-индекс агента, org:root — дерево организации агентов, а <alias>:: — карту соседнего проекта: те же карточки, тот же протокол, никаких особых случаев. Каждая карточка несёт parent_scope, поэтому подъём — это просто ещё один вызов graph_map, а слишком большие уровни пагинируются детерминированно (+N more, cursor=K), вместо того чтобы молча обрезаться.

2 · Иерархия существовала всегда — теперь она сохраняется

Алгоритм Лувена и так строит полную дендрограмму при каждой компиляции; мы брали один уровень, а остальное выбрасывали. Теперь компиляция сохраняет её целиком в сайдкар .tesserae/hierarchy.json — 4 уровня на референсном графе — как чистую детерминированную функцию от содержимого графа: фиксированный seed, каноническое упорядочивание, ноль вызовов LLM — что на 5k, что на 1M узлов. Байты graph.json не тронуты, проверка паритета полной и инкрементальной компиляции теперь требует идентичных дендрограмм на каждом уровне, а устаревшие кэши сводок сообществ вычищаются по признаку живости на всех уровнях.

3 · CTX-01 — ни один ответ инструмента больше не превышает свой бюджет

Единый хелпер fit_to_budget теперь ограничивает каждый ответ MCP: лимиты на каждую запись, детерминированный отбор, одна строка-продолжение. Инструменты, способные затопить сессию, исправлены: query_decisions и find_session_findings получили параметр limit, list_communities возвращает число участников и хендл вместо тысяч сырых идентификаторов, search_nodes/node_context/timeline/search_facts усекают каждый элемент по отдельности. Стоимость сессии теперь равна depth × budget — и не зависит от размера графа.

4 · Сводки появляются там, куда вы действительно смотрите

Сообщества мелких уровней получают заголовки лениво: первый спуск в ещё не просуммированную область делает один вызов LLM, кэшируемый по дайджесту состава; без LLM-клиента используется детерминированный структурный заголовок — никаких блокировок, никаких исключений. Промпты «сводки сводок» проходят валидацию цитирования (текст, не ссылающийся ни на одно дочернее сообщество, отклоняется), так что верхние уровни не могут разойтись с тем, что они суммируют. Цикл сна демона получает третью операцию, SUMMARIZE, которая заранее прогревает кэши для сообществ, которые агенты действительно посещают, — расходуя ограниченный LLM-бюджет на тик по запросу, а не пропорционально размеру корпуса.

5 · Иерархическая компиляция контекста

compile_context научился scope=<community> — извлечение ограничивается индуцированным подграфом сообщества, что структурно устраняет взрыв хабов, — и strategy="hierarchical": сначала сопоставление со слоем сводок, затем спуск по совпавшим ветвям и запуск PPR внутри них. Проекция PPR получила включаемые флагом ограничение степени и понижение веса provenance-рёбер, обезвреживающие мегахабы. Пути по умолчанию остаются байт-идентичными; обе возможности включаются явно, пока не пройдут A/B-проверку.

Обновление

pip install --upgrade tesserae==0.25.0

Перекомпилируйте проект один раз, чтобы записать сайдкар иерархии, а затем попросите агента вызвать graph_map() — весь граф, по одной ограниченной странице за раз.