公司动态

GitHub Copilot SDK插件目录:打包技能、钩子和MCP服务器的终极方案

📅 2026/7/20 17:48:22
GitHub Copilot SDK插件目录:打包技能、钩子和MCP服务器的终极方案
GitHub Copilot SDK插件目录打包技能、钩子和MCP服务器的终极方案【免费下载链接】copilot-sdkMulti-platform SDK for integrating GitHub Copilot Agent into apps and services项目地址: https://gitcode.com/GitHub_Trending/co/copilot-sdkGitHub Copilot SDK是一个跨平台软件开发工具包专为将GitHub Copilot Agent集成到应用程序和服务中而设计。通过插件目录功能开发者可以轻松打包技能、钩子、MCP服务器和自定义代理实现功能的模块化管理和分发。本文将详细介绍如何利用这一强大功能为你的项目打造高效、可扩展的插件系统。为什么选择插件目录插件目录是GitHub Copilot SDK中一项强大的功能它允许开发者将多种扩展功能如技能、钩子、MCP服务器和自定义代理打包到一个目录中通过单一清单文件进行管理。这种方式带来了诸多优势简化分发流程将相关功能打包成一个插件便于分享和安装确保一致性在团队或项目中统一使用相同的插件版本避免配置差异提高开发效率本地开发插件后可直接测试无需复杂的发布流程灵活扩展轻松覆盖或扩展现有插件满足特定需求当你需要添加多个相关扩展时插件目录是理想选择。对于单个功能你可以通过SDK配置直接注册但当功能数量达到三个或更多时插件目录能显著提升管理效率。插件目录结构解析一个典型的GitHub Copilot SDK插件目录结构如下my-plugin/ ├── plugin.json # 清单文件必需除非仅使用SKILL.md ├── SKILL.md # 可选顶级技能 ├── hooks.json # 可选钩子配置 ├── .mcp.json # 可选MCP服务器配置 ├── agents/ # 可选自定义代理每个代理一个.md文件 │ └── code-reviewer.md └── skills/ # 可选额外技能 └── lint-fix/ └── SKILL.md清单文件也可以放在.github/plugin.json或.github/plugin/plugin.json位置这样插件可以集成到现有仓库中而不改变根目录结构。每个子系统钩子、MCP、LSP、技能、代理都有自己的加载器并且是可选的——插件只需要包含它所贡献的部分。完整的清单模式可以通过CLI的/plugin命令查看运行时文档。如何加载插件目录通过在SDK生成CLI时传递--plugin-dir path参数来加载插件目录。每种语言都通过运行时连接的extra-args选项公开此功能。该标志可以重复以加载多个插件。多语言加载示例以下是几种主流编程语言中加载插件目录的示例Node.js / TypeScriptimport { CopilotClient, RuntimeConnection } from github/copilot-sdk; const client new CopilotClient({ connection: RuntimeConnection.forStdio({ args: [ --plugin-dir, ./plugins/code-reviewer, --plugin-dir, ./plugins/lint-fix, ], }), }); await client.start();Pythonfrom copilot import CopilotClient, StdioRuntimeConnection client CopilotClient( connectionStdioRuntimeConnection( args( --plugin-dir, ./plugins/code-reviewer, --plugin-dir, ./plugins/lint-fix, ), ), ) await client.start()Goclient : copilot.NewClient(copilot.ClientOptions{ Connection: copilot.StdioConnection{ Args: []string{ --plugin-dir, ./plugins/code-reviewer, --plugin-dir, ./plugins/lint-fix, }, }, }) if err : client.Start(ctx); err ! nil { return err }注意上述示例使用stdio运行时连接——这是SDK捆绑CLI时的默认设置。如果你通过URL连接到外部运行时则需要在启动长期运行的CLI服务器时传递--plugin-dir参数SDK不会将--plugin-dir转发给它没有生成的运行时。插件可以贡献什么加载插件目录后其扩展对客户端创建的每个会话都是可见的。运行时将插件提供的扩展与你通过SDK注册的任何内容合并插件贡献对会话的可见性技能SKILL.md、skills/*/SKILL.mdsession.skills.list()中的项目可按名称注入自定义代理agents/*.md可通过task(agent_type...)工具调度钩子hooks.json与通过SDK注册的钩子一起触发MCP服务器.mcp.json通过session.mcp.*可访问的工具和资源LSP服务器.lsp.json通过session.lsp.initialize(...)初始化插件代理在fleet mode中是一等子代理父代理可以通过agent_type调度它们运行时像对待任何其他子代理一样为它们触发subagentStart/subagentStop钩子。插件目录 vs 市场插件运行时有两种安装插件的方式对会话来说两者看起来相同市场/直接仓库插件通过CLI的/plugin命令或底层的installedPlugins用户设置持久安装。它们是环境性的——每个针对相同用户配置运行的会话都能看到它们并且它们参与插件发现规则。--plugin-dir插件是显式且临时的——它们仅适用于使用该标志启动的CLI进程。它们优先于环境发现并与具有相同缓存路径的市场条目去重因此当两个表面都引用同一插件时不会加载两次。对于SDK驱动的应用程序--plugin-dir通常是正确的选择它使插件集处于应用程序的控制之下而不是依赖于每台机器的用户状态。如何使插件集具有确定性当主机可能安装了其他插件市场或个人时在运行时环境中设置COPILOT_PLUGIN_DIR_ONLYtrue以抑制自动插件发现。只有通过--plugin-dir传递的目录才会加载。Node.js / TypeScript示例process.env.COPILOT_PLUGIN_DIR_ONLY true; const client new CopilotClient({ connection: RuntimeConnection.forStdio({ args: [--plugin-dir, ./plugins/code-reviewer], }), }); await client.start();在CI、无头服务器部署以及任何你想要可重现的插件集而不依赖于主机用户配置的地方使用此设置。检查哪些插件已加载创建会话后列出活动插件以确认目录已正确加载Node.js / TypeScript示例const plugins await session.rpc.plugins.list(); for (const plugin of plugins.plugins) { console.log(${plugin.name} (${plugin.enabled ? enabled : disabled})); }通过--plugin-dir加载的插件会在此列表中显示其缓存路径设置为你提供的目录。市场安装的插件会标记其注册源。常见问题解决no plugin.json or SKILL.md found in— 目录存在但不符合插件条件。在根目录或.github/下添加plugin.json清单或包含顶级SKILL.md。插件已加载但代理/技能不可见— 确保插件清单声明了它贡献的代理/技能或使用隐式布局agents/*.mdskills/*/SKILL.md。然后调用session.rpc.skills.reload()以在不重启的情况下获取更改。重复钩子触发— 运行时通过cache_path去重但仅当同一目录同时作为市场安装和--plugin-dir引用时。如果两个不同的目录包含相同的插件两者都会加载。移除一个或使用COPILOT_PLUGIN_DIR_ONLYtrue。连接到外部运行时时忽略--plugin-dir— SDK仅在自己生成CLI时转发额外参数。对于外部运行时在启动运行时服务器的命令行上传递--plugin-dir。相关资源自定义代理编写可放入插件agents/文件夹的代理。技能SKILL.md文件的加载方式和技能层级排序规则。钩子插件定义的钩子与SDK注册的钩子一起触发。MCP服务器插件提供的MCP服务器与内联注册的集成方式相同。Fleet Mode插件提供的代理可作为子代理调度。通过GitHub Copilot SDK的插件目录功能你可以轻松构建、管理和分发功能丰富的插件为你的应用程序带来强大的扩展能力。无论你是个人开发者还是大型团队这一功能都能显著提升你的工作效率让你更专注于核心功能的开发。要开始使用GitHub Copilot SDK插件目录只需克隆仓库git clone https://gitcode.com/GitHub_Trending/co/copilot-sdk探索插件目录的无限可能为你的项目打造量身定制的扩展生态系统 【免费下载链接】copilot-sdkMulti-platform SDK for integrating GitHub Copilot Agent into apps and services项目地址: https://gitcode.com/GitHub_Trending/co/copilot-sdk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考