# Прочитать сессию

> Открытая сессия разработки: шапка и метрики, полоса хода с цветными метками, лента сообщений и действий, служебные вызовы, «Следить», раскладка на телефоне.

Открытая сессия показывает работу разработчика с моделью так, как она шла: **шапка** с
метриками, **полоса хода** с меткой на каждый шаг, **лента** сообщений и действий слева и
**инспектор** выбранного действия справа. Что показывает инспектор по каждому виду
действия — на странице [Что именно делал агент](/docs/buff-code/sessions/action).

_Иллюстрация: Лента слева, инспектор справа; полоса хода над ними ведёт к любому шагу сессии._

## Шапка и метрики

Сверху — кнопка назад **«Сессии разработки»**, название сессии (первая строка первого
сообщения разработчика) и строка: **логин** · **устройство** · **проект** · **день начала**.
Если последний ход был меньше пяти минут назад, рядом — зелёная отметка **«Идёт»**.

Кнопки шапки:

| Кнопка | Что делает |
| --- | --- |
| **Спросить** | задать модели вопрос по этой сессии — [Спросить по сессиям](/docs/buff-code/sessions/ask) |
| **Следить** | держать выбранным последний шаг и показывать новые ходы по мере их появления — см. ниже |
| **Markdown**, **JSON** | выгрузить сессию файлом — [Выгрузка](/docs/buff-code/sessions/export) |

Под кнопками — строка метрик всей сессии: **число ходов**; **токены** — сумма и разбивка
вход · выход · рассуждение · кэш (наведите на число: кэш-чтение и кэш-запись покажутся
отдельно); **время работы модели**; **списано** в рублях.

Владелец, открывший сессию другого разработчика, видит под метриками предупреждение
**«Чужая сессия»**: «Вы смотрите сессию разработчика … Просмотр и выгрузка записываются в
журнал аудита организации». Подробнее — [Журнал аудита и Buff Code](/docs/buff-code/sessions/audit).

## Полоса хода

Под шапкой — полоса с меткой на каждый **шаг**: сообщение разработчика или одно действие
модели, слева направо по времени. Крайние подписи под полосой — время первого и последнего
шага.

_Иллюстрация: Полоса хода (обведена): метка на каждое действие и сообщение, цвет — по виду действия, ошибка красным; под полосой — «шаг i из N» и легенда._

**Цвет метки — вид действия.** Легенда под полосой: **разработчик** · **терминал** ·
**чтение файла** · **правка файла** · **код** · **знания** · **ошибка**. Действие, которое
закончилось ошибкой — команда с ненулевым кодом выхода, отказ инструмента, — красное, каким
бы оно ни было. У остальных видов (поиск, справочник, вопрос разработчику, интернет,
подзадача) свои цвета; наведите на метку — подсказка покажет время и вид.

**Как ходить по полосе:**

- **клик по метке** выбирает шаг: инспектор показывает это действие, лента прокручивается
  к его строке. Метки сообщений разработчика не нажимаются — сообщение и так видно в ленте;
- **стрелки ← и →** на клавиатуре (полоса в фокусе) ведут к соседнему действию;
- кнопка **«К последнему шагу»** справа от полосы — в конец сессии;
- подпись **«шаг 12 из 40 · 14:07»** под полосой — где вы сейчас и во сколько это было.

**Найти ошибку или правку за десять секунд.** Красная метка на полосе — это ошибка: клик по
ней открывает в инспекторе команду и её вывод с кодом выхода. Зелёные метки — правки файлов:
клик показывает диф. Если правок много, быстрее вкладка **«Файлы»** инспектора: все файлы
сессии с числом изменений, клик ведёт к последней правке файла.

## Лента

Лента — история сессии в порядке, как она шла. В её шапке — **число сообщений** и флажок
**«Служебные вызовы (N)»** (см. ниже).

- **Сообщение разработчика** — пузырь справа с подписью «логин · hh:mm». Длинный текст
  (больше двенадцати строк или около тысячи знаков) свёрнут; **«Показать полностью»** раскрывает, **«Свернуть»** — обратно.
- **Ответ модели** — подпись «Buff Code · hh:mm», под ней:
  - **«Рассуждение модели»** — раскрывающийся блок, если модель рассуждала перед ответом;
  - **текст ответа** — как Markdown, с кодом и списками;
  - **«Ошибка модели»** — красная плашка с текстом отказа, если ход не удался;
  - блок **«N действий»** — по строке на каждое действие: значок вида, **глагол** и
    **объект** — «Запустил · `make test`», «Изменил · `src/api.py`», — у правок **+N −N**
    добавленных и удалённых строк, у команды с ненулевым кодом выхода — красная метка
    **«код N»**, у отказавшего инструмента — **«ошибка»**, у действия без ответа — спиннер
    «ждёт ответа». Если в блоке есть хоть одна ошибка, в его шапке — метка **«есть ошибка»**;
  - строка хода: **модель · время · токены · ₽**.
- **«Ответ инструмента на вызов, которого нет в записи»** — результат, чей вызов в запись не
  попал (обрыв потока); показывается как есть.

Клик по строке действия выбирает его в инспекторе. На широком экране инспектор виден всегда:
пока вы ничего не выбрали, в нём последний шаг сессии.

_Иллюстрация: Лента и инспектор рядом: в ленте — ответ модели и блок «N действий» со строками «глагол · объект», справа — выбранное действие целиком._

## Служебные вызовы

Кроме работы разработчика и модели в записи есть **служебные** сообщения: сжатие длинного
разговора и то, что Buff Code вставляет сам, — напоминание модели о режиме «План», очередной
ход цели. Они записываются, как остальные, но в ленте и на полосе хода по умолчанию скрыты,
чтобы не мешать читать работу. Флажок **«Служебные вызовы (N)»** в шапке ленты показывает их:
каждое помечено «служебный вызов» и подписано «Buff Code» — разработчик его не писал.
Число N — сколько таких ходов было. В [выгрузку](/docs/buff-code/sessions/export) они
входят всегда.

_Иллюстрация: Флажок включён (обведён): в ленте появилось напоминание о режиме «План», которое Buff Code вставил сам. Имя разработчика и устройства на кадре размыты._

## «Следить» и «Идёт»

**«Идёт»** в шапке — у сессии, где последний ход был меньше пяти минут назад: разработчик,
скорее всего, ещё работает.

**«Следить»** — режим, а не подгрузка. Пока он включён, выбранным остаётся последний шаг, лента
держится прокрученной к концу, а новые ходы приходят сами: сервер сообщает по push, что в
сессии появился ход, и хвост ленты дописывается без перезагрузки. У идущей сессии режим включён
с самого начала — кнопка подсвечена. Как только вы выбираете более ранний шаг, слежение
выключается; кнопка включает его обратно. Включить «Следить» можно и у давно законченной
сессии — тогда оно просто держит последний шаг.

Это удобно, когда новичок разбирается с проектом, а тимлид хочет видеть, куда модель его
ведёт, не заглядывая через плечо.

## «Показать продолжение»

Длинная сессия приходит страницами. Когда лента заканчивается раньше сессии, внизу — кнопка
**«Показать продолжение»**; она дописывает следующую страницу. Полоса хода и вкладка «Файлы»
считают только загруженную часть; выгрузка и вопросы по сессии берут её целиком.

## На телефоне

На узком экране лента занимает всё место, полоса хода показывается без легенды. Инспектор
открывается **нижней шторкой** по нажатию на строку действия или метку полосы; кнопка
**«Закрыть»** или касание вне шторки прячут его. Вкладки «Действие» и «Файлы» в шторке те же.

<div className="grid gap-4 sm:grid-cols-2">
  _Иллюстрация: На телефоне полоса хода без легенды, лента во всю ширину._

  _Иллюстрация: Инспектор открывается шторкой снизу; закрывается кнопкой «Закрыть»._

</div>
