Выбор поверхности
Поверхность — это конкретное место, где плагин появляется или работает: страница в боковой панели, кнопка рядом с полем ввода, инструмент в сессии агента. bb определяет 46 поверхностей в семи группах. Чтобы выбрать подходящую, отталкивайтесь от того, что должен увидеть человек или агент. Откройте плагин из поставки bb, который уже это делает, и прочитайте страницу справочника по этой поверхности, чтобы узнать точный API. Таблицы ниже охватывают частые задачи; все 46 поверхностей собраны в разделе Поверхности, а макет зон показывает поверхности окна на своих местах.
Четыре вопроса
Заголовок раздела «Четыре вопроса»Плагин может ответить «да» на несколько вопросов сразу; шаблон плагина из раздела Ваш первый плагин отвечает на первые два.
- Человек видит этот элемент или кликает по нему в окне bb? Тогда вам нужна клиентская точка входа. Поверхности находятся в первых шести группах: окно приложения, палитра команд, композер, домашняя страница, страница настроек плагина и страница плагина.
- Агент использует это в работе? Тогда серверная точка входа даёт агенту команду CLI и скилл, который ей обучает, нативный инструмент или инструкции.
- Это работает без участия человека? Тогда серверная точка входа запускает фоновые сервисы и расписания, реагирует на события треда и обслуживает HTTP-маршруты для внешних сервисов.
- Это меняет то, какой агент работает или где он запускается? Провайдеры агента, окружения и машины — это точки расширения; провайдеры агента, а также провайдеры окружения из поставки bb включают хостовую точку входа.
В окне bb
Заголовок раздела «В окне bb»| Чтобы добавить… | Поверхность | Какой плагин читать |
|---|---|---|
| свою страницу, которая открывается из боковой панели | Панели на всю страницу | tasks, github; самый маленький — plugin-api-tester |
| вкладку в панели рядом с тредом | Вкладки правой панели треда | side-chat, github |
| компонент внутри ответа агента | Встраиваемые компоненты в сообщениях | inline-vis, самый маленький |
| форму, которая ставит агента на паузу, чтобы задать вопрос человеку | Формы в треде | ask-user-question, secrets |
| действие для конкретного сообщения | Действия с сообщением | side-chat |
| просмотрщик или редактор для определённого типа файлов | Просмотрщики и редакторы файлов | pdf-preview, самый маленький; monaco-editor |
| элемент внизу боковой панели | Элементы подвала боковой панели | connect |
| строки в меню + рядом с полем ввода | Меню + | drafts, scheduled-send |
| баннер над полем ввода | Баннеры | provider-retry, workflows |
| результаты в меню упоминаний | Упоминания | github, tasks |
| команду в палитру команд | Действия палитры команд | monaco-editor |
| секцию на домашнем экране | Секции главного экрана | плагины из поставки bb это не используют |
| замену списку тредов | Список тредов | replacement-lab-alpha вместе с replacement-lab-beta; установите оба |
| настройки, которые заполняет человек | Поля настроек | custom-instructions, github |
| свой компонент на странице настроек | Собственная секция настроек | keep-awake, memory |
| уведомление, что плагин нужно настроить перед запуском | Статус конфигурации | github, workflows |
Ваш UI делит окно с интерфейсом bb одним из четырёх способов. На аддитивной поверхности ваш компонент располагается рядом с компонентами bb и других плагинов. Замещающая поверхность подменяет компонент bb и откатывается к нему, если ваш компонент падает. Список тредов эксклюзивен: один плагин заменяет весь список. А для хостового хрома, например элементов внизу боковой панели, bb рисует контрол на основе данных, которые передаёт плагин. Эти четыре вида описаны в разделе Слоты фронтенда.
Для агента
Заголовок раздела «Для агента»| Чтобы дать агенту… | Поверхность | Какой плагин читать |
|---|---|---|
| команду для выполнения и скилл, который ей обучает | Команды CLI bb | шаблон плагина; memory, tasks |
| нативный инструмент в его сессии | Инструменты и скиллы агента | ask-user-question, memory |
| только инструкции, без UI | Инструменты и скиллы агента | custom-instructions, bb-guide |
| шлюз, который решает, можно ли отправить сообщение | Хук диспетчеризации | concurrency-limit |
| данные, которые передаются вместе с тредом | Метаданные плагина в треде | workflows |
Без участия человека
Заголовок раздела «Без участия человека»| Чтобы запустить… | Поверхность | Какой плагин читать |
|---|---|---|
| долгоживущий сервис или расписание cron | Фоновая работа | automations, keep-awake |
| код при старте, завершении или падении треда | События жизненного цикла треда | push-notifications, provider-retry |
| эндпоинт вебхука с проверкой подписи | HTTP, WebSocket, RPC и realtime | slack-bot, пример без зависимостей |
| свою базу SQLite с миграциями | Хранилище | memory, github, tasks |
| код, который создаёт треды и проекты | SDK bb | automations, tasks |
Где и как работает агент
Заголовок раздела «Где и как работает агент»| Чтобы предоставить… | Поверхность | Какой плагин читать |
|---|---|---|
| нового агента в селекторе моделей | Провайдеры агента | provider-acp, provider-pi; самый маленький — пример echo-provider |
| место, где находится рабочий каталог треда | Провайдеры окружения | environment-git-worktree, environment-project-checkout |
| машину для выполнения тредов | Провайдеры машин | environment-modal-sandbox |
| свой код на машине агента | Хост-воркеры | keep-awake, environment-personal-workspace |
Самый полный пример из поставки bb — tasks. В каталоге перечислены все плагины из поставки bb, их точки входа и размер.