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

CLI-плагин

CLI-плагин PanDev Metrics записывает активность в терминале как heartbeats — имя команды + временная метка, — чтобы ваше время в shell попадало в дашборды рядом с данными из IDE, Git и таск-трекеров.

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

CLI-метрики в веб-приложении

В веб-приложении есть отдельная страница для CLI-активности — с разбивкой по терминалам и командам по каждому разработчику:

Standard CLI vs AI-CLI

PanDev Metrics делит собранные команды на две категории, чтобы AI-coding активность была видна отдельно от обычной работы в shell:

КатегорияЧто покрываетПримеры
Standard CLIПовседневные shell-инструменты, билд-системы, package managers, git, инфра-CLInpm, git, brew, docker, kubectl, cd (по умолчанию исключается)
AI-CLIAI-ассистенты, которые запускаются из терминалаAI coding tools, работающие как команда из shell, — учитываются на отдельном счётчике

Оба потока используют один и тот же формат heartbeat (базовая команда + timestamp). Разделение происходит на стороне сервера и позволяет сравнить, сколько времени уходит в обычный тулинг, а сколько — на промпты в AI-инструментах из терминала. Логика та же, что и в обзоре IDE-плагинов, где активность разработчика и активность ИИ разведены по разным счётчикам внутри редактора.

Кратко

СвойствоЗначение
НазначениеHeartbeats активности в терминале
СобираетсяИмя команды + timestamp
Не собираетсяАргументы, флаги, env vars, секреты, вывод, содержимое файлов
ТранспортHTTPS / TLS
АутентификацияAPI-токен PanDev Metrics (pandev_…)
АудиторияКаждый разработчик в tenant'е
Конфигурация в UIНастройки → Плагин → CLI plugin

Поддерживаемые платформы

ПлатформаСтатусУстановка
macOSСтабильнаяУстановка на macOS
LinuxСтабильнаяУстановка на Linux
WindowsСтабильнаяУстановка на Windows
к сведению

На Windows плагин ставится одной командой PowerShell вместо Homebrew — см. Установка на Windows. Авторизация на всех трёх платформах одинаковая — по токену.

Что собирается

Плагин слушает shell и шлёт один event на команду. Каждый event содержит:

ПолеПримерКомментарий
Командаgit, npm, docker, kubectlТолько базовая часть — до первого пробела
Timestamp2026-05-13T14:21:08ZМомент запуска
ХостhostnameЧтобы различать машины
ПользовательЛогин PanDev MetricsПривязка к учётке

Что НЕ собирается

Гарантия приватности встроена в плагин — никакой настройки, которая это включает, нет:

  • Аргументы (пути файлов, имена веток, хосты)
  • Флаги (никаких --token, --password, --key)
  • Переменные окружения
  • stdout / stderr
  • Содержимое файлов
  • Текущая директория

Пример:

# Вы запускаете:
git commit -m "fix CVE-2026-1234" --author="alice@example.com"

# PanDev видит:
git # + timestamp

Это by design. CLI-плагин — это heartbeat, а не audit log.

Как это укладывается в модель времени

Heartbeats из CLI-плагина считаются той же логикой активного времени, что и IDE-плагины и расширения браузера. Если зазор между событиями меньше 15 минут, время идёт в активное. Зазор больше 15 минут разрывает сессию.

Активность CLI учитывается в:

  • Активных часах разработчика
  • Времени на задачу, когда задача открыта в IDE параллельно с терминалом
  • DORA-метриках, которые зависят от ручной активности

Аутентификация

CLI-плагин авторизуется по API-токену. Ни Server URL, ни логин, ни пароль вводить не нужно — адрес сервера и воркспейс уже зашиты в токен.

Токен берётся в веб-приложении: Settings → Plugins → CLI, значение из шага Введите ваш токен. Токен начинается с pandev_.

pandev login
# Enter your PanDev token (starts with 'pandev_'):

Или передайте токен прямо в команду — так удобнее в скриптах провижининга:

pandev login -t pandev_...

--token pandev_... и --token=pandev_... работают так же. Токен хранится локально, поэтому демон сам переподключается после перезагрузок.

предупреждение

Токен — это учётные данные: кто им владеет, тот шлёт метрики от вашего имени. Не кладите его в коммиты и общие чаты. При утечке откройте тот же шаг в вебе и нажмите Перевыпустить токен или Отозвать токен.

Этот же токен подходит для IDE-плагинов и браузерных расширений. У пользователя один активный токен на воркспейс, поэтому после перевыпуска нужно заново выполнить pandev login -t с новым значением.

Для on-prem с самоподписанным сертификатом — смотрите troubleshooting в гайде по вашей платформе.

Проверка

После установки есть три команды, которые показывают, что плагин жив:

pandev status # Демон работает и авторизован
pandev time # Время по CLI за сегодня
pandev --help # Все команды плагина

Конфигурация в UI

Администраторы могут посмотреть подключения CLI-плагина в Настройки → Плагин → CLI plugin. Каждая активная машина видна с временем последнего heartbeat. Если подключения нет — разработчику нужно ещё раз сделать pandev login.

Работа без сети

Если машина оффлайн, плагин копит события локально. Когда сеть вернётся, очередь сольётся на сервер по порядку. События не теряются, timestamp'ы сохраняются.

FAQ

Почему только имя команды, а не аргументы?

Аргументы регулярно содержат секреты (--token, --password), приватные пути (/home/alice/secrets/) и чувствительные идентификаторы (номера задач, ID клиентов). PanDev Metrics — это инструмент продуктивности, а не аудита. Хранить только базовое имя команды — это простой и невозможный для обхода контракт по приватности.

Работает в tmux / screen / SSH?

Да. Плагин цепляется к shell, а не к эмулятору терминала. Tmux-панели, screen-окна и SSH-сессии — все генерят heartbeats, пока плагин стоит на машине, где запущен shell.

Тормозит терминал?

Нет. Каждый heartbeat — это одна неблокирующая запись в локальную очередь. Демон сам сливает её на сервер в фоне.

Можно исключать отдельные команды?

Сейчас пользовательские исключения в CLI-плагине не настраиваются. Whitelist отслеживаемых команд задан глобально и по умолчанию исключает shell-built-in'ы (cd, ls, pwd и т.д.).

Нужен sudo / root?

Установка требует прав на macOS (Homebrew tap + одноразовый sudo pandev-cli-plugin --install). После установки демон работает от вашего пользователя.

Похожее