@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)
Maintainers
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% от этого окна.
Как работает:
- Оркестратор читает документацию проекта →
PROJECT_BRIEFING. - Тул
split_log_chunksнарезает файл на N равных чанков с конца и возвращает для каждого чанка готовый промпт сабагента вchunks[i].agent_prompt— с уже встроенным текстом чанка и единственным placeholder{PROJECT_BRIEFING}. - Оркестратор делает одну подстановку
{PROJECT_BRIEFING}и передаёт строку целиком в Task tool. N сабагентов запускаются параллельно одним сообщением и не используют Read/Grep/Bash. - Консолидация находок с трендами (worsening/improving/stable/spike).
/log-validate — дедуктивная валидация
Сканирует исходный код, строит карту всех logger-вызовов, проверяет лог на соответствие.
/log-validate logs/app.log
/log-validateКак работает:
- Читает документацию проекта
- Определяет logging-фреймворк проекта (loguru, stdlib, console.log, log, zap, etc.)
- Grep'ает исходники → строит Log Signature Map (все
logger.error/info/...) - Группирует grep-паттерны по 5 категориям (Errors, Warnings, State/Flow, Metrics, Health)
- Батчево грепает лог: COUNT → TRIAGE → EXTRACT
- Находит ошибки, аномалии, «тихие» компоненты
Не зависит от языка проекта. Скилл сам определяет 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
