Утилита baton переносит сессию между 5 консольными ИИ-агентами без потери контекста
Автор утилиты baton на Go научил консольных агентов Claude Code, Codex, Antigravity CLI, Pi и Hermes подхватывать сессии друг друга, когда у одного кончается пятичасовая квота. Инструмент читает журналы на диске, а не просит модель пересказать историю, поэтому не жжёт дорогие выходные токены и сохраняет номера строк и отвергнутые гипотезы. Новый агент получает сводку от последнего /compact, а полный дамп лежит во временной папке. • Зашифрованный слепок для другого ПК: AES-256-GCM, ключ не уходит на сервер • Навык SKILL.md вместо MCP-сервера: в контексте лишь одна строка описания • Код на стандартной библиотеке Go, лицензия MIT, сборка в три команды
AI-обработка оригинала Habr AI; редакция Hamidun News
Пятичасовые квоты на тарифах за $20 обычно заканчиваются посреди отладки, а штатного моста между Claude Code, Codex, Antigravity CLI (agy), Pi и Hermes нет. Автор утилиты baton написал на Go консольный инструмент, который забирает сессию из локальных журналов одного агента и отдаёт другому — на той же машине или через сеть на другой компьютер. Исходники лежат на GitHub под лицензией MIT.
Почему HANDOFF.md не спасает
Стандартный совет — попросить агента перед уходом записать состояние задачи, шаги и план в файл HANDOFF.md. Автор называет три проблемы. Первая: когда лимит исчерпан, агент перестаёт отвечать, и записать итоги уже некому. Вторая: даже если поймать момент заранее, модель пересказывает собственную историю по памяти. Контекстное окно вмещает от 200 тысяч до миллиона токенов, а длина одного ответа ограничена несколькими десятками тысяч, поэтому пересказ неизбежно сжатый. Пропадают точные аргументы команд, номера строк, отвергнутые гипотезы и мелкие правки. Третья: выходные токены у провайдеров примерно в пять раз дороже входных и быстрее сжигают остаток квоты.
Для Claude Code с несколькими аккаунтами есть ключ --resume, но при смене учётной записи серверный кеш промптов сбрасывается, и повторная прокачка длинной истории съедает заметную часть новой квоты. Пересесть на агента другого вендора этим ключом нельзя.
Как baton собирает сводку из журналов
Каждый агент и так пишет подробный журнал на диск. Claude Code хранит JSONL в ~/.claude/projects, Codex — rollout-файлы в ~/.codex/sessions, agy — transcript.jsonl и Protobuf-снимки в ~/.gemini/antigravity-cli, Pi — древовидный JSONL v3 с полями id и parentId, Hermes — SQLite-базу state.db. Команда /compact ничего не стирает: журналы работают на дозапись, а в поток добавляется запись со сводкой предыдущего разговора.
baton проходит журнал с первой записи (в Pi — по активной ветке дерева, в Hermes — по цепочке parent_session_id), собирает список изменённых файлов и выполненных команд, а на маркере сжатия сбрасывает буфер старых реплик. В оперативную сводку попадают текст последнего сжатия и все последующие сообщения целиком. Полная история и длинные выводы команд уходят в /tmp/baton-handoff/<id-сессии>/ (на Windows — в %TEMP%); папки старше суток удаляются, а рабочее дерево остаётся чистым для git status. В чат выводятся метаданные, состояние репозитория, затронутые файлы, последние команды и пути к дампам. Нужную деталь агент достаёт из full_dialogue.md или командой baton turn.
Работа строится вокруг пары save и load. Сессию называют штатной командой агента или через baton save, затем в другом агенте пишут «Продолжи сессию auth-refactor» или «Подхвати последнюю сессию». Если имя не задали, baton list покажет пронумерованных кандидатов с рабочей папкой, временем изменения и первым запросом.
Автор сознательно отказался от MCP-сервера. Такой сервер стартует с каждым сеансом, висит в памяти, а описания его функций попадают в системный промпт и тратят входные токены, даже когда сессии неделями не переносят. Навык SKILL.md держит в контексте одну строку, а утилита запускается разово и сразу завершается. Все пять агентов умеют подгружать навыки по требованию.
Перенос на другой ноутбук без коммитов
Второй сценарий — уйти от домашнего ПК и продолжить на ноутбуке, не заливая сырой код в общую ветку. Команда baton push упаковывает в tar.gz историю сессии, изменённые и новые неотслеживаемые файлы (по истории записи агента и статусу Git, Fossil или SVN), локальные файлы правил — CLAUDE.md, AGENTS.md, GEMINI.md, .cursorrules, .agents/rules/ — и копию глобальных инструкций.
Архив шифруется на клиенте алгоритмом AES-256-GCM со случайным 256-битным ключом и уходит в paste.rs (до 10 МиБ), при сбое — в dpaste.org, затем на termbin.com:9999. Есть и вариант с локальной папкой синхронизации: Dropbox, Nextcloud, Syncthing. Ключ — хвост токена после символа # — на сервер обменника не попадает, без него пакет выглядит как случайный шум.
На втором компьютере достаточно вставить выданный промпт в любого агента: он прочитает INSTALL.md, соберёт утилиту и развернёт сессию. Если локальный файл отличается от перезаписываемого, рядом создаётся копия с расширением .baton.bak. Глобальные правила распаковываются во временный каталог и системные конфиги второй машины не трогают.
Установка, обновление и ограничения
Сборка укладывается в три команды: git clone, go build -ldflags="-s -w" и baton install. Внешних зависимостей нет, только стандартная библиотека Go. baton install копирует SKILL.md в каталоги навыков всех пяти агентов и добавляет слэш-команду /baton. Автор советует собирать из исходников, а не брать готовые релизы. Проверка обновлений идёт фоновым процессом не чаще раза в сутки; baton update пересобирает утилиту через go install со сверкой по sum.golang.org либо скачивает бинарник из GitHub Releases и проверяет SHA-256.
Ограничения тоже есть. Публичные пастебины остаются чужой инфраструктурой, а токен переноса фактически секрет, потому что содержит ключ расшифровки. Форматы журналов внутренние и могут измениться при обновлении любого из агентов. Скорость «за долю секунды» — оценка автора, независимых замеров нет. Сам он признаёт, что похожий инструмент можно собрать за день, и предлагает считать главной ценностью разобранные форматы хранения сессий.
- 1 нояб. 2026 г.Локальные модели проиграли Opus и Codex: на MacBook 0,21 балла против 1,00 у Codex
- 1 нояб. 2026 г.Kimi набрала 96,2% в тесте на аналитику по базе 1С и стала запасом на случай блокировки Claude
- 1 нояб. 2026 г.OpenAI переписала правила поведения GPT: пять ценностей и цепочка приоритетов
- 1 нояб. 2026 г.Google признала: AI Mode снижает выручку поиска, акции упали на 15%
Вопросы и ответы по материалу
Что известно по теме: почему HANDOFF.md не спасает?
Стандартный совет — попросить агента перед уходом записать состояние задачи, шаги и план в файл HANDOFF.md. Автор называет три проблемы. Первая: когда лимит исчерпан, агент перестаёт отвечать, и записать итоги уже некому. Вторая: даже если поймать момент заранее, модель пересказывает собственную историю по памяти. Контекстное окно вмещает от 200 тысяч до миллиона токенов, а длина одного ответа ограничена несколькими десятками тысяч, поэтому пересказ неизбежно сжатый. Пропадают точные аргументы команд, номера строк, отвергнутые гипотезы и мелкие правки. Третья: выходные токе
Что известно по теме: как baton собирает сводку из журналов?
Каждый агент и так пишет подробный журнал на диск. Claude Code хранит JSONL в ~/.claude/projects, Codex — rollout-файлы в ~/.codex/sessions, agy — transcript.jsonl и Protobuf-снимки в ~/.gemini/antigravity-cli, Pi — древовидный JSONL v3 с полями id и parentId, Hermes — SQLite-базу state.db. Команда /compact ничего не стирает: журналы работают на дозапись, а в поток добавляется запись со сводкой предыдущего разговора. baton проходит журнал с первой записи (в Pi — по активной ветке дерева, в Hermes — по цепочке parent_session_id), собирает список изменённых файлов и выполненн
Что известно по теме: перенос на другой ноутбук без коммитов?
Второй сценарий — уйти от домашнего ПК и продолжить на ноутбуке, не заливая сырой код в общую ветку. Команда baton push упаковывает в tar.gz историю сессии, изменённые и новые неотслеживаемые файлы (по истории записи агента и статусу Git, Fossil или SVN), локальные файлы правил — CLAUDE.md, AGENTS.md, GEMINI.md, .cursorrules, .agents/rules/ — и копию глобальных инструкций. Архив шифруется на клиенте алгоритмом AES-256-GCM со случайным 256-битным ключом и уходит в paste.rs (до 10 МиБ), при сбое — в dpaste.org, затем на termbin.com:9999. Есть и вариант с локальной папкой синх
Соберите рабочего ИИ-агента или сервис своими руками без ручного кода
В Академии Жемала Хамидуна (academy.hamidun.com) открыт бесплатный 72-часовой тест-драйв: интерактивные скетч-уроки по Claude Code и Cursor, живой Tech Radar и готовые шаблоны агентов.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.