Agent Plugins 1.0 实战:用 plugin.json 把一套技能同时带进 VS Code 和 Copilot CLI

发布时间:2026/9/27 15:01:32

Agent Plugins 1.0 实战:用 plugin.json 把一套技能同时带进 VS Code 和 Copilot CLI 1. 为什么同一套技能要在两个客户端里各写一遍如果你同时用 VS Code 和 Copilot CLI 做开发大概率遇到过这种别扭事在编辑器里调好的代码审查流程切到终端里就得重新描述一遍MCP 服务器在 VS Code 里配好了命令行里又要再写一份配置。功能没变维护成本翻倍。Agent Plugins 1.0 想解决的就是这个打包问题。它把 Agent Skills 和 MCP 服务器收进一个固定结构的目录用plugin.json声明身份用skills/放可移植技能用mcp.json放可移植的工具连接再把 Copilot 专属的 Agent、命令、规则、Hooks 隔离到com.github.copilot/命名空间里。支持这套规范的客户端各取所需不认识的扩展直接忽略不会因为一个专属字段导致整个插件加载失败。这篇聚焦plugin.json的骨架怎么写、MCP 声明放哪里、TaoToken 的统一 Key 和 API 通道接在什么位置以及怎么在 VS Code 和 Copilot CLI 里分别验证技能真的被加载、真的能调用。适合已经在用 Copilot 系工具、想把手头技能沉淀成可复用插件的开发者也适合刚开始接触 Agent Plugins、想先跑通一个最小示例的新手。2. 前置准备TaoToken 统一 Key 与 API 通道在写插件之前先把模型调用这条链路理顺。插件里的 Skill 本身只是流程说明真正干活的是背后的模型和工具。如果你在 VS Code 和 Copilot CLI 里各配一套 Key等于又回到了重复维护的老路。TaoToken 在这里的作用是提供统一的 API 通道一个 Key、一个 Base URL两个客户端都指向同一个入口切换工具时不用重新申请凭证。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end API 地址是 https://taotoken.net/api 注意 API 地址不带查询参数。操作顺序建议这样先去控制台创建 API Key地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 创建后立刻复制保存页面刷新后完整 Key 不会再显示。然后打开 API Keys 管理页 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 确认 Key 状态是启用记下它的前缀方便后面排查。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面写了不同客户端填 Base URL 的位置和注意事项配置前扫一遍能省不少试错时间。如果你打算长期用 Agent 做编码任务可以顺手看下 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 它针对持续性的编码场景做了额度安排比按次调用更适合插件这种高频触发的用法。Key 拿到后不要写进plugin.json也不要提交到仓库。正确做法是通过环境变量注入插件里的mcp.json只引用变量名。这一点后面在 MCP 配置那节会具体写。3. 可复制配置plugin.json 骨架与目录结构先给一个能直接跑的最小插件。目录长这样team-review-tools/ ├── plugin.json ├── skills/ │ └── review-api/ │ └── SKILL.md └── mcp.json根目录的plugin.json只负责身份和元数据不塞任何技能路径或 MCP 配置{ $schema: https://agent-plugins.org/schemas/1.0.0/plugin.schema.json, name: team-review-tools, version: 1.0.0, description: Reusable code review skills for the team, license: MIT, keywords: [code-review, agent-skills] }两个必填字段是$schema和name。name只能用 小写字母、数字、连字符和点长度 1 到 64 个字符。version、description、author、homepage、repository、license、keywords、extensions是规范允许的可选字段。这里有个高频踩坑点不要把hooks、agents、commands、mcpServers、lspServers这些塞到plugin.json顶层。1.0 的根清单是封闭结构多写一个不认识的顶层字段可能导致整个清单校验失败、插件被拒绝加载。MCP 服务器统一放根目录mcp.json客户端专属能力放对应命名空间。技能定义放在skills/review-api/SKILL.md注意skills/的直接子目录才是一项技能客户端不会无限向下递归--- name: review-api description: Review API changes for compatibility, security, and test coverage. --- When reviewing an API change: 1. Identify changed endpoints and schemas. 2. Check backward compatibility. 3. Check authentication and authorization boundaries. 4. Verify error handling and test coverage. 5. Return findings by severity with file references.写法上尽量描述目标、输入、判断标准和输出不要写「点击 VS Code 右侧某个按钮」这种绑定具体界面的动作。终端里的 Agent 读不懂按钮但读得懂「检查向后兼容性」。MCP 声明放在根目录mcp.json把 TaoToken 的 API 通道作为远程服务器接进来{ mcpServers: { taotoken: { type: http, url: https://taotoken.net/api, headers: { Authorization: Bearer ${TAOTOKEN_API_KEY} } } } }${TAOTOKEN_API_KEY}是环境变量占位实际值在系统环境或 shell 配置里设置不要硬编码进文件。设置方式export TAOTOKEN_API_KEY你的KeyWindows PowerShell 用$env:TAOTOKEN_API_KEY你的Key如果插件还需要 Copilot 专属的 Agent 或 Hooks再建com.github.copilot/目录把agents/、commands/、rules/、hooks/放进去。VS Code 和 Copilot CLI 会读取自己支持的部分其他客户端忽略这个命名空间但通用 Skills 和 MCP 配置照常生效。4. 验证请求在两个客户端里确认技能真的加载配置写完不等于生效得分别验证。先做清单校验再测技能发现最后测 MCP 调用。清单校验最直接的办法是用 JSON 解析器过一遍确认没有语法错误python -c import json; json.load(open(plugin.json)); print(plugin.json OK) python -c import json; json.load(open(mcp.json)); print(mcp.json OK)在 VS Code 里把插件目录放到它识别的插件位置后重新加载窗口。打开 Copilot Chat输入一个能触发review-api技能的问题比如「帮我审查这次 API 改动」。如果技能被正确发现回复会按 SKILL.md 里定义的五个步骤展开而不是给一段泛泛的建议。你还可以在插件的管理界面确认team-review-tools出现在已安装列表里状态是启用。在 Copilot CLI 里进入插件目录所在的工作区启动 CLI 后先列出可用技能copilot plugin list确认review-api在列表里。然后直接提问触发copilot review the API changes in this branch观察输出是否遵循 SKILL.md 的步骤结构。如果 CLI 支持查看 MCP 工具再确认taotoken服务器被列出copilot mcp list成功的结果是两个客户端都能发现同一个review-api技能都能列出taotoken这个 MCP 服务器调用时请求正常返回。如果只想快速验证模型通道是否通可以用模型对话页面 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 发一条测试消息确认 Key 和 Base URL 没问题再回到插件里排查。5. 本篇常见错排查插件加载失败提示清单无效。先检查plugin.json顶层有没有多写字段。mcpServers、hooks、agents、commands都不该出现在这里。用上面的 Python 命令确认 JSON 语法没问题再核对$schema是否完整匹配 1.0.0 地址。技能没被发现。最常见的原因是目录层级写错了。必须是skills/skill-name/SKILL.md不能是skills/team/review-api/SKILL.md。客户端只扫描skills/的直接子目录。另外确认文件名大小写完全一致是SKILL.md不是skill.md。MCP 服务器连不上。先确认环境变量TAOTOKEN_API_KEY在当前 shell 里真的存在echo $TAOTOKEN_API_KEY如果为空说明变量没导出到启动客户端的那个环境。VS Code 从图形界面启动时可能读不到 shell 里的 export需要在系统环境变量里设置或者用支持读取.env的方式注入。还要确认mcp.json里的 URL 是https://taotoken.net/api不要多加路径或参数。一个坏技能拖垮整个插件。正常情况下单个 SKILL.md 的 frontmatter 格式错误应该只跳过那一项技能不影响其他有效技能。如果发现整个插件都不工作检查是不是plugin.json本身出了问题而不是某个技能。Copilot 专属能力在别的客户端报错。com.github.copilot/里的内容只有实现该命名空间的客户端才读。如果某个客户端不支持却报错说明它没有正确忽略未知命名空间这属于客户端兼容性问题不是插件配置错误。可以先把专属能力暂时移出确认可移植核心正常后再加回来。禁用插件后 MCP 进程还在跑。测试生命周期时留意这一点。禁用插件应该让对应的 MCP 服务器停止、工具从列表消失。如果进程残留检查是不是有独立的 MCP 配置在别处也引用了同一个服务器。6. 把技能沉淀成可复用资产跑通最小示例之后下一步不是急着把所有旧配置都迁过来而是挑一项最通用的流程先做扎实。代码审查、测试失败排查、发布前核对这类技能不依赖具体界面最适合放进skills/。等它在 VS Code 和 Copilot CLI 里都验证稳定了再考虑把 Copilot 专属的 Hooks 和命令补进com.github.copilot/。维护的时候记住这条边界plugin.json定义身份skills/承载可移植知识和流程mcp.json承载可移植工具连接客户端命名空间隔离专属能力。只要这条边界不破同一套技能就能在两个客户端里长期复用而不是每次换工具都重写一遍。
延伸阅读

更多相关文章

2026/9/27 14:56:31

Canal 位点序列化与反序列化:LogPosition 关键类拆解与配置验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/27 14:56:31

5步获取网站js资源,一文搞懂独立掌控权

5步获取网站js资源,一文搞懂独立掌控权 改个需求建站公司拖一周,这种憋屈感谁懂?明明只是换个按钮颜色,或者加个简单的弹窗,对方却以“架构复杂”、“需要排期”为由,把简单事拖成持久战。很多站长或市场负责人在初期为了省事,把网站完全外包,结果…

2026/9/27 15:56:34

成品网站子目录打不开?3招修复源码报错,新手避坑指南

成品网站子目录打不开?3招修复源码报错,新手避坑指南 手里那套模板网站是不是丑得让你想砸键盘?明明买了源码下载回来,看着后台界面简陋,改两行代码就报错,最让人抓狂的是,辛辛苦苦上传的子目录页面,点进去全是404。别急着骂娘,这大概率不是你的…

2026/9/27 15:56:34

3个坑避开服务器租用相关网站源码下载陷阱

3个坑避开服务器租用相关网站源码下载陷阱 备案流程一头雾水,这是很多刚入行做建站的朋友最头疼的事。你手里拿着从网上找来的【服务器租用相关网站】模板,想着改改就能上线,结果卡在ICP备案这一步,电话打不通,材料填不对,心里直打鼓。更糟的是,你…

2026/9/27 15:56:34

政务信息网站建设工作方案中3个免费工具解决被黑挂马痛点

政务信息网站建设工作方案中3个免费工具解决被黑挂马痛点 昨晚值班时,服务器监控报警,打开浏览器一看,首页竟然挂了非法广告和挖矿脚本。那种冷汗直流的感觉,做过政务网站运维的都懂。很多新手接手项目时,只盯着页面好不好看,却忽略了底层安全。其实,…

2026/9/27 0:00:45

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:00:45

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:45

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:45

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:00:45

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:45

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/26 19:58:38

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑