Перейти к основному содержимому

Путь чтения и маршрутизация

Поток чтения определяет, какую память агент увидит для данной задачи.

Поток чтения​

  1. Engram загружает индексы рабочего пространства и необязательные глобальные индексы.
  2. Записи рабочего пространства имеют приоритет над глобальными дубликатами.
  3. Правила игнорирования и фильтры ролей скрывают нерелевантные записи.
  4. Маршрутизация с учётом графа выбирает компактный пакет контекста.
  5. Проверки хешей и безопасности выполняются до вывода содержимого.

Привязка, ранжирование и уточнение​

load сначала привязывает маршрутизацию к значимым терминам запроса, игнорируя общие слова памяти, такие как rule, knowledge, и типичные стоп-слова. Затем он ранжирует кандидатов по BM25 (с лёгким стеммингом) по id, тегам, directive, краткому описанию, триггерам и терминам содержимого. Оценка масштабируется по жизненному циклу (review_due ×0.7), устареванию (×0.6), уверенности (medium ×0.9) и области (рабочее пространство ×1.1), плюс небольшой бонус воспоминаниям, которые агенты запрашивали. Воспоминания, у которых valid_until уже прошёл, исключаются с причиной пропуска lifecycle. Запросу с четырьмя и более якорями нужны два попадания по якорям или одно попадание по сильному полю (id, тег, directive или путь из applies_to). Векторные совпадения без пересечения по терминам никогда не допускают воспоминание.

Наконец, он уточняет более широкий пул кандидатов до компактного пакета контекста.

Обычная загрузка сообщает число выбранных и всех связанных воспоминаний, например loaded 8 memory files / 14 total related memories.

  • load --dry-run показывает число кандидатов, сужающие теги и причины совпадений.
  • load --all возвращает все видимые маршрутизированные совпадения вместо применения компактного лимита.
  • load по умолчанию — компактный маршрут для агента. Используйте load --full для более широкого устаревшего вывода.

Многоуровневое раскрытие​

Вывод для агента по умолчанию разбит на уровни (load.disclosure: auto):

  • Первые load.expand_top совпадений (по умолчанию 3) выводятся телами под ### <id> [<type>, <authority>], с requires: <ids>, если у воспоминания есть depends_on.
  • Каждое другое выбранное совпадение, плюс до 5 пропущенных кандидатов, выводится однострочной карточкой - <id> [<type>] <directive-or-summary>, с добавлением (stale), если его источники изменились.
  • Вывод завершается строкой fetch: engram load --id <ids>, чтобы агент запрашивал полное тело только при необходимости.

Frontmatter, ## Context, ## Example и ## Origin агентам никогда не отображаются. --budget-tokens ограничивает весь вывод: Engram сначала превращает тела в карточки и только затем отбрасывает карточки с самым низким рангом. Используйте --disclosure full, --full или --all, чтобы отключить разбиение на уровни.

Дельта хуков и триггеры по путям​

Хуки помнят, какие ключи памяти они уже доставили в сессии. Последующие реплики внедряют только новые тела, а остальные сворачивают в одну строку already loaded: <ids>. SessionStart и PreCompact сбрасывают этот набор. Воспоминания с glob-шаблонами applies_to также внедряются «точно вовремя» по событиям файлов PreToolUse (правки Codex apply_patch; Claude Read, Edit, Write, MultiEdit в режиме hook) и по событиям Gemini AfterTool (read_file, write_file, replace), не более 3 тел на событие. При hooks.path_rules native (по умолчанию) Claude и Cursor вместо этого загружают их из сгенерированных файлов правил в .claude/rules/engram/ и .cursor/rules/engram/, а хук Claude InstructionsLoaded передаёт набор доставленного. Субагенты Claude и Codex стартуют с маршрутизированным контекстом через SubagentStart, а вывод хуков остаётся в пределах ограничения размера payload каждого хоста (2 400 токенов в Codex, 9 500 символов в Claude): при превышении тела понижаются до карточек и никогда не обрезаются посреди текста. См. Хуки и строки подтверждения.

workflow и workflows по-прежнему маршрутизируются к воспоминаниям-навыкам, но общие слова-типы сами по себе не создают широкого совпадения.

Слои зависимостей​

Используйте frontmatter depends_on, когда воспоминание должно опираться на другое воспоминание, а не повторять его:

depends_on: [release-foundation]
level: advanced

Выполните engram graph --rebuild после ручных правок. Граф сообщает о слоях зависимостей, а engram load подтягивает маршрутизируемые предварительные условия в тот же компактный пакет контекста перед более глубокими воспоминаниями. Связанные рёбра графа и векторные совпадения сами по себе не могут загрузить посторонние воспоминания; они лишь помогают переранжировать или расширить воспоминания, которые уже пересекаются со значимыми терминами запроса. Явные предварительные условия depends_on могут по-прежнему загружаться без собственного совпадения по ключевым словам.

Диаграмма маршрутизации​

Дальнейшие шаги​