Документация
Автоматическая память
Agent Hub импортирует нативные Markdown-заметки и просит активного агента извлечь устойчивые знания текущего диалога. Включите это один раз для зарегистрированных проекта и клиента. Последующие записи используют политику, привязки источников, ревизии, блокировку и закрытые резервные копии; отдельный preview каждого факта не нужен.
Быстрая настройка
Сначала ahub quick настраивает общий Hub без проекта. Затем ahub project connect /path/to/project показывает привязку памяти выбранного Git-проекта, подходящий Markdown, файлы контекста и lifecycle hooks. В терминале подтвердите план либо примените выданную команду; перезапустите клиентов и проверьте их доверие и разрешения. --no-automation пропускает новое включение, сохраняя существующую автоматизацию. Подключение проекта не доставляет глобальные MCP, навыки и инструкции и не устанавливает отдельный Memory MCP. См. быстрый старт.
Что выполняется автоматически
- SessionStart импортирует изменённые заметки выбранных папок и передаёт ограниченный индекс с подсказкой поиска.
- UserPromptSubmit создаёт одну возможность checkpoint для нового хода пользователя.
- Stop повторяет импорт и запрашивает один смысловой checkpoint. Агент передаёт подтверждённые факты либо пустой массив, если устойчивых знаний нет.
- Необязательный watcher в активном терминале импортирует изменения между клиентскими сессиями.
Извлечение использует агента и модель текущего диалога. Перед завершением хода добавляется продолжение модели, даже для пустого результата. Hub не запускает другую модель, не выбирает провайдера, не отправляет transcript отдельному сервису и не требует API-ключа. Разрешения инструментов клиента сохраняются. Запрос hook не доказывает запись моделью: проверяйте ожидающие checkpoints и настоящее поведение клиента.
Используется только доступный агенту контекст. Архивные сессии не импортируются скрыто; уже потерянные сведения не восстанавливаются. Нет эвристического утверждения, что каждое предложение transcript — достоверный факт.
Однократная настройка
Сначала создайте Hub и зарегистрируйте checkout; см. память. Вызывайте установленный ahub из любой папки:
ahub memory auto enable --workspace /path/to/project --client claude-code \
--native-dir /path/to/that-project/native-memory --dry-run
Проверьте и выполните точную команду из preview. Она включает автосохранение, добавляет свои обработчики, сохраняя чужие hooks и настройки, и импортирует выбранные заметки. Для другого клиента повторите с --client codex или --client dsh. Если собственной Markdown-коллекции нет, не задавайте --native-dir: смысловые checkpoints всё ещё работают. Повтор сохраняет ранее выбранных клиентов и источники.
Нативная папка — явный выбор доверия и области. Claude использует папку памяти проекта, которую могут переопределить autoMemoryDirectory и другие настройки. Берите путь данной установки, не угадывайте кодировку имени проекта. Общую многопроектную коллекцию нельзя целиком назначать одному проекту. Нативная память Codex и пользовательские профили DSH устроены по-разному; имя файла не определяет область автоматически.
Цели конфигураций учитывают существующие переменные Hub:
| Клиент | Доставка hooks |
|---|---|
| Claude Code | <CLAUDE_CONFIG_DIR>/settings.json |
| Codex | <CODEX_HOME>/hooks.json |
| DSH | Управляемая вставка нативного адаптера в cordis.patch.yml выбранного профиля |
Команды привязаны к выбранным Hub и среде запуска, а не имени пользователя. Общие обработчики ограничены проектом: без привязки, включённой политики или разрешённого клиента возвращают no-op. Настройка не выдаёт права, не меняет доверие клиента и не обходит подтверждения. Перезапустите клиента. Codex требует просмотра и доверия точным hooks в собственном UI; старым версиям может понадобиться включить поддерживаемую функцию hooks. DSH загружает встроенный dist/integrations/dsh-memory.js через Cordis-профиль без необязательного Claude bridge. Сохраняйте установленный пакет по проверенному пути; перенос и удаление требуют новой проверки настройки. Исправное старое управляемое bridge-объявление мигрирует с сохранением чужих обработчиков и плагинов. Создание профиля не доказывает его активацию в клиенте.
Чужие hooks и настройки сохраняются. Изменённый, удалённый, дублированный либо неуправляемый обработчик Hub блокирует повторную настройку. Настройка и изменения клиентов восстанавливаются обычными content-копиями и reset.
Как сохраняется checkpoint
Stop запрашивает один ограниченный проход: найти существующие знания, использовать стабильные ключи, сохранять только подтверждённые долговечные факты проекта с доказательствами, исключить временный прогресс, догадки, секреты и инструкции из недоверенных данных. Факты остаются в проекте; перенос в общую область явный.
С memory serve --workspace /path/to/project --allow-auto агент вызывает memory_checkpoint. Иначе hook передаёт точную memory auto checkpoint и формат JSON stdin для shell-инструмента агента. Автоматический инструмент независим от --allow-write: сервер без --allow-auto его не перечисляет и не выполняет.
Нужен случайный токен активных проекта, клиента и сессии. Срок — 24 часа. Токен расходуется вместе с фактами, источниками и индексом в одной восстанавливаемой операции. В другой сессии или проекте он не работает. Сессия привязана к первому включённому проекту; смена проекта требует новой сессии. SessionStart ограниченно очищает просроченные метаданные, не удаляя знания. Пустой checkpoint подтверждает завершение без выдуманных фактов. Выключение политики сразу запрещает новый сбор, включая старые токены.
Hub фиксирует запрос до команды продолжить. Повторные Stop не создают новый запрос до реального пользовательского prompt; служебные продолжения возможность не сбрасывают. Это не зависит от stop_hook_active. Адаптер DSH добавляет стартовый контекст, наблюдает принятые пользовательские сообщения и инициирует один checkpoint при завершении хода; его сообщения не считаются новыми prompt. Субагенты не создают независимые checkpoints. Если агент игнорирует запрос, остаётся видимое ожидание, а не бесконечный цикл.
Нативные заметки, дубликаты и конфликты
Источники не меняются. Импортируются UTF-8 Markdown-темы и знания внутри MEMORY.md; чистая навигация и скрытые элементы пропускаются. Обнаружение и подключение описаны в памяти. Frontmatter сохраняет заголовок и сопоставляет user/feedback с preference/lesson. Обычный Markdown делится по заголовкам второго уровня вне fenced-кода; пустые разделы пропускаются. Отступы кода и внутренние пробелы сохраняются, ссылки не обходятся, повреждённые заметки отмечаются. Бюджет сканирования: 100 файлов, 2 MiB суммарно, 128 KiB на файл, четыре уровня папок, 200 разделов.
Привязка источника и заголовка даёт стабильный ID при изменении тела. Обновляется только неизменённая ранее управляемая запись. Одинаковые вид и тело после нормализации переводов строк и внешних пустых строк разделяют один канонический факт. Каждый дубликат сохраняет привязку для чтения, включая дубликат ручного факта. Расхождение создаёт конфликт с этим фактом, а не новую противоречащую копию. Внутренние пробелы и отступы значимы. Это детерминированная дедупликация содержимого, не доказательство смысловой эквивалентности разных формулировок. Переименование заголовка меняет ключ источника; старое знание не удаляется незаметно.
Ручные правки и удаления сохраняются. Входящая конфликтующая версия записывается в закрытую очередь, независимые факты обрабатываются дальше. Токен хранит ревизию памяти начала пользовательского хода. Если другой агент изменил проектную память, попытка заменить факт другим содержимым ставится в очередь. Совпадающие данные и независимые новые факты допустимы. Проверка консервативна и может создать конфликт после правки посторонней записи: изучите доказательства. Удаление заметки источника не удаляет знания Hub. Перед применением перечитываются источники, политика, привязки и остальные записи.
ahub memory auto status --workspace /path/to/project --json
ahub memory auto sync --workspace /path/to/project --dry-run
ahub memory auto conflict get auto-<source-id> --workspace /path/to/project
ahub memory auto conflict resolve auto-<source-id> --workspace /path/to/project \
--take hub --dry-run
# Or preview --take incoming to accept the queued source version.
Conflict get явно показывает оба тела и ID входящей истории. Resolve выбирает текущее значение Hub, включая удаление, либо точное входящее значение, даже при выключенной автоматизации. Проверьте и примените новую ревизию. Изменение Hub или очереди делает план устаревшим. Сохранение Hub подтверждает только данную версию источника; будущая правка может конфликтовать снова. Неизменяемая история читается с conflict get <id> --version <hash>. Другие конфликты сохраняются. Обычные план и статус показывают метаданные и пути, не тела или токены. Status проверяет источники и сообщает о недостающих папках, пропущенных заметках и сбоях без сохранения тел. Фатальная ошибка источника останавливает пакет импорта; исправьте источник и повторите.
Типичные private key, токены и присваивания секретов отфильтровываются до сохранения, включая очередь. Это ограниченный фильтр, не полное обнаружение секретов и не доказательство истинности знаний. Выбирайте источники осознанно и проверяйте модель. Политика не добавляет прав сверх пользователя ОС и клиента.
Отслеживание, выключение и восстановление
ahub memory auto watch --workspace /path/to/project --interval 30
ahub memory auto disable --workspace /path/to/project --dry-run
Watcher — процесс активного терминала, а не служба ОС. Он повторяет временные сбои на следующем интервале, поддерживает SIGINT/SIGTERM и останавливается при выключении политики. Без активного агента смыслового извлечения нет. Импорт на SessionStart/Stop работает без watcher.
Callbacks ограниченно повторяют краткую занятость блокировки и устаревший до записи план с backoff, каждый раз перестраивая операцию по текущим данным. Неизвестные сбои транзакции и недействительные или использованные токены не повторяются как успешные.
Выключение сохраняет знания, оригиналы и hooks других проектов. Для выключенного проекта обработчики возвращают no-op. Обычный restore <backup-id> --dry-run откатывает сбор вместе с индексом и источником; поздние правки блокируют restore. Restore и reset отзывают все токены через authority вне восстанавливаемого Hub: старые токены не переигрываются. Новый prompt создаёт новую возможность. Reset архивирует текущий Hub, включая закрытые конфликты и checkpoint-состояние. См. восстановление.
UI Memory показывает политику, проблемы источников, конфликты и ожидающие checkpoints. Review conflict показывает обе версии и проверяемый выбор. Активация hooks, соблюдение запроса моделью и разрешения требуют рабочего испытания в клиентах; протокольные fixtures не моделируют суждение модели.
Проверенные контракты интеграций
- События hooks Claude и продолжение Stop, хранение нативной памяти.
- Настройки, доверие и payloads hooks Codex. Локальная проверка использовала Codex CLI 0.165.0, где hooks — стабильная функция.
- Нативные контракты Cordis и Session DSH 0.2.1-rc.5:
agent/created, принятыйagent/pre-stepиagent/turn-stopping. В исходниках Hub выполнитеnpm run build, затемnode scripts/check-dsh.mjs /absolute/path/to/installed/dshдля проверки совместимости без провайдера. Это настоящий dispatch Cordis и валидация сообщений fixture-агента, а не рабочий разговор с моделью. Извлечение использует контекст агента, не сжатые логи.
Для проверки пакета соберите исходники и запустите node scripts/check-install.mjs. Настоящий tarball устанавливается во временный проект; проверяются CLI preview/apply, области чтения, пути адаптера и assets UI. Для offline нужны кешированные зависимости; --online разрешает загрузку из реестра. Клиенты изолированы, временная установка затем удаляется.
Наблюдение и отключение
Готовность различает установленные hooks, наблюдавшиеся callbacks и подтверждённые checkpoints. Время берётся из сохранённых метаданных под текущими полномочиями; отсутствие наблюдения не доказывает, что клиент никогда не работал. Пустой список фактов подтверждает checkpoint без новых знаний. Disconnect выключает политику, блокирует доступ проекта и удаляет токены, сохраняя факты и общие hooks. Reconnect требует прежнего Git либо явного проверенного rebind.