# Ищите эффективно (/ru/docs/search-efficiently)

В хранилище много записей, а агент платит за каждый результат, который читает. Эта страница показывает, как получить нужные записи за минимум шагов: выбрать команду, сузить запрос до поиска, листать результаты и сократить вывод. После неё вы сможете превратить расплывчатый вопрос в один точный поиск и проверить, что он охватил. Предполагается, что нужная история уже скачана: [Поиск](/llms.mdx/docs/ru/search/content.md#%D1%81%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D0%B0-%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%B8%D1%82%D0%B5-%D0%B8%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8E-%D0%BD%D1%83%D0%B6%D0%BD%D1%8B%D1%85-%D1%87%D0%B0%D1%82%D0%BE%D0%B2).

## Выберите команду [#выберите-команду]

Перед каждой командой ставьте название инструмента и имя профиля, как в `tg personal search messages`.

| Вам нужно | Команда | Примечание |
| --- | --- | --- |
| Слова в ваших сообщениях Telegram или MAX | `search messages` в `tg` или `max` | Читает локальный архив и по умолчанию ещё и сервер мессенджера |
| Телефон, почта, ссылка или имя человека, написанные в сообщениях | `search messages` с `phone:`, `email:`, `domain:` или `mentions:`, либо `mentions list` | Находится по правилам, как бы ни был написан |
| Всё об одном человеке во всех мессенджерах | `contacts timeline` | Нужны адреса, объединённые через `contacts link` |
| Обсуждение, когда помните тему, а не слова | `search conversations` | Для чата один раз нужны `conversations build` и `conversations embed` |
| Картинка по тому, что на ней | `search messages "dog on a beach"` | Только по-английски, и должна быть включена настройка картинок: [Что попадает в поиск](/llms.mdx/docs/ru/what-is-indexed/content.md#%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B8) |
| Почта, заметки или неизвестно, где написано | `memo search all`, `memo search mail`, `memo search notes` | Ответ перечисляет пропущенные источники и причину |
| Сообщения всех мессенджеров сразу | `memo search messages` | Только сообщения |
| Решение или обещание | `memo facts list` | У каждого факта есть ссылки на доказательства |
| Документ Drive по словам или по смыслу | `drive search` | `--exact` — только слова |
| Файл Drive по имени, типу, папке, человеку или тегу | `drive catalog list` или `drive catalog search` | Только метаданные, работает офлайн |

## Сначала сузьте, потом ищите [#сначала-сузьте-потом-ищите]

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

| Фильтр | Что находит | Пример |
| --- | --- | --- |
| `chat:` | Один чат, по названию или id | `chat:"Book club"` |
| `from:` | Одного отправителя | `from:"Kai Sample"` |
| `date:` | Период или всё после какого-то дня | `date:[2026-01-01 TO 2026-02-01}`, `date>=2026-10-01` |
| `kind:` | Личные чаты, группы, каналы, ботов | `kind:group` |
| `has:` | Сообщения с файлом, фото, голосовым, ссылкой или текстом | `has:file` |
| `filename:` | Файл по имени | `filename:*.pdf` |
| `mime:` | Файл по типу (только Telegram) | `mime:"application/pdf"` |
| `size:` | Файлы по размеру | `size>10MB` |
| `content:` | Слова внутри файла | `content:invoice` |
| `transcript:` | Слова из голосового | `transcript:invoice` |
| `tag:` | Ваши метки | `tag:work` |
| `phone:`, `email:`, `url:`, `domain:`, `mentions:` | Значение, найденное в тексте | `phone:"+1 555 010 0100"`, `mentions:"person:7"` |

Имена полей чувствительны к регистру, а неизвестное поле даёт ошибку, а не пустой ответ. Полный список полей есть в языке запросов [Telegram](/llms.mdx/docs/ru/tg/query-language/content.md) и [MAX](/llms.mdx/docs/ru/max/query-language/content.md). Последняя строка есть в последних релизах `tg` и `max`.

```sh
tg personal search messages 'chat:"Book club" from:"Kai Sample" date>=2026-10-01 delivery' --limit 10
```

Когда запрос уходит ещё и на сервер мессенджера, туда попадают только слова, один чат, один отправитель и даты. `has:`, `tag:`, отрицания и шаблоны применяются локально. Подробности: [Как устроен поиск](/llms.mdx/docs/ru/search-architecture/content.md#%D0%BF%D0%BE%D0%B8%D1%81%D0%BA-%D0%BD%D0%B0-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B5-%D1%80%D1%8F%D0%B4%D0%BE%D0%BC-%D1%81-%D0%B0%D1%80%D1%85%D0%B8%D0%B2%D0%BE%D0%BC).

## Операторы [#операторы]

| Запишите | Значение |
| --- | --- |
| `invoice paid` | Оба слова, в любом порядке (AND по умолчанию) |
| `alpha OR beta` | Любое из слов |
| `alpha NOT beta`, `alpha -beta` | Первое слово без второго |
| `+alpha` | Слово обязательно |
| `(alpha OR beta) gamma` | Группа |
| `from:(alice OR bob)` | Одно поле, несколько значений |
| `date:[2026-01-01 TO 2026-02-01}` | Диапазон: `[ ]` включает границу, `{ }` исключает |
| `invo*` | Любое окончание |
| `text:/pass(port)?/` | Регулярное выражение, сравнивается с целыми словами |

Три правила убирают большинство неожиданностей:

* Запрос из одного отрицания ничего не выбирает. Добавьте условие: `has:photo NOT has:text`.
* Явный `AND` связывает сильнее `OR`. `alpha OR beta gamma` означает `(alpha OR beta) AND gamma`.
* `and`, `or` и `not` в нижнем регистре — обычные слова. Опечатки вроде `invoice~1` и усиление вроде `invoice^2` дают ошибку.

## Слова, формы и смысл [#слова-формы-и-смысл]

Простое слово находит свои другие формы: «invoice» находит «invoices». Только точная форма — `exact:invoice`. Для опечаток — `--language legacy`. Слова в файлах и расшифровках сравниваются только в точной форме.

`search conversations` нужен, когда вы помните, о чём шло обсуждение, а не какими словами. Спрашивайте своими словами на любом языке, который понимает модель. Команда всегда возвращает ближайшие разговоры, даже если ни один не отвечает, поэтому откройте сообщения, прежде чем полагаться на результат. Для точного имени, номера или id используйте поиск по полям. Подробнее: [Поиск по теме](/llms.mdx/docs/ru/tg/topic-search/content.md).

## Листайте результаты [#листайте-результаты]

Ответ говорит, есть ли ещё результаты (`has_more`). Это относится к странице, а не к тому, хранит ли мессенджер больше. Повторите ту же команду с теми же фильтрами и запросите следующую страницу. Каким флагом, зависит от команды:

| Команда | Следующая страница |
| --- | --- |
| `search messages` в `tg` и `max` | `--page <n>`, счёт с 1 |
| `contacts timeline` | `--cursor <cursor>`, курсор из `page.next` в ответе |
| `mentions list`, `drive catalog list`, `drive catalog search` | `--page <n>` |
| `memo search notes`, `drive search` | `--offset <n>` |
| `memo search all`, `memo search mail`, `memo search messages` | Только `--limit`, до 100: сузьте запрос |

## Держите вывод коротким [#держите-вывод-коротким]

* `--limit <n>` ограничивает число результатов.
* `--brief` показывает каждое найденное сообщение как ссылку на источник, время, отправителя и фрагмент. Просмотрите так, потом откройте один результат.
* `--json=ref` оставляет только названные поля. `--jsonl` печатает по одному результату в строке. `--full` возвращает тексты целиком.
* `--max-output-bytes` по умолчанию ограничивает машинный вывод 4 МиБ. Результат больше лимита завершается явной ошибкой, а не обрезается.
* `--context <n>` добавляет `n` соседних сообщений с каждой стороны. Вне терминала значение равно 0.

## Прочитайте доказательства, потом расширяйте [#прочитайте-доказательства-потом-расширяйте]

Откройте один результат вместе с соседями или пройдите по цепочке ответов:

```sh
tg personal messages context "msg:telegram/1/77/42" --before-n 3 --after-n 3
tg personal messages context "msg:telegram/1/77/42" --thread
```

Если ответ выглядит скудно, прочитайте запись `missing`. Она называет, что не искали, и шаг, который это исправит, например загрузку чата. Каждый результат говорит, где совпал (`matched_in`: `text`, `transcript`, `filename` или `file`). Чтобы сверить число с ожидаемым, `stats messages show` (в последних релизах) считает совпадения по чатам, отправителям, дням или часам.

## Примеры [#примеры]

Подставьте свои имена.

| Задача | Команда |
| --- | --- |
| Договорённость и её источник | `tg personal search messages 'chat:"Book club" agreed date>=2026-10-01' --limit 5` |
| Всё об одном человеке за этот месяц | `tg personal contacts timeline "Kai Sample" --since-time 2026-10-01` |
| Где встречается номер телефона | `tg personal search messages 'phone:"+1 555 010 0100"' --brief` |
| Файлы, присланные в чат на прошлой неделе | `tg personal search messages 'chat:"Book club" has:file date>=2026-10-07' --brief` |
| Что документ Drive говорит о теме | `drive personal search 'budget' --exact --limit 5` |

Более длинные примеры: [Telegram](/llms.mdx/docs/ru/tg/recipes/content.md) и [MAX](/llms.mdx/docs/ru/max/recipes/content.md).

## Частые ошибки [#частые-ошибки]

| Ошибка | Что происходит | Что делать |
| --- | --- | --- |
| Искать до загрузки истории | Мало результатов или ни одного | Скачайте чат; прочитайте `missing` в ответе |
| Считать пустой ответ доказательством «не отправляли» | Архив может быть неполным | Проверьте, что ответ называет охваченным |
| Брать фразу в кавычки ради точной формы | Кавычки находят любые формы слов | `exact:"final invoice"` |
| `mime:application/pdf` без кавычек | `/` начинает регулярное выражение | `mime:"application/pdf"` или `filename:*.pdf` |
| `mime:` в MAX | MAX не сообщает тип файла | `filename:*.pdf` |
| `has:photo`, чтобы найти то, что на картинке | Оно говорит только, что фото приложено | Поиск по картинкам, по-английски |
| Поле сообщений в поиске по Drive | У Drive свои фильтры | `tag:` и `--exact` либо `catalog list` |
| `From:` вместо `from:` | Ошибка | Имена полей пишутся в нижнем регистре |
| Запрос к поиску по картинкам не на английском | Модель знает только английский | Пусть агент сначала переведёт |

## Проверьте результат [#проверьте-результат]

Откройте источник лучшего результата и сравните с тем, что вы помнили. Если какой-то вид содержимого не находится, проверьте единственный шаг, который ему нужен: [Что попадает в поиск](/llms.mdx/docs/ru/what-is-indexed/content.md#%D1%87%D1%82%D0%BE-%D0%BD%D1%83%D0%B6%D0%BD%D0%BE-%D0%BA%D0%B0%D0%B6%D0%B4%D0%BE%D0%BC%D1%83-%D0%B2%D0%B8%D0%B4%D1%83). Если не хватает связи между записями, см. [Как всё связано](/llms.mdx/docs/ru/how-things-are-linked/content.md#%D0%B5%D1%81%D0%BB%D0%B8-%D1%81%D0%B2%D1%8F%D0%B7%D0%B8-%D0%BD%D0%B5-%D1%85%D0%B2%D0%B0%D1%82%D0%B0%D0%B5%D1%82).

Дальше: язык запросов [Telegram](/llms.mdx/docs/ru/tg/query-language/content.md) или [MAX](/llms.mdx/docs/ru/max/query-language/content.md) перечисляет все поля, пресеты и формы дат.
