Baton позволяет переносить историю работы между пятью ИИ-агентами
Коротко
- Разработчик создал открытую утилиту baton, которая переносит историю работы между пятью ИИ-агентами. Это позволяет продолжить задачу в другом инструменте, когда у предыдущего закончился лимит.
- Baton читает локальные журналы сессий вместо того, чтобы просить нейросеть пересказать историю. Новый агент получает сведения о выполненных командах, изменённых файлах и последних сообщениях.
- Утилита позволяет продолжить незавершённую работу на другом компьютере без промежуточных коммитов в Git. Файлы и историю она передаёт в зашифрованном архиве с возможностью резервного копирования.
Автор статьи на Хабре столкнулся с этой проблемой, когда разрабатывал систему для перевода книг. Он использовал
Claude Code, Codex и Antigravity CLI, но подписки по $20 с пятичасовыми квотами регулярно заканчивались посреди отладки. Перейти к другому агенту можно, однако тот не знает, что уже сделано. А если лимит исчерпан, попросить предыдущего помощника подготовить отчёт уже не получится.
Обычно разработчики решают проблему с помощью файла HANDOFF.md: агент записывает туда состояние задачи, выполненные действия и дальнейший план. Но такой пересказ неизбежно теряет подробности. Из истории исчезают точные параметры команд, номера строк, отвергнутые гипотезы и мелкие исправления. Кроме того, по оценке автора, выходные токены обычно стоят примерно в пять раз дороже входных. Подробный отчёт расходует и деньги, и остаток квоты.
Baton работает иначе: без пересказа. Утилита сама читает журналы сессий, которые агенты сохраняют на компьютере. Она поддерживает Claude Code, Codex, Antigravity CLI, Pi и Hermes, хотя каждый из них хранит историю в собственном формате.
Программа находит последнее сжатие контекста — момент, когда агент заменил старую часть разговора краткой сводкой. Новому помощнику она передаёт эту сводку, все последующие сообщения, историю команд, список изменённых файлов и состояние проекта. Полный журнал сохраняется отдельно. Если потребуется вспомнить старую ошибку сборки или конкретную команду, агент сможет открыть нужный фрагмент, не загружая весь объём истории в контекст модели.
Например, разработчик исправляет систему авторизации в Claude Code и сохраняет сессию под именем auth-refactor с помощью команды baton save. Когда квота заканчивается, он открывает Codex и выполняет baton load auth-refactor. Новый агент получает сведения о проделанной работе и может продолжить задачу. Если сохранить имя заранее не удалось, команда baton list покажет недавние сессии с рабочими каталогами, временем изменения и первыми запросами.
Есть и другой сценарий: перенос работы между компьютерами. Допустим, разработчик начал задачу дома, оставил в проекте недописанный код и хочет продолжить на ноутбуке. Отправлять незавершённые изменения в Git необязательно. Команда baton push собирает историю диалога, изменённые и новые файлы, а также инструкции для агентов в архив tar.gz.
Перед отправкой программа шифрует архив алгоритмом AES-256-GCM. Для передачи используются внешние сервисы обмена данными с резервными вариантами или локальная папка облачной синхронизации. Ключ расшифровки входит в токен переноса, но не передаётся серверу обменника. На втором компьютере baton восстанавливает файлы и историю. Если существующий файл отличается от переносимого, утилита сначала создаёт резервную копию с расширением .baton.bak.
Автор рассматривал и вариант с MCP-сервером — отдельной программой, через которую агент обращается к инструментам. Но отказался от него: по его объяснению, постоянно подключённый сервер занимает оперативную память, а описания его функций расходуют входные токены при запуске новых диалогов. Вместо этого baton использует обычную консольную утилиту и файл навыка SKILL.md. Агент загружает инструкции только при необходимости, запускает baton для получения данных, после чего программа завершает работу.
Baton написан на Go без сторонних библиотек, работает на Linux, macOS и Windows и распространяется под лицензией MIT. Утилита умеет устанавливать свой навык сразу для пяти поддерживаемых агентов и проверять наличие обновлений. Описанные возможности и быстродействие основаны на опыте автора: независимых сравнительных испытаний в публикации нет.
FAQ
Можно ли перенести сессию, если у предыдущего ИИ-агента уже закончился лимит?
Да. Baton самостоятельно читает историю с диска, поэтому предыдущему агенту не нужно отвечать или составлять отчёт. Нужную сессию можно найти через baton list и загрузить в другом агенте.
Нужно ли сохранять незавершённый код в Git, чтобы продолжить работу на другом компьютере?
Нет. Baton может перенести изменённые файлы, историю диалога и инструкции проекта в зашифрованном архиве. Если при восстановлении потребуется заменить существующий файл, программа предварительно создаст резервную копию с расширением .baton.bak.
Читайте также
Kodik обошёл Codex, OpenCode и DeepSeek Harness: почему важна не только ИИ-модель
Когда, зачем и как правильно начинать новую сессию в Claude Code
Пять месяцев доработок GoClaw: почему разработчик создал свою платформу ИИ-агентов
Разработчик собрал настольный экран для отслеживания лимитов Claude, Codex, Grok и Kimi
Anthropic покажет компаниям, что они получают за расходы на ИИ
- Baton: перенос сессий между ИИ-агентами: Baton — открытая консольная утилита на Go для передачи истории работы между Claude Code, Codex CLI, Antigravity CLI, Pi и Hermes на Linux, macOS и Windows. Инструмент читает локальные журналы предыдущего агента и позволяет продолжить задачу в другом инструменте без предварительного пересказа истории нейросетью, в том числе после исчерпания квоты. Исходный код распространяется под лицензией MIT: https://github.com/sukamenev/baton.
[ИИ-агенты / Инструменты разработки]
Зарегистрированные пользователи видят только два тезиса.
Зарегистрироваться
Когда у ИИ-агента заканчивается лимит, продолжить работу в другом бывает непросто: новый помощник не знает, какие команды уже выполнялись, какие ошибки возникали и что удалось исправить. Разработчик создал открытую утилиту baton, которая передаёт историю работы между пятью консольными ИИ-агентами без необходимости пересказывать её заново.