Перейти к основному содержимому
Версия: v2 (текущая)

Как работает плагин PanDev Metrics

Кратко. Плагины PanDev Metrics живут в IDE, браузере и CLI. Они фиксируют события активности — не исходный код, не скриншоты, не аргументы команд. Бэкенд превращает события в часы по правилу 15-минутного gap'а: короткие промежутки — это активная работа, длинные — перерыв. Промпты в AI = активность разработчика, ответ AI = отдельный счётчик. Когда сети нет, плагин копит события локально и отправляет их после возврата онлайн.

Что плагин на самом деле видит

Плагин PanDev Metrics сознательно сделан маленьким. Он фиксирует факт действия — нажатие клавиши, скролл, открытие файла, отправку промпта в AI-инструмент кодинга — и отправляет на сервер PanDev Metrics компактное событие. Он не пересылает экран, не прикрепляет файлы и не считывает буфер редактора.

У каждого события есть метаданные, которых достаточно для атрибуции времени, но недостаточно для утечки работы:

  • Имя файла, с которым вы работаете (чтобы PanDev Metrics мог группировать время по проекту и языку).
  • Тип активности: правка, скролл, открытие/закрытие файла, навигация, AI-промпт, запуск команды в терминале.
  • Время события и источник (IDE plugin, browser extension, CLI).
  • Текущий репозиторий, проект и модуль — по структуре IDE плагин понимает, в каком репо и в каком модуле/пакете вы сейчас находитесь; это позволяет аккуратно разрезать время по проектам и подсистемам, не заглядывая в код.
  • Имя текущей Git-ветки — по нему PanDev Metrics автоматически связывает сессию с задачей в Jira, GitLab, GitHub или другом трекере.

Плагин работает событийно, а не по таймеру. По-настоящему простаивающее окно — IDE открыта, к клавиатуре никто не прикасается — не генерирует ни одного события. Именно это свойство делает осмысленным правило 15-минутного gap'а ниже.

Модель приватности — сразу и явно

Доверие к телеметрии начинается с понимания того, что она не собирает. PanDev Metrics проговаривает обе стороны границы.

СобираетсяНе собирается
Имена файловИсходный код, даже фрагменты
События активности (печать, скролл, open, close, save, AI-промпт)Скриншоты и запись экрана
Имя Git-ветки, репозиторий, проект, модуль/пакетБуфер обмена, секреты, переменные окружения
Название команды в терминале и факт её вводаАргументы команды и её stdout
Тайм-стампы и источник (IDE / browser / CLI)Сами нажатия клавиш (фиксируется только факт нажатия)

PanDev Metrics показывает события каждого человека его руководителю — и те же события агрегирует по команде. «Анонимного режима» нет: инженерная аналитика максимально полезна, когда активность можно атрибутировать. Чего эта атрибуция не раскрывает — это содержание работы.

Иначе говоря

Ваш руководитель увидит «2 ч 14 мин в payments-service на ветке feature/PAY-812». Он не увидит, что вы там писали. Это и есть весь контракт приватности.

Как активное время превращается в «IDE-часы»

PanDev Metrics превращает поток событий в часы по единому правилу — для IDE, браузера и CLI одинаково.

Правило 15-минутного gap'а. Если интервал между двумя соседними событиями одного человека меньше 15 минут, промежуток между ними считается активным временем. Если интервал 15 минут или больше, он трактуется как перерыв и в часы не попадает.

Правило простое намеренно. Любая более сложная конструкция — eye-tracking, скорость мыши, проверка календаря — требовала бы собирать больше данных, чем PanDev Metrics готов собирать. 15-минутное окно — практичный компромисс: оно ловит обычное «подумать» и короткие переключения контекста, но не покрывает обед.

На таймлайне выше четыре коротких всплеска событий разделены двумя длинными gap'ами. Длинные gap'ы шире 15 минут и часами не становятся. Всплески внутри каждой группы — gap'ы меньше 15 минут — засчитываются целиком. Правило применяется к каждому источнику независимо: всплески в JetBrains и всплески в Chrome сначала проходят gap-фильтр по отдельности, а потом сливаются в общий дневной итог по человеку.

Это и есть весь алгоритм «Activity Time» и «IDE-часов» в дашборде. Скрытых множителей нет, ручного определения idle нет, «минимальной длины сессии» нет. Число, которое вы видите, — это время, выведенное из событий и отфильтрованное по gap'у.

Три источника, одна линия времени

PanDev Metrics смотрит на семейство плагинов как на одного наблюдателя с тремя глазами:

  • IDE plugins — семейство JetBrains (IDEA, PyCharm, WebStorm, PhpStorm, GoLand, Rider, CLion, RustRover, RubyMine, Android Studio), VS Code и его форки (Cursor, Windsurf), Visual Studio, Xcode, семейство Eclipse.
  • Browser extensions — Chrome, Brave, Edge, Firefox, Opera, Arc, Vivaldi, Yandex Browser, Whale, Sidekick. Трекинг работает по allowlist корпоративных доменов на уровне организации с blocklist'ом на уровне пользователя сверху.
  • CLI agent — фиксирует название запускаемых команд (build, deploy script, кастомный shell-скрипт). Аргументы не записываются. macOS и Linux уже работают, Windows — в разработке.

Все три источника пишут в один поток событий, и к ним применяется одно и то же правило 15-минутного gap'а. Если источники пересекаются — вы переключились между IDE и вкладкой документации, — интервалы по источникам схлопываются, чтобы одна минута не считалась дважды.

AI-инструменты — отдельный счётчик

PanDev Metrics различает два типа AI-работы — потому что они отвечают на разные вопросы руководителя.

Что произошлоКуда засчитывается
Вы написали промпт в Copilot, Cursor chat, Claude в IDE или ChatGPT в браузереАктивность разработчика — вы работали
AI сгенерировал код, предложил рефакторинг или автокомплитнул блокAI-активность — отдельный счётчик

Первое отвечает на вопрос «как сильно инженер был вовлечён сегодня?». Второе — «какая доля кода в этой команде написана AI и растёт ли эта доля?». Слить их в один счётчик значит обесценить оба. Разделение позволяет менеджеру для одного и того же часа увидеть, как человек пишет промпты, а модель — код, и проследить, как меняется соотношение «человек / AI».

Offline-режим

Плагины спроектированы так, чтобы спокойно переживать пропажу сети.

Когда сервер PanDev Metrics недоступен, каждый плагин дописывает новые события в локальную очередь на диске. Очередь переживает перезапуск IDE, сон ноутбука и режим полёта. Когда соединение восстанавливается, плагин по порядку выгружает очередь, и сервер вшивает события обратно в таймлайн пользователя с их оригинальными тайм-стампами. С точки зрения дашборда offline-период неотличим от online — разница только в нескольких минутах задержки между реконнектом и полной синхронизацией.

На правило 15-минутного gap'а это влияет слабо: после flush'а активные/неактивные интервалы получаются те же — правило работает по тайм-стампам событий, а не по времени их прибытия на сервер.

Как привязка к задаче работает без чтения кода

Закономерный вопрос: «как PanDev Metrics свяжет время с задачей, если не читает мой код?» Ответ — Git-ветка.

Когда вы переключаетесь на feature/PAY-812, плагин читает имя ветки. По принятому в вашем тенанте соглашению он извлекает ключ задачи (PAY-812) и привязывает все последующие события к этой задаче в трекере — Jira, GitLab Issues, GitHub Issues, Yandex Tracker, ClickUp или Azure Boards. Содержимое кода не нужно — имя ветки уже метаданные.

Если ветка не подходит под соглашение, события всё равно идут на сервер, но остаются непривязанными. На дашборде они отображаются как время по проекту — просто без привязки к конкретной задаче.

Как плагин стыкуется с данными Git и трекера

Плагин — лишь один из трёх потоков, которыми питается PanDev Metrics. Остальные два приходят из систем, которыми вы и так пользуетесь.

События плагина отвечают на «как было потрачено время?». Git-события — на «что доехало до прода?». События трекера — на «что планировалось?». DORA-метрики вроде Deployment Frequency и Lead Time собираются почти полностью из Git и трекера, а не из плагина. В DORA плагин играет контекстную роль — объясняет кто и сколько по времени, — а не выступает источником истины.

FAQ

Видит ли менеджер мой код через плагин?

Нет. Плагин никогда не передаёт исходный код, скриншоты и буфер обмена. Менеджер видит события активности с именами файлов и тайм-стампами и агрегированные часы. Содержимое файла он не видит. Это продуктовая гарантия, а не переключатель в настройках.

Что плагин трекает во время кофе-брейка?

Если перерыв короче 15 минут, промежуток между последним и следующим событием всё ещё считается активным временем — короткие gap'ы — это нормальное «подумать». Если перерыв 15 минут или дольше, интервал считается idle и в часы не попадает. Ничего нажимать не нужно — правило применяется автоматически.

Что будет с моими событиями, если упал интернет?

Каждый плагин ведёт локальную очередь событий. Пока вы offline, новые события продолжают копиться в очереди. Когда соединение возвращается, очередь по порядку выгружается на сервер PanDev Metrics с оригинальными тайм-стампами. Дашборд догоняется в течение нескольких минут после реконнекта.

AI-промпты и AI-генерация считаются одинаково?

Нет. Промпт, который вы пишете в AI-инструмент, — это ваша активность: вы работали. Код или подсказка, которую сгенерировала модель, — отдельный счётчик AI-активности. Такое разделение позволяет PanDev Metrics показывать по каждому человеку два числа: насколько он был вовлечён и какую часть кода написала модель, а не он сам.

Видит ли CLI-плагин аргументы моих команд?

Нет. CLI-интеграция фиксирует только название команды (например, npm, gradle, terraform) и тайм-стамп ввода — как heartbeat активности. Флаги, аргументы, переменные окружения и stdout не собираются. Чувствительные операции вроде production deploy оставляют тот же лёгкий след, что и ls.

Как плагин понимает, над какой задачей я работаю?

Плагин читает имя текущей Git-ветки и сопоставляет его с соглашением о ключах задач вашего тенанта — например, ветки, начинающиеся с PAY-, привязываются к задачам Jira в проекте PAY. Дальше активность приклеивается к этой задаче в дашборде. Если ветка под соглашение не подходит, время всё равно идёт по проекту, но без привязки к конкретной задаче.

Связанные материалы

Источники