GitHub Copilot 自定义 Agents 与 Skills 教程:企业级 AI 助手扩展指南

GitHub Copilot 自定义 Agents 与 Skills 教程:企业级 AI 助手扩展指南在过去的一年里 AI 辅助编程工具已经深刻地改变了开发者的日常 作为其中的佼佼者 GitHub Copilot 凭借其强大的代码补全和对话能力 成为了无数程序员的 结对编程 伙伴 然而 你是否曾感到 它的能力边界似乎清晰可见 当你希望它能查询公司内部的 Jira 任务 读取私有知识库的文档 或者一键触发 CI CD 流水线时 它往往只能 望洋兴叹 这背后的原因是 传统的 Copilot

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



在过去的一年里,AI 辅助编程工具已经深刻地改变了开发者的日常。作为其中的佼佼者,GitHub Copilot 凭借其强大的代码补全和对话能力,成为了无数程序员的“结对编程”伙伴。然而,你是否曾感到,它的能力边界似乎清晰可见?当你希望它能查询公司内部的 Jira 任务、读取私有知识库的文档,或者一键触发 CI/CD 流水线时,它往往只能“望洋兴叹”。

这背后的原因是,传统的 Copilot 是一个相对通用的代码大模型。为了突破这一瓶颈,GitHub 推出了一个极具革命性的功能:Copilot Extensions(扩展)及其背后的 Agents 与 Skills 机制

本文将带你深入实践,从概念解析到代码实战,教你如何为 GitHub Copilot 配置自定义的 Agents 和 Skills,将你的 AI 助手从一个“代码建议器”进化成一个能真正行动、能深度集成到你工作流中的智能伙伴。

GitHub Copilot Agents与Skills概念架构图

动手之前,我们有必要先理清几个核心概念。别被这些时髦的 AI 词汇唬住,它们的本质其实非常贴合软件工程的设计思想。

简单来说,一个 Agent 就是一个能够理解用户自然语言指令、分析上下文并决定执行什么操作的程序。在 GitHub Copilot 的生态中,当你通过 @你的应用名 来呼叫它时,你实际上就是在与一个自定义的 Agent 进行对话。这个 Agent 拥有自己专属的“系统提示词”(System Prompt),这决定了它的“人设”和行为边界。例如,你可以定义一个专门做代码审查的 @reviewer-agent,或者一个专门回答公司内部框架问题的 @doc-agent

如果说 Agent 是大脑,那么 Skills 就是大脑用来感知和改造世界的手和眼。大语言模型本身不具备联网或操作外部系统的能力。Skills 就是一系列预定义好的 API 接口或工具,Agent 通过调用这些 Skills 来获取外部信息或执行实际的操作。例如:

  • 查询内部数据库(获取信息)
  • 调用 Jira API 创建 Bug 工单(执行操作)
  • 触发 GitHub Actions(自动化流程)

要开发和配置自定义的 Copilot 扩展,你需要满足以下基础条件:

  • GitHub 账号与 Copilot 订阅:你需要拥有有效的 GitHub Copilot 个人版或企业版订阅。
  • 开发环境:Node.js 或 Python 环境(本文将以 Node.js 和 Express 为例)。对于如何在 后端 项目中快速搭建服务,可以参考一些通用的**实践。
  • 公网可达的服务器:为了让 GitHub 能够将用户的对话消息推送给你的 Agent,你需要一个公网可以访问的 URL(开发阶段强烈推荐使用 ngrok 或 localtunnel 进行内网穿透)。
  • GitHub App 创建权限:请记住,一个自定义 Agent 在本质上就是一个 GitHub App。

接下来,我们将通过一个具体示例,创建一个名为 @issue-helper 的自定义 Agent。这个 Agent 的核心功能是:通过自然对话,帮助开发者查询指定 GitHub 仓库的 Issue 详情,并能根据对话内容自动生成摘要(这需要用到自定义 Skill)。

所有的 Copilot 扩展都基于 GitHub App 构建。这是第一步,也是关键一步。

  1. 登录 GitHub,进入 Settings -> Developer settings -> GitHub Apps,点击 New GitHub App
  2. 填写基本信息GitHub App name(需全局唯一),Homepage URL(你的项目主页)。
  3. 配置 Webhook:可以先取消勾选 Active(因为我们暂时通过 Copilot 扩展的专用通道通信,不需要全局 Webhook)。
  4. 设置权限 (Permissions):根据你的 Agent 需要访问的资源赋予权限。例如,我们需要读取 Issue,所以将 Repository permissions 中的 Issues 设置为 Read-only
  5. 开启 Copilot 功能:在左侧导航栏找到 Copilot 选项卡。将 App Type 设置为 Agent。在 URL 栏中,填入你的后端服务地址(例如使用 ngrok 穿透得到的地址,如 https://your-tunnel.ngrok.io/api/copilot)。这里就是 GitHub 将用户对话转发给你的服务器的端点。

GitHub App配置页面示例

现在,我们需要编写服务端代码来接收 Copilot 发来的请求,并返回大模型的响应。GitHub 官方提供了一套 SDK,可以简化这个过程。

首先,初始化项目并安装依赖:

mkdir copilot-agent-demo && cd copilot-agent-demo npm init -y npm install express @github/copilot-extension-sdk

然后,创建一个 server.js 文件,搭建一个基础的服务框架:

const express = require('express'); const { createCopilotExtension } = require('@github/copilot-extension-sdk'); const app = express(); app.use(express.json()); app.post('/api/copilot', async (req, res) => { const messages = req.body.messages; const userMessage = messages[messages.length - 1].content; const systemPrompt = {       role: 'system',       content: '你是一个经验丰富的 GitHub Issue 助手。你的任务是帮助用户分析和总结 Issue。请保持专业和简洁。' }; const llmResponse = await mockLLMCall([systemPrompt, ...messages]); res.setHeader('Content-Type', 'text/event-stream'); res.write(`data: {"choices": [{"delta": {"content": "${llmResponse}"}}]} `); res.write('data: [DONE] '); res.end(); }); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Agent server running on port ${PORT}`); }); async function mockLLMCall(messages) { return "我已经收到了你的请求,正在为你分析 Issue..."; }

目前,这个 Agent 只是一个简单的“聊天机器人”,它还不能真正去查询 Issue。接下来,我们赋予它真正的能力。

为了让 Agent 具备行动力,我们需要配置 Skills。在 Copilot 的体系中,Skills 通常通过 Function Calling(函数调用) 来实现。我们需要告诉大模型:我们有哪些工具可用,这些工具的参数是什么。

我们来定义一个获取 GitHub Issue 的 Skill,并集成到上面的服务中:

const fetchIssueSkill = ,          repo: { type: "string", description: "仓库名称" },          issue_number: { type: "integer", description: "Issue 的编号" }       },       required: ["owner", "repo", "issue_number"] } }; app.post('/api/copilot', async (req, res) => { const messages = req.body.messages; const llmRequestPayload = {       messages: [systemPrompt, ...messages],       tools: [{ type: "function", function: fetchIssueSkill }],       tool_choice: "auto" }; const requiresAction = true; // 模拟大模型决定调用 get_github_issue if (requiresAction) {       const functionArgs = { owner: "octocat", repo: "Hello-World", issue_number: 1 };       const issueData = await fetch(`https://api.github.com/repos/${functionArgs.owner}/${functionArgs.repo}/issues/${functionArgs.issue_number}`).then(r => r.json());       const finalResponse = `根据查询,Issue #1 的标题是:${issueData.title}。内容是:${issueData.body}`;       res.write(`data: {"choices": [{"delta": {"content": "${finalResponse}"}}]} `); } res.write('data: [DONE] '); res.end(); });

这段代码展示了核心逻辑:当 Agent 判断需要调用 get_github_issue 这个 Skill 时,它会执行对应的函数,去调用 GitHub API 获取真实数据,并将结果组织成自然语言回复给用户。

  1. 在刚刚创建的 GitHub App 的设置页面,点击 Install App,选择你的个人账户或组织进行安装。
  2. 打开 VS Code(确保安装了最新版的 GitHub Copilot Chat 扩展)或访问 GitHub 官网的 Copilot 聊天界面。
  3. 在聊天输入框中输入 @,你应该能看到刚刚创建的 Agent 名称(例如 @My-Copilot-Issue-Helper)。
  4. 试着对它说:“帮我查一下 facebook/react 仓库的 #100 Issue”,观察它是否能正确调用 Skill 并返回查询结果。

掌握了 Agents 和 Skills 的基础配置后,你的想象力就是唯一的边界。在企业级研发场景中,这种自定义能力可以解决大量现实痛点:

  • 私有知识库问答 Agent:通过配置一个“向量数据库检索”的 Skill,让 Copilot 能够阅读企业内部的 Confluence 文档、架构设计图和 API 规约,成为团队的新人导师和技术百科。这其实就是构建了一个专属于你团队的 智能 助手。
  • 云资源管控 Agent:配置调用 AWS/阿里云 API 的 Skill。开发者可以通过自然语言指令:“@ops-bot 帮我在测试环境重启一下 user-service 的容器”,Agent 在完成鉴权后即可自动执行操作,极大提升运维效率。
  • 代码评审与规范检查:结合 SonarQube 或内部代码检查工具的 API,创建一个 @reviewer。在提交 Pull Request 前,让这个 Agent 先基于自定义规则库跑一遍检查,并直接在代码行上给出修改建议。

GitHub Copilot 自定义 Agents 和 Skills 的推出,标志着 AI 辅助编程正式步入了“定制化”和“行动化”的深水区。它不仅仅是将大模型的通用能力与企业私有数据、工具链做了简单连接,更是为每一位开发者提供了一个低门槛打造“超级工作流外脑”的舞台。

从今天开始,不妨就从搭建一个查询 Issue 的小助手入手,逐步将那些繁琐、重复的查询和操作封装成 Skills 交给 AI 去处理。把最宝贵的精力和创造力,留给真正的架构设计与业务创新。未来的高效开发模式,必将由人类开发者与无数个专业、可控的 AI Agents 协同构建。

如果你对构建类似的 AI 智能体或扩展企业级开发工具链感兴趣,欢迎在 云栈社区 与更多开发者交流探讨,分享你的实践经验与奇思妙想。

小讯
上一篇 2026-04-18 09:58
下一篇 2026-04-18 09:56

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/267542.html