В предыдущей статье я рассказывал, как сделал производительный просмотрщик логов для VS Code с Rust и mmap. Расширение открывает файлы по 10 ГБ без лагов.

Но оставалась проблема: чтобы найти нужное, приходилось писать regex. А regex — это боль. Особенно когда искать нужно "все ошибки подключения к БД" или "таймауты в сервисе auth".

Решение: пусть AI пишет regex за меня.


Что получилось

Нажимаешь "AI", пишешь на человеческом языке — получаешь фильтр:

Запрос

Результат

"все ошибки"

ERROR

"проблемы с базой"

database.*ERROR

"таймауты"

timeout|Timeout

Плюс можно кликнуть на строку и попросить AI объяснить её.


Архитектура

AI работает в Extension Host (не в Webview) — так можно безопасно хранить API-ключ в context.secrets и использовать npm-пакеты.

Использую Vercel AI SDK — единый интерфейс для OpenAI, Groq (бесплатно!), Ollama и любых OpenAI-compatible API.

const { text } = await generateText({
  model: openai(settings.model || "gpt-4o-mini"),
  system: SYSTEM_PROMPT,
  prompt: userMessage,
  temperature: 0.1,  // Низкая для детерминированности
});

Промпт-инжиниринг

Главная сложность — заставить модель выдавать простые паттерны, а не монстров вроде ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.*\[ERROR\].*.

Ключевой трюк: отправляем 20 случайных строк из файла как контекст. Модель видит реальный формат и адаптируется.

const userMessage = `Sample lines from log:
---
2024-01-15 10:23:45 [ERROR] DatabasePool: Connection timeout
2024-01-15 10:23:46 [INFO] UserService: Login successful
---
User wants: "database errors"
Return ONLY a simple regex pattern.`;

Private Mode и Custom Instructions

Для чувствительных логов есть Private Mode — сэмплы не отправляются в API.

Но тогда модель не знает формат ваших логов. Решение — поле Custom Instructions (Pro-фича):

My logs format: [TIMESTAMP] [LEVEL] ServiceName: message
Services: auth-service, payment-gateway, user-api
Error levels: ERROR, FATAL, PANIC

Там можно описать:

  • Формат логов и уровни severity

  • Названия сервисов и их назначение

  • Специфичные для проекта термины

  • Любой контекст, который поможет AI понять ваши логи

Эти инструкции добавляются к системному промпту при каждом запросе.


Что дальше: Log Analysis Agent

Текущий AI умеет искать по описанию. Следующий шаг — автоматический root cause analysis.

Сценарий:

User: "Почему упал деплой?"

Agent:
  1. Находит ERROR и FATAL в логах
  2. Анализирует временные корреляции
  3. Определяет первопричину
  4. Формирует отчёт с рекомендациями

Для этого нужно добавить:

  • Tool calling — чтобы AI мог вызывать поиск, фильтрацию, чтение строк

  • Агентный loop (ReAct) — multi-step reasoning

  • Context memory — чтобы агент помнил, что уже нашёл

Почему именно это:

  • Строится на готовой базе (AI + быстрый поиск по логам)

  • Не требует внешних интеграций (K8s, cloud APIs — это следующие итерации)

  • Очевидная ценность для пользователя


Итог

v0.2.3:

  • AI-генерация regex из natural language

  • Анализ строк — объяснение непонятных записей

  • 6+ провайдеров (OpenAI, Groq, Ollama...)

  • Private Mode + Custom Instructions для чувствительных логов

Следующая итерация:

  • Log Analysis Agent с автоматическим поиском root cause

Ссылки:

Комментарии (0)