Amiga
Оглавление курса · урок 12 из 16

Модуль 2 · Расширения · урок 12 из 16

Плагины

Навыки, MCP-серверы и хуки удобно настраивать для себя. Но когда их надо раздать десятку разработчиков и держать одинаковыми, ручное копирование папок и кусков config.toml перестаёт работать. Плагин (plugin) — это упаковка: набор возможностей, который ставится и обновляется одной операцией. Плагины появились в Codex в марте 2026 года, и документация рекомендует именно их для распространения своих навыков и интеграций.

Что внутри плагина

Плагин может содержать:

  • навыки — те же каталоги с SKILL.md, что и в уроке про навыки;
  • MCP-серверы — подключения к внешним системам, с уже прописанной аутентификацией;
  • расширения браузера — если сценарию нужны возможности браузера;
  • хуки — команды на событиях жизненного цикла Codex, о них будет отдельный урок.

Каталог плагинов общий у ChatGPT и Codex: один и тот же публичный плагин виден и в чатах ChatGPT, и в Codex. Внутри Codex плагины работают в режиме Codex десктопного приложения ChatGPT и в CLI. IDE-расширение плагины не поддерживает — для установки откройте десктоп или CLI.

Установка и использование

В десктопном приложении — вкладка Plugins: поиск, карточка плагина, кнопка установки. Если плагину нужно подключение к сервису, он попросит авторизоваться при установке или при первом использовании.

В CLI каталог открывается командой:

text
/plugins

Плагины сгруппированы по маркетплейсам; в карточке видно, что входит в плагин, установленный плагин включается и выключается пробелом. Есть и команды для скриптов, например codex plugin list; точный набор подкоманд проверьте в codex plugin --help.

Два правила, на которых часто спотыкаются:

  1. После установки начните новую сессию. Навыки и инструменты плагина появляются в новых чатах, а не в текущем.
  2. Плагин не даёт новых прав. Когда возможность плагина выполняется в Codex, действуют песочница и политика одобрений хоста. Внешние сервисы проверяют доступ по своим правилам: установка плагина GitLab не откроет проект, к которому у вас нет доступа.

Удаление плагина убирает пакет, но отдельно подключённые MCP-интеграции остаются, пока вы не отключите их сами.

Маркетплейсы: свой каталог для команды

Маркетплейс — это JSON-каталог плагинов. Кроме общего каталога, Codex читает локальные:

  • $REPO_ROOT/.agents/plugins/marketplace.json — каталог репозитория;
  • ~/.agents/plugins/marketplace.json — личный каталог.

Для агентства с несколькими проектами удобна схема: отдельный репозиторий agent-plugins с маркетплейсом и папками плагинов. Подключить его можно одной командой:

bash
codex plugin marketplace add https://git.example.com/dev/agent-plugins.git --ref main
codex plugin marketplace list
codex plugin marketplace upgrade

Источником может быть сокращение owner/repo для GitHub, HTTPS- или SSH-адрес Git либо локальная папка. --ref фиксирует ветку или тег, --sparse PATH позволяет забрать из большого репозитория только нужную папку.

Сам маркетплейс выглядит так:

json · .agents/plugins/marketplace.json
{
  "name": "agency",
  "interface": {
    "displayName": "Плагины команды"
  },
  "plugins": [
    {
      "name": "web-dev",
      "source": {
        "source": "local",
        "path": "./plugins/web-dev"
      },
      "policy": {
        "installation": "AVAILABLE",
        "authentication": "ON_INSTALL"
      },
      "category": "Productivity"
    }
  ]
}

source.path указывается относительно корня маркетплейса и начинается с ./. Поля policy.installation, policy.authentication и category обязательны для каждой записи. Плагин можно взять и из Git ("source": "git-subdir" с url, path и ref), и из npm-реестра.

Включить или выключить плагин из локального маркетплейса для конкретного проекта можно в его .codex/config.toml:

toml · .codex/config.toml
[plugins."web-dev@agency"]
enabled = true

Ключ строится как имя-плагина@имя-маркетплейса. Как и всё в проектном config.toml, это читается только для доверенных проектов.

Собираем свой плагин

Самый быстрый путь — встроенный навык $plugin-creator: он создаёт каркас и может сразу добавить запись в локальный маркетплейс для проверки. Но полезно понимать формат.

Актуальный формат — переносимый пакет Agent Plugins: файл plugin.json в корне плагина, навыки в skills/, MCP-серверы в mcp.json.

text
plugins/web-dev/
├── plugin.json
├── mcp.json
└── skills/
    ├── mr-description/
    │   └── SKILL.md
    └── e2e-triage/
        └── SKILL.md
json · plugins/web-dev/plugin.json
{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "web-dev",
  "version": "0.1.0",
  "description": "Навыки и инструменты веб-команды: описание MR, разбор упавших e2e, документация."
}

Навыки из skills/ подхватываются без отдельного поля в манифесте. MCP-серверы в переносимом формате обязательно указывают тип транспорта:

json · plugins/web-dev/mcp.json
{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
  "mcpServers": {
    "docs": {
      "type": "streamable-http",
      "url": "https://developers.openai.com/mcp"
    }
  }
}

Настройки, специфичные для OpenAI, — внешний вид в каталоге, привязки зарегистрированных MCP-серверов, хуки — кладутся в объект extensions.com.openai того же plugin.json. Старый вариант с файлом .codex-plugin/plugin.json по-прежнему поддерживается как запасной, и именно его пока генерирует $plugin-creator. Полное описание полей — в руководстве по сборке плагинов, рабочие примеры — в github.com/openai/plugins.

Плагины из локального маркетплейса ставятся в кэш ~/.codex/plugins/cache/, и Codex читает установленную копию, а не папку в репозитории. Поменяли файлы плагина — обновите маркетплейс и перезапустите клиент.

Политика для MCP-серверов плагина

Команду запуска MCP-сервера из плагина вы не задаёте — её задаёт плагин. Но включение и одобрения остаются под вашим контролем:

toml · ~/.codex/config.toml
[plugins."web-dev@agency".mcp_servers.docs]
enabled = true
default_tools_approval_mode = "prompt"
enabled_tools = ["search", "fetch"]

Названия инструментов здесь условные: смотрите их в /mcp после установки.

Перед установкой чужого плагина

Плагин — это код и инструкции, которые получают доступ к вашему репозиторию. Перед установкой из стороннего маркетплейса проверьте:

  • состав — какие навыки, MCP-серверы и хуки внутри;
  • хуки — Codex не запустит хуки плагина, пока вы не просмотрите и не подтвердите их в /hooks, но подтверждать стоит только то, что вы прочитали;
  • MCP-серверы — куда они ходят и с какими правами;
  • источник — фиксируйте --ref на теге, а не на плавающей ветке.

В управляемых рабочих пространствах ChatGPT администраторы решают, какие плагины доступны участникам, и могут ограничить маркетплейсы разрешёнными источниками. Об этом — в курсе для техдиров.

Попробуйте сами

10–15 мин на рабочем месте
  1. Откройте /plugins в CLI, найдите любой плагин из каталога OpenAI и посмотрите его состав, не устанавливая. Отметьте, какие части — навыки, MCP, хуки.
  2. Создайте в своём репозитории .agents/plugins/marketplace.json и плагин из одного навыка — например, mr-description из прошлого урока. Установите его через десктопное приложение или /plugins и проверьте вызов в новой сессии.
  3. Выключите этот плагин для проекта через [plugins."имя@маркетплейс"] enabled = false и убедитесь, что навык пропал из /skills.

Коротко

  • Плагин объединяет навыки, MCP-серверы, расширения браузера и хуки в один устанавливаемый пакет.
  • Работает в десктопном приложении и CLI (/plugins), но не в IDE-расширении.
  • Свой каталог — .agents/plugins/marketplace.json в репозитории или codex plugin marketplace add для отдельного репозитория.
  • Переносимый формат: plugin.json в корне, skills/, mcp.json; OpenAI-настройки — в extensions.com.openai.
  • Плагин не расширяет права: песочница и одобрения хоста действуют, хуки требуют подтверждения.
Отметка хранится только в вашем браузере
Хотите связаться с владельцем
компании напрямую?
Дмитрий Тарасов
Дмитрий Тарасов
СЕО

НАПИСАТЬ

Написать в MAX