26.1 KB · updated 2026-07-06 · md

v0.5.0.ru.md

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

Tesserae v0.5.0 — Спина движка и контекстный компилятор по запросу

<!-- translations:start -->

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

<!-- translations:end -->

Выпущено 2026-06-06 · PyPI · GitHub release · pip install --upgrade tesserae==0.5.0

Tesserae 0.5.0 — релиз, в котором проект становится контекстным движком, описанным его миссией. Он поставляет спину движка — оркестратор конвейера, супервизор-демон и живой монитор сессий — и флагманскую функцию Столпа 3: контекстный компилятор по запросу, который превращает «дай мне контекст по X» в подогнанный, цитируемый, готовый для агента набор. Под капотом проходы самосовершенствования теперь активированы и персистентны через сайдкар node_memory (числовая уверенность повторяемости в выводе, supersede включён по умолчанию), настоящие эмбеддинги по умолчанию заменяют хэш-бакетную заглушку (Трек B), а инфраструктура инкрементной компиляции приземляется, но остаётся с флагом OFF/экспериментальной. Два реальных бага компиляции, найденных по пути, исправлены (идемпотентность changed-only, контракт внедрённого хранилища), а тестовый набор достигает 1544 пройдено / 0 провалено. Это релиз, который выполняет фазы 0–6 дорожной карты контекстного движка.

Содержание:

  1. Контекстный компилятор по запросу — MD0 (Столп 3, флагман)
  2. Спина движка — оркестратор, демон, живой монитор сессий
  3. Самосовершенствование, активированное и персистентное (сайдкар MD0)
  4. Настоящие эмбеддинги по умолчанию (Трек B)
  5. Инфраструктура инкрементной компиляции (флаг OFF) + два исправления компиляции
  6. Обновление с v0.4.0
  7. Стратегический контекст

1. Контекстный компилятор по запросу — compile_context (Столп 3, флагман)

Что это

Функция, на которую указывала вся дорожная карта: запрос (или набор стартовых узлов) на вход — подогнанный, цитируемый, готовый для агента контекстный набор на выход. compile_contextчистая функция: она читает граф и возвращает in-memory ContextBundle, ничего не записывая на диск. Конвейер таков: запрос/сиды → PPR + гибридный поиск для сидов → обход окрестности k-hop с ограничением глубины → сборка релевантных тел вики → опциональный LLM-синтез (с мягким детерминированным фолбэком) → контроль бюджета с маркером усечения по границе слова. Каждый внёсший вклад узел записывается как ContextCitation, так что все цитаты набора разрешаются обратно в реальные узлы графа.

ТипРоль
`compile_context(query \seeds, depth, budget, …)`Чистая точка входа; возвращает ContextBundle.
ContextBundleСобранный контекст плюс список его цитат.
ContextCitationОдна разрешимая цитата (id узла → внесённое тело).

Компилятор доступен тремя способами:

  • MCP-инструмент compile_context — чтобы агент вызывал его посреди разговора. budget=0 означает без ограничения.
  • CLI tesserae project context — exit-0 / stdout / --output / детерминированный, для скриптов и конвейеров.
  • Тематические экспортыslice_export_context_for_topic производит тематический срез llms.txt, а бриф агентного харнесса теперь рендерится по теме через compile_context (Паттерн 4 + Паттерн 6) вместо жёстко зашитого топ-12.

Вместе с этим поставляются два связанных апгрейда извлечения: node_context получает ранжированный путь use_ppr (с заполнением соседей с учётом подавления и контролем рёбер/лимита), а тематический срез использует канонический wiki-slug, так что цитаты и экспорты выстраиваются.

Как использовать

# CLI: скомпилировать цитируемый контекстный документ по теме, вывести в stdout или файл
tesserae project context "ранжирование извлечения и RRF-слияние"
tesserae project context "ранжирование извлечения" --output ./context-retrieval.md

Из MCP-клиента:

{
  "tool": "compile_context",
  "arguments": {
    "query": "Как наш стек извлечения ранжирует кандидатов?",
    "depth": 2,
    "budget": 4000
  }
}
// → возвращает ContextBundle: собранное тело + список разрешимых цитат.
//   budget: 0 означает без ограничения.

Можно также сеять напрямую из id узлов (пропуская шаг поиска), когда якоря уже известны:

{
  "tool": "compile_context",
  "arguments": {
    "seeds": ["decision-2026-05-22-switch-to-rrf-fusion"],
    "depth": 2,
    "budget": 0
  }
}

Когда использовать

  • Агенту нужен сфокусированный бриф по одной теме, а не дамп llms.txt по всему корпусу или одно тело wiki_page.
  • Вы хотите разрешимые цитаты — каждое утверждение в наборе прослеживается до узла графа — чтобы агент мог продолжить.
  • Вы скриптуете передачу и хотите детерминированный контекстный артефакт (--output, режим сборки без LLM), который перегенерируется по теме.

Где это находится

Основная реализация: MD0 (compile_context, ContextBundle, ContextCitation). Регистрация и диспетчеризация MCP: tesserae/mcp_server.py. Подключение CLI: подпарсер context и _handle_context в tesserae/cli.py. Тематический рендеринг харнесса/экспорта маршрутизируется через compile_context.

Оговорки

  • Качество синтеза зависит от LLM-бэкенда; при отсутствии бэкенда компилятор откатывается к детерминированной сборке (по-прежнему с цитатами, просто без синтеза). Фолбэк мягкий — сбой синтеза никогда не прерывает набор.
  • Обход k-hop ограничен по глубине, а PPR работает над ограниченным по глубине подграфом; очень большие графы выигрывают от плотного depth плюс реального budget, а не budget=0.
  • Усечение по бюджету режет по границе слова и добавляет маркер усечения, так что обрезанный набор остаётся читаемым, а не обрывается посреди токена.

2. Спина движка — оркестратор, демон, живой монитор сессий

Что это

Три фундаментальные части, которые аудит назвал единственным крупнейшим пробелом, теперь поставлены под tesserae/engine/:

  • Оркестратор конвейера (pipeline.py) — цепочка ingest → compile → project → publish, поднятая из markdown-скилла слэш-команды в первоклассный внутрипроцессный объект, который вызывают демон, CLI и MCP. Это общий путь кода, на котором держится всё непрерывное.
  • Супервизор-демон (daemon.py) — наблюдаемый долгоживущий процесс, владеющий одним циклом событий, сводящий всплески триггеров в один запуск конвейера, обрабатывающий корректное завершение по SIGTERM / SIGINT и выживающий при исключении конвейера, не умирая.
  • Живой монитор сессий (session_tail.py) — читает в хвост живые транскрипты харнесса и поглощает реплики по мере выполнения сессий, заменяя пост-фактум скан sessions discover --import (Столп 1).

Вместе они превращают Tesserae из одноразового пакетного CLI в процесс, который может непрерывно наблюдать и поглощать.

Когда использовать

  • Вам нужно свойство «продолжает обновляться» — сессии и правки втекают в граф без ручной команды.
  • Вы строите поверх Tesserae и хотите одну общую точку входа конвейера для демона, CLI и MCP, а не переписывать цепочку refresh.

Где это находится

tesserae/engine/pipeline.py, tesserae/engine/daemon.py, tesserae/engine/session_tail.py (слиты как спина движка, фазы 0–2 дорожной карты).


3. Самосовершенствование, активированное и персистентное (сайдкар node_memory)

Что это

Столп «самосовершенствующейся базы» переходит от навесных проходов к персистентному сайдкару node_memory (tesserae/memory/). Два видимых пользователю изменения:

  • Supersede включён по умолчанию с детерминированным вердиктом. Проход supersede теперь выполняется по умолчанию (не нужен TESSERAE_SUPERSEDE_PASS=true), с детерминированным, решительным вердиктом по session-id в обоих направлениях и порогом-стражем, плюс нижестоящим подавлением, так что вытесненный факт перестаёт появляться в контекстном выводе, а не просто получает ребро.
  • Числовая уверенность повторяемости в выводе. Подкрепление повторяющихся инсайтов теперь производит числовую уверенность из частоты между сессиями, внедряемую в TemporalFactProjector через memory_by_id, заменяя прежнюю грубую строковую эвристику. Повторное утверждение факта между сессиями измеримо повышает его уверенность в выводе.

Когда использовать

  • Вы ведёте мультисессионные проекты, где один и тот же инсайт повторяется — подкрепление превращает эту повторяемость в сигнал уверенности, по которому агенты могут ранжировать.
  • Вы хотите, чтобы устаревшие факты исчезали из скомпилированного контекста, а не просто помечались.

Где это находится

tesserae/memory/store.py, reinforce.py (числовая уверенность повторяемости), supersede.py (по умолчанию, детерминированный вердикт + подавление), плюс decay.py, contradiction.py и insight_symbol_link.py. Тестовый набор самосовершенствования (ранее ноль тестов) теперь покрывает детерминизм, идемпотентность и путь LLM-переопределения.

Оговорки

  • Каркас затухания и противоречий поставляется в том же сайдкаре; видимое пользователю поведение по умолчанию в v0.5.0 — supersede + числовая уверенность повторяемости.

4. Настоящие эмбеддинги по умолчанию (Трек B)

Что это

Лейн «семантики» по умолчанию больше не детерминированное хэш-бакетное псевдо-эмбеддинг. v0.5.0 поставляет настоящий Model2VecBackend и заставляет active_embedding_backend громко падать, а не молча деградировать до blake2b. Используемый семантический бэкенд отображается в embedding_status, а косинусный порог позволяет лейну эмбеддингов допускать кандидатов (а не только переранжировать), так что запросы с перефразировками и синонимами выводят узлы, которые упускает BM25.

Как использовать

{ "tool": "embedding_status" }
// → сообщает, какой семантический бэкенд активен (настоящий vs фолбэк), так что
//   вы с первого взгляда видите, действительно ли извлечение из коробки семантическое.

Где это находится

tesserae/retrieval/hybrid.py (выбор бэкенда, громко падающий active_embedding_backend, косинусный порог для допуска только по эмбеддингам) и Model2VecBackend. Отображается через MCP-инструмент embedding_status.

Оговорки

  • Если настоящий бэкенд не может загрузиться, извлечение теперь громко об этом сообщает, а не делает вид, что хэш-заглушка семантическая — это намеренное изменение поведения.

5. Инфраструктура инкрементной компиляции (флаг OFF) + два исправления компиляции

Что это

Спроектированный инкрементный слой через порт GraphStore приземляется как инфраструктура: сайдкар происхождения, поверхность удаления GraphStore, согласование при полной компиляции, готовность с учётом рёбер, прокладка происхождения-продюсера и персистентный async-рантайм url_resolver (больше нет asyncio.run на каждый вызов). Байтовая эквивалентность относительно полной компиляции доказана для покрытых путей (переименование, тождество псевдонима, ворота эквивалентности перемещения обоих концов).

Флаг incremental_compile остаётся OFF/экспериментальным. Обзор Codex выявил пробелы мульти-владельца / жизненного цикла продюсера / cap-fallback, так что флаг опционален и байтово эквивалентен лишь для покрытых путей, пока эти пробелы не закроются.

Два реальных бага компиляции, выявленные в этой работе, исправлены в пути по умолчанию:

  • Идемпотентность changed-onlycompile теперь учитывает идемпотентность changed-only, так что no-op перекомпиляция не взбалтывает граф.
  • Контракт внедрённого хранилища — контракт внедрённого хранилища в компиляции проекта учитывается, исправляя класс сбоев на путях прямого поглощения.

Где это находится

Инкрементная инфраструктура охватывает порт GraphStore и сайдкар происхождения; два исправления приземляются в пути компиляции проекта (fix(project): honor changed-only idempotence + injected-store contract in compile).

Оговорки

  • Пока не включайте incremental_compile для продакшн-графов — он экспериментален по замыслу, пока не закроются пробелы мульти-владельца / жизненного цикла / cap-fallback. Полная компиляция остаётся доверенным путём.

Обновление с v0.4.0

pip install --upgrade tesserae==0.5.0

Для существующих рабочих процессов v0.5.0 аддитивенtesserae project compile работает точно как прежде, теперь с двумя исправлениями корректности (идемпотентность changed-only, контракт внедрённого хранилища). Новые поверхности опциональны для вызова:

Новый контекстный компилятор по запросу:

tesserae project context "<тема>"            # цитируемый контекстный набор в stdout
tesserae project context "<тема>" --output out.md
{ "tool": "compile_context", "arguments": { "query": "<тема>", "depth": 2, "budget": 4000 } }

Поведение, теперь включённое по умолчанию (ранее опциональное или отсутствующее):

  • Проход supersede по умолчанию (с подавлением в выводе вытесненных фактов).
  • Числовая уверенность повторяемости, отображаемая в проецируемом выводе.
  • Настоящие эмбеддинги по умолчанию с громко падающим бэкендом (без молчаливого даунгрейда до хэш-заглушки).

Всё ещё экспериментально — выключите для продакшн-графов:

  • incremental_compile (инфраструктура поставлена, флаг OFF).

Всё остальное — graph_ppr, гибридный search_nodes, sync-code, research, живые хуки, embedding_status, fresh_insights, schema-drift, слэш-команды, проекция вики / Obsidian — переносится из v0.4.0.


Стратегический контекст

Аудит контекстного движка (2026-06-02) назвал пробел одной строкой: Tesserae была механически здоровым, хорошо протестированным пакетным CLI-компилятором, с ручным триггером и пост-фактум на всех трёх столпах, а единственной крупнейшей недостающей частью был долгоживущий супервизор, владеющий одним циклом событий. v0.5.0 закрывает эту строку. Спина движка — это супервизор; живой монитор сессий делает Столп 1 живым, а не пост-фактум; сайдкар node_memory делает Столп 2 самосовершенствующимся на месте; а контекстный компилятор по запросу — это Столп 3 — флагман, превращающий типизированный граф, хранилище и сайт из статических проекций в контекстно-ограниченный по запросу, цитируемый, готовый для агента вывод.

Ни один инструмент в обследованном нами ландшафте PKM-AI 2026 года не делает эту композицию. Cursor Memories, Claude CLAUDE.md, Cline memory-bank и Aider CONVENTIONS.md — статические текстовые мешки без цикла движка, без типизированного самосовершенствования и без компилятора цитируемого контекста по запросу. Microsoft GraphRAG имеет типизированные сущности и сводки сообществ, но это система корпус-RAG, а не непрерывно работающий движок памяти проекта. v0.5.0 поставляет цикл, который держит базу свежей, и компилятор, который вручает агентам ровно тот контекст, который они запрашивают — миссия, прямо изложенная в AGENTS.md, теперь работающая в коде.

Что осталось: Фаза 7 — объединение serve + watch + deploy под супервизором для непрерывной публикации, плюс включение флага инкрементной компиляции, как только закроются его оставшиеся пробелы. Спина и флагман внутри; релиз сведения — следующий.

См. также: