Memo

Как работает Memo

Где Memo хранит текст, что меняет импорт и как работают ссылки и ссылки на источники.

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

Локальное хранилище

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

Откуда это берётсяКто добавляет это в локальное хранилище
Сообщения Telegram и MAXtg и 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 или 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-сервер, ждёт в статусе предложенного, пока вы не подтвердите запись памяти или не примете факт. Через MCP агент не может подтверждать, принимать, одобрять или отклонять, и каждый его вызов записывается в журнал агентов (memo agents log) без подробностей, которые он отправил.

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

Что может покинуть ваш компьютер

Ничего, если вы сами об этом не попросите. По умолчанию memo ask готовит источники для вашего собственного агента. Он отправляет текст провайдеру ИИ, только если вы его настроили и добавили --model, а удалённому провайдеру — только если вы добавили ещё и --allow-remote. Что ваш агент делает с прочитанным текстом, решает сам агент. См. Безопасность.