WireCat Desktop

Поиск по логам в WireCat Desktop

Узнайте, почему инструмент упал, как часто это бывает и какие команда, профиль или ошибка тут замешаны, — с фильтрами, группами и записью каждого запуска.

Страница Logs в WireCat Desktop показывает, что каждый инструмент командной строки записал о своих запусках. Запуск — это один старт инструмента, например tg personal messages send, от начала до выхода. Откройте эту страницу, когда инструмент упал и нужно понять почему, как часто это бывает или какие команда, профиль или ошибка тут замешаны. Вы научитесь фильтровать запуски, группировать их, открывать один запуск и копировать его запись для отчёта об ошибке.

Что показывает страница

Логи запусков ведут Telegram (tg), MAX (max) и WhatsApp (wa). Приложение читает их собственными командами инструмента runs list и runs show. Zoom (zm), Google Drive (drive) и Memo (memo) пока не ведут логов, которые приложение может прочитать. Строка над поиском показывает каждый инструмент и сколько запусков приложение у него прочитало. Приложение читает 500 последних запусков каждого инструмента; Load older читает следующие 500.

Почему почти все запуски — ошибки

Инструмент сохраняет запуск, только когда запуск упал или выполнился частично. Успешный запуск не оставляет записи. Поэтому в списке в основном ошибки. Это не значит, что всё сломано.

Чтобы сохранять каждый запуск, нажмите Keep every run у нужного инструмента вверху страницы Logs или задайте настройку сами:

tg config set record true --defaults

Настройка действует для всех профилей этого инструмента. Для MAX или WhatsApp напишите max или wa вместо tg. Инструмент удаляет запуски старше keep_runs_for_days дней. По умолчанию — 30 дней. Где хранятся эти настройки и как их менять, объясняет страница Настройки.

Поиск запусков

Пишите в поле поиска над списком. Поиск состоит из условий, разделённых пробелами. Запуск должен подходить под каждое условие.

Как писатьЧто значитПример
field:valueУ поля такое значение. Значение должно совпасть целиком, регистр букв не важен.status:failed
field:"two words"Значение с пробелами берите в кавычки.cli_command:"tg messages send"
*Любые символы, в том числе ни одного. Так можно найти часть значения.cli_command:"tg messages*"
- перед условиемИсключить запуски, которые подходят под условие.-profile:work
field:>N, <, >=, <=Сравнить число.duration_ms:>1000
a.b.c:valueПоле внутри другого поля. Список подходит, если подходит один из его элементов.partial.failures.stage:upload
слово без field:Текст, который входит в основные поля запуска: команду, профиль, статус или коды ошибок.timeout

Два значения одного поля подходят любым из них: tool:tg tool:max покажет запуски обоих инструментов. Разные поля должны подойти все: tool:tg status:failed покажет только упавшие запуски tg. Исключение и сравнение чисел всегда действуют сами по себе. Например, duration_ms:>1000 duration_ms:<5000 найдёт запуски длиной от одной до пяти секунд.

Поле поиска подсказывает названия полей и значения, которые есть у загруженных запусков. Если приложение не может прочитать условие, оно подчёркивает его и объясняет причину: не закрыта кавычка, у поля нет значения, число сравнивается не с числом или такого поля нет ни у одного загруженного запуска.

Поля

ПолеЧто в нёмПример значения
toolИнструмент, который записал запускtg
statusЧем закончился запускfailed, partial, success, running
cli_commandИмя инструмента и его командаtg messages send
commandКоманда без имени инструментаmessages send
profileПрофиль, с которым шёл запускwork
error_codeПочему запуск упалrate_limited
codes (или code)Коды ошибок запросов в этом запускеtimeout
operations (или operation)Запросы, которые инструмент сделал к сервисуmessages.getHistory
duration_ms (или duration)Сколько длился запуск, в миллисекундах31000
requestsСколько запросов сделал инструмент3
cli_versionВерсия инструментаномер версии
run_idИдентификатор запуска20261025T100000Z-sync-a1b2c3

У запуска бывают и другие поля. Откройте запуск, чтобы увидеть все: любое поле его записи можно искать по имени или по пути. Если cli_command — только имя инструмента, например max, инструмент запустили без команды, которую он знает. Обычно это опечатка или не указан профиль.

Примеры поиска

Что найтиПоиск
Упавшие запуски одной командыstatus:failed cli_command:"tg messages send"
Ограничения частоты запросов за последние суткиcode:rate_limited, затем выберите Last 24h
Медленные запускиduration_ms:>10000
Запуски одного профиляprofile:work
Ошибки, кроме тайм-аутовstatus:failed -error_code:timeout
Частичные запуски, где не удалась загрузкаstatus:partial partial.failures.stage:upload

Чем это отличается от поиска сообщений

Поиск сообщений использует синтаксис Lucene. Поиск по логам проще:

  • Нет слов AND, OR, NOT и скобок. Пробел значит «и», одно поле дважды — «любое из», - исключает.
  • field:value должно совпасть со всем значением. Чтобы найти часть, добавьте *. Слова без поля находят часть значения.
  • * — единственный шаблон. Нет ?, нечёткого поиска и диапазонов в скобках.
  • Нет поля даты для сравнения. Используйте кнопки периода.

Фильтры по фасетам

Колонка слева показывает фасеты: значения полей Tool, Status, Command, Profile и Error code и число запусков для каждого. Нажмите значение, чтобы оставить только эти запуски, и нажмите ещё раз, чтобы снять фильтр. Alt + клик по значению или его кнопка с минусом скрывают эти запуски. Каждый клик добавляет условие в поле поиска, поэтому поиск можно увидеть и поправить. Числа учитывают все остальные условия поиска. Поэтому можно выбрать и второе значение того же фасета.

В узком окне фасеты открывает кнопка Facets.

Группировка запусков

Выберите поле в Group by, чтобы увидеть по строке на каждое значение: сколько у него запусков, сколько из них упало и когда начался последний. Группировать можно и из фасета кнопкой Group by this field, и из значения в записи запуска кнопкой Group by. Нажмите строку группы, чтобы оставить только её запуски.

Период

Выберите Last 1h, Last 24h, Last 7d, Last 30d или All. Период действует на запуски, которые приложение загрузило. Если старого запуска не видно, нажмите Load older у этого инструмента.

Открыть запуск

Нажмите запуск, чтобы открыть его. Вы увидите:

  • Events — события: запросы, которые инструмент сделал к сервису, и важные шаги запуска, со временем, результатом и длительностью каждого. Нажмите событие, чтобы увидеть все его поля.
  • Run record — запись запуска: всё, что инструмент сохранил о нём, в виде раскрывающегося дерева. У большинства значений есть кнопки: фильтровать по нему, исключить его, сгруппировать по его полю и скопировать.
  • Copy JSON копирует всю запись запуска. Приложите её к отчёту об ошибке или отдайте агенту.

Copy run id копирует идентификатор запуска. Его можно передать команде инструмента runs show.

Приватность

В записях запусков никогда нет текста сообщений, имён людей, названий чатов и секретов входа, например паролей и ключей сессии. Что инструмент записывает, а что никогда, перечисляет руководство по диагностике Telegram.

Перед показом запуска приложение ещё и скрывает личные данные: значения полей вроде токенов, паролей, телефонов, адресов почты, имён аккаунтов и ID пользователей становятся •••. В тексте приложение заменяет адреса почты на [email], номера телефонов — на [number], токены ботов — на [bot token]. То же скрытие действует и для того, что вы копируете.

Отчёт об ошибке, отправленный из приложения, всегда содержит последние логи ошибок: 20 последних упавших запусков каждого установленного инструмента, скрытые тем же способом. Сервер WireCat скрывает их ещё раз. Они хранятся закрыто на сервере WireCat 90 дней, затем удаляются, и никогда не публикуются. В остальных случаях логи не покидают ваш компьютер. Что отправляет отчёт об ошибке, объясняет политика конфиденциальности.