Привязка к файлам и Stop-хук
Факт в памяти часто взят из файла: договора, заметки, конфигурации. Если файл потом исправили, а запись в памяти осталась прежней, агент будет уверенно повторять старое. Сервер MMW ваших файлов не видит, поэтому эту проверку делает локальный агент mmw-agent 0.1.4 и новее.
На этой странице:
- как привязать факт к файлу, ничего не вычисляя вручную;
- как поиск замечает, что файл изменился;
- как Stop-хук не даёт Claude Code закончить работу, не сохранив итог.
Привязка при remember
Заголовок раздела «Привязка при remember»Укажите путь к файлу в source_id, и всё. Агент сам вычислит SHA-256 файла и передаст его в source_hash:
Запомни в MMW: оператор — физическое лицо. Источник: site-audit/RKN-NOTIFICATION.md{ "content": "оператор — физическое лицо", "source_id": "site-audit/RKN-NOTIFICATION.md", "source_hash": "sha256:5f1c…"}- Путь считается относительно корней источников: по умолчанию это папка, в которой клиент запустил агента (для Claude Code — папка проекта). Свои корни задаёт переменная
MMW_SOURCE_ROOTS(несколько путей через:в Linux и macOS, через;в Windows). - Файлы вне корней не читаются и не хешируются. Абсолютный путь тоже подходит, если он внутри корня.
- Идентификаторы, не похожие на путь (
session:…,https://…,owner-note), не трогаются. - Если
source_hashуже указан, агент его не меняет. - Содержимое файла с компьютера не уходит, отправляется только хеш.
Проверка при search
Заголовок раздела «Проверка при search»При каждом поиске агент заново хеширует файлы-источники найденных записей и добавляет поле local_source:
local_source | Что значит | status |
|---|---|---|
unchanged | файл тот же, что при сохранении | без изменений |
changed | файл изменился после сохранения | stale |
missing | файла больше нет | stale |
Статус conflict важнее и не заменяется на stale. Записи без файла-источника остаются как есть.
Stop-хук для Claude Code
Заголовок раздела «Stop-хук для Claude Code»Команда mmw-agent hook-stop — хук события Stop. Когда Claude Code собирается закончить ход, хук смотрит, менялись ли в этой сессии файлы рабочей копии git после последнего вызова remember. Если менялись, ход не завершается: Claude получает список файлов и просьбу сохранить решения и факты, указав путь в source_id, а для исправлений использовать прежний fact_key.
-
Откройте
~/.claude/settings.json(для всех проектов) или.claude/settings.jsonв проекте. -
Добавьте хук:
{"hooks": {"Stop": [{"hooks": [{"type": "command","command": "uvx --from https://app.mmwhub.ru/downloads/mmw-agent/mmw_agent-0.1.4-py3-none-any.whl mmw-agent hook-stop"}]}]}} -
Перезапустите Claude Code.
Как ведёт себя хук:
- Блокирует не больше одного раза подряд. Если Claude решил, что сохранять нечего, второй Stop проходит (флаг
stop_hook_active), зацикливания нет. - Учитывает только эту сессию. Файлы, изменённые до начала сессии или до последнего
remember, не считаются. - Вне git-репозитория ничего не делает.
- Ничего не отправляет. Проверка локальная: git и файл истории сессии Claude Code.
- Отключить на время: переменная окружения
MMW_STOP_HOOK=off.
Чего это не делает
Заголовок раздела «Чего это не делает»- Не следит за файлами в фоне: изменение замечается при поиске или в конце хода, а не в момент сохранения файла.
- Не исправляет запись само: хук просит агента сохранить новую версию, решение остаётся за агентом и человеком.
- Не проверяет факты, сохранённые без
source_id. Указывайте источник всегда, когда факт взят из файла.