Русский

Управление плагинами

Импорт и синхронизация плагинов рабочей области из GitHub

Перед началом работы

Администраторы рабочей области могут импортировать маркетплейс плагинов из GitHub и поддерживать его плагины в актуальном состоянии относительно репозитория. Маркетплейс представляет собой каталог JSON со списком плагинов для импорта.

Эта страница описывает импорт и синхронизацию в рабочем пространстве. Чтобы настроить маркетплейсы напрямую в локальных клиентах через управляемый из облака или системный config.toml, см. раздел Настройка маркетплейсов плагинов и параметров по умолчанию. Чтобы включить или отключить плагины для конкретного проекта, см. раздел Включение или отключение плагина для репозитория.

Используйте учётную запись GitHub с доступом на чтение к репозиторию маркетплейса и всем указанным в нём репозиториям. Поддерживаются общедоступные и закрытые репозитории GitHub. Перед импортом получите все необходимые разрешения организации GitHub для доступа к репозиторию.

Перед импортом проверьте содержимое репозитория. Новые плагины изначально имеют политику установки Available и аутентификацию при установке. Для новых маркетплейсов включена автоматическая ежедневная синхронизация. При импорте обрабатываются все допустимые записи, а при последующих синхронизациях автоматически добавляются все новые плагины из репозитория.

Настройка синхронизации маркетплейса

  1. Откройте Admin > Plugins и выберите Add > Import marketplace.
  2. В поле Source введите URL репозитория, например https://github.com/example/team-plugins. Используйте только URL репозитория, без URL ветви или папки.
  3. Если маркетплейс находится в подкаталоге, укажите этот каталог в поле Path. Например, для team-tools/.agents/plugins/marketplace.json используйте team-tools. Для корня репозитория оставьте поле Path пустым. Не вводите имя файла манифеста.
  4. При необходимости укажите Branch, tag, or commit. Оставьте поле пустым, чтобы использовать ветвь репозитория по умолчанию. Используйте ветвь для получения будущих коммитов; фиксированный коммит останется на выбранной ревизии.
  5. Выберите Import marketplace и при появлении запроса авторизуйте доступ GitHub. Первоначальный импорт очень крупных маркетплейсов может занять до часа. Последующие ежедневные синхронизации обычно занимают несколько минут.
  6. Проверьте Import results, затем откройте каждый импортированный плагин, чтобы настроить политику его установки и все необходимые приложения.

Чтобы запросить обновление, не дожидаясь ежедневной синхронизации, откройте маркетплейс в разделе Admin > Plugins > Marketplaces и выберите Sync now.

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

Выбранный каталог должен содержать один из следующих файлов:

Файл Формат
.agents/plugins/marketplace.json Маркетплейс Codex с массивом plugins.
.claude-plugin/marketplace.json Маркетплейс, совместимый с Claude, с массивом plugins.
.claude-plugin/plugin.json Автономный плагин Claude, если манифест маркетплейса отсутствует.

В маркетплейсе записи могут ссылаться на нативные плагины с .codex-plugin/plugin.json, плагины, совместимые с Claude, пакеты Agent Plugins 1.0 или поддерживаемые пакеты навыков.

Для маркетплейса Codex используйте локальные пути к плагинам из того же репозитория:

{
  "name": "team-plugins",
  "interface": {
    "displayName": "Team plugins"
  },
  "plugins": [
    {
      "name": "team-tools",
      "source": {
        "source": "local",
        "path": "./plugins/team-tools"
      }
    }
  ]
}

Путь задаётся относительно выбранного корня маркетплейса, а не относительно .agents/plugins/.

Маркетплейс, совместимый с Claude, может использовать строку пути для каждого локального плагина:

{
  "name": "team-plugins",
  "plugins": [
    {
      "name": "team-tools",
      "source": "./plugins/team-tools"
    }
  ]
}

Записи маркетплейса Codex также поддерживают source: "url" для плагина в корне репозитория GitHub и source: "git-subdir" для плагина в подкаталоге GitHub. Например:

{
  "name": "team-tools",
  "source": {
    "source": "git-subdir",
    "url": "https://github.com/example/team-tools.git",
    "path": "./plugins/team-tools",
    "ref": "main"
  }
}

Источники Git могут выбирать ref или полный 40-символьный хеш коммита sha. Авторизующая учётная запись GitHub должна иметь доступ на чтение ко всем указанным репозиториям. В настоящее время импорт в рабочую область поддерживает только репозитории GitHub.

Настройка доступа в рабочей области

Импорт и синхронизация GitHub не применяют политики установки или аутентификации, заданные в репозитории, включая AVAILABLE, INSTALLED_BY_DEFAULT, NOT_AVAILABLE, ON_INSTALL и ON_USE. Администраторы рабочей области настраивают эти параметры для каждого плагина. При синхронизации обновления или переводе существующего плагина под управление GitHub его политики рабочей области сохраняются.

С помощью Installation policy выберите Available или Installed для каждой подходящей роли. Необходимые приложения также должны быть включены, а участники должны иметь доступ к подключённому сервису. Импорт плагина не предоставляет доступ к приложению и не подключает учётные записи участников. Сведения о средствах управления ролями, приложениями и действиями приведены в разделе Средства управления плагинами.

Перевод существующего плагина под управление GitHub

Добавьте pluginId в запись существующего плагина в маркетплейсе:

{
  "name": "team-tools",
  "pluginId": "plugin_0123456789abcdef0123456789abcdef",
  "source": {
    "source": "local",
    "path": "./plugins/team-tools"
  }
}

Откройте плагин в разделе Admin > Plugins и скопируйте из его URL идентификатор после /admin/plugins/. Поместите pluginId рядом с name и source в записи маркетплейса. Существующий плагин должен находиться в той же рабочей области.

Таким образом загруженный или иначе неуправляемый плагин рабочей области переводится под управление GitHub. Плагин сохраняет свой идентификатор, настройки общего доступа и политики рабочей области. Будущие обновления будут поступать из GitHub; загруженные архивы больше не смогут заменять управляемый плагин. Плагин, уже управляемый из другого источника GitHub, нельзя перевести таким способом.

Плагины только для настольного приложения

Любой импортированный плагин, объявляющий MCP servers в mcp.json или .mcp.json, помечается как Desktop only и работает только в настольном приложении ChatGPT. Это относится и к серверам, использующим удалённый URL HTTPS. Такое же ограничение применяется к другим поддерживаемым формам конфигурации MCP, например к встроенным объявлениям серверов.

Ссылка на существующее приложение с помощью .app.json

Добавьте .app.json в корень плагина. Имя файла начинается с точки; вариант app.json без точки не поддерживается.

{
  "apps": {
    "team-tools": {
      "id": "asdk_app_example",
      "required": true
    }
  }
}

Замените asdk_app_example идентификатором существующего приложения. Поддерживаемые идентификаторы приложений начинаются с asdk_app_, connector_ или templated_apps_. Используйте идентификатор приложения, а не идентификатор plugin_.... Например, URL плагина, содержащий plugin_asdk_app_example, представляет приложение asdk_app_example.

Ключ team-tools задаёт имя ссылки в этом файле. Установите для required значение true, если плагин зависит от приложения. Можно добавить дополнительные записи со ссылками на другие существующие приложения.

Для нативного плагина задайте для apps значение ./.app.json в .codex-plugin/plugin.json. Ниже приведён полный манифест для этого примера:

{
  "name": "team-tools",
  "version": "1.0.0",
  "description": "Use the team's approved tools.",
  "author": {
    "name": "Example team"
  },
  "apps": "./.app.json",
  "interface": {
    "displayName": "Team tools",
    "shortDescription": "Use approved team tools",
    "longDescription": "Connect to the team's existing app.",
    "developerName": "Example team",
    "category": "Productivity",
    "capabilities": ["Read"]
  }
}

Сохраняйте файлы в следующей структуре:

team-plugins/
├── .agents/plugins/marketplace.json
└── plugins/team-tools/
    ├── .codex-plugin/plugin.json
    └── .app.json

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

Поддержание плагинов в актуальном состоянии

Новые маркетплейсы ежедневно проверяют наличие обновлений. Откройте Admin > Plugins > Marketplaces, выберите маркетплейс и нажмите Sync now, чтобы запросить обновление, не дожидаясь автоматической синхронизации.

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

После синхронизации проверьте статус и сохранённый отчёт. Статус Completed — N errors означает, что проход завершён, но некоторые плагины не удалось обработать. Если обновление существующего плагина недопустимо, сохраняется его последняя рабочая версия. Исправьте указанную проблему в GitHub, затем выберите Sync now, чтобы повторить попытку.

Удаление записи из репозитория не удаляет её импортированную копию в рабочей области. Она помечается как No longer in source. Удаление маркетплейса в ChatGPT удаляет все импортированные из него плагины.

Повторное подключение или изменение доступа GitHub

Чтобы повторно подключить доступ GitHub, сначала убедитесь, что учётная запись GitHub, использованная для импорта, по-прежнему имеет доступ к репозиторию и всем указанным в нём репозиториям. Затем администратор, изначально импортировавший маркетплейс, должен открыть плагин GitHub в ChatGPT и повторно подключить свою учётную запись, поскольку при синхронизации маркетплейса используется подключение GitHub этого администратора.

Чтобы передать маркетплейс новому владельцу, новый администратор рабочей области должен открыть Admin > Plugins > Add > Import marketplace и импортировать тот же маркетплейс с теми же значениями Source, Path и Branch, tag, or commit. При будущих синхронизациях будет использоваться его подключение GitHub.

Не удаляйте маркетплейс только для повторного подключения или смены владельца: при удалении также удаляются импортированные из него плагины.