Поиск сообщений
Документация: v0.25.0
max messages search ищет только в общем локальном архиве, без сети и отметок о прочтении.
Начните с одного слова, которое помните из сообщения:
max messages search "договор"Команда ищет среди сообщений, уже сохранённых на компьютере. Если нужного периода нет, сначала загрузите историю выбранного чата по инструкции архива. По умолчанию ищется точное слово: Lucene — язык для добавления фраз, фильтров и условий. Для опечаток и неточного поиска выберите --language legacy. Ниже — примеры фильтров; поля и regex нужны только для более сложных запросов.
Быстрый старт
max messages search 'invoice AND (kind:group OR kind:private)' --json
max messages search 'from:"Alice Synthetic" date:[2026-01-01 TO 2026-02-01}' --timezone Europe/Madrid --json
max messages search 'preset:secret kind:saved' --json
max messages search 'text:/pass(port)?/' --json
max messages search 'chat:"Работа" AND body:/.*invoice.*/' --json
max messages search 'has:file' --jsonИмена в примерах замените своими. Слова и фразы сопоставляются строго, без автоматических
исправлений и подстрочного поиска. alpha OR beta gamma означает (alpha OR beta) AND gamma;
alpha OR beta AND gamma — alpha OR (beta AND gamma). Для ясности ставьте скобки.
Поля и операторы
Поддержаны поля text/body/from/chat/date/kind/has/topic/in/preset, логические группы и группы
значений поля, включающие и исключающие диапазоны, ограниченные wildcard и Lucene regex.
topic требует одного обязательного чата. kind:bot выбирает собеседника, in:bots — аккаунты
Bot API. filename/mime/size/tag пока не поддержаны; fuzzy/proximity/boost/intervals также
дают ошибку. Неизвестные поля не становятся текстом.
Даты и regex
--timezone задаёт часовой пояс IANA; дата без времени означает календарный день. Включающая
верхняя граница включает день целиком, исключающая исключает его; из-за перехода на летнее время
день может длиться не 24 часа. Точное время пишите в кавычках, с секундами и смещением от UTC.
Regex поля text совпадает с целым нормализованным словом; body — с полным исходным текстом,
с учётом регистра. Для подстроки в body используйте .*. Поддержана часть Lucene regex,
без JS lookaround/backreferences/flags. Превышение пределов строк, байтов, состояний автомата,
работы или времени — явная ошибка; сузьте область поиска.
Архив и машинный ответ
Пустая выдача не доказывает отсутствие сообщения в мессенджере. JSON сообщает версию запроса,
полноту и охват аккаунтов/чатов и готовность индекса даже без совпадений. lastSyncedAt сейчас
null; список чатов профиля не считается полным. JSONL содержит только items;
для охвата используйте --json.
Неготовый word index требует max store migrate; историю дочитывают через max store fetch.
Готовые предикаты находят кандидатов, а не подтверждают действительность учётных данных.
Миграция legacy
max messages search 'from:alice after:7d invoice -draft' --language legacy --json
max messages search --regex 'invoice\s+\d+' --jsonLegacy сохраняет прежние фильтры и поиск с исправлениями. --regex — отдельный режим JS iu
по полному тексту с изолированным worker и пределами; сочетание --regex --language lucene
отвергается. Программный контракт сохранённого запроса содержит language/version;
предпросмотр миграции не обещает сохранить результаты поиска с исправлениями.
Полная справка
Основная справка языка содержит таблицы полей и операторов, Unicode и экранирование, готовые предикаты, пределы, ошибки и десять проверяемых рецептов. Техническая спецификация описывает зафиксированную грамматику, AST/schema, эталонные примеры и компилятор. Архив объясняет fetch и полноту; команды перечисляют текущие параметры.
Поиск через MCP
max_messages_search использует тот же язык и service, что messages search. Запрос содержит
text или versioned ast; language выбирает lucene или legacy, timezone задаёт календарный
часовой пояс. chat принимает id или имя из локальной копии; source, newest, context и limit
выбирают охват и представление результата.
Ответ сохраняет query, coverage, completeness, wordsReady и corrections рядом с обычной
страницей items/page/limit/hasMore, в том числе при нуле совпадений. Metadata описывает локальный
архив, а не полноту удалённого чата. Права инструмента и его имя при этом сохраняются.