Как перенести сессию между консольными ИИ-агентами без потери контекста
Гайд: забираем живую сессию из локальных логов и передаём другому агенту одной командой. Без пересказов и лишних токенов.
Что понадобится
- Два консольных агента. Например, Claude Code и Codex. Или Pi, Hermes, Antigravity CLI (agy).
- Доступ к локальным логам сессий. У большинства агентов они лежат в домашней директории.
- Утилита
baton(команда для переноса сессии). Если её нет — ставим из репозитория. Ссылку ищите в статье на Хабре, данных о пакете нет. - Базовое понимание, где агент хранит историю. Без этого шаги ниже не сработают.
Статья на Хабре от 30 октября 2026 года описывает подход: не просить модель пересказывать, а забрать сырой лог и скормить его новому агенту. Ниже — как это сделать руками.
Шаг 1. Найдите файл сессии текущего агента
У каждого агента свой формат и путь. Проверьте типичные места:
# Claude Code
ls ~/.claude/projects/
# Codex
ls ~/.codex/sessions/
# Pi, Hermes, agy — смотрите в ~/.config/<имя-агента>/
Внутри — файлы с расширением .jsonl или .json. Один файл — одна сессия. Имя обычно содержит дату и идентификатор.
Если не уверены, какой файл свежий, отсортируйте по времени:
ls -lt ~/.claude/projects/*/*.jsonl | head
Шаг 2. Убедитесь, что лог содержит полный контекст
Откройте последние строки файла:
tail -n 20 путь/к/сессии.jsonl
Вы должны увидеть сообщения пользователя, ответы агента и вызовы инструментов. Если в логе только метаданные (например, {"type":"summary"}), значит, полная история лежит в другом месте. Ищите файл большего размера.

Важно: лог пишется, пока агент работает. Перед копированием остановите агента или дождитесь, пока он завершит текущий шаг.
Шаг 3. Передайте лог новому агенту через baton
baton читает файл сессии и генерирует промпт для другого агента. Команда выглядит так:
baton transfer \
--from ~/.claude/projects/проект/сессия.jsonl \
--to codex \
--output handoff.txt
Флаги:
--from— путь к исходному логу.--to— целевой агент (codex,agy,pi,hermes).--output— файл, куда baton запишет готовый промпт.
Если baton не установлен, проверьте, есть ли он в PATH:
which baton
Если пусто — установите по инструкции из репозитория. Данных о менеджере пакетов нет.
Шаг 4. Запустите целевой агент с передачей файла
Передайте handoff.txt новому агенту как первый промпт. Например, для Codex:
codex < handoff.txt
Или откройте интерактивную сессию и вставьте содержимое файла вручную:
cat handoff.txt | codex
Агент получит весь диалог, включая вызовы инструментов и результаты. Контекст не пересказан — он передан как есть.
Шаг 5. Проверьте, что контекст не потерялся
Спросите нового агента о деталях, которые были только в исходной сессии. Например, имя переменной или последнюю ошибку. Если агент отвечает правильно — перенос удался.

Если агент путается, вернитесь к шагу 2. Скорее всего, лог неполный или обрезан.
Шаг 6. Продолжайте работу
Дальше работайте в новом агенте как обычно. Старый лог можно сохранить на случай отката. baton не удаляет исходные файлы.
Типичные ошибки
Ошибка 1. Используете HANDOFF.md вместо лога.
Агент пишет сводку своими словами и теряет детали. Узнать просто: новый агент задаёт вопросы, которые уже были решены. Решение — брать сырой лог, а не пересказ.
Ошибка 2. Копируете лог во время работы агента.
Файл может быть недописан. Признак: последние строки обрываются на середине JSON. Остановите агента и скопируйте заново.
Ошибка 3. Передаёте не тот файл.
В директории лежат логи разных проектов. Проверьте, что в логе есть нужные сообщения: grep "имя_переменной" сессия.jsonl. Если пусто — файл не тот.
Ошибка 4. Целевой агент не понимает формат.
Некоторые агенты ждут промпт в другом виде. baton конвертирует, но если вы копируете вручную, проверьте, что не вставили сырой JSONL. Признак: агент отвечает «не могу разобрать». Используйте вывод baton, а не исходный файл.
Ошибка 5. Лимиты кончились у всех.
Перенос не создаёт квоту. Если все аккаунты исчерпаны, ждите сброса или подключайте открытые агенты (Pi, Hermes) с моделями DeepSeek, GLM, Grok. Данных о том, что перенос обходит лимиты, нет.
Ошибка 6. Серверный кеш промптов сброшен.
При смене аккаунта Claude Code штатный --resume подхватит сессию с диска, но кеш промптов на сервере сбросится. Повторная прокачка длинной истории съест кусок новой квоты. Это не ошибка переноса, а особенность смены учётной записи. Учитывайте при планировании.
Что в итоге
Перенос через локальный лог сохраняет контекст точнее, чем пересказ. Одна команда baton transfer и запуск целевого агента с файлом — всё, что нужно. Если лог полный и агент его принял, задача продолжается с того же места.