Agent Plugins 1.0实战:plugin.json、skills、mcp.json目录结构与迁移

适用范围

如果团队需要同时维护 VS Code、命令行 Agent 和 Copilot 相关客户端配置,通常会遇到三个实际问题:

  • 同一份 skill 在多个客户端重复复制;
  • MCP server 配置分散,修改后容易漏同步;
  • 客户端专属的 agents、commands、rules、hooks 与公共能力混在一起。

最终目标不是把所有 Agent 工具强行变成一个格式,而是把公共能力集中到插件包,把客户端差异放入命名空间,并保留可回退的迁移路径。

1. 官方状态和日期边界

GitHub 的官方 Changelog 公告发布日期为 2026-08-12。公告说明 Agent Plugins 1.0 标准于 2026-08-06 发布,参与方包括 AWS、Anysphere、Microsoft、OpenAI 和 Vercel。

GitHub 公告称 Agent Plugins 1.0 已在 VS Code、GitHub Copilot CLI、GitHub Copilot SDK 和 GitHub Copilot app 中普遍可用。实际可用范围仍然受具体客户端版本、账号计划、组织策略和插件内容影响,其他 Agent 客户端需要单独确认是否支持该标准。

官方还明确说明:已有 skills 和 MCP server 配置继续支持,不要求立即迁移。因此下面的迁移是渐进式整理方案,不是强制升级脚本。

2. 迁移前的三份配置问题

典型旧结构如下:

text 复制代码
client-vscode/
  ├── skills/code-review/SKILL.md
  └── mcp.json

client-cli/
  ├── skills/code-review/SKILL.md
  └── mcp.json

client-desktop/
  ├── skills/code-review/SKILL.md
  └── mcp.json

问题不只在于文件重复:

  1. skill 的修复可能只进入其中一份;
  2. MCP 的 command、args 或环境变量可能出现版本漂移;
  3. 客户端扩展规则混进公共配置后,其他客户端无法理解;
  4. 删除旧配置后,迁移失败很难快速回退。

3. 一个最小插件目录

可以先整理成下面的插件目录:

text 复制代码
project-review-plugin/
├── plugin.json
├── skills/
│   └── code-review/
│       └── SKILL.md
├── mcp.json
└── com.github.copilot/
    ├── agents/
    │   └── reviewer.agent.md
    ├── commands/
    │   └── review.md
    ├── rules/
    │   └── repository.md
    └── hooks/
        └── after-review.json

各目录的职责:

路径 作用 迁移判断
plugin.json 插件元数据、名称、版本和可发现入口 以目标客户端当前 schema 为准
skills/ 跨客户端复用的 Agent 技能 内容相同时合并到公共目录
mcp.json MCP server 的描述和启动配置 合并前检查环境变量和权限
com.github.copilot/ Copilot 相关扩展的命名空间示例 只放客户端特有内容

命名空间只是组织原则的示例。正式项目中如果目标客户端规定 manifest 必须放在自己的隐藏目录,应该遵守该客户端 schema,不要为了保持示意图而改变实际安装路径。

4. plugin.json不要承担所有配置

迁移时常见的错误是把所有信息都塞进 plugin.json。更稳妥的分工是:

text 复制代码
plugin.json  -> 插件身份、版本、描述、发现入口
skills/      -> Agent 工作流正文
mcp.json     -> MCP server 定义与启动参数
命名空间     -> 客户端特有 agents、commands、rules、hooks
部署环境     -> 密钥、个人路径、组织权限、运行时变量

下面是一个 manifest 结构示例。字段名称和 schema 需要以目标客户端的 1.0 实现为准,不能直接替代具体客户端的完整 manifest:

json 复制代码
{
  "name": "project-review",
  "version": "1.0.0",
  "description": "Review project changes with repository-aware checks",
  "skills": ["skills/code-review"],
  "mcp": "mcp.json"
}

如果某个客户端的 schema 不接受 skillsmcp 这种字段,应按其官方 schema 调整;不要把示例字段当成跨产品的兼容承诺。真正稳定的迁移原则是目录职责和版本边界,而不是手工复制一个未经校验的 JSON。

5. mcp.json的迁移检查

MCP 配置迁移前,至少检查以下字段:

json 复制代码
{
  "mcpServers": {
    "repo-search": {
      "command": "node",
      "args": ["./servers/repo-search.js"],
      "env": {
        "REPO_ROOT": "${REPO_ROOT}"
      }
    }
  }
}

不同客户端的 MCP 配置方言可能不同,迁移时重点检查:

  • command 在目标机器上是否存在;
  • args 是否引用了插件包内或部署环境中的稳定路径;
  • 环境变量是否由运行环境注入,而不是提交真实密钥;
  • server 所需网络、文件和执行权限是否符合组织策略;
  • 不同客户端是否使用同一种 mcp.json 方言。

如果某个客户端使用 .mcp.json、不同的顶层字段,或有额外的 allowlist,就保留它的适配文件,不能仅凭文件名相同就认为语义相同。

6. 从三份复制配置迁移到一个插件

6.1 先做差异清单

可以先用普通文件比较工具找出重复和差异:

bash 复制代码
diff -ru client-vscode/ client-cli/
diff -ru client-cli/ client-desktop/

把结果分为四类:公共 skill、公共 MCP、客户端扩展、部署环境变量。此时不要删除旧目录。

6.2 合并公共能力

将内容完全一致的审查流程移入:

text 复制代码
project-review-plugin/skills/code-review/SKILL.md

如果三份 SKILL.md 看起来相似但实际不同,先比较行为和版本,不要直接覆盖。可以选择一个基线版本,再把差异单独记录为迁移任务。

6.3 合并 MCP 描述

将共同的 server 定义整理到插件的 mcp.json。个人路径和秘密不写入文件,可以改成部署时注入的 ${REPO_ROOT}${API_TOKEN} 等变量。变量语法是否支持,仍然要按实际客户端文档确认。

6.4 放入命名空间

只被 Copilot 相关客户端理解的入口放在 com.github.copilot/ 示例目录中;其他客户端的扩展放入对应的受支持命名空间。公共 skills/ 不应该出现大量 if client == ... 的说明和分支。

6.5 保留回退点

先以"行为等价"为验收标准发布迁移版本:

text 复制代码
v0:三份旧配置仍可用
v1:插件包与旧配置并存,逐客户端验证
v2:确认插件包稳定后,停止新增旧配置
v3:清理旧配置,但保留 v0/v1 回退版本

Agent 工具配置也应该像代码一样有版本和回退,不要一次性删除所有旧入口。

7. 验收清单

每个兼容客户端至少验证:

text 复制代码
[ ] 能发现插件及其版本
[ ] 能加载公共 skill
[ ] 能启动并调用 MCP server
[ ] 环境变量由部署环境提供
[ ] 权限范围符合预期
[ ] 客户端专属 agent/command/rule/hook 不污染其他客户端
[ ] 关闭或回退插件后,旧配置仍可恢复

这份清单用于迁移验收,是否通过需要在目标客户端逐一执行;目录结构本身不能替代安装和运行验证。

8. 什么时候不要迁移

以下场景可以继续保持现有配置:

  • 项目只有一个客户端;
  • MCP server 只有一个临时实验用途;
  • 团队还没有明确的插件来源和权限审查流程;
  • 目标客户端尚未声明支持 Agent Plugins 1.0;
  • 迁移会同时改变 skill 逻辑、MCP 运行时和组织权限。

标准化的收益来自减少重复和漂移。如果只是为了得到一个新目录,却引入了额外的运行时不确定性,应该先完成验证再切换。

9. 结论

Agent Plugins 1.0 可以把 plugin.jsonskills/mcp.json 和客户端命名空间组织成一个可分发单元。它解决的是 Agent 工具配置的重复维护、版本漂移和团队交接问题。

迁移时记住三点:公共能力集中,客户端差异隔离,密钥和权限留在部署环境。它能让兼容客户端共享一套插件来源,但不能保证所有工具、所有命令和所有运行时都完全一致。

官方来源

#AgentPlugins #AI编程 #MCP #VSCode #工程实践

相关推荐
oden1 小时前
一个不会游戏开发的人,用 AI 把一款小游戏做到上线了
ai编程·cocos creator·游戏开发
程序员黑豆2 小时前
Java中的null与NullPointerException完全指南:安全处理、实战排查与面试题
java·前端·ai编程
Carson带你学Android2 小时前
Android 版 MCP 正式登场:AppFunctions
android·ai编程·jetbrains
FEF前端团队2 小时前
Cursor 使用指南 01#:优化你的提示词
ai编程·cursor
八岁小孩学编程3 小时前
一切皆插件:DeepSeek Harness 想重新定义 Agent 的“骨架”
agent·ai编程·deepseek
古茗前端团队3 小时前
代码越改越乱?来试试前端领域模型驱动设计(DDD)
前端·agent·ai编程
XPoet5 小时前
AI 编程工程化:实战——从 0 到 1 搭建 AI 编程工作流
前端·后端·ai编程
像颗糖5 小时前
AG-UI:把 Agent 与前端之间的“私有暗号”变成标准协议
python·agent·ai编程
VIP_CQCRE5 小时前
用 Ace Data Cloud 接入 Claude Code:一个 Token 打通终端、VS Code 与 GitHub Actions
api·ai编程·开发工具·claude code·ace data cloud