После перезагрузки: как вернуть не один терминал, а всю команду агентов
Перезагрузка опустошает терминалы, но это самая лёгкая часть: плагины возвращают панели, а всё больше инструментов возвращают и сессию. Чего не возвращает ни один из инструментов, о которых мы читали, — это команду: кто какую роль держит, кто кому подчиняется, какая задача в работе, что уже было сказано. Что умирает при перезапуске, что закрывают инструменты, что harnsy хранит в своей базе и какие есть пределы, в том числе те, что мы не проверяли.
Главное
- 27
- агентов (24 Claude и 3 Codex) разом остались с голой оболочкой в публичном обсуждении от 28 сентября 2026 года; причиной там был убитый лаунчер, а не перезагрузка
- около 15 мин
- сколько понадобилось агенту в том обсуждении, чтобы считать id сессий с экрана и заново набрать команды resume
- 3
- вещи, которые нужны перезапущенной команде: сессии, кто какую роль держит и сама работа. harnsy хранит последние две в своей базе, а первую — как запомненную сессию за каждым местом
В этой статье
Что на самом деле убивает перезагрузка
Начнём с того, что остаётся. Запись разговора Claude Code — это файл на диске: JSONL-файл в ~/.claude/projects/, по одному на сессию, с id сессии в имени. Codex хранит свои сессии в ~/.codex/sessions/. Перезагрузка эти файлы не трогает. Трогает время: в статье на dev.to от 29 сентября 2026 года упомянута 30-дневная очистка старых записей Claude Code.
Уходит процесс. В заметке Quil (14 июня 2026 года) это сказано прямо: запись остаётся на диске, но сессия «привязана к запущенному процессу claude». Остановите процесс, и к файлу само ничего не подключится (цитата в нашем переводе).
Сам по себе tmux этот разрыв не закрывает. Когда tmux перезапускается (перезагрузка, сбой, tmux kill-server), tmux-resurrect и tmux-continuum возвращают окна, панели и папки, но, как сказано в заметке про tmux-assistant-resurrect от февраля 2026 года, «ИИ-сессии, которые шли внутри них, пропали». Quil пишет о тех же плагинах, что возвращается «форма рабочего места, а не идущая работа». В обсуждении Claude Code от 16 марта 2026 года это стало просьбой: «нет способа восстановить сессии Claude после перезагрузки системы или tmux kill-server», потому что id сессии нельзя было прочитать снаружи процесса. Его закрыли как дубликат, а обходной путь — ручные команды из следующего раздела (цитаты в нашем переводе).
Дело не только в перезагрузках. В открытом обсуждении в трекере cmux от 28 сентября 2026 года процесс, под которым работали агенты, получил SIGTERM, и, по словам автора, «каждый терминал агента разом падает в голую оболочку»: 24 сессии Claude и 3 сессии Codex в одном окне. Их восстановление «заняло у агента около 15 минут разбора экрана»: прочитать на каждом экране id сессии, проверить, что там не осталось живого агента, набрать команду resume обратно. Это был убитый лаунчер, а не перезагрузка, но состояние, в котором вы остаётесь, то же, что после перезагрузки (цитаты в нашем переводе).
Вручную и скриптом
Для одной сессии починка — одна строка. В папке проекта claude --continue открывает самую свежую сессию Claude Code, а codex resume --last делает то же для Codex. Обе, как сказано в статье на dev.to, берут самую свежую сессию из текущей папки. claude --resume и codex resume --all показывают выбор по всем проектам.
Для нескольких сессий та же статья предлагает небольшой скрипт на jq. Он читает папки с записями обоих инструментов и печатает для каждой из десяти последних сессий строку cd … && claude --resume <id> (или аналог codex resume <id>), а строки запускаете вы.
Это дёшево, честно и хватает на три сессии. Цена проявляется на десятой: минуты вашего времени и память о том, какая папка была за какое дело. И заметьте, чего скрипт знать не может. Он перечисляет разговоры. Он не знает, какой из них был лидом, какой — ревьюером и чего кто ждал.
Инструменты, которые помнят id сессий
Именно этот разрыв закрывает группа небольших инструментов. Они хранят id сессий рядом с панелями и возобновляют их за вас. Мы читали их собственные страницы и обсуждения, но не запускали их, так что дальше — то, что они говорят о себе.
- tmux-assistant-resurrect. В заметке автора (16 февраля 2026 года) сказано, что он сохраняет раскладку панелей, находит работающих ассистентов по процессам, берёт их id сессий через родные хуки или плагины и при восстановлении возобновляет каждый разговор: Claude Code, OpenCode и Codex. Там же прямо сказано о зрелости: сделан за выходные, «пока мало реального использования. Ожидайте шероховатостей» (цитата в нашем переводе).
- Quil, терминальный мультиплексор. Он регистрирует хук SessionStart для каждой панели Claude Code и записывает текущий id сессии при каждой смене; сессии OpenCode отслеживаются так же. После перезагрузки он возвращает панели на записанных id.
| Подход | Панели и раскладка | Разговор (сессия) | Роли и подчинение | Задачи | Журнал сообщений |
|---|---|---|---|---|---|
| Один tmuxвам остаётся: всё руками | нет | нет | нет | нет | нет |
| tmux-resurrectвам остаётся: возобновить каждый разговор | да | нет | нет | нет | нет |
| claude --resume / codex resume вручнуювам остаётся: найти id и папку, набрать | нет | да | нет | нет | нет |
| Скрипт на jq по записямвам остаётся: запустить строки, открыть панели | нет | частично | нет | нет | нет |
| Плагины с id сессий (tmux-assistant-resurrect, Quil)вам остаётся: роли, задачи, сообщения | да | да | нет | нет | нет |
| Agent teams в Claude Codeвам остаётся: заново создать участников | не указано | частично | нет | не указано | не указано |
| harnsyвам остаётся: повторить сообщения, которые не дошли, пока агент был недоступен | частично | да | да | да | да |
- Один tmuxвам остаётся: всё руками
- Панели и раскладка
- нет
- Разговор (сессия)
- нет
- Роли и подчинение
- нет
- Задачи
- нет
- Журнал сообщений
- нет
- tmux-resurrectвам остаётся: возобновить каждый разговор
- Панели и раскладка
- да
- Разговор (сессия)
- нет
- Роли и подчинение
- нет
- Задачи
- нет
- Журнал сообщений
- нет
- claude --resume / codex resume вручнуювам остаётся: найти id и папку, набрать
- Панели и раскладка
- нет
- Разговор (сессия)
- да
- Роли и подчинение
- нет
- Задачи
- нет
- Журнал сообщений
- нет
- Скрипт на jq по записямвам остаётся: запустить строки, открыть панели
- Панели и раскладка
- нет
- Разговор (сессия)
- частично
- Роли и подчинение
- нет
- Задачи
- нет
- Журнал сообщений
- нет
- Плагины с id сессий (tmux-assistant-resurrect, Quil)вам остаётся: роли, задачи, сообщения
- Панели и раскладка
- да
- Разговор (сессия)
- да
- Роли и подчинение
- нет
- Задачи
- нет
- Журнал сообщений
- нет
- Agent teams в Claude Codeвам остаётся: заново создать участников
- Панели и раскладка
- не указано
- Разговор (сессия)
- частично
- Роли и подчинение
- нет
- Задачи
- не указано
- Журнал сообщений
- не указано
- harnsyвам остаётся: повторить сообщения, которые не дошли, пока агент был недоступен
- Панели и раскладка
- частично
- Разговор (сессия)
- да
- Роли и подчинение
- да
- Задачи
- да
- Журнал сообщений
- да
Эти инструменты хорошо решают часть про сессии, и если вы держите несколько агентов в tmux, вам может хватить только их. Но обратите внимание, что входит в их задачу: панели и разговоры. Роль, линия подчинения, задача в работе и последние сообщения — это то, о чём терминал ничего не знает. В таблице последняя строка — собственное утверждение harnsy, и у панелей она отмечена «частично» не случайно: он открывает агентов заново в своём tmux, а не в вашей прежней раскладке.
То, что не панель: команда
Спросите себя о вашей последней перезагрузке. Помнили ли вы, кто кому подчинялся, какая задача была на проверке, какими были последние сообщения? Прямо об этом мы ни у кого не нашли, так что читайте этот раздел как наблюдение от работы с агентами в ролях, а не как обзор жалоб.
Ближайший сосед — собственные agent teams в Claude Code, и его документация откровенна. В разделе Limitations: «Agent teams are experimental» и «No session resumption with in-process teammates: /resume и /rewind не восстанавливают участников внутри процесса. После возобновления сессии лид может попытаться написать участникам, которых уже нет. Если так случилось, скажите лиду создать новых участников» (цитата в нашем переводе; в оригинале — на английском).
Публичное обсуждение просило того же на уровне состояния. Его автор (12 марта 2026 года) пишет, что папки команд и задач в ~/.claude/ опустошаются при следующем старте сессии, и просит, чтобы команду, созданную в одной сессии, можно было продолжить в следующей. Его закрыли как «not planned». Мы читали само обсуждение, а не причины, и функция с пометкой experimental меняется; считайте это отчётом с датой.
Это другая конструкция, не наша (участники внутри одной сессии, а не отдельные терминалы), так что про harnsy оно говорит мало. Зато показывает, где лежит разрыв. После перезапуска должны вернуться три вещи, и возобновлённый разговор — только первая:
- Сессии: каждый агент снова в том разговоре, в котором был.
- Связи: какую роль держит каждый агент и кто кому подчиняется.
- Работа: задачи в процессе и запись того, что было сказано.
Как команду хранит harnsy
В harnsy роль — постоянная должность, а агент сидит на месте. Место помнит сессию, которую держит, и все прежние: id сессии Claude Code, id OpenCode вида ses … или id треда Codex, а также папку и настройки запуска. Роль без живого держателя показана как «не в сети».
Роли, места, задачи и журнал сообщений живут в собственной базе harnsy, а не в терминале. Они просто на месте, когда машина вернулась, если узел harnsy снова запущен; запускается ли он сам при загрузке, мы не проверяли.
Восстановление — кнопка на вкладке «Команды», для каждой команды: «вернуть отключившихся». Она видна, только пока какая-то роль не в сети. Она возобновляет текущую сессию места в его папке родным resume того харнеса: claude --name <ref> --resume <id> для Claude Code, codex resume <id> для Codex и записанную сессию для OpenCode. То же доступно из командной строки, harnsy debug team restore, а для агента — как инструмент MCP harnsy restore. Это не недавнее добавление. Одну сессию она никогда не открывает дважды: роль, которая уже работает, пропускается, как и роль, которую никто не держит.
После перезагрузки
- лидacme-leadclaude · 7f3a9c21нет связине в сети
- бэкендacme-backcodex · 019a4e2bнет связине в сети
- фронтендacme-frontclaude · c41d0e88нет связине в сети
- ревьюерacme-reviewopencode · ses_4kq2нет связине в сети
- тестировщикacme-testcodex · 5be1a7f0нет связине в сети
- документацияникто не держитвакансия
После «вернуть отключившихся»
- лидacme-leadclaude · 7f3a9c21простаиваетв сети
- бэкендacme-backcodex · 019a4e2bпростаиваетв сети
- фронтендacme-frontclaude · c41d0e88простаиваетв сети
- ревьюерacme-reviewopencode · ses_4kq2простаиваетв сети
- тестировщикacme-testcodex · 5be1a7f0простаиваетв сети
- документацияникто не держитвакансия
Посмотрите на две карточки: id сессий одинаковые. Суть не в том, что агенты запускаются заново, а в том, что они запускаются на тех разговорах, в которых были, в тех ролях, что держали, а доска задач и журнал сообщений на месте. Дальше вы делаете то же, что после любого перерыва: смотрите, что было в работе.
Восстановление можно увидеть самому: установите harnsy, откройте команду, в тихий день остановите её агентов и нажмите «вернуть отключившихся».
Пределы в одном месте
Сначала — что остаётся после перезагрузки и что нет:
Лежит в базе harnsy — на месте после перезагрузки
- команды и роли
- кто держит каждое место и id его сессии
- папка и настройки запуска каждой роли
- журнал сообщений
- доска задач
Уходит с перезагрузкой
- работающие процессы, терминальные панели и сервер tmux — harnsy открывает агентов заново
- ход, который агент не закончил — попросите продолжить
- сообщения агенту, пока он был недоступен — они не дошли; отправьте их заново
Нужен tmux (Linux, macOS). Агенты, посаженные на роль (OpenCode: только запущенные harnsy).
И пределы, которых нет в этом списке:
- Записанной проверки после настоящей перезагрузки у нас нет. Это замысел, а не замер отключения питания.
- Сообщение локальному агенту, который недоступен, не доходит сразу и записывается как не доставленное. harnsy его не повторяет. Если это исполнитель задачи, лид получает уведомление о недоставленном.
- Работает с tmux версии 3.1 или новее на Linux и macOS, где harnsy запускает собственный сервер tmux. Поддержка Windows появилась в harnsy 0.8.0 и ещё проверяется.
- Он обходит роли, на которых сидит агент, в Claude Code, Codex и OpenCode: агент Claude Code или Codex, запущенный вами вручную и посаженный на роль, тоже возвращается. У OpenCode предел: только агенты, которых запустил harnsy. Место без записанного id сессии восстановить нельзя.
- Мы не проверяли, что делает восстановление, когда записи разговора уже нет, например после очистки.
- Одну сессию он никогда не открывает дважды, с одним слепым пятном: простаивающий терминал Codex, молчащий дольше 30 секунд, может показаться отсутствующим и открыться повторно.
- Число одновременно работающих агентов ограничено редакцией. Команду, которая не помещается, restore отклоняет целиком, а не возвращает частично. Сколько агентов возвращается разом, мы не называем: этого мы не измеряли.
- Если возобновлённый агент Claude Code регистрируется под другим именем, его роль остаётся не в сети, пока агента снова не посадят на место.
- Не освобождайте агента, который просто отключился: освобождение теряет id сессии, нужный восстановлению.
Чек-лист для любой настройки
Ничто из этого не требует harnsy. Если вы держите больше пары агентов, это подходит к любому инструменту:
- Давайте имя каждой сессии, чтобы список id что-то значил.
- Храните записи разговоров. Если вы на них полагаетесь, узнайте, сколько ваш инструмент их держит, и увеличьте срок.
- Перед плановой остановкой пишите записку о передаче дел, как перед отпуском. Что в неё входит, показывает статья «ИИ-сотрудники: работает не „персонаж“, а рабочее место».
- Держите список ролей и задач вне терминалов: в файле или на доске, а не в разговоре.
- Заведите одну команду, которая перечисляет, что должно работать, чтобы сравнить это с тем, что работает.
- Проверьте восстановление, пока оно не нужно: остановите всё в тихий день и посмотрите, что вернулось.
Источники
- cmux, «Recover every agent session that dropped at once», 28 сентября 2026: github.com.
- Claude Code, agent teams, раздел Limitations: code.claude.com.
- Обсуждение Claude Code о состоянии agent teams, 12 марта 2026: github.com.
- Обсуждение Claude Code об id сессии и восстановлении терминала, 16 марта 2026: github.com.
- «How to pick up Claude Code and Codex sessions after a restart», dev.to, 29 сентября 2026: dev.to.
- «Never Lose an AI Coding Session Again», 16 февраля 2026: timvw.be.
- «Resume Claude Code Sessions After a Reboot, Automatically», Quil, 14 июня 2026: quil.cc.
Верните команду, а не одну панель
harnsy хранит роли, места, задачи и журнал сообщений в своей базе и открывает каждую отключившуюся роль на её последней сессии.
Установить harnsy