> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 插件Marketplace

> 在 Devin Web 应用中，为你的组织或企业中的所有人安装技能包并将其设为必需

<Note>
  插件目前处于**封闭测试**阶段。要申请访问权限，请联系 [support@cognition.ai](mailto:support@cognition.ai)。后续版本中的行为和配置可能会有所调整。
</Note>

<div id="what-are-plugins">
  ## 什么是插件？
</div>

**插件**是将一组[技能](/zh/product-guides/skills)——以及可选的规则、钩子和 MCP 服务器——打包在一起形成的单元，便于统一安装和复用。技能通常位于单个 仓库 中，而插件则是一种可移植的来源 (例如 GitHub 仓库、git URL、仓库 的子文件夹，或已上传的 `.zip`) ，你可以在整个 组织 或企业范围内统一要求使用。

**托管插件**允许管理员在 Devin Web 应用中集中安装插件，使其对**整个 组织 或企业中的所有人**生效——无需逐个用户设置。这既适用于云端 Devin 会话，也适用于已登录该账户的 [Devin CLI](/zh/cli/index) 用户 (企业级/账户级配置也会同步到 CLI——请参阅[云端会话与 CLI](#cloud-sessions-vs-the-cli)) 。安装插件后，其中的技能会自动提供给 Devin，并可作为 `/<plugin>:<skill>` 命令使用。

本页介绍插件在云端 (Web 应用) 侧的使用。有关插件文件格式以及 CLI 的用户级安装流程，请参阅 [CLI 插件参考](/zh/cli/extensibility/plugins/overview)。

<div id="where-to-configure-them">
  ## 在哪里配置它们
</div>

前往 [**设置 → Marketplace**](https://app.devin.ai/settings/marketplace)。该页面有两个选项卡：

* **Marketplace** — 浏览并安装插件 (包括 Devin 官方目录，以及你的组织或企业添加的任何插件) 。安装插件会**将其作为必填插件添加到所选作用域的清单中**，因此该作用域内的所有人都会自动安装它。
* [**配置**](https://app.devin.ai/settings/marketplace?tab=configuration) — 以 JSON 格式编辑原始插件**清单**，并以文件夹或 `.zip` 的形式上传你自己的插件 (也可以在编辑器中构建) 。

访问权限受限：

* **组织管理员** (具有组织设置访问权限) 管理 **org** 清单。
* **Enterprise 管理员** (具有企业设置访问权限) 还可以管理共享的 **enterprise** 清单。

<div id="the-manifest">
  ## 清单
</div>

清单是一个 JSON 文档，包含三个列表：

```jsonc theme={null}
{
  "requiredPlugins": [
    // GitHub 所有者/仓库
    "acme/review-tools",

    // 任意 git URL
    "https://gitlab.com/acme/secure-base.git",

    // 对象形式
    { "source": "github", "repo": "acme/audit-logging" },

    // 位于子文件夹中的插件
    {
      "source": "git-subdir",
      "url": "https://github.com/acme/vendor-plugins.git",
      "path": "plugins/stripe"
    }
  ],

  "optionalPlugins": [],

  "forbiddenPlugins": [
    "sketchy-org/bad-plugin",
    "acme/*"
  ]
}
```

* **`requiredPlugins`** — 为作用域内的所有人安装 (会递归安装，包括其依赖的所有插件) 。
* **`optionalPlugins`** — 一个允许列表，用于认可插件但不自动安装；可用于为被禁条目设置例外。
* **`forbiddenPlugins`** — 一个拒绝列表，包含插件标识或 glob 模式 (例如 `acme/*`，或使用 `"*"` 实现完全锁定) 。

`requiredPlugins` / `optionalPlugins` 中的每个条目都是一个**来源**——可以是字符串简写，也可以是一个对象：

| 形式                                                                 | 含义              |
| ------------------------------------------------------------------ | --------------- |
| `"owner/repo"`                                                     | GitHub 代码仓库     |
| `"https://…"`, `"git@…"`, `"ssh://…"`                              | 任意 git URL      |
| `{ "source": "github", "repo": "owner/repo" }`                     | GitHub，对象形式     |
| `{ "source": "url", "url": "https://gitlab.com/team/plugin.git" }` | git URL，对象形式    |
| `{ "source": "git-subdir", "url": "…", "path": "sub/dir" }`        | 位于共享代码仓库子目录中的插件 |

同一代码仓库的所有 GitHub 表示形式 (`owner/repo`、HTTPS URL、`.git` URL、SSH 形式) 都对应同一个插件标识。

清单会按原样存储；Agent 会在安装时验证完整来源。

<div id="governance-rules">
  ### 治理规则
</div>

`forbiddenPlugins` 条目会与插件标识进行匹配：

* **精确标识**，写作 `owner/repo` 或 git URL。同一代码仓库的所有 GitHub 形式 (`owner/repo`、HTTPS URL、`.git` URL、SSH 形式) 都对应同一个标识。
* **glob 模式**——任何包含 `*` 的条目。`*` 可匹配任意字符序列 (包括 `/`) ：`acme/*` 匹配 `acme` 的所有 GitHub 代码仓库，`*/secrets` 匹配任意所有者下名为 `secrets` 的代码仓库，`https://gitlab.com/acme/*` 则匹配该路径下的任意代码仓库。
* 单独的 `"*"`，它会匹配其他所有内容 (即完全锁定) 。

这些列表按 deny 优先生效：

* **Deny 优先。** 只要任何一个活动中的清单或已安装插件禁止某个插件，该插件就会被阻止。如果没有任何规则禁止任何内容，就不会有插件被阻止。
* **自身覆盖例外。** 清单 (或插件) 自身的 `requiredPlugins` 和 `optionalPlugins`——以及对于插件而言，插件本身——不受其**自身** forbidden 列表的限制。因此，`"forbiddenPlugins": ["*"]` 加上 `"optionalPlugins": ["acme/approved"]` 的含义是“只允许此清单列出的内容；禁止其他所有内容”。该例外仅适用于这些直接条目，不包括必需插件的传递依赖——在锁定模式下，需要将这些内容显式列出。
* **不允许跨作用域重新放行。** 一个清单或插件的允许列表，不能重新放行被**另一个**清单或插件禁止的内容。\`"forbiddenPlugins": \["\*"]\`\` 这种完全锁定，无法从更低作用域绕过。

强制执行发生在两个时间点：

* **安装时**——如果要安装的插件已被阻止 (或其必需插件无法满足，或其名称与已安装插件冲突) ，安装会被拒绝。
* **加载时**——如果某个插件在安装后才被阻止，它仍会保留在磁盘上，但其技能会在会话开始时被跳过，并显示一条警告，指出是哪个禁止方导致的。

除了这些规则外，托管清单还采用**分层**机制——**企业/账户**级高于**组织**级，高于仓库级和用户级插件配置。高层级优先：低层级绝不能禁止高层级要求的插件，也不能重新允许高层级禁止的插件。因此，组织级禁用无法阻止企业级要求的插件，但企业级禁用会覆盖组织级要求。

<div id="adding-your-own-plugins">
  ## 添加你自己的插件
</div>

插件其实就是一个目录，其中包含 `.devin-plugin/plugin.json` 清单文件，以及一个存放普通[技能](/zh/product-guides/skills)的 `skills/` 文件夹：

```
my-plugin/
├── .devin-plugin/
│   └── plugin.json     # 名称、版本和可选的依赖列表
├── AGENTS.md           # 可选的始终生效规则
├── rules/              # 可选的触发规则
├── hooks.json          # 可选的生命周期钩子
├── mcp_config.json     # 可选的 MCP 服务器
└── skills/
    └── review/
        └── SKILL.md    # 一个普通技能
```

除了技能之外，插件还可以附带：

* **Rules** — 位于插件根目录的 `AGENTS.md` 会作为一条始终生效规则注入到每个会话中——无论是云端会话还是 CLI 都一样。`rules/` 文件夹中的 Markdown 文件也会被加载，并遵循各自的 `trigger` frontmatter——请参阅 [CLI 插件参考](/zh/cli/extensibility/plugins/overview)。
* **Hooks** — 位于插件根目录的 `hooks.json` 会注册在会话中运行的[生命周期钩子](/zh/cli/extensibility/hooks/lifecycle-hooks)。云端会话会为除 `SessionStart` 和 `SessionEnd` 之外的每个事件运行 `command` 钩子——因此 `PreToolUse`、`PostToolUse`、`PermissionRequest`、`UserPromptSubmit`、`Stop` 和 `PostCompaction` 都可以使用；`prompt` 类型的钩子仅适用于 CLI/本地环境。
* **MCP 服务器** — 位于插件根目录的 `mcp_config.json` 会声明 [MCP](/zh/work-with-devin/mcp) 服务器 (`"mcpServers": { "<name>": { … } }`)，这些服务器会在安装了该插件的每个会话中加载。它们目前还不会显示在 MCP 设置界面中，但其工具可供 Devin 使用。插件的 MCP 配置可以设置 OAuth Client ID 和作用域，但绝不能设置 OAuth 客户端密钥——包含该密钥的服务器配置会在激活时被拒绝。
* **Custom subagents** — `agents/<name>.md` (或 `agents/<name>/AGENT.md`) Profile。这些目前仅在本地 Devin Agent 中加载——即 [Devin CLI](/zh/cli/extensibility/plugins/overview) 和 Devin Desktop——不适用于云端会话。

**插件是安装单位**：安装一个插件时，会同时安装它的所有技能 (以及其 `requiredPlugins` 中的所有内容) ——你不能只安装某个插件里的单个技能。如果你想将技能分别提供，请把它们拆分为独立的插件。完整的 `plugin.json` 格式和本地编写流程，请参阅 [CLI 插件参考](/zh/cli/extensibility/plugins/overview)。

根据插件所在的位置，可通过以下任一方式添加：

| 所在位置                         | 添加方式                                                                          |
| ---------------------------- | ----------------------------------------------------------------------------- |
| **公开 git 仓库**                | 在清单中添加 `"owner/repo"` (或 git URL) ；如果它已收录在目录中，也可以从 Marketplace 选项卡安装          |
| **私有 git 仓库**                | 清单项相同——有关身份验证的工作方式，请参阅[使用私有技能仓库](#using-a-private-skills-repo)                |
| **仓库的子文件夹** (例如：插件 monorepo) | `{ "source": "git-subdir", "url": "…", "path": "sub/dir" }` ——每个子文件夹都是一个独立的插件 |
| **完全不在仓库中**                  | 将其作为插件包上传 (见下文)                                                               |

一个仓库 (或一个 `git-subdir` 子文件夹) 就是一个插件。单个仓库可以通过子文件夹托管多个插件，并分别通过各自的 `git-subdir` 条目引用。

<div id="uploading-a-plugin-bundle">
  ### 上传插件包
</div>

在 [**配置**](https://app.devin.ai/settings/marketplace?tab=configuration)选项卡中，**已上传的插件**部分支持你以文件夹或 `.zip` 文件的形式上传插件，或直接在编辑器中构建插件。保存后，它会作为必填插件添加到清单中 (为作用域内的所有人安装) ；删除后，则会移除该引用。对于你不想 (或无法) 托管在 Git 仓库中的插件来说，这是一个不错的选择。

<div id="using-a-private-skills-repo">
  ### 使用私有 skills 仓库
</div>

让清单直接指向私有仓库——通常不需要把它预先放进你的[环境快照](/zh/onboard-devin/environment/blueprints)里。凡是 Devin 已经能通过你的 Git 集成访问到的私有仓库，都可以自动安装。使用 git URL 形式，或使用 `git-subdir` 从共享仓库的子文件夹安装插件。 (同一清单涵盖的 CLI 用户会使用各自本地的 git 凭据来拉取，因此他们也需要拥有该仓库的访问权限。)

如果无法通过你的 Git 集成访问该仓库，可以**将其作为插件包上传** (见上文) ，或者在环境设置期间克隆它，再通过本地路径引用。

<div id="how-updates-roll-out">
  ## 更新如何生效
</div>

* **清单变更** (设置 → Marketplace) 会在**下一个会话**中生效。
* **插件变更**——当插件跟踪的分支合并了更新后，几小时内就会自动应用到新会话。将插件固定到某个 commit SHA，即可自行控制更新；在 CLI 中，`devin plugins update` 会立即刷新。
* 正在运行的会话会保留其启动时加载的内容——更新绝不会在会话运行过程中生效。

<div id="compatibility">
  ## 兼容性
</div>

Claude 插件也可用：如果没有 `.devin-plugin/plugin.json`，Devin 会改为使用 `.claude-plugin/plugin.json`。当两个清单都存在时，以 Devin 的为准。

<div id="scope-and-inheritance">
  ## 作用域与继承
</div>

托管清单最多可存在于两个层级：

* **独立账户**只有一个适用于所有人的 **账户** 清单。
* **企业**有一个共享的 **企业** 清单，**每个子组织都会继承它**，其下还会叠加一个按 **组织** 划分的清单。Marketplace 视图会同时显示这两者；企业管理员可以选择在企业作用域安装插件 (全局生效) ，而组织管理员则可以仅在自己的组织内安装。

它们位于整个插件层级的最上方，高于任何仓库级或用户级的插件配置：

1. **企业 / 账户** 清单 (本页)
2. **组织** 清单 (本页)
3. **仓库**级插件配置 (仓库的 `.devin/config.json`)
4. **用户**级插件——用户通过 [CLI](/zh/cli/extensibility/plugins/overview) 为自己安装的插件，它们仅适用于其本地 Devin Agent，且绝不会在云端会话中加载

以更高层级为准：较低层级永远不能允许被较高层级禁止的插件，也不能禁止被较高层级要求的插件 (请参阅[治理规则](#governance-rules)) 。

<div id="cloud-sessions-vs-the-cli">
  ### 云端会话与 CLI
</div>

云端 Devin 会话和 [Devin CLI](/zh/cli/index) 都遵循 **enterprise/account** 清单：必需的插件会自动安装，禁用规则也同样适用于登录该账户的 CLI 用户。

**org** 清单仅适用于 **云端会话**。CLI 在账户级进行身份验证，不具备组织上下文，因此组织级的必需项和禁用项不会作用于 CLI 用户。凡是你需要在 CLI 中 (或账户级) 强制执行的内容，都应放在 enterprise/account 清单中；而 org 清单则用于为云端会话添加组织特有的内容。

<div id="learn-more">
  ## 了解更多
</div>

* [Skills](/zh/product-guides/skills) — 插件内置的 `SKILL.md` 步骤
* [CLI 插件参考](/zh/cli/extensibility/plugins/overview) — plugin 文件格式、编写方式和用户级安装
* [Playbooks](/zh/product-guides/creating-playbooks) — 附加到会话的可复用提示模板
