插件目前处于封闭测试阶段。要申请访问权限,请联系 support@cognition.ai。后续版本中的行为和配置可能会有所调整。
什么是插件?
.zip) ,你可以在整个 组织 或企业范围内统一要求使用。
托管插件允许管理员在 Devin Web 应用中集中安装插件,使其对整个 组织 或企业中的所有人生效——无需逐个用户设置。这既适用于云端 Devin 会话,也适用于已登录该账户的 Devin CLI 用户 (企业级/账户级配置也会同步到 CLI——请参阅云端会话与 CLI) 。安装插件后,其中的技能会自动提供给 Devin,并可作为 /<plugin>:<skill> 命令使用。
本页介绍插件在云端 (Web 应用) 侧的使用。有关插件文件格式以及 CLI 的用户级安装流程,请参阅 CLI 插件参考。
在哪里配置它们
- Marketplace — 浏览并安装插件 (包括 Devin 官方目录,以及你的组织或企业添加的任何插件) 。安装插件会将其作为必填插件添加到所选作用域的清单中,因此该作用域内的所有人都会自动安装它。
- 配置 — 以 JSON 格式编辑原始插件清单,并以文件夹或
.zip的形式上传你自己的插件 (也可以在编辑器中构建) 。
- 组织管理员 (具有组织设置访问权限) 管理 org 清单。
- Enterprise 管理员 (具有企业设置访问权限) 还可以管理共享的 enterprise 清单。
清单
requiredPlugins— 为作用域内的所有人安装 (会递归安装,包括其依赖的所有插件) 。optionalPlugins— 一个允许列表,用于认可插件但不自动安装;可用于为被禁条目设置例外。forbiddenPlugins— 一个拒绝列表,包含插件标识或 glob 模式 (例如acme/*,或使用"*"实现完全锁定) 。
requiredPlugins / optionalPlugins 中的每个条目都是一个来源——可以是字符串简写,也可以是一个对象:
同一代码仓库的所有 GitHub 表示形式 (
owner/repo、HTTPS URL、.git URL、SSH 形式) 都对应同一个插件标识。
清单会按原样存储;Agent 会在安装时验证完整来源。
治理规则
forbiddenPlugins 条目会与插件标识进行匹配:
- 精确标识,写作
owner/repo或 git URL。同一代码仓库的所有 GitHub 形式 (owner/repo、HTTPS URL、.gitURL、SSH 形式) 都对应同一个标识。 - glob 模式——任何包含
*的条目。*可匹配任意字符序列 (包括/) :acme/*匹配acme的所有 GitHub 代码仓库,*/secrets匹配任意所有者下名为secrets的代码仓库,https://gitlab.com/acme/*则匹配该路径下的任意代码仓库。 - 单独的
"*",它会匹配其他所有内容 (即完全锁定) 。
- Deny 优先。 只要任何一个活动中的清单或已安装插件禁止某个插件,该插件就会被阻止。如果没有任何规则禁止任何内容,就不会有插件被阻止。
- 自身覆盖例外。 清单 (或插件) 自身的
requiredPlugins和optionalPlugins——以及对于插件而言,插件本身——不受其自身 forbidden 列表的限制。因此,"forbiddenPlugins": ["*"]加上"optionalPlugins": ["acme/approved"]的含义是“只允许此清单列出的内容;禁止其他所有内容”。该例外仅适用于这些直接条目,不包括必需插件的传递依赖——在锁定模式下,需要将这些内容显式列出。 - 不允许跨作用域重新放行。 一个清单或插件的允许列表,不能重新放行被另一个清单或插件禁止的内容。`“forbiddenPlugins”: [”*”]“ 这种完全锁定,无法从更低作用域绕过。
- 安装时——如果要安装的插件已被阻止 (或其必需插件无法满足,或其名称与已安装插件冲突) ,安装会被拒绝。
- 加载时——如果某个插件在安装后才被阻止,它仍会保留在磁盘上,但其技能会在会话开始时被跳过,并显示一条警告,指出是哪个禁止方导致的。
添加你自己的插件
.devin-plugin/plugin.json 清单文件,以及一个存放普通技能的 skills/ 文件夹:
- Rules — 位于插件根目录的
AGENTS.md会作为一条始终生效规则注入到每个会话中——无论是云端会话还是 CLI 都一样。rules/文件夹中的 Markdown 文件也会被加载,并遵循各自的triggerfrontmatter——请参阅 CLI 插件参考。 - Hooks — 位于插件根目录的
hooks.json会注册在会话中运行的生命周期钩子。云端会话会为除SessionStart和SessionEnd之外的每个事件运行command钩子——因此PreToolUse、PostToolUse、PermissionRequest、UserPromptSubmit、Stop和PostCompaction都可以使用;prompt类型的钩子仅适用于 CLI/本地环境。 - MCP 服务器 — 位于插件根目录的
mcp_config.json会声明 MCP 服务器 ("mcpServers": { "<name>": { … } }),这些服务器会在安装了该插件的每个会话中加载。它们目前还不会显示在 MCP 设置界面中,但其工具可供 Devin 使用。插件的 MCP 配置可以设置 OAuth Client ID 和作用域,但绝不能设置 OAuth 客户端密钥——包含该密钥的服务器配置会在激活时被拒绝。 - Custom subagents —
agents/<name>.md(或agents/<name>/AGENT.md) Profile。这些目前仅在本地 Devin Agent 中加载——即 Devin CLI 和 Devin Desktop——不适用于云端会话。
requiredPlugins 中的所有内容) ——你不能只安装某个插件里的单个技能。如果你想将技能分别提供,请把它们拆分为独立的插件。完整的 plugin.json 格式和本地编写流程,请参阅 CLI 插件参考。
根据插件所在的位置,可通过以下任一方式添加:
一个仓库 (或一个
git-subdir 子文件夹) 就是一个插件。单个仓库可以通过子文件夹托管多个插件,并分别通过各自的 git-subdir 条目引用。
上传插件包
.zip 文件的形式上传插件,或直接在编辑器中构建插件。保存后,它会作为必填插件添加到清单中 (为作用域内的所有人安装) ;删除后,则会移除该引用。对于你不想 (或无法) 托管在 Git 仓库中的插件来说,这是一个不错的选择。
使用私有 skills 仓库
git-subdir 从共享仓库的子文件夹安装插件。 (同一清单涵盖的 CLI 用户会使用各自本地的 git 凭据来拉取,因此他们也需要拥有该仓库的访问权限。)
如果无法通过你的 Git 集成访问该仓库,可以将其作为插件包上传 (见上文) ,或者在环境设置期间克隆它,再通过本地路径引用。
更新如何生效
- 清单变更 (设置 → Marketplace) 会在下一个会话中生效。
- 插件变更——当插件跟踪的分支合并了更新后,几小时内就会自动应用到新会话。将插件固定到某个 commit SHA,即可自行控制更新;在 CLI 中,
devin plugins update会立即刷新。 - 正在运行的会话会保留其启动时加载的内容——更新绝不会在会话运行过程中生效。
兼容性
.devin-plugin/plugin.json,Devin 会改为使用 .claude-plugin/plugin.json。当两个清单都存在时,以 Devin 的为准。
作用域与继承
- 独立账户只有一个适用于所有人的 账户 清单。
- 企业有一个共享的 企业 清单,每个子组织都会继承它,其下还会叠加一个按 组织 划分的清单。Marketplace 视图会同时显示这两者;企业管理员可以选择在企业作用域安装插件 (全局生效) ,而组织管理员则可以仅在自己的组织内安装。
- 企业 / 账户 清单 (本页)
- 组织 清单 (本页)
- 仓库级插件配置 (仓库的
.devin/config.json) - 用户级插件——用户通过 CLI 为自己安装的插件,它们仅适用于其本地 Devin Agent,且绝不会在云端会话中加载

