agent hubПУТЕВОДИТЕЛЬ Начать

Документация

Восстановление исходного состояния

undo [run-id] возвращает состояние перед записанным запуском настройки. restore <backup-id> отменяет одну синхронизацию или этап контента. reset возвращает конфигурации клиентов и весь Hub к первому сохранённому состоянию, даже после нескольких синхронизаций. Сначала проверяется план; undo в интерактивном терминале затем предлагает подтверждение.

ahub reset --dry-run

Проверьте каждый файл и область baseline. Команда выводит точную reset --apply --expect <revision>. Reset требует эту ревизию и останавливается при изменении входов. Сам dry run ничего не восстанавливает.

Откат сценария quick

Каждый применённый quick или project connect создаёт закрытый снимок в <AGENT_HUB_HOME>.recovery/runs/<run-id>/. Дерево Hub сохраняется до запуска; оригиналы внешних целей и журналы записей собираются при первом касании в ходе этапов. Весь сценарий удерживает одну повторно используемую вложенными этапами блокировку Hub. Внешние клиенты её не соблюдают, поэтому входы проверяются на каждом этапе.

ahub undo
ahub undo <run-id>

Проверьте план; в терминале подтвердите его либо используйте выданную --apply --expect. Undo восстанавливает данные до запуска и архивирует текущие. Поддерживаются завершённые этапы частично неудачных запусков. Любые поздние изменения Hub или затронутых клиентских путей блокируют undo, включая изменения другой операцией Hub. Для сохранения поздней работы проверьте отдельный restore или reset первого baseline. Новые знания не отбрасываются незаметно. Если процесс прерван до записи итоговых метаданных, автоматический undo недоступен: сохраните данные восстановления и проверьте обычный reset.

Завершённый undo отзывает ожидающие разрешения checkpoint. Первые оригиналы остаются отдельно; их журнал узнаёт восстановленное состояние как запись Hub. Снимки содержат полный Hub и затронутые личные файлы, не зашифрованы и не очищаются автоматически. Даже применение без изменений сохраняет снимок запуска. Учитывайте место на диске и закрытость хранилища.

ahub project disconnect <id> — отдельная проверяемая операция. Она отключает все checkout проекта, политику и токены сессий, сохраняя знания, историю источников, файлы репозитория и общие hooks. Подключение заново проверяет идентичность и использует прежний ID. Конфигурация фиксированного Memory MCP не удаляется; сервис отказывает отключённой привязке до подключения.

reset всегда использует первый baseline, даже если он старше запуска. Новый Hub можно вернуть к отсутствию и восстановить внешние оригиналы. Hooks и MCP могут менять один профиль DSH: они разделяют владение первым оригиналом и согласуют ожидаемые хеши, поэтому узнают последующие записи Hub. Независимые поздние правки по умолчанию блокируют восстановление.

Что сохраняется

Перед первой управляемой записью Hub сохраняет неизменяемый baseline в <AGENT_HUB_HOME>.recovery/baseline/. Полное дерево включает существующие .git, .env, инструкции, память, навыки и посторонние файлы. Оригиналы конфигураций клиентов хранятся отдельно. Новые пути и профили получают собственный оригинал при первом касании, без замены старых. Папки имеют права 700, данные и метаданные — 600. Локальный .gitignore исключает восстановление из родительского Git-репозитория.

Хранилище находится вне Hub, чтобы вернуть его к отсутствию. Не удаляйте его: исчезнут оригиналы. Оно может содержать секреты, не зашифровано и не должно публиковаться или загружаться наружу.

Есть две точные области:

Отсутствие baseline вызывает ошибку. Текущее состояние не выдаётся за исходное, неизвестная история без копий не восстанавливается.

Текущие данные сохраняются

Перед возвратом оригиналов reset архивирует текущий Hub и изменяемые файлы клиентов в <AGENT_HUB_HOME>.recovery/archives/reset-…/. Более новые данные остаются там, baseline не расходуется. Созданные файлы снова отсутствуют; созданные родительские папки удаляются только пустыми, сохраняя новые пользовательские файлы. Существующие ссылки клиентов сохраняют привязки. Произвольные внешние каталоги по ссылкам Hub не обходятся и не сбрасываются. Известные внешние цели управляемых конфигурационных ссылок учитываются отдельно.

Посторонние файлы внутри исходного Hub участвуют в возврате всего дерева. Архив может содержать позднюю работу пользователя. Проверьте весь план и сохраняйте архив до уверенности в результате. Reset не удаляет CLI, npm cache и изменения у внешних провайдеров.

Внешние изменения

Поздние правки клиента и его прав блокируют reset. Чтобы сохранить текущие файлы в архиве и затем полностью вернуть оригиналы, проверьте новый план:

ahub reset --archive-changes --dry-run

Это восстановление целого файла, не слияние. Перенаправленная ссылка блокирует действие даже с --archive-changes; исправьте привязку вручную. Повреждение baseline или ссылка вместо закрытого хранилища тоже останавливают запись клиентам.

Прерванные операции и блокировки

До управляемой записи сбрасываемый на диск журнал намерений сохраняет хеши до и после каждого файла. После завершения процесса reset может узнать обе стороны прерванной записи, не предполагая завершения всей операции. Внешняя блокировка переживает перемещение Hub, внутренняя state/sync.lock координирует старые процессы.

Если остались блокировки, проверьте владельцев и план:

ahub reset --recover-lock --dry-run

Параметр не снимает блокировку с живым PID, неизвестным владельцем или изменённым содержимым. Созданная команда применения сохраняет параметр восстановления. Активный процесс нужно остановить обычным способом. Не смешивайте версии, работающие с одним Hub во время reset.

Обработка сбоев и ограничения

Записи клиентов используют проверяемую замену с компенсирующим откатом. Сбой установки дерева запускает попытку вернуть и архивированный Hub, и прошлые клиентские файлы. При неудаче ошибка указывает архив для ручного восстановления. Восстановление работает и при повреждённом hub.yaml либо удалённом активном Hub: используется внешний manifest, а не текущие настройки.

Тесты покрывают SIGKILL во время sync и reset, искусственные ENOSPC и сбои rename, но не потерю питания и все ошибки файловой системы. Несколько файлов и операции дерева — не транзакция базы данных. Потеря диска, аварийное завершение reset, неудачный откат или гонка с внешней программой могут потребовать ручного восстановления. Сохраняются права файлов и привязки ссылок; inode, hardlink, ACL и xattrs не гарантируются. Ссылка вместо корня Hub, специальные файлы и внешние Git-метаданные не дают той же полноты восстановления. init --no-git избегает изменения внешних метаданных существующего Git-worktree.

Перед reset рабочего Hub остановите UI и затронутых клиентов, сделайте независимую копию, проверьте план и сохраните recovery-папку.

Навыки, контекст и файлы проекта

Операции контента сохраняют копии content-…, поддерживаемые тем же CLI restore <id>. Оригиналы внешних навыков, отдельных ссылок и файлов контекста записываются при первом касании в закрытое хранилище artifacts/. Reset проверяет данные и включает их в план, архив и откат. Возврат целого файла может заменить поздние заметки проекта; внешние изменения требуют явного архивирования. Перенаправленные ссылки блокируются.

Замена каталога имеет короткий промежуток между rename. Журнал допускает записанные состояния до и после прерывания, но не гарантирует устойчивость к потере питания. Права самих ссылок нормализуются при сравнении платформ; цели, права обычных файлов и содержимое каталогов проверяются. Контракт описан в руководстве по контенту.

Снимки дерева сохраняют права вложенных ссылок. На macOS копирование сохраняет их и при строгом umask, не переходя по ссылке и не меняя права цели. Старые хеши и оригиналы остаются действительными.