Выгрузка
Выгрузить сессию разработки: Markdown для чтения и JSON со всеми сообщениями; что входит в файл, пример, что нет, как выгрузка попадает в журнал аудита.
В открытой сессии — две кнопки в шапке: Markdown и JSON. Файл называется
buff-code-<id сессии>.md или .json. Выгружается вся сессия целиком, а не загруженная в
ленту часть; служебные вызовы входят всегда.
Markdown — для чтения
Вся история сессии как текст: заголовок по первой строке первого сообщения разработчика, разработчик, устройство, проект, начало, число ходов, списанная сумма и токены по видам; дальше — по порядку:
- Разработчик: сообщение;
- Buff Code — время · модель · токены: рассуждение модели, ответ, каждое действие — глагол, объект, техническое имя инструмента, аргументы и результат в блоках кода, — ошибки хода;
- служебные вызовы помечены «(служебный вызов)»;
- ответ инструмента, чей вызов в запись не попал, — блоком «Ответ инструмента».
Так выглядит начало файла (сессия из двух ходов; значения условные):
# Почему падает test_orders?
Разработчик: alice · устройство ноутбук alice · проект shop-web
Начало: 2026-09-24T10:12:03+00:00 · ходов: 2 · списано: 3,4 ₽
Токены: 18 240 вход · 612 выход · 0 рассуждение · 9 100 кэш-чтение · 0 кэш-запись
**Разработчик:**
Почему падает test_orders?
### Buff Code — 2026-09-24T10:12:05+00:00 · gpt-5 · 9 120 вход · 96 выход · 0 рассуждение · 0 кэш-чтение · 0 кэш-запись
**Запустил** `pytest tests/test_orders.py -q` (`bash`):
```
{
"command": "pytest tests/test_orders.py -q",
"description": "Прогнать падающий тест"
}
```
Результат:
```
F [100%]
FAILED tests/test_orders.py::test_total - AssertionError: 100 != 90
Command exited with code 1
```
### Buff Code — 2026-09-24T10:12:19+00:00 · gpt-5 · 9 120 вход · 516 выход · 0 рассуждение · 9 100 кэш-чтение · 0 кэш-запись
Тест ждёт итог со скидкой, а `total()` её не применяет — исправляю.
**Изменил** `src/orders.py` (`edit`):
```
{
"filePath": "src/orders.py",
"oldString": " return sum(i.price for i in items)",
"newString": " return sum(i.price for i in items) - discount"
}
```
Результат:
```
Edited src/orders.py
```Подходит, чтобы приложить к разбору инцидента, отправить коллеге или положить в базу знаний.
JSON — вся сессия как данные
Объект с тремя полями:
session— описание сессии: идентификатор, организация, проект, логин, устройство, начало и последнее изменение, число ходов, модель, первое сообщение, токены по видам, длительность и сумма;note— пояснение к составу файла;messages— сообщения сессии по порядку, как их записал Buff Code. У каждого — номер в сессии (id), кто говорит (role: разработчик или модель), время, признак служебного (service) и части (parts): текст, рассуждение, вызов инструмента с аргументами (tool_call), результат вызова (tool_result), ошибка. У ответа модели —answer_of: ход, которым он получен, — модель, статус, длительность, токены по видам и списанная сумма.
Подходит для своего анализа: посчитать вызовы инструментов, разобрать типичные вопросы, загрузить в SIEM.
Что в выгрузку не входит
- системный промпт и описания инструментов, которые Buff Code добавляет к каждому запросу, — ни в Markdown, ни в JSON (см. что не показывается);
- файлы на диске разработчика, которые модели не передавались;
- секреты подключений — их в записи нет с самого начала.
Журнал аудита
Каждая выгрузка — своей и чужой сессии — записывается в журнал аудита событием «Выгружена сессия разработки»: кто, чью сессию, когда, с какого адреса. Подробнее — Журнал аудита и Buff Code.
Локальная выгрузка из Buff Code
У самого Buff Code есть buff session export — это локальная копия сессии с машины
разработчика, в формате Buff Code. К записям в кабинете она отношения не имеет: кабинет
хранит то, что прошло через сервер, и эту запись разработчик изменить не может.
Спросить по сессиям
Вопрос модели по записям сессий разработки: три способа, примеры по ролям, что получает модель, как читать ответ, кто видит вопрос, расход и журнал.
Журнал аудита и Buff Code
Что вокруг Buff Code попадает в журнал аудита: вход и отзыв устройств, просмотр чужих сессий, выгрузки, вопросы, знания — с важностью и примером записи.