Перейти к основному содержимому

Встроенные плагины

VibeOS поставляется с небольшим набором плагинов, включённых в репозиторий. Они находятся в каталоге <repo>/plugins/<name>/ и загружаются автоматически вместе с плагинами, установленными пользователем в ~/.vibeos/plugins/. Они используют тот же интерфейс, что и сторонние плагины — хуки, инструменты, слеш-команды — но поддерживаются в основном дереве исходного кода.

Общую информацию о системе плагинов см. на странице Плагины, а инструкцию по созданию собственного плагина — в руководстве Создание плагина VibeOS.

Как работает обнаружение​

PluginManager сканирует четыре источника в следующем порядке:

  1. Встроенные — <repo>/plugins/<name>/ (то, что описано на этой странице)
  2. Пользовательские — ~/.vibeos/plugins/<name>/
  3. Проектные — ./.vibeos/plugins/<name>/ (требуется VIBEOS_ENABLE_PROJECT_PLUGINS=1)
  4. Точки входа pip — vibeos_agent.plugins

При совпадении имён побеждают источники, расположенные ниже по списку — пользовательский плагин с именем disk-cleanup заменит встроенный.

Каталоги plugins/memory/ и plugins/context_engine/ намеренно исключены из сканирования встроенных плагинов. В этих каталогах используются собственные пути обнаружения, поскольку провайдеры памяти и контекстные движки являются единственными выбираемыми провайдерами, настраиваемыми через vibeos memory setup / context.engine в конфигурации.

Встроенные плагины подключаются вручную​

Встроенные плагины поставляются отключёнными. Обнаружение находит их (они отображаются в vibeos plugins list и в интерактивном интерфейсе vibeos plugins), но ни один из них не загружается, пока вы явно не включите его:

vibeos plugins enable disk-cleanup

Или через ~/.vibeos/config.yaml:

plugins:
enabled:
- disk-cleanup

Это тот же механизм, который используется для плагинов, установленных пользователем. Встроенные плагины никогда не включаются автоматически — ни при чистой установке, ни для существующих пользователей, обновляющихся до новой версии VibeOS. Вы всегда подключаете их явно.

Чтобы снова отключить встроенный плагин:

vibeos plugins disable disk-cleanup
# или: удалите его из plugins.enabled в config.yaml

Текущий состав​

Репозиторий включает следующие встроенные плагины в каталоге plugins/. Все они подключаются вручную — включите их через vibeos plugins enable <name>`.

ПлагинТипНазначение
disk-cleanupхуки + слеш-командаАвтоматическое отслеживание временных файлов и их очистка при завершении сессии
security-guidanceхукиПоиск опасного кода по шаблонам при write_file/patch и добавление предупреждения безопасности (или блокировка) — 25 правил (форк шаблонов Anthropic claude-plugins-official под лицензией Apache-2.0)
observability/langfuseхукиОтправка трассировок вызовов / LLM-запросов / инструментов в Langfuse
observability/nemo_relayхукиРелейная передача событий наблюдаемости (вызовы / LLM-запросы / инструменты) в конечную точку NVIDIA NeMo
teams_pipelineавтономныйКонвейер собраний Microsoft Teams — сводки на основе расшифровки с использованием Graph API
spotifyбэкенд (7 инструментов)Нативное управление воспроизведением Spotify: очередь, поиск, плейлисты, альбомы, библиотека
google_meetавтономныйПодключение к звонкам Google Meet, расшифровка в реальном времени, опциональное двустороннее аудио
image_gen/openaiбэкенд изображенийБэкенд генерации изображений OpenAI gpt-image-2 (альтернатива FAL)
image_gen/openai-codexбэкенд изображенийГенерация изображений OpenAI через OAuth Codex
image_gen/xaiбэкенд изображенийБэкенд xAI grok-2-image
vibeos-achievementsвкладка панели управленияКоллекционные значки в стиле Steam, созданные на основе реальной истории ваших сессий VibeOS
kanban/dashboardвкладка панели управленияИнтерфейс доски Канбан для многогаентного диспетчера — задачи, комментарии, рассылка, переключение досок. См. Канбан-мультиагент.

Провайдеры памяти (plugins/memory/*) и контекстные движки (plugins/context_engine/*) перечислены отдельно на странице Провайдеры памяти — они управляются через vibeos memory и vibeos plugins соответственно. Полное описание двух долгоиграющих плагинов на основе хуков приведено ниже.

disk-cleanup​

Автоматически отслеживает и удаляет временные файлы, созданные во время сессий — тестовые скрипты, временные выводы, журналы cron, устаревшие профили Chrome — без необходимости агенту помнить о вызове соответствующего инструмента.

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

ХукПоведение
post_tool_callКогда write_file / terminal / patch создаёт файл, соответствующий шаблонам test_*, tmp_* или *.test.* внутри VIBEOS_HOME или /tmp/vibeos-*, он молча отслеживается как test / temp / cron-output.
on_session_endЕсли во время сессии были автоматически отслежены какие-либо тестовые файлы, выполняется безопасная quick очистка и записывается однострочный итог. В противном случае ничего не происходит.

Правила удаления:

КатегорияПорогПодтверждение
testкаждое завершение сессииНикогда
temp>7 дней с момента отслеживанияНикогда
cron-output>14 дней с момента отслеживанияНикогда
пустые каталоги внутри VIBEOS_HOMEвсегдаНикогда
research>30 дней, кроме 10 самых новыхВсегда (только глубокая)
chrome-profile>14 дней с момента отслеживанияВсегда (только глубокая)
файлы >500 МБникогда автоматическиВсегда (только глубокая)

Слеш-команда — /disk-cleanup доступна как в CLI, так и в шлюзовых сессиях:

/disk-cleanup status                     # разбивка + топ-10 самых больших
/disk-cleanup dry-run # предпросмотр без удаления
/disk-cleanup quick # выполнить безопасную очистку сейчас
/disk-cleanup deep # quick + список элементов, требующих подтверждения
/disk-cleanup track <path> <category> # ручное отслеживание
/disk-cleanup forget <path> # прекратить отслеживание (не удаляет)

Состояние — всё хранится в $VIBEOS_HOME/disk-cleanup/:

ФайлСодержимое
tracked.jsonОтслеживаемые пути с категорией, размером и временной меткой
tracked.json.bakРезервная копия атомарной записи
cleanup.logАудит-журнал только для добавления: каждое отслеживание / пропуск / отклонение / удаление

Безопасность — очистка затрагивает только пути внутри VIBEOS_HOME или /tmp/vibeos-*. Монтирования Windows (/mnt/c/...) отклоняются. Известные каталоги состояния верхнего уровня (logs/, memories/, sessions/, cron/, cache/, skills/, plugins/, disk-cleanup/) никогда не удаляются, даже если пусты — чистая установка не будет «выпотрошена» при первом завершении сессии.

Включение: vibeos plugins enable disk-cleanup (или установите флажок в vibeos plugins).

Отключение: vibeos plugins disable disk-cleanup.

security-guidance​

Быстрые предупреждения безопасности на основе сопоставления с шаблонами при записи файлов. Когда вызовы агентом write_file / patch / skill_manage содержат код, соответствующий известному опасному шаблону — pickle.load, yaml.load без SafeLoader, eval(, os.system, subprocess(..., shell=True), JS child_process.exec, React dangerouslySetInnerHTML, сырые .innerHTML = / .outerHTML = / document.write, Node crypto.createCipher, режим AES ECB, отключённая проверка TLS, парсеры xml.etree / minidom, подверженные XXE, <script src="//..." > без SRI, torch.load без weights_only=True, инъекции ${{ github.event.* }} в GitHub Actions — плагин добавляет блок ⚠️ Security guidance к результату инструмента.

Файл всё равно записывается. Модель читает предупреждение в следующем сообщении инструмента и может либо исправить код, либо объяснить, почему конструкция безопасна в данном контексте. Сопоставление с шаблонами имеет нетривиальный уровень ложных срабатываний, поэтому по умолчанию используется режим предупреждения, а не блокировки.

Покрытие: всего 25 правил, охватывающих небезопасную десериализацию, инъекции команд, XSS-приёмники, криптографические «грабли», XXE, цепочки поставок (SRI) и инъекции в CI/CD. Данные шаблонов являются точной копией форка Anthropic claude-plugins-official под лицензией Apache-2.0 — см. файлы LICENSE и NOTICE плагина для указания авторства.

Режимы:

Переменная окруженияЭффект
(не установлена)режим предупреждения (по умолчанию) — файл записывается, предупреждение добавляется к результату
SECURITY_GUIDANCE_BLOCK=1режим блокировки — запись отклоняется, предупреждение возвращается как причина блокировки
SECURITY_GUIDANCE_DISABLE=1аварийный выключатель — плагин загружается, но ничего не делает

Включение: vibeos plugins enable security-guidance (или установите флажок в vibeos plugins).

Отключение: vibeos plugins disable security-guidance.

Что он пока не делает: в исходном плагине Anthropic есть ещё два уровня — проверка diff с помощью LLM на каждом шаге агента, затрагивающем файлы, и проверка на уровне коммита, отслеживающая потоки данных между файлами. Ни один из них не портирован. Агент уже может выполнять такие проверки по запросу через delegate_task.

observability/langfuse​

Отправляет трассировки вызовов VibeOS, LLM-запросов и вызовов инструментов в Langfuse — платформу наблюдаемости LLM с открытым исходным кодом. Один span на вызов, одна генерация на API-запрос, одно наблюдение инструмента на вызов инструмента. Итоги использования, количество токенов по типам и оценка стоимости берутся из канонических чисел agent.usage_pricing VibeOS, поэтому панель управления Langfuse видит ту же разбивку (входные / выходные / cache_read_input_tokens / cache_creation_input_tokens / reasoning_tokens), что и в vibeos logs.

Плагин работает по принципу «отказоустойчивости»: отсутствие SDK, учётных данных или временная ошибка Langfuse — всё это превращается в молчаливую пустую операцию в хуке. Цикл агента никогда не нарушается.

Настройка (интерактивная — рекомендуется):

vibeos tools          # → Langfuse Observability → Cloud или Self-Hosted

Мастер собирает ваши ключи, выполняет pip install SDK langfuse и добавляет observability/langfuse в plugins.enabled. Перезапустите VibeOS, и следующий вызов отправит трассировку.

Настройка (вручную):

pip install langfuse
vibeos plugins enable observability/langfuse

Затем поместите учётные данные в ~/.vibeos/.env:

VIBEOS_LANGFUSE_PUBLIC_KEY=pk-lf-...
VIBEOS_LANGFUSE_SECRET_KEY=sk-lf-...
VIBEOS_LANGFUSE_BASE_URL=https://cloud.langfuse.com # или URL вашего self-hosted

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

ХукПоведение
pre_api_request / pre_llm_callОткрыть (или переиспользовать) корневой span «VibeOS turn» для вызова. Запустить дочернее наблюдение generation для этого API-запроса с сериализованными последними сообщениями в качестве входных данных.
post_api_request / post_llm_callЗакрыть генерацию, прикрепить usage_details, cost_details, finish_reason, вывод ассистента + вызовы инструментов. Если нет вызовов инструментов и непустое содержимое, закрыть вызов.
pre_tool_callЗапустить дочернее наблюдение tool с санированными args.
post_tool_callЗакрыть наблюдение инструмента с санированным result. Полезные нагрузки read_file суммируются (заголовок + хвост + количество пропущенных строк), чтобы чтение огромного файла оставалось в пределах VIBEOS_LANGFUSE_MAX_CHARS.

Группировка сессий привязана к ID сессии VibeOS (или ID задачи для под-агентов) через langfuse.propagate_attributes, поэтому всё в рамках одной сессии vibeos chat находится в одной сессии Langfuse.

Проверка:

vibeos plugins list                 # observability/langfuse должен показывать "enabled"
vibeos chat -q "hello" # проверьте интерфейс Langfuse на наличие трассировки "VibeOS turn"

Дополнительная настройка (в .env):

ПеременнаяПо умолчаниюНазначение
VIBEOS_LANGFUSE_ENV—Тег окружения на трассировках (production, staging, …)
VIBEOS_LANGFUSE_RELEASE—Тег релиза/версии
VIBEOS_LANGFUSE_SAMPLE_RATE1.0Коэффициент выборки, передаваемый SDK (0.0–1.0)
VIBEOS_LANGFUSE_MAX_CHARS12000Обрезка полей для содержимого сообщений / аргументов инструментов / результатов инструментов
VIBEOS_LANGFUSE_DEBUGfalseПодробное логирование плагина в agent.log

Принимаются как переменные с префиксом VibeOS, так и стандартные переменные окружения SDK (LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY, LANGFUSE_BASE_URL) — приоритет у переменных с префиксом VibeOS, если установлены оба набора.

Производительность: клиент Langfuse кэшируется после первого вызова хука. Если учётные данные или SDK отсутствуют, это решение также кэшируется — последующие хуки быстро возвращаются без повторной проверки переменных окружения или перезагрузки конфигурации.

Отключение: vibeos plugins disable observability/langfuse. Модуль плагина всё ещё обнаруживается, но код модуля не выполняется до повторного включения.

google_meet​

Позволяет агенту подключаться, расшифровывать и участвовать в звонках Google Meet — делать заметки на собрании, подводить итоги обсуждения, уточнять отдельные моменты и (опционально) озвучивать ответы обратно в звонок через TTS.

Что добавляет:

  • Безголовый виртуальный участник, подключающийся к URL Meet с помощью автоматизации браузера
  • Расшифровка аудио собрания в реальном времени через настроенный STT-провайдер
  • Набор инструментов meet_summarize / meet_speak / meet_followup, которые агент вызывает для обработки услышанного
  • Артефакты после собрания (расшифровка, заметки с указанием говорящего, пункты действий), сохраняемые в ~/.vibeos/cache/google_meet/&lt;meeting_id&gt;/

Настройка:

vibeos plugins enable google_meet
# При первом использовании запросит вход через OAuth-поток плагина —
# требуется учётная запись Google с доступом к Meet. Может потребоваться
# одобрение организатора, если на собрании включено «только приглашённые участники».

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

«Подключись к meet.google.com/abc-defg-hij и делай заметки. После звонка отправь мне сводку с пунктами действий.»

Агент запускает подключение к собранию, транслирует расшифровку в свой контекст по ходу звонка и формирует структурированную сводку по окончании собрания (или когда вы скажете остановиться).

Когда использовать: регулярные стендапы, где нужен бот для расшифровки и сводки для асинхронных участников; интервью в стиле допросов, где нужны структурированные заметки; любые случаи, где иначе потребовались бы Fireflies / Otter / Grain. Если вы не хотите, чтобы ИИ слушал — не включайте его.

Отключение: vibeos plugins disable google_meet. Все кэшированные расшифровки и записи остаются в ~/.vibeos/cache/google_meet/, пока вы их не удалите.

vibeos-achievements​

Добавляет вкладку достижений в стиле Steam на панель управления — 60+ коллекционных многоуровневых значков, созданных на основе реальной истории ваших сессий VibeOS. Достижения в работе с инструментами, шаблоны отладки, серии «вайб-кодинга», использование навыков/памяти, разнообразие моделей/провайдеров, особенности образа жизни (сессии по выходным и ночью). Изначально создан @PCinkusz как внешний плагин; перенесён в основное дерево, чтобы оставаться синхронизированным с изменениями функций VibeOS.

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

  • Сканирует всю историю сессий из ~/.vibeos/state.db на бэкенде панели управления
  • Статистика по каждой сессии кэшируется по отпечатку (started_at, last_active), поэтому при последующих сканированиях анализируются только новые или изменённые сессии
  • Первое сканирование выполняется в фоновом потоке — панель управления никогда не блокируется в ожидании, даже в базах данных с тысячами сессий
  • Состояние разблокировки сохраняется в $VIBEOS_HOME/plugins/vibeos-achievements/state.json

Прогресс по уровням: Медь → Серебро → Золото → Бриллиант → Олимпиец. На каждой карточке есть раздел «Что учитывается», где указана точная отслеживаемая метрика.

Состояния достижений:

СостояниеЗначение
РазблокированоДостигнут как минимум один уровень
ОбнаруженоИзвестное достижение, прогресс виден, ещё не получено
СекретноеСкрыто, пока VibeOS не обнаружит первый соответствующий сигнал в вашей истории

API — маршруты монтируются в /api/plugins/vibeos-achievements/:

Конечная точкаНазначение
GET /achievementsПолный каталог с состоянием разблокировки каждого значка (возвращает временный заполнитель, пока выполняется первое холодное сканирование)
GET /scan-statusСостояние фонового сканера: idle / running / failed, последняя длительность, количество запусков
GET /recent-unlocksДвадцать последних разблокированных значков, сначала новые
GET /sessions/{id}/badgesЗначки, полученные в основном в одной конкретной сессии
POST /rescanРучное синхронное повторное сканирование (блокируется; используйте, когда пользователь нажимает кнопку повторного сканирования)
POST /reset-stateОчистить историю разблокировок и кэшированный снимок

Файлы состояния — находятся в $VIBEOS_HOME/plugins/vibeos-achievements/:

ФайлСодержимое
state.jsonИстория разблокировок: какие значки вы получили и когда. Стабильна при обновлениях VibeOS.
scan_snapshot.jsonПолезная нагрузка последнего завершённого сканирования (немедленно отдаётся при загрузке панели управления)
scan_checkpoint.jsonКэш статистики по сессиям, ключом является отпечаток (делает тёплые повторные сканирования быстрыми)

Замечания по производительности:

  • Холодное сканирование ~8 000 сессий занимает несколько минут. Оно выполняется в фоновом потоке при первом запросе панели управления; интерфейс видит временный заполнитель и опрашивает /scan-status.
  • Инкрементальные результаты во время холодного сканирования — сканер публикует частичный снимок каждые ~250 сессий, поэтому при каждом обновлении панели управления отображается больше разблокированных значков. Никакого минутного ожидания на нулях.
  • Тёплое повторное сканирование повторно использует статистику по сессиям для каждой сессии, чей отпечаток started_at + last_active совпадает с контрольной точкой — завершается за секунды даже на больших историях.
  • TTL кэшированного снимка в памяти составляет 120 с; устаревшие запросы немедленно отдают старый снимок и запускают фоновое обновление. Вы никогда не ждёте спиннер только из-за истечения TTL.

Включение: Ничего включать не нужно — vibeos-achievements — это плагин только для панели управления (без хуков жизненного цикла, без видимых модели инструментов). Он автоматически регистрируется как вкладка в vibeos dashboard при первом запуске. Конфигурация plugins.enabled управляет только плагинами жизненного цикла/инструментов; плагины панели управления обнаруживаются исключительно через их dashboard/manifest.json.

Отказ от использования: Удалите или переименуйте plugins/vibeos-achievements/dashboard/manifest.json, или переопределите его пользовательским плагином с тем же именем в ~/.vibeos/plugins/vibeos-achievements/, который не содержит панели управления. Файлы состояния плагина в $VIBEOS_HOME/plugins/vibeos-achievements/ сохраняются — при переустановке история ваших разблокировок не теряется.

Добавление встроенного плагина​

Встроенные плагины пишутся точно так же, как и любой другой плагин VibeOS — см. Создание плагина VibeOS. Отличия только в следующем:

  • Каталог находится в &lt;repo&gt;/plugins/&lt;name&gt;/, а не в `~/.vibeos/plugins/<name>/
  • Источник манифеста отображается как bundled в vibeos plugins list
  • Пользовательские плагины с тем же именем переопределяют встроенную версию

Плагин является хорошим кандидатом для включения в состав, если:

  • У него нет опциональных зависимостей (или они уже являются зависимостями pip install .[all])
  • Поведение полезно большинству пользователей и является opt-out, а не opt-in
  • Логика привязана к хукам жизненного цикла, которые агенту иначе пришлось бы помнить о необходимости вызывать
  • Он дополняет основную функциональность, не расширяя поверхность инструментов, видимую модели

Контрпримеры — то, что должно оставаться устанавливаемыми пользователем плагинами, а не встроенными: сторонние интеграции с API-ключами, узкоспециализированные рабочие процессы, большие деревья зависимостей, всё, что существенно изменило бы поведение агента по умолчанию.