tech-log-analysis

$npx mdskill add SteelMorgan/1c-agent-based-dev-framework/tech-log-analysis

Manages the full lifecycle of 1C Tech Log for diagnosing technical issues like slow queries and deadlocks.

  • Helps diagnose performance problems such as slow SQL queries, deadlocks, and platform exceptions.
  • Integrates with 1C Tech Log for configuration, collection, and analysis of log data.
  • Uses specific event triggers and algorithms to guide log searches and diagnostic steps.
  • Presents results through structured log outputs and configuration backups for recovery.

SKILL.md

.github/skills/tech-log-analysisView on GitHub ↗
---
name: tech-log-analysis
description: Работа с технологическим журналом 1С (Tech Log). Навык учит агента управлять полным жизненным циклом ТЖ — настройка, включение, сбор, анализ, восстановление — и диагностировать технические проблемы, например, медленные запросы, блокировки, исключения.
---

# Работа с технологическим журналом 1С (Tech Log)

ТЖ нагружает систему. Включать точечно, с минимальным набором событий. Всегда восстанавливать конфигурацию после диагностики.

Для Vanessa — ТЖ последний источник диагностики; сначала `event-log-analysis` и визуальная проверка UI-блокеров.

Для ошибок и аудита действий пользователей — `event-log-analysis`.

---

## Когда применять

| Триггер | Действие |
|---------|----------|
| Медленный запрос — нужно найти SQL | `search_tech_log` с `name: "DBMSSQL"` / `"DBPOSTGRS"` |
| Блокировки, deadlock | `search_tech_log` с `name: "TLOCK"` / `"TDEADLOCK"` / `"TTIMEOUT"` |
| Исключение платформы не в ЖР | `search_tech_log` с `name: "EXCP"` |
| Долгий серверный вызов | `search_tech_log` с `name: "CALL"` или `"SCALL"` |
| Статус ТЖ неизвестен | `logc_get_techlog_config` — прочитать конфигурацию |
| ТЖ не ведётся | Полный цикл (см. алгоритм ниже) |

---

## Полный цикл диагностики

Единый алгоритм для пассивного (ждём воспроизведения) и активного (запускаем тест) режимов.

**1. Сохранить конфигурацию**
```
logc_save_techlog()
```
Возвращает `backup_id` — сохранить для шага 7.

**2. Настроить события**
```
logc_configure_techlog(
  location: "/var/log/1c/techlog",
  history: 24,
  events: ["EXCP", "DBMSSQL", "TLOCK", "TDEADLOCK"]
)
```

**3. Проверить, что сбор идёт**
```
logc_get_actual_log_timestamp()
```

**4. Воспроизвести проблему / дождаться воспроизведения**

**5. Smart polling готовности лога**

До 10 попыток с паузой 3–5 сек: `logc_get_actual_log_timestamp() >= целевое_время`. Если не дошло — сообщить пользователю, не делать выводов по неполному окну.

**6. Прочитать записи**
```
search_tech_log(
  from: "2025-02-11T14:00:00Z",
  to:   "2025-02-11T14:15:00Z",
  name: "DBMSSQL",
  min_duration: 1000
)
```

**7. Восстановить конфигурацию**
```
logc_restore_techlog(backup_id: "...")
```

**8. Подтвердить статус пользователю**: `ТЖ восстановлен` / `ТЖ отключён` / `Минимальный профиль (события: ...)`.

Шаги 1 и 7 — **обязательны**. Никогда не оставлять ТЖ включённым после диагностики без явного согласования.

---

### Варианты цикла

**ТЖ уже настроен администратором** — только чтение:
1. `logc_get_techlog_config` → убедиться в наличии нужных событий.
2. `logc_get_actual_log_timestamp` → сбор актуален.
3. `search_tech_log` → читать записи.
4. НЕ изменять конфигурацию — ТЖ не наш.

**Срочное отключение** (диск заполняется): `logc_disable_techlog()`. После решения — `logc_restore_techlog(backup_id)`.

**Минимальный мониторинг** (вместо полного отключения, только по согласованию): события `["EXCP", "CONN"]`. Зафиксировать в ответе активные события и ответственного.

---

## События ТЖ

| Событие | Когда использовать |
|---------|--------------------|
| `EXCP` | Ошибки, не видные в ЖР |
| `DBMSSQL` | Медленные запросы MS SQL |
| `DBPOSTGRS` | Медленные запросы PostgreSQL |
| `TLOCK` | Конфликты блокировок |
| `TDEADLOCK` | Взаимоблокировки |
| `TTIMEOUT` | Таймауты блокировок |
| `CALL` / `SCALL` | Медленные серверные вызовы |
| `CONN` | Проблемы подключения |
| `SDBL` | Трансляция запросов в SQL |

**Стандартный набор:** `["EXCP", "DBMSSQL", "TLOCK", "TDEADLOCK"]`

---

## Capabilities

| Capability | Назначение |
|------------|------------|
| `search_tech_log` | Поиск по записям ТЖ |
| `logc_get_techlog_config` | Прочитать текущую конфигурацию ТЖ |
| `logc_save_techlog` | Сохранить конфигурацию перед изменением |
| `logc_configure_techlog` | Настроить события, путь, период хранения |
| `logc_get_actual_log_timestamp` | Проверить, что сбор идёт |
| `logc_restore_techlog` | Восстановить сохранённую конфигурацию |
| `logc_disable_techlog` | Отключить ТЖ |
| `navigate_symbol` | Переход к коду по контексту из записи ТЖ |

---

## Типичные ошибки

| Ошибка | Обходной путь |
|--------|---------------|
| Забыли `logc_save_techlog` перед настройкой | Спросить пользователя о текущей конфигурации |
| ТЖ не активен после `configure` | Платформа требует перезапуска служб |
| `logc_get_actual_log_timestamp` не обновляется | Служба не перезапущена или неверный `location` |
| Слишком много событий — диск заполняется | Ограничить набор событий; уменьшить `history` |
| `search_tech_log` возвращает пусто | Проверить окно времени; событие должно быть после включения ТЖ |

---
depends_on: []
---

More from SteelMorgan/1c-agent-based-dev-framework

SkillDescription
1c-ai-agent-cliCLI 1C BSL Agent Framework — tools/install.py (clone, install). Используй при клонировании репозитория, установке компонентов в проект, настройке IDE (Cursor, Claude Code, Windsurf, VS Code+Continue).
agent-debugПаттерн отладочных сообщений для 1С BSL. Используй, когда стандартная диагностика (event-log, скриншоты) не даёт понять фактическое поведение системы — нужно вставить временные точки логирования в код, запустить тест и проанализировать записи ЖР.
agent-developmentCreate custom subagents for specialized AI tasks. Use when the user wants to create a new type of subagent, set up task-specific agents, configure code reviewers, debuggers, or domain-specific assistants with custom prompts.
agent-development-ext>
agent-git-workflowStandardizes git workflow for the AI agent in the sandbox devcontainer: work in agent/<task>-<yyyymmdd>, integrate via agent, never push to main/master, open PRs via GitHub CLI. Use when the user asks to create branches, push changes, open PRs, or follow this sandbox repo setup.
auto-skill-bootstrapDeterministic helper to inventory existing project skills, detect missing capability coverage, search skills.sh via Skills CLI, and (optionally) install missing skills under a trust policy. Uses skills-manifest.json + state.json to stay idempotent across changing requirements.
code-navigationНавигация по коду (Code Navigation). Навык учит агента **эффективно перемещаться по BSL-коду** с помощью LSP (Language Server Protocol).
config-operationsОперации с конфигурацией 1С (CF) — init, info, edit, validate. Используй при создании конфигурации, анализе структуры, изменении свойств и ChildObjects, валидации Configuration.xml.
epf-buildСобрать EPF/ERF из XML-исходников. Используй после внесения временных диагностических правок в разобранную обработку.
epf-dumpРазобрать EPF/ERF в XML-исходники. Используй, когда нужно быстро получить исходный код внешней обработки или отчета для анализа и временной модификации.