SYNAPSE
EN
Гайды

Как перенести сессию между консольными ИИ-агентами без потери контекста

Гайд: забираем живую сессию из локальных логов и передаём другому агенту одной командой. Без пересказов и лишних токенов.

Как перенести сессию между консольными ИИ-агентами без потери контекста

Что понадобится

  • Два консольных агента. Например, 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"}), значит, полная история лежит в другом месте. Ищите файл большего размера.

Шаг 2. Убедитесь, что лог содержит полный контекст

Важно: лог пишется, пока агент работает. Перед копированием остановите агента или дождитесь, пока он завершит текущий шаг.

Шаг 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. Проверьте, что контекст не потерялся

Спросите нового агента о деталях, которые были только в исходной сессии. Например, имя переменной или последнюю ошибку. Если агент отвечает правильно — перенос удался.

Шаг 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 и запуск целевого агента с файлом — всё, что нужно. Если лог полный и агент его принял, задача продолжается с того же места.

↗ Первоисточник: Habr