Skip to content
LangChain 文档版本 跟随上游 源快照 0b66b0d6 更新于 2026-10-08

插件与插件市场

从插件市场安装插件,或把技能、MCP 服务器、钩子与 Python 扩展打包成插件供 dcode 使用

插件用可复用的技能、MCP 服务器、钩子与 Python 扩展来扩展 dcode。插件市场提供目录,便于跨项目或跨团队发现并安装插件。dcode 支持 Claude 风格与 Codex 风格的插件清单及市场目录,详见创建插件与创建插件市场。

WARNING

请只从你信任的来源安装插件与插件市场。已启用的插件可以添加指令,并以你的用户权限运行 MCP 服务器、钩子命令或 Python 扩展。

以交互方式管理插件

在 dcode 会话中浏览插件市场并管理插件:

  1. 运行 /plugins 打开插件管理器。
  2. 在 Marketplaces 标签页中添加插件市场。支持的来源包括:
    • 采用 owner/repo 格式的 GitHub 仓库,其后可跟 @branch-or-tag。
    • 一个 HTTPS Git 仓库 URL,其后可跟 #branch-or-tag。
    • 一个提供市场 JSON 文件的 HTTPS URL。
    • 本地的市场目录或 JSON 文件。
  3. 从该市场中安装插件。
  4. 运行 /reload 以在不重启会话的情况下激活新安装的插件技能、MCP 服务器与钩子。带 Python 扩展的插件需要 /restart 才能重建智能体图。

插件管理器还允许你启用、禁用与卸载已安装的插件。禁用插件会保留其安装状态,但在你运行 /reload 或启动新会话后,其技能、MCP 服务器与钩子将不再生效。Python 扩展会保持加载在当前图中,直到你运行 /restart 或启动新会话。

移除插件市场会卸载其中的插件并清除托管的缓存数据。如果该市场来自本地目录或文件,Deep Agents Code 会保留其原始来源。要在一个进行中的会话里应用该移除操作,请运行 /reload 或启动新会话。

自动更新插件

Deep Agents Code 可以在首个提示之后于后台更新已安装的插件。更新只作用于已启用、且通过自身清单选择加入的插件。插件作者可为每个插件在其 plugin.json 中加入下面这个代码块以选择加入:

json
{
  "extensions": {
    "com.langchain.deepagents.code": {
      "autoUpdate": true
    }
  }
}

正在运行的会话会继续使用其当前插件版本,直到你运行 /reload。要全局关闭插件自动更新,可在 config.toml 中设置 [plugins].auto_update = false,或在环境中设置 DEEPAGENTS_CODE_PLUGIN_AUTO_UPDATE=false。

从命令行管理插件

脚本与基于终端的管理请使用 dcode plugin。插件 ID 的格式为 plugin-name@marketplace-name。

bash
# Add and inspect a marketplace
dcode plugin marketplace add acme/plugins
dcode plugin marketplace list

# Browse and install plugins
dcode plugin list
dcode plugin install code-review@acme-tools

# Change plugin state
dcode plugin disable code-review@acme-tools
dcode plugin enable code-review@acme-tools

# Remove a plugin or marketplace
dcode plugin uninstall code-review@acme-tools
dcode plugin marketplace remove acme-tools

plugin list 与 plugin marketplace list 支持 --json。安装插件后,请在处于活动状态的交互式会话中运行 /reload,或启动一个新会话。

使用插件提供的技能、MCP 服务器与钩子

插件技能带有命名空间,以避免与项目技能、用户技能及其他插件技能冲突。用插件的 ID 与技能路径来调用技能:

text
/skill:plugin-name@marketplace-name:skill-name optional arguments

在交互模式下,自动补全也会匹配更短的 /plugin-name:skill-name 形式,并将其展开为规范的 /skill: 命令。嵌套的技能目录会把每一层目录加入命名空间。例如,来自 quality@acme-tools 的 skills/review/security/SKILL.md 会变成 /skill:quality@acme-tools:review:security。

已启用的插件还可以提供 MCP 服务器。插件加载时,Deep Agents Code 会把这些服务器与你常规的 MCP 配置合并。使用 /mcp 查看可用的服务器与工具。

插件钩子使用与用户钩子、项目钩子相同的生命周期事件与处理器格式。插件管理器会列出每个插件声明的事件。启用插件是其钩子唯一的授权关口:工作区信任只适用于项目钩子,不适用于插件钩子。

创建插件

一个 Deep Agents Code 插件是一个目录,其中包含以下任一受支持的组件:

text
my-plugin/
├── .claude-plugin/
│   └── plugin.json
├── skills/
│   └── review/
│       └── SKILL.md
├── hooks/
│   └── hooks.json
└── .mcp.json

Deep Agents Code 也能识别 .codex-plugin/plugin.json。当各组件使用默认位置时,清单是可选的。如果插件只包含一个技能,你可以把 SKILL.md 放在插件根目录,而不必创建 skills/。

定义插件清单

若存在,.claude-plugin/plugin.json 或 .codex-plugin/plugin.json 必须包含 name。你也可以声明版本与自定义组件路径:

json
{
  "name": "my-plugin",
  "version": "1.0.0",
  "skills": "./skills",
  "mcpServers": "./.mcp.json",
  "hooks": "./hooks/hooks.json"
}

skills、mcpServers 与 hooks 字段接受路径字符串或路径数组。mcpServers 与 hooks 也可以包含内联的配置对象。每个组件路径都必须以 ./ 开头、位于插件根目录之内,且不能包含 ..。

未声明自定义路径时,Deep Agents Code 会发现:

  • skills/ 下的技能;若不存在 skills/ 目录,则使用根目录的 SKILL.md。
  • 根目录 .mcp.json 文件中的 MCP 服务器。
  • hooks/hooks.json 中的钩子。

添加技能

把每个技能组织为一个包含 SKILL.md 的目录:

text
skills/
└── review/
    ├── SKILL.md
    └── checklist.md

使用与独立 Deep Agents Code 技能相同的技能格式。已安装插件的名称会成为技能命名空间。更多信息见记忆与技能。

添加 MCP 服务器

把标准的 MCP 服务器定义放在 .mcp.json 中,或在插件清单里用 mcpServers 内联声明。MCP 服务器与钩子命令支持以下路径变量:

  • ${CLAUDE_PLUGIN_ROOT} 或 ${PLUGIN_ROOT}:已安装插件的目录。
  • ${CLAUDE_PLUGIN_DATA} 或 ${PLUGIN_DATA}:该插件的可写数据目录。
  • ${CLAUDE_PROJECT_DIR}:当前活动项目的目录。

例如:

json
{
  "mcpServers": {
    "review-tools": {
      "command": "python",
      "args": ["${CLAUDE_PLUGIN_ROOT}/server.py"],
      "env": {
        "CACHE_DIR": "${CLAUDE_PLUGIN_DATA}"
      }
    }
  }
}

受支持的 MCP 传输方式与字段见 MCP 工具。

添加钩子

把钩子文档放在 hooks/hooks.json,或声明一个相对的 hooks 路径,或在插件清单中内联定义钩子。钩子命令会收到上面那些路径变量。配置与事件参考见钩子。

添加 Python 扩展

NOTE

Python 扩展需要设置 DEEPAGENTS_CODE_EXPERIMENTAL=1。

在插件清单的 Deep Agents Code 命名空间下声明一个 Python 入口文件或一个列表:

json
{
  "name": "my-plugin",
  "version": "1.0.0",
  "extensions": {
    "com.langchain.deepagents.code": {
      "pythonExtensions": "./extension.py"
    }
  }
}

该插件必须声明非空的 version。每个入口都必须以 ./ 开头,且位于插件根目录之内。修改已安装插件的扩展后,请重启 dcode。安装函数、受支持的注册项、信任模型与安全行为见 Python 扩展。

创建插件市场

插件市场是一个 JSON 目录,包含名称与 plugins 数组。请把它存放在市场根目录下的以下路径之一:

  • .claude-plugin/marketplace.json
  • .agents/plugins/marketplace.json
  • .agents/plugins/api_marketplace.json

下面的市场包含一个存放在同一仓库中的插件:

json
{
  "name": "acme-tools",
  "plugins": [
    {
      "name": "code-review",
      "source": "./plugins/code-review",
      "description": "Review code for correctness and maintainability"
    }
  ]
}

每个插件条目都需要 name 与 source,也可以包含 description 与 author。本地来源路径必须以 ./ 开头,且位于市场根目录之内。当所有本地插件共用另一个基准目录时,请设置 metadata.pluginRoot。

市场条目也可以使用外部 Git 来源:

json
{
  "name": "acme-tools",
  "plugins": [
    {
      "name": "code-review",
      "source": {
        "source": "github",
        "repo": "acme/code-review-plugin",
        "ref": "v1.0.0"
      }
    },
    {
      "name": "release-tools",
      "source": {
        "source": "git-subdir",
        "url": "https://github.com/acme/developer-tools.git",
        "path": "./plugins/release-tools",
        "ref": "main"
      }
    }
  ]
}

受支持的外部插件来源类型为 github、url 与 git-subdir。远程 URL 必须使用 HTTPS。以直接 JSON URL 方式添加的市场不能包含本地相对插件来源,因为只会下载该目录文件。当目录引用了同一源码树中的插件目录时,请使用 Git 仓库或本地目录。

添加该目录、安装一个插件,然后启动新会话或运行 /reload,即可测试本地插件市场:

bash
dcode plugin marketplace add ./my-marketplace
dcode plugin install code-review@acme-tools

另请参阅


BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。