GitHub 工程师使用 GitHub Copilot 的 4 种方式

就在最近,我正在为 GitHub Copilot Chat 编写一项新功能。 我的任务是让聊天能够识别用户的项目依赖项,从而在用户提出问题时提供神奇的答案。 虽然我可以轻松列出项目依赖项并认为任务已完成,但我知道,要从这些大型语言模型中提取一流的响应,我需要小心不要过载提示,以避免因提供太多上下文而使模型混乱。 这意味着预处理依赖项列表并选择最相关的列表以包含在聊天提示中。

为各种编程语言中最著名的框架创建机器可处理的格式需要花费数天的时间。 正是在这段时间,我经历了“副驾驶时刻”之一。

我只是在我的IDE中查询了聊天记录:

Look at the data structure I have selected and create at least 10 examples that conform to the data structure. The data should cover the most prominent frameworks for the Go programming language.

,这是我的第一批机器可处理的依赖项。 仅仅 30 分钟后,我就收集了几乎所有受支持语言的重要依赖项的全面集合,并完成了参数化单元测试。 在没有 GitHub Copilot 的情况下可能需要几天时间才能完成的任务仅用 30 分钟就完成了,这确实是了不起的。

这让我思考:我在 GitHub 的同事可能还经历过哪些其他“副驾驶时刻”? 因此,以下是我们在 GitHub 上使用 GitHub Copilot 的几种方法。

1. 半自动化重复性任务

半自动化重复性任务这个话题引起了我另一个团队的同事的共鸣。 他提到,他们的任务是开发和维护多项实时服务,其中许多服务利用协议缓冲区进行数据通信。 在维护过程中,他们经常遇到需要增加 protobuf 定义中的 ID 号的情况,如下面的代码片段所示:

protobuf

google.protobuf.StringValue fetcher = 130

  [(opts.cts_opt)={src:"Properties" key:"fetcher"}];

google.protobuf.StringValue proxy_enabled = 131

  [(opts.cts_opt)={src:"Properties" key:"proxy_enabled"}];

google.protobuf.StringValue proxy_auth = 132

  [(opts.cts_opt)={src:"Properties" key:"proxy_auth"}];

他特别感谢编辑器中的 GitHub Copilot 完成这些任务。 它可以节省大量时间,无需手动生成 ID 号。 相反,人们可以简单地浏览完成建议,直到任务完成。

2.避免偏离轨道

这是我从同事那里听到的另一个有趣的用例。 他需要设计一个正则表达式来捕获 Markdown 代码块并提取语言标识符。 他完全沉浸在工作中,不愿意切换到聊天来打断自己的工作流程,尽管这可以提供解决方案。 相反,他采用了一种创造性的方法,在代码注释中正式化了他的任务:

// The string above contains a code block with a language identifier.
// Create a regexp that matches the code block and captures the language 
identifier.
// Use tagged capture groups for the language and the code. 

这促使 GitHub Copilot 生成正则表达式作为其编辑器中的后续语句:

const re = /```(?w+)(?[sS]+?)```/;

评论删了,任务很快就完成了!

在一次愉快的咖啡聊天中,我们的一位支持工程师分享了她上周与一位同事经历的一件事。 那是一个星期五下午,他们正在尝试为特定客户解决问题。 最终,他们通过在 VSCode 中创建各种注释来确定解决方案。 在 GitHub,我们优先考虑远程协作。 因此,仅仅解决任务是不够的。 向我们的同事通报该流程也很重要,以确保为未来的客户请求提供最佳体验。 因此,即使在完成这项详尽的任务之后,他们也需要记录他们如何得出解决方案。

她启动了 GitHub Copilot Chat,并简单地输入了一些内容,“整理我的笔记,构建它们,并将编辑器中的数据编译到 Markdown 表格中。” 几秒钟之内,任务就完成了,让他们开始了他们应得的周末。

4.探索和学习

增强和获取新技能是每个工程师的旅程中不可或缺的一部分。 约翰·贝里曼我的一位同事接受了利用 GitHub Copilot 以完全不熟悉的编程语言处理一项重要编码任务的挑战。 他的目标是深入研究 Rust,因此周日,他在 GitHub Copilot Chat 的帮助下开始了这一努力。 他要完成的任务是开发一个程序,能够将任何数字输入转换成相应的书面英语输入。 虽然最初看起来很简单,但这项任务呈现出各种复杂性,例如处理 teen 数字、十的命名约定、输出中“and”的位置等等。

23 分 9 秒后,他成功制作了一个用 Rust 编写的函数版本,尽管他之前没有使用该语言的经验。 值得注意的是,他记录了他的整个过程,记录了他自己的整个努力过程。

Berryman 使用 GitHub Copilot 的旧版实验版本用 Rust 编写程序。

您自己的 GitHub Copilot 时刻

我发现发现我的 Hubber 同事如何使用 GitHub Copilot 非常有启发性,他们的创新方法激励我将他们的一些想法融入到我的日常工作流程中。 如果您渴望亲自探索 GitHub Copilot, 入门 轻而易举。 只需将其安装到您喜欢的编辑器中并询问即可。

Leave a Reply

Your email address will not be published. Required fields are marked *

近期新闻​

编辑精选​