主题
插件与插件市场
从插件市场安装插件,或把技能、MCP 服务器、钩子与 Python 扩展打包成插件供 dcode 使用
插件用可复用的技能、MCP 服务器、钩子与 Python 扩展来扩展 dcode。插件市场提供目录,便于跨项目或跨团队发现并安装插件。dcode 支持 Claude 风格与 Codex 风格的插件清单及市场目录,详见创建插件与创建插件市场。
WARNING
请只从你信任的来源安装插件与插件市场。已启用的插件可以添加指令,并以你的用户权限运行 MCP 服务器、钩子命令或 Python 扩展。
以交互方式管理插件
在 dcode 会话中浏览插件市场并管理插件:
- 运行
/plugins打开插件管理器。 - 在 Marketplaces 标签页中添加插件市场。支持的来源包括:
- 采用
owner/repo格式的 GitHub 仓库,其后可跟@branch-or-tag。 - 一个 HTTPS Git 仓库 URL,其后可跟
#branch-or-tag。 - 一个提供市场 JSON 文件的 HTTPS URL。
- 本地的市场目录或 JSON 文件。
- 采用
- 从该市场中安装插件。
- 运行
/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-toolsplugin 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.jsonDeep 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