跳转到主要内容
插件目前处于 beta 阶段。其行为和配置可能会在后续版本中发生变化。
插件是一组可复用的技能,你可以从 GitHub 代码仓库、git URL 或本地文件夹安装,并在多个项目之间复用。安装插件后,其中的技能会以 /<plugin>:<skill> 斜杠命令的形式提供,并且还会自动拉取其依赖的其他插件。 插件本质上只是一个包含以下内容的来源:
skills/ 目录用于存放常规技能——插件不会引入新的技能 格式。有关 SKILL.md 的格式,请参阅创建技能 插件也可以附带规则:位于插件根目录的 AGENTS.md 会作为始终生效的规则注入到每个会话中,与项目自身的规则一同生效。rules/ 文件夹中的 Markdown 文件也会一并加载,并使用与Windsurf 规则相同的 trigger frontmatter 和激活类型

安装插件

插件来源可以是 GitHub owner/repo、git URL 或本地路径:
安装前,Devin 会显示该插件将添加的内容——它提供的技能、 将自动安装的所有必需插件,以及它引入的任何策略 (例如,是否禁止其他插件) 。传入 -y / --yes 可跳过 提示。 插件以 user 级别安装,并可在你的所有 项目中使用。

管理插件

本地插件会直接链接到源文件夹,因此编辑会立即生效: devin plugins install ./my-plugin → 编辑 skills/<name>/SKILL.md → 所做更改 会在下一次会话中生效,无需执行 update

清单

.devin-plugin/plugin.json 用于描述插件。只有 name 是必填项, 并且它在已安装插件中必须唯一 (即 /<name>:… 命名空间) 。
支持的元数据字段:nameversiondescriptionauthor ({ name, email }) 、homepagerepositorylicensekeywords 依赖项条目表示一个来源——可以是字符串简写,也可以是对象: 同一代码仓库的所有 GitHub 表示形式 (owner/repo、HTTPS URL、.git URL、SSH 形式) 都对应同一个插件标识。

依赖与治理

插件可以声明三个列表,使单个插件能够作为由其他插件构成的精选、受管控的集合。

requiredPlugins

安装插件时会自动 (递归) 安装这些插件。如果某个必需插件被策略阻止,整个安装都会失败——不支持部分安装。

optionalPlugins

该插件认可的插件允许列表。这些插件不会自动安装;此列表仅用于将某个被禁用的条目设为例外 (见下文) 。

forbiddenPlugins

一个由插件标识和 glob 模式组成的禁止列表 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 优先。 只要任何一个活动中的清单或已安装插件禁止某个插件,该插件就会被阻止。如果没有任何规则禁止任何内容,就不会有插件被阻止。
  • 自身覆盖例外。 清单 (或插件) 自身的 requiredPluginsoptionalPlugins——以及对于插件而言,插件本身——不受其自身 forbidden 列表的限制。因此,"forbiddenPlugins": ["*"] 加上 "optionalPlugins": ["acme/approved"] 的含义是“只允许此清单列出的内容;禁止其他所有内容”。该例外仅适用于这些直接条目,不包括必需插件的传递依赖——在锁定模式下,需要将这些内容显式列出。
  • 不允许跨作用域重新放行。 一个清单或插件的允许列表,不能重新放行被另一个清单或插件禁止的内容。`“forbiddenPlugins”: [”*”]“ 这种完全锁定,无法从更低作用域绕过。
强制执行发生在两个时间点:
  • 安装时——如果要安装的插件已被阻止 (或其必需插件无法满足,或其名称与已安装插件冲突) ,安装会被拒绝。
  • 加载时——如果某个插件在安装后才被阻止,它仍会保留在磁盘上,但其技能会在会话开始时被跳过,并显示一条警告,指出是哪个禁止方导致的。
除上述 owner/repo 和 git URL 形式外,被列入禁止列表的标识也可以是本地路径 (适用于从本地文件夹安装的插件) 。