# Как работает Memo (/ru/docs/memo/how-it-works)

На этой странице объясняется, что происходит с вашими заметками, почтой и сообщениями, когда Memo их
использует: где хранится текст, что делает импорт, как работают ссылки и ссылки на источник и что агент
может и чего не может делать. Прочитайте её, если хотите понять, почему Memo отвечает именно так, или
прежде чем дать ему доступ к чему-то личному.

## Локальное хранилище [#локальное-хранилище]

Memo хранит всё в одном файле на вашем компьютере — **локальном хранилище** (`wirecat.db`). tg и max
сохраняют ваши сообщения Telegram и MAX в тот же файл, поэтому Memo может отвечать сразу по сообщениям,
почте и заметкам.

| Откуда это берётся | Кто добавляет это в локальное хранилище |
| --- | --- |
| Сообщения Telegram и MAX | tg и max, когда скачивают ваши чаты |
| Почта | `memo mail <account> import` или `memo import` |
| Файлы в ваших папках заметок | `memo notes import` или `memo import` |
| Ваши собственные заметки, теги, задачи, память и факты | Memo, когда их добавляете вы или ваш агент |

Memo никогда не изменяет оригинал: ваши файлы остаются как есть, а почтовый ящик открывается только
для чтения. В локальном хранилище лежит копия их текста.

## Что делает импорт [#что-делает-импорт]

Импорт читает ваши папки и почтовые аккаунты и обновляет локальное хранилище.

* **Читается только то, что изменилось.** Файл с тем же размером и временем изменения, что и в прошлый
  раз, пропускается. Письма, которые уже сохранены, пропускаются. Повторный импорт проходит быстро.
* **Правки сохраняют историю.** Когда вы редактируете файл заметки, локальное хранилище сохраняет
  старый текст как более раннюю версию.
* **Перемещение ничего не теряет.** Файл, перемещённый внутри своей папки, сохраняет свои ссылки и теги.
* **Удаления учитываются.** Когда вы удаляете файл или письмо, его текст уходит из локального хранилища
  при следующем импорте.
* **Защитная остановка.** Если импорт обнаруживает, что большая часть папки или почтового ящика вдруг
  пропала (например, диск не подключён), он ничего не удаляет и сообщает вам об этом.
* **Подготовка к поиску по смыслу.** Если модель поиска есть на вашем компьютере, импорт также готовит
  новый текст к поиску по смыслу. `--no-embed` пропускает этот шаг.

Два импорта никогда не идут одновременно, и сбой одного источника не останавливает остальные.

## Папки на нескольких компьютерах [#папки-на-нескольких-компьютерах]

Когда вы добавляете папку, Memo даёт ей ID (короткий номер) в локальном хранилище. Заметки и ссылки
используют этот ID, а не путь к папке. Если вы пользуетесь теми же заметками на другом компьютере,
`memo folders attach` связывает ID с путём к папке на этом компьютере. Поскольку ID не меняется,
заметки сохраняют свои ссылки и теги.

## Ссылки между заметками и людьми [#ссылки-между-заметками-и-людьми]

Когда Memo импортирует заметку, он также читает ссылки в ней:

* Ссылка на другую заметку в папке становится ссылкой на эту заметку.
* Ссылка на имя, например `[[Kai Sample]]` в Obsidian, становится ссылкой на этого человека, как только
  в локальном хранилище появляется кто-то с таким именем, ником или именем пользователя. Если у двух
  людей одинаковое имя, ссылка ждёт, пока вы не выберете.
* Ссылка, записанная как ссылка на источник, например `[Kai](person:7)` или `msg:telegram/1/77/42`,
  ведёт прямо к этому человеку или сообщению.

Имя в обычном тексте — это **не** ссылка. Memo не угадывает, о ком заметка, по словам в ней.

## Один человек, несколько аккаунтов [#один-человек-несколько-аккаунтов]

У одного человека может быть аккаунт Telegram, аккаунт MAX и адрес почты. Memo считает их одним
человеком только после того, как вы их свяжете командой `tg contacts link`[↗](/llms.mdx/docs/ru/tg/commands-personal/content.md#tg-contacts-link "Справочник команды: tg contacts link") или `max contacts link`[↗](/llms.mdx/docs/ru/max/commands-personal/content.md#max-contacts-link "Справочник команды: max contacts link").
Совпадения имени или почтового домена никогда не достаточно. Так сообщения одного человека не
смешиваются с сообщениями другого.

## Ссылки на источник [#ссылки-на-источник]

Каждый результат называет свой источник через ссылку на источник. Её можно скопировать в другую
команду, чтобы поставить тег, написать о ней заметку или использовать её как доказательство.

| Ссылка на источник | На что указывает |
| --- | --- |
| `note:12` | Заметка, которую вы написали в Memo |
| `document:3` | Файл из одной из ваших папок заметок |
| `msg:telegram/1/77/42` | Одно сообщение: мессенджер, аккаунт, чат и сообщение |
| `chat:…`, `contact:…` | Чат или контакт в одном аккаунте |
| `person:…` | Человек, чьи аккаунты вы связали |
| `organization:…`, `project:…`, `task:…` | Ваши организации, проекты и задачи |
| `memory:…`, `fact:…` | Запись памяти или факт |
| `meeting:…` | Встреча, сохранённая в локальном хранилище |

Ссылка на сообщение включает аккаунт, поэтому сообщение с тем же номером в другом аккаунте — это другое
сообщение.

## Поиск по словам и по смыслу [#поиск-по-словам-и-по-смыслу]

Memo всегда ищет по словам: он находит заметки, письма и сообщения, в которых есть каждое введённое вами
слово, включая другие формы слова. Если модель поиска есть на вашем компьютере, он также ищет по смыслу,
поэтому по слову `holiday` может найтись заметка об отпуске. Модель работает на вашем компьютере; ваш
текст для этого никуда не отправляется. Каждый результат сообщает, как он был найден.

Пустой результат означает только то, что в локальном хранилище нет совпадений. Он не доказывает, что
чего-то никогда не было: чат может быть не скачан, а папка — не импортирована.

## Агент предлагает, решаете вы [#агент-предлагает-решаете-вы]

Ваш агент может добавлять три вида записей:

* **запись памяти**: вывод, например предпочтение;
* **факт**: то, что произошло, например решение;
* **предложенное действие**: то, что нужно сделать, например ответ. Оно всегда ждёт, пока вы его не
  одобрите или не отклоните. Если вы его одобрите, оно станет вашей задачей. Memo никогда не отправляет
  сообщения или письма.

Всё, что приложение добавляет через [MCP-сервер](/llms.mdx/docs/ru/memo/mcp/content.md), ждёт в статусе **предложенного**, пока вы не
подтвердите запись памяти или не примете факт. Через MCP агент не может подтверждать, принимать,
одобрять или отклонять, и каждый его вызов записывается в журнал агентов (`memo agents log`) без
подробностей, которые он отправил.

Запись памяти или факт, добавленные командой `memo`, считаются вашими и подтверждаются сразу: команда не
может понять, кто её ввёл — вы или ваш агент. Попросите агента с терминалом показать вам текст и его
источник, прежде чем он что-либо добавит.

## Что может покинуть ваш компьютер [#что-может-покинуть-ваш-компьютер]

Ничего, если вы сами об этом не попросите. По умолчанию `memo ask` готовит источники для вашего
собственного агента. Он отправляет текст провайдеру ИИ, только если вы его настроили и добавили
`--model`, а удалённому провайдеру — только если вы добавили ещё и `--allow-remote`. Что ваш агент
делает с прочитанным текстом, решает сам агент. См. [Безопасность](/llms.mdx/docs/ru/memo/security/content.md).
