11.5 KB · updated 2026-07-31 · md

session-history.ru.md

docs/i18n/session-history.ru.md

История сессий Harness

<!-- translations:start -->

English · 한국어 · 中文 · 日本語 · Русский · Español · Français · Deutsch

<!-- translations:end --> Tesserae может импортировать локальные транскрипты AI-агентов и отображать их как память проекта в секции sessions/ статического сайта.

Эта возможность намеренно отделена от export harness:

  • export harness — исходящий контекст для инструментов вроде Claude Code, Codex, Gemini, Cursor, Kiro и OpenCode.
  • sessions ... — входящая история: она нормализует прошлые сессии Claude Code/Codex для текущего проекта, сохраняет их под .tesserae/harness_sessions/ и позволяет export site публиковать индексные и детальные страницы сессий.

Два пути внутрь: пакетный импорт и живой мониторинг

Инжест сессий больше не только пакетный. Есть два пути в одно и то же нормализованное хранилище:

  • Пакетный импортsessions discover/import сканирует корни транскриптов по требованию и записывает одноразово. Ниже на этой странице описан именно этот поток.
  • Живой мониторинг — демон-супервизор (tesserae engine) запускает SessionTailer, который наблюдает за транскриптами Claude Code и Codex самого этого проекта и вливает новые ходы по мере их появления. Каждый тик переходит к сохранённому пофайловому байтовому смещению, читает только новые байты и сохраняет завершённые ходы в SQLite HarnessSessionsDB (.tesserae/sqlite.db) до постановки в очередь дебаунсированной перекомпиляции, так что компиляция всегда читает согласованное состояние. Тейлер ограничен сессиями собственного проекта (Claude projects/<slug>/*.jsonl; Codex фильтруется по cwd) и после перезапуска возобновляет работу с сохранённых смещений без повторного проигрывания ходов.

Запуск живого цикла:

tesserae engine        # watch sources, coalesce bursts, auto-recompile
tesserae engine --once # single drain cycle then exit (deterministic)

tesserae refresh выполняет тот же конвейер ingest → compile → project один раз, внутри процесса, без запуска долгоживущего наблюдателя (передайте --no-sessions, чтобы пропустить сканирование harness-сессий).

Модель приватности

Оба пути инжеста явные: живой тейлер работает только пока вы держите tesserae engine живым, а пакетное обнаружение пишет только с --import. Обычный tesserae compile или tesserae export site читает уже нормализованные сессии из .tesserae/harness_sessions/ и живые записи в .tesserae/sqlite.db, но сам по себе не лезет неожиданно в приватные каталоги транскриптов harness.

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

Обнаружение и импорт локальных сессий

Из корня проекта:

tesserae sessions discover --import

Обнаружение сканирует локальные корни транскриптов Claude Code и Codex, принадлежащие рабочему каталогу текущего проекта. Используйте --root для сканирования конкретного каталога конфигурации и повторяйте --harness, чтобы ограничить обнаружение:

tesserae sessions discover \
  --root ~/.claude \
  --root ~/.codex \
  --harness claude-code \
  --harness codex \
  --import

Без --import обнаружение печатает найденное, не записывая нормализованные записи сессий.

Прямой импорт нормализованного JSON

Если другой инструмент уже произвёл нормализованный JSON HarnessSession, импортируйте один файл или список файлов:

tesserae sessions import path/to/session.json path/to/more-sessions.json

Каждый вход может содержать один объект сессии или список объектов сессий.

Список импортированных сессий

tesserae sessions list

Сессии хранятся ниже:

.tesserae/harness_sessions/
  manifest.json
  <harness>/
    <session>.json
    <session>.md

Сессии живого мониторинга дополнительно отслеживаются в SQLite HarnessSessionsDB (.tesserae/sqlite.db), которая также персистит пофайловые смещения чтения, с которых возобновляется тейлер. tesserae sessions list отображает объединённое представление.

Сборка статических страниц сессий

После импорта сессий пересоберите сайт:

tesserae export site

Сайт эмитирует:

.tesserae/site/sessions/index.html
.tesserae/site/sessions/<project>/<session>.html

Сгенерированный сайт ссылается на Sessions из глобального рейла, домашних карточек Browse, записей поиска и хлебных крошек каждой детальной страницы сессии.

Быстрый поиск по транскриптам (memex)

Когда вы поднимаете сайт через tesserae serve, дашборд сессий получает поле полнотекстового поиска по каждому проиндексированному транскрипту Claude/Codex на базе MD1 (BM25). Результаты показывают project · role · date · score плюс совпадающий сниппет.

cargo install --git https://github.com/nicosuave/memex --locked   # or: tesserae config deps --install memex
memex index                                                        # build the index once
tesserae serve                                                     # search box appears on /sessions

Он опционален и деградирует мягко: без бинарника memex (или индекса) поле показывает понятное, действенное сообщение, а остальной дашборд не затрагивается. Поисковый эндпоинт (GET /api/transcript-search) ограничен same-origin/loopback-вызовами, так что посещённая веб-страница не может прощупать вашу локальную историю.

Раскладка детальной страницы сессии

Детальные страницы сессий используют общий каркас статического сайта, а не автономный дамп транскрипта. Они включают:

  • hero и полосу статистики;
  • высокоуровневую сводку;
  • таймлайн и метаданные размера;
  • решения, файлы, команды, инструменты и ошибки, когда они есть;
  • свёрнутое дерево субагентов;
  • поход за ходом диалог user/assistant;
  • свёрнутые блоки использования инструментов, прикреплённые под предыдущим ходом assistant;
  • левый рейл диалога со ссылками на якоря #turn-N.

Markdown диалога рендерится через markdown-рендерер сайта. Семантические поверхности — inline-код, явная разметка команд/тегов, пути, имена файлов и хэштеги — оформляются как компактные чипы; случайные существительные с заглавной буквы автоматически чипами не становятся.

Текущая типографика транскриптов:

ПоверхностьСелекторРазмер
Markdown-проза диалога.session-turn-text, дочерние элементы прозы8px
Обычные code-фенсы диалога.session-turn-text pre10px
Содержимое bash/shell-фенсов.session-code-block code.language-bash, .language-sh, .language-shell, .language-zsh11px
Details/summary инструментов.session-tool-details, .session-tool-details > summary10px
Заголовок tool-use.session-tool-use-header8px
Текст payload инструмента.session-tool-use-text6px

Чек-лист публикации для сессий

Перед развёртыванием публичного сайта, включающего сессии:

  1. Запустите tesserae sessions list и убедитесь, что количество ожидаемое.
  2. Просмотрите .tesserae/harness_sessions/ на чувствительное содержимое.
  3. Пересоберите с tesserae export site.
  4. Откройте локально sessions/index.html и хотя бы одну детальную страницу сессии.
  5. Убедитесь, что блоки инструментов свёрнуты по умолчанию и что сырые payload инструментов допустимо публиковать.
  6. Разверните с tesserae export site --deploy, когда дерево исходников закоммичено.