ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Agent Plugins 1.0.0技术解析:用plugin.json统一打包Skills与MCP服务器,改到TaoToken

Agent Plugins 1.0.0技术解析:用plugin.json统一打包Skills与MCP服务器,改到TaoToken 1. 从多目录散落到 plugin.jsonAgent 插件打包的真实痛点如果你同时用过 Claude Code、Cursor、VS Code 里的编码智能体大概率经历过这种局面Skills 放在一个目录MCP 服务器配置写在另一个 JSON 里换一个客户端就得重新抄一遍路径和参数。Agent Plugins 1.0.0 想解决的就是这件事——它是一套面向 AI Agent 扩展组件的开放可移植包格式核心是用根目录的 plugin.json 声明插件身份把 Skills 和 MCP 服务器收进同一份清单让兼容客户端按同一规则发现和加载。它适合谁适合本地已经跑通 Agent 插件、但被多工具配置分散折磨的开发者。你不需要重写业务逻辑只需要把散落的 Skills 目录和 mcp.json 归拢到一个符合规范的包结构里再对齐统一的 Key 与 API 通道。它不是什么新通信协议也不替代 MCP 或 Agent Skills而是给这两者加了一层“打包合同”。我先把结论放前面plugin.json 统一的是打包方式不是运行时能力。安装、市场、权限界面、更新策略这些仍然留给各家客户端实现。规范只定义最小可移植核心避免为了大一统把所有宿主差异塞进清单。理解这一点后面配置才不会跑偏。一个典型的插件目录长这样my-plugin/ ├── plugin.json ├── skills/ │ └── summarize/ │ ├── SKILL.md │ ├── scripts/ │ └── references/ ├── mcp.json └── com.example.client/ └── hooks/组件职责可以对照下面这张表组件标准职责是否必需plugin.json名称、版本、作者、仓库与目标规范必需skills/按 Agent Skills 规范组织的知识与流程可选mcp.jsonstdio、Streamable HTTP 或 SSE 服务器可选反向域名目录客户端私有扩展如 hooks可选规范故意把安装、市场、权限界面、更新策略和客户端专有功能留给各家实现。它定义的是“最小可移植核心”避免为了追求大一统而把所有宿主差异塞进清单。这也是为什么你在不同客户端里看到的插件体验可能差别很大但底层的 plugin.json 是同一套规则。对开发者来说最直接的收益是同一份 Agent 能力可以到处打包CI 里能用官方 JSON Schema 做校验组件单独失败时还能降级。接下来我会从 plugin.json 字段模板讲起一路走到 MCP 调用验证并把统一 Key 的接入位置说清楚。2. TaoToken 前置统一 Key 与 API 通道怎么对齐插件清单在把 Skills 和 MCP 收进 plugin.json 之前先解决一个更底层的问题插件里的模型调用走哪条通道。很多人的插件配置分散本质原因是每个工具各自填 Key、各自填 Base URL最后连自己都记不清哪个 Key 对应哪个服务。TaoToken 在这里扮演的是统一入口的角色——一个 Key、一个 API 地址供插件内的模型对话和编码类调用复用。你需要先拿到两样东西API Key 和 Base URL。API 地址是https://taotoken.net/api注意这个地址不带任何查询参数直接作为 OpenAI 兼容风格的 base_url 使用。Key 在控制台的 API Keys 页面创建创建后只显示一次建议立刻写进本地环境变量而不是硬编码进 plugin.json。这一步的关键认知是plugin.json 本身不应该内嵌凭据。规范里明确 Header 是可见包数据不得内嵌秘密。所以正确做法是把 Key 放在客户端的环境变量或凭据存储里plugin.json 和 mcp.json 只引用变量名。这样插件包可以安全地提交到仓库、分享给同事而不会泄露 Key。我建议的接入顺序是这样的先在控制台创建 Key然后在本地 shell 里导出环境变量再让 MCP 服务器的启动命令读取这个变量。比如export TAOTOKEN_API_KEYsk-你的Key export TAOTOKEN_BASE_URLhttps://taotoken.net/api如果你用的是 Claude Code 这类支持 settings 的客户端可以把统一通道写进配置文件让插件内的模型调用默认走 TaoToken。这样 Skills 里描述的工作流和 MCP 服务器调用的模型都共享同一个 Key 和同一个计费入口排查问题时只需要看一个地方。对于长期跑编码 Agent 的场景Coding Plan 会比按量调用更省心适合把插件里的多轮编码任务固定下来。而如果你只是想先验证模型通道是否通用模型对话页面发一条消息最快。接入文档里有各客户端的详细配置示例遇到字段不确定时优先查文档而不是猜。这里要提醒一句TaoToken 是统一的 API 通道不是编辑器替代品也不要把生产数据库直连进 MCP。插件里的 MCP 服务器应该只做只读或受控操作凭据通过环境变量注入权限边界由客户端和操作系统决定规范本身不提供进程沙箱。3. 可复制配置plugin.json 与 mcp.json 字段模板现在进入正题给你一份可以直接抄的配置。先看最小 1.0.0 清单它只有两个字段{ $schema: https://agent-plugins.org/schemas/1.0.0/plugin.schema.json, name: hello-plugin }规范要求客户端先验证根清单再发现组件。顶层字段是封闭集合未知字段会被报告和忽略客户端私有元数据必须放进 extensions并使用反向域名命名空间。这个设计解决的问题很明确——防止不同客户端争抢同名字段语义。下面是一份更完整的 plugin.json包含版本、作者、仓库和扩展命名空间{ $schema: https://agent-plugins.org/schemas/1.0.0/plugin.schema.json, name: db-ops-plugin, version: 1.0.0, description: 云数据库运维能力包诊断 Skill 只读审查 监控 MCP, author: your-name, repository: https://example.com/your/db-ops-plugin, extensions: { com.example.client: { hooks: { onLoad: ./com.example.client/hooks/on-load.js } } } }注意 extensions 的键必须是反向域名客户端私有能力放这里不污染可移植核心。设计选择与解决的问题可以对照设计选择解决的问题规范版本写入 $schema客户端明确按哪套规则解释整个包固定目录无需每个宿主重新声明 Skills 位置闭合顶层字段防止不同客户端争抢同名字段语义extensions 命名空间允许创新而不污染可移植核心组件失败非致命一个 MCP 启动失败时 Skills 仍可加载接着是 mcp.json它可以声明本地 stdio 或远程 Streamable HTTP 服务。${PLUGIN_ROOT}指向只读包内容${PLUGIN_DATA}指向客户端管理的可写持久数据。插件相对路径必须以./开头且不能逃逸根目录{ $schema: https://agent-plugins.org/schemas/1.0.0/mcp.schema.json, mcpServers: { validator: { type: stdio, command: ./bin/validator, args: [--data, ${PLUGIN_DATA}/validator], cwd: ${PLUGIN_ROOT}, env: { TAOTOKEN_API_KEY: ${TAOTOKEN_API_KEY}, TAOTOKEN_BASE_URL: https://taotoken.net/api } } } }这里把统一 Key 通过 env 注入而不是写死在 Header 里。规范没有定义可移植 OAuth 或秘密引用Header 是可见包数据不得内嵌凭据。路径约束只保证包内文件不通过配置逃逸不等于沙箱——启动后的进程拥有什么系统权限仍由客户端和操作系统决定。如果你用的是 Cline MCP 或 Codex 的 auth.json 体系三件套要写全Base URL 填https://taotoken.net/apiKey 填你的 TaoToken KeyModel ID 填你实际调用的模型名。缺任何一个都会在加载时报错。CC Switch 场景同理切换配置时确认这三项一起切换避免 Key 和 Base URL 错配。Skills 目录里的 SKILL.md 不需要引用 Key它只描述“怎么做”。模型调用发生在 MCP 服务器或客户端运行时凭据从环境变量读取。这样 Skills 可以独立分享MCP 配置按环境替换职责清晰。4. 验证请求一次插件加载与 MCP 调用怎么确认成功配置写完不算完得验证插件真的被加载、MCP 真的能调用。我通常分三步走先校验清单再启动 MCP最后发一次真实请求。第一步用官方 JSON Schema 做本地校验。如果你有 Node 环境可以用 ajv 快速跑一遍npx ajv-cli validate \ -s https://agent-plugins.org/schemas/1.0.0/plugin.schema.json \ -d plugin.json校验通过会输出plugin.json valid。如果报 unknown field说明你写了闭合集合之外的顶层字段把它挪进 extensions 或删掉。这一步能在 CI 里固化避免手改配置引入低级错误。第二步单独启动 MCP 服务器确认它能读到环境变量。以 stdio 类型为例直接手动执行命令TAOTOKEN_API_KEYsk-你的Key \ TAOTOKEN_BASE_URLhttps://taotoken.net/api \ ./bin/validator --data ./data/validator如果进程能正常启动并等待输入说明命令、参数、cwd 都对。如果立刻退出看 stderr 里的报错常见的是路径不对或缺少可执行权限。注意${PLUGIN_ROOT}和${PLUGIN_DATA}是客户端在加载时替换的手动测试时要用真实路径替代。第三步在客户端里加载插件并发一次调用。以支持 Agent Plugins 的客户端为例加载后你应该能在插件列表里看到db-ops-pluginSkills 里能看到summarizeMCP 里能看到validator。然后触发一次 MCP 工具调用观察返回。如果 MCP 服务器内部要调用模型它会用注入的TAOTOKEN_API_KEY和TAOTOKEN_BASE_URL发请求。你可以先在模型对话页面确认 Key 本身可用再回到插件里排查。成功的结果是工具调用返回结构化数据日志里能看到请求发往https://taotoken.net/api没有 401 或连接错误。验证时建议故意制造一次组件失败比如把 mcp.json 里的 command 改成一个不存在的路径观察 Skills 是否仍能加载。规范要求组件失败非致命一个 MCP 启动失败时 Skills 仍可加载。如果你的客户端直接整个插件加载失败说明它的一致性实现还没到位可以反馈给客户端维护者。这一步做完你就有了一份可复制、可校验、可降级的插件包。接下来把常见报错过一遍基本能覆盖 90% 的接入问题。5. 本篇常见错排查401、local proxy failed、reading choices 与 OAuth接入过程中最容易卡住的几个报错我按出现频率排一下并给出对照处理。401 Unauthorized最常见。原因通常是 Key 没注入、Key 写错、或者 Base URL 和 Key 不匹配。检查顺序是先在模型对话页面用同一个 Key 发一条消息确认 Key 本身有效再检查 mcp.json 的 env 里变量名是否和 shell 导出的名字一致最后确认 Base URL 是https://taotoken.net/api没有多余路径或查询参数。如果 Key 是在别的服务创建的那它当然对 TaoToken 无效。local proxy failed这个报错通常出现在客户端尝试通过本地代理转发请求时。先确认你没有配置任何本地代理端口插件应该直连https://taotoken.net/api。如果客户端设置里残留了代理地址清掉再试。另外检查 MCP 服务器的 cwd 是否正确路径逃逸检查失败有时也会以代理错误的形式暴露出来。reading choices 相关报错这类错误一般发生在解析模型返回时说明请求发出去了但响应结构不符合预期。常见原因是 Model ID 填错或者客户端把非 OpenAI 兼容格式的响应当成了标准格式。确认你填的 Model ID 是 TaoToken 支持的模型名并且请求走的是兼容接口。如果 MCP 服务器自己拼了请求体检查它有没有正确设置Content-Type: application/json。OAuth 相关报错规范没有定义可移植 OAuth 或秘密引用所以如果你的 MCP 服务器依赖 OAuth 流程它不会自动跨客户端工作。Header 是可见包数据不得内嵌凭据。正确做法是把 OAuth 令牌通过环境变量或客户端凭据存储注入而不是写进 mcp.json。如果客户端报 OAuth 失败先确认它是否支持你用的授权方式不支持就退回 Key 方式。再补一个容易忽略的点远程重定向。规范禁止未授权跨源转发 Header如果你的 MCP 服务器配置了远程地址并依赖重定向可能会被客户端拦截。网络策略和域名信任由宿主负责遇到这类问题优先查客户端文档。排查时养成一个习惯把 plugin.json 和 mcp.json 分开验证。清单校验用 SchemaMCP 启动用手动命令模型通道用模型对话页面。三者独立确认后再组合起来跑问题定位会快很多。如果还是卡住接入文档和 API Keys 页面是你最该先看的两处。6. 把插件清单与统一通道固定下来走到这里你已经有了 plugin.json 字段模板、mcp.json 配置、统一 Key 的注入方式以及一次完整的加载与调用验证。剩下的就是把它们固定成团队习惯plugin.json 进仓库前跑 Schema 校验Key 只走环境变量MCP 服务器只做受控操作组件失败要能降级。如果你还在多工具之间来回抄配置建议先以 Agent Plugins 为源格式在发布流程里生成各宿主兼容层等目标客户端完成 1.0.0 一致性验证后再减少重复目录。统一通道这边长期跑编码 Agent 可以用 Coding Plan 把多轮任务固定下来临时验证模型通道就用模型对话Key 的创建和管理都在 API Keys 页面完成字段不确定时查接入文档。真正决定这套东西好不好用的不是 plugin.json 有多少字段而是你的插件包能不能在换客户端时少改几行配置。把清单和 Key 通道对齐之后这件事就变得可检查、可复制了。
返回列表