MAX

Поиск сообщений

Документация: 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+' --json

Legacy сохраняет прежние фильтры и поиск с исправлениями. --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 описывает локальный архив, а не полноту удалённого чата. Права инструмента и его имя при этом сохраняются.

На этой странице