npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@dr39m/log-analyzer-suite

v1.0.17

Published

OpenCode plugin for AI-powered log analysis — inductive chunk analysis (log-insight) and deductive source-code-aware validation (log-validate)

Readme

Log Analyzer Suite — OpenCode Plugin

Плагин для OpenCode, добавляющий два метода AI-анализа логов: индуктивный (log-insight) и дедуктивный (log-validate).

Установка

Для конкретного проекта (рекомендуется)

В корне проекта выполни:

opencode plugin @dr39m/log-analyzer-suite@latest

Это добавит плагин в .opencode/opencode.json и подтянет его из npm.

Глобально (для всех проектов)

opencode plugin @dr39m/log-analyzer-suite@latest --global

Что происходит при первом запуске

Плагин автоматически:

  • Создаст файлы навыков (SKILL.md) в .opencode/skills/
  • Зарегистрирует слэш-команды /log-insight и /log-validate
  • Добавит тул split_log_chunks для расчёта границ чанков

Никаких дополнительных действий не требуется.

⚠️ ОБЯЗАТЕЛЬНО: tool_output в opencode.json

Плагин возвращает большой JSON (3 чанка × ~600 KB ≈ 1.7 MB), а у opencode дефолтный cap tool output — всего 50 KB. Без настройки твой split_log_chunks ответ обрежется и сабагенты получат пустые LOG_CHUNK_CONTENT секции.

Добавь в .opencode/opencode.json проекта (или глобально в ~/.config/opencode/opencode.json):

{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["@dr39m/log-analyzer-suite@latest"],
  "tool_output": {
    "max_lines": 500000,
    "max_bytes": 8388608
  }
}
  • max_bytes: 8388608 (8 MB) — этого хватит на ~10 чанков с большим --context.
  • max_lines: 500000 — щедрый запас.

Эта опция недокументирована на opencode.ai/docs, но реализована в коде opencode и проверена на версии 1.14.48. Подробности — в docs/opencode-output-limits.md.

Требования к модели

/log-insight инлайнит весь чанк в Task-промпт сабагента (~contextTokens × 1000 × 0.70 токенов). Для --context 250 / 3 chunks каждый сабагент получает промпт ~240K токенов — это требует модель с большим контекстом (1M токенов: Opus 4.7 / Sonnet 4.5+). Если модель меньше — понижай --context (например --context 100) и увеличивай --chunks.

Принцип работы: «поделили — передали». Тул нарезает чанки и сразу отдаёт готовые промпты с inline-контентом — оркестратор передаёт их в Task дословно, сабагент получает контент в первом сообщении без всяких tool calls. Полный чёрный список запрещённых действий оркестратора — в Phase 3 скилла.

Обновление

opencode plugin @dr39m/log-analyzer-suite@latest --force

Важно про суффикс @latest. Без него --force подтягивает не свежую версию с npm, а перетягивает ту, что уже зафиксирована во внутреннем lock-файле opencode'а. Суффикс @latest явно говорит opencode'у пересчитать тег и взять актуальную версию из npm.

Навыки в .opencode/skills/<name>/SKILL.md обновляются автоматически: начиная с 1.0.6 плагин пишет рядом со скиллом файл .bundle-version и при каждом запуске сравнивает с встроенной версией. При расхождении SKILL.md перезаписывается.

Использование

/log-insight — индуктивный анализ

Разбивает лог на N чанков, анализирует каждый параллельным субагентом, собирает тренды.

/log-insight --chunks 5 --log logs/app.log
/log-insight --chunks 5 --log logs/app.log --context 700
/log-insight --chunks 3

Флаги:

  • --chunks N — количество чанков (обязательно).
  • --log <path> — путь к лог-файлу (опционально; автоопределение в logs/).
  • --context K — окно контекста саб-агента в тысячах токенов (опционально, дефолт 200). Каждый чанк ограничивается 70% от этого окна.

Как работает:

  1. Оркестратор читает документацию проекта → PROJECT_BRIEFING.
  2. Тул split_log_chunks нарезает файл на N равных чанков с конца и возвращает для каждого чанка готовый промпт сабагента в chunks[i].agent_prompt — с уже встроенным текстом чанка и единственным placeholder {PROJECT_BRIEFING}.
  3. Оркестратор делает одну подстановку {PROJECT_BRIEFING} и передаёт строку целиком в Task tool. N сабагентов запускаются параллельно одним сообщением и не используют Read/Grep/Bash.
  4. Консолидация находок с трендами (worsening/improving/stable/spike).

/log-validate — дедуктивная валидация

Сканирует исходный код, строит карту всех logger-вызовов, проверяет лог на соответствие.

/log-validate logs/app.log
/log-validate

Как работает:

  1. Читает документацию проекта
  2. Определяет logging-фреймворк проекта (loguru, stdlib, console.log, log, zap, etc.)
  3. Grep'ает исходники → строит Log Signature Map (все logger.error/info/...)
  4. Группирует grep-паттерны по 5 категориям (Errors, Warnings, State/Flow, Metrics, Health)
  5. Батчево грепает лог: COUNT → TRIAGE → EXTRACT
  6. Находит ошибки, аномалии, «тихие» компоненты

Не зависит от языка проекта. Скилл сам определяет logging-конвенции (Python, JS/TS, Go, Rust и т.д.).

Кастомный тул

| Тул | Назначение | |-----|-----------| | split_log_chunks | Нарезает лог на N равных чанков с конца файла. Каждый чанк ограничивается 70% от --context (тысячи токенов). Возвращает метаданные и готовый Task-промпт сабагента в chunks[i].agent_prompt (с уже встроенным контентом и одним placeholder {PROJECT_BRIEFING}), плюс warnings[] при неполном покрытии. |

Всё остальное делается встроенными тулами opencode (Read, Grep, Bash, Agent, Glob) — навыки инструктируют AI как их применять.

Отличия навыков

| | log-insight | log-validate | |---|---|---| | Подход | Индуктивный (от данных к выводам) | Дедуктивный (от кода к логу) | | Покрытие | N чанков (контролируемое) | 100% файла (через grep) | | Контекст | Документация проекта | Исходный код + документация | | Находит | Ошибки, аномалии, тренды | Ошибки, нарушения, тихие компоненты | | Зависимость от языка | Нет (читает сырой текст) | Адаптируется под язык проекта | | Кастомные тулы | split_log_chunks | — (только встроенные) |

Публикация (для разработчика)

cd opencode-log-analyzer
npm login                    # один раз
npm publish --access public  # публикация в npm

После публикации любой пользователь сможет установить плагин через opencode.json.

Лицензия

MIT