Перейти к содержимому

Основные понятия

Из этой страницы вы узнаете:

  1. какие поля есть у записи памяти и откуда они берутся;
  2. что значат статусы unverified, stale и conflict;
  3. как связаны записи между собой: версии одного факта, сводки и граф.

Пример на всю страницу: команда договорилась, что staging выкатывается через systemd-юнит app-staging, а правило записано в docs/deploy.md.

Запись — это один факт, решение или договорённость. Агент создаёт её инструментом remember, находит — инструментом search. Так выглядит запись в результатах поиска:

{
"id": "4d428a41-e7b0-4f81-a886-f40c6f6c766c",
"workspace": "default",
"scope": "shared",
"content": "staging выкатывается через systemd-юнит app-staging",
"source": "agent",
"source_id": "docs/deploy.md",
"source_hash": "sha256:9f2c…",
"source_revision": "a1b2c3d",
"fact_key": "deploy.staging.method",
"confidence": 0.8,
"status": "unverified",
"derived_from": [],
"score": 2,
"graph_relations": [],
"created_at": "2026-10-05T09:12:00+00:00",
"updated_at": "2026-10-05T09:12:00+00:00"
}
ПолеКто задаётЧто значит
idсерверУникальный идентификатор записи. Нужен для forget и derived_from.
workspaceагентРабочая область — именованная коллекция внутри проекта. По умолчанию default.
scopeагентЯрлык для фильтрации, по умолчанию shared. Доступ не ограничивает (см. ниже).
contentагентТекст записи. Секреты в нём заменяются заглушками до сохранения.
sourceагентКто сохраняет: по умолчанию owner; встречаются agent, telegram и другие.
source_id, source_hash, source_revisionагентПроисхождение: документ, хеш его содержимого, версия. См. Источник и свежесть.
fact_keyагент или архивариусКлюч темы. Записи с одним ключом сравниваются между собой.
confidenceагент, архивариусУверенность от 0 до 1, по умолчанию 0,5.
statusсерверunverified, stale или conflict — вычисляется при каждом поиске.
derived_fromагентID записей, которые эта запись обобщает.
scoreсерверРелевантность запросу в этом поиске.
graph_relationsархивариусСвязи с другими записями.
created_at, updated_atсерверВремя создания и последнего изменения (ISO 8601).

remember никогда не удаляет и не перезаписывает существующие записи: каждый вызов добавляет новую. Удаляет только forget, и то мягко — запись пропадает из поиска и графа, а факт удаления остаётся для аудита.

Статуса verified в MMW нет. Сервер хранит, откуда взялся факт, но не утверждает, что он истинен.

СтатусКогдаЧто делать агенту
unverifiedОбычное состояние любой новой записи, даже с source_hash.Пользоваться, помня об источнике и уверенности.
staleИсточник изменился: в search или validate_memory передан current_source_hash, отличный от сохранённого; или архивариус отметил запись как опровергнутую новой.Перечитать источник, обновить факт.
conflictЕсть другие записи с тем же fact_key в той же рабочей области, но с другим содержимым или хешем источника.Не выбирать молча — показать расхождение человеку.

Если подходят несколько статусов, побеждает более тревожный: conflict важнее stale, stale важнее unverified. Сводка получает худший статус из записей, на которых она построена.

scope (по умолчанию shared, часто используют private) — просто метка: по ней можно отфильтровать search и validate_memory. Запись с scope: "private" видят все, у кого есть доступ к проекту.

Кто что видит, определяют другие механизмы:

Число от 0,0 (не уверен) до 1,0 (уверен), по умолчанию 0,5. Значение вне диапазона отклоняется. Агент задаёт его при записи; архивариус может понизить уверенность старой записи, если новая её уточняет или опровергает.

Хорошая привычка: 0,9 и выше — для того, что прочитано в документе или подтверждено человеком; 0,5 — для выводов агента; ниже — для догадок.

fact_key — устойчивое имя темы, например deploy.staging.method. Повторное сохранение с тем же ключом добавляет новую версию; прежние остаются, ничего не удаляется.

fact_key = deploy.staging.method
───────────────────────────────────────────────────────────
v1 «через systemd-юнит app-staging» ─┐
v2 «через Docker Compose, сервис staging» ├─ обе со статусом conflict,
─┘ пока лишнюю не удалят через forget

Если содержимое версий совпадает (тот же текст и тот же хеш источника), конфликта нет. Подробно — Конфликты и сводки.

Если вы не задали fact_key, его может присвоить архивариус — служебный ключ вида archivist:полка:кратко.

Когда агент сжимает несколько записей в одну (например, «итоги недели по деплою»), он передаёт их ID в derived_from (до 50 существующих записей). Сводка помнит, из чего собрана, и наследует conflict и stale своих источников — сжатие не прячет нерешённые противоречия.

После сохранения архивариус сравнивает запись с недавними записями той же рабочей области и может построить связи. В результатах поиска они видны в graph_relations:

"graph_relations": [
{
"relation": "supersedes",
"direction": "outgoing",
"weight": 0.9,
"target_id": "0b7e…",
"preview": "staging выкатывается вручную через scp"
}
]

Типы связей: relates_to (связано), fixes_issue (исправляет проблему), supersedes (заменяет). preview — первые 120 символов связанной записи. Связи с удалёнными или невидимыми вам записями не показываются.