找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3086

积分

0

好友

412

主题
发表于 4 小时前 | 查看: 11| 回复: 0

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

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

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

GitHub Copilot Agents与Skills概念架构图

一、 核心概念解析:Agents 与 Skills 到底是什么?

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

1. Copilot Agent(智能体):你的专属 AI 代理

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

2. Skills(技能):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。

三、 实战演练:从零打造你的专属 Copilot Agent

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

01 创建并配置 GitHub App

所有的 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配置页面示例

02 搭建 Agent 服务端(Node.js 示例)

现在,我们需要编写服务端代码来接收 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}"}}]}\n\n`);
    res.write('data: [DONE]\n\n');
    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。接下来,我们赋予它真正的能力。

03 为 Agent 赋予超能力 —— 定义与集成 Skills

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

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

const fetchIssueSkill = {
    name: "get_github_issue",
    description: "获取指定 GitHub 仓库的 Issue 详情",
    parameters: {
        type: "object",
        properties: {
            owner: { type: "string", description: "仓库所有者名称" },
            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}"}}]}\n\n`);
    }

    res.write('data: [DONE]\n\n');
    res.end();
});

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

04 安装与调试

  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 智能体或扩展企业级开发工具链感兴趣,欢迎在 云栈社区 与更多开发者交流探讨,分享你的实践经验与奇思妙想。




上一篇:牧原股份2025年盈利155亿元分析:猪价下行周期中的降本增效实战
下一篇:李飞飞团队开源Spark 2.0:全设备流式渲染亿级3D高斯点云
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-16 23:27 , Processed in 0.793164 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表