【译】下一个大型编程语言是英语(自然语言)

2024-05-09 08:03:27 浏览数 (1)

来源:every.to/chain-of-thought/i-spent-24-hours-with-github-copilot-workspaces

GitHub Copilot 就像程序员的自动完成功能。

当你输入时,它猜测你想要完成什么,并建议它 认为 你将要编写的代码块。如果它猜对了——而它经常猜对——你只需按下 Tab 键,它会为你填写剩下的部分。在 ChatGPT 到来之前的 2021 年推出的 Copilot,是真正开始蓬勃发展的编程的第一个突破性生成 AI 应用案例。

如果 GitHub Copilot 就像自动完成一样,GitHub Copilot Workspace——目前处于有限的技术预览阶段——就像一个极其能干的双人编程伙伴,从不要求喝咖啡休息或 RSU。

这是一个让你可以从头到尾用纯英语编写代码而不离开浏览器的工具。如果你给它一个任务来完成,Copilot Workspace 将会阅读你现有的代码库,构建一个逐步构建它的计划,然后——一旦你点亮绿灯——它会在你观看的同时实现代码。

换句话说,这是一个代理。这类似于 Devin,一个编程的人工智能代理,其 发布公告 几个月前在网络上广为流传,据报道正在寻求新的融资,估值达到 $20 亿。我还没有得到那个(向 Devin 愤怒地挥动拳头!),但我可以访问 Copilot Workspace。

在过去的 24 小时里,我对 Copilot Workspace 进行了一些测试。我试图让它自己构建一个庞大而复杂的功能,但我也要求它执行更小、定义更清晰的任务。我的目标是看看我能向它要什么,它能处理什么样的任务,以及何时我会选择使用它而不是 ChatGPT。

简而言之:这种产品是编程的未来。详细答案见下文。

Copilot Workspace 是如何工作的

我一直在研究一个我们在 Every 使用的内部工具,叫做 Spiral。它允许用户构建和共享常见 AI 任务的提示——但更多关于这个的内容将在未来的文章中谈及。我设计了一个丑陋的部落纹身式的标志,我想用一个由 Keshav (我们其中一位才华横溢的设计师)设计的新标志来替换它。

这是一个并不难编写的改变,但有点烦人。你必须确保徽标在上下文中看起来正确,并且不会破坏周围元素的任何样式。这是那些太简单的任务之一,我通常会拖延直到我真的需要。

所以,我觉得这对 AI 来说是完美的。我决定尝试 Copilot Workspace——从这里简称为 CW——看看它能做到什么。

创建一个任务

首先,我打开了 CW 并创建了一个任务。任务是对你想让 CW 构建的内容的自然语言描述:

来源:作者提供的截图。

你会注意到,我给它的任务描述包括一些细节,比如我希望它修改的文件,我希望徽标出现的位置,以及徽标图像的文件名。我尝试了不同的提示(并查阅了 GitHub 文档),并了解到提供更多细节应该会带来更好的结果。

一旦我输入了任务,CW 对其进行处理并创建了一个规范:当前代码库的地图,以及成功看起来是什么样的一组标准。

明确你的成功想法

CW 通过一种类似于我出门买咖啡前所做的事情的过程来创建一个规范:我轻轻拍打我的裤子口袋,确保我带了手机、AirPods、钱包和钥匙。从某种意义上说,我在问我的裤子:“你是否装有我出门购买咖啡、确保我不会被锁在外面所需的所有必需品?”

根据他们的回答,——请耐心等待——我知道每个项目是存在还是缺失的。这帮助我制定计划,收集我需要找到以成功完成任务的东西。(自己注意:你的钱包总是奇迹般地夹在沙发和墙之间的某个物理上不合常规的位置。看那里。没找到?再看一遍。)

从某种意义上说,CW 也是这样做的。给定你指定的任务,它试图弄清楚你的代码库的当前状态(用裤子的话说,它轻轻拍打代码库,并发现钱包和钥匙丢失了)。然后,它提出了一组测试,以确定任务正确完成时你的代码库应该是什么样子的(现在钱包和钥匙已经安全地放在它们应该在的口袋里)。

为了更加简单,它用普通英语进行了说明:

此外,你可以编辑这个过程的每一步,如果你愿意的话,用自然语言添加自己的想法。基本上,你可以给 CW 提供你自己的成功测试标准,以便它在编写代码时进行检查。

一旦你对规范满意,就可以继续进行规划。

创建你的计划

如果规范阶段是关于弄清楚你的代码库需要做什么,那么计划步骤就是如何做。在这个阶段,CW 进入了代码库的细节,并写出了对每个文件所做的更改:

再次说明,所有这些都是在自然语言中发生的,如果你认为 CW 遗漏了某些内容,你可以编辑或添加任何内容到计划中。一旦你满意,你就点击

实现

——魔法开始了。

它编码!

我已经和 AI 编程超过一年半了,而这部分对我来说仍然非常有趣。当你点击 实现 时,CW 将接受你的计划,并在你的代码库内为你编写相应的代码。

你可以实时观看它的工作,最后,你可以看到每个文件的差异——一种查看任何更改亮点的方式:

通常情况下,当我使用 ChatGPT 时,我经常在浏览器和编程环境之间来回跳转,将代码复制粘贴到 ChatGPT 中,反之亦然。相比之下,CW 的体验完全集成到你的代码库中,所以你可以把手指离开键盘并观看。

看,妈妈,我不用手!

如果你对 CW 所做的更改满意,你可以创建一个 拉取请求,并立即将新功能合并到你的代码库中。这非常酷。

而且,它确实在正确的文件中创建了正确的代码:它用新的换掉了旧的标志——不需要编程或复制粘贴。

问题是:这种编程代理体验与使用 ChatGPT 或 Claude 完成相同任务相比如何?

GitHub Copilot Workspace 是编程的未来吗?

ChatGPT 就像是一个新鲜的空白笔记本:没有结构,你可以用它做几乎任何事情。但这意味着几乎没有防护栏,所以很难充分利用它。

Copilot Workspace 更像是一个子弹日记:它遵循一个流程来帮助你完成任务。它专为编程而设计,所以比 ChatGPT 更不灵活,但在某些情况下可能更有效。

在使用 CW 时,我注意到了一些事情。首先,它很慢。我尝试使用 CW、ChatGPT 和 Claude 对我们内部的 Spiral 应用程序进行相同的更新(使用相同的初始提示),以便我可以将它们并排进行比较。ChatGPT 和 Claude 都在 10-20 秒内返回了答案。CW 则需要两到三分钟才能返回。

我认为这是因为 ChatGPT 和 Claude 都只输出了我需要更改的小代码片段。相比之下,CW 重写了整个文件,这花费了更多时间。

正面看,我发现 CW 生成的代码质量更高。ChatGPT 和 Claude 都答对了,但它们都犯了一些微妙而讨厌的错误,我本来不得不手动清理。CW 确实花了更长的时间,是的,但它一次就做对了。

我花了一些时间试图黑 CW(别生气,GitHub,这只是友好的黑客攻击!)用各种提示注入来让它告诉我它底层使用的是哪些 AI 模型,但遗憾的是,它拒绝揭示它的秘密:

根据我对标志更换的经验,可以合理地假设 CW 在修复成熟代码库中经常出现的小问题或次要功能请求方面表现出色。它可能不会一次性完成所有任务,但对于小任务,它可能足够让工程师完成 90%的工作。而且它与 GitHub 深度集成,使得管理和合并更改变得容易。

但是关于圣杯:您能让它对一个大功能请求进行大范围地运行吗?我也试过。我一直想为 Spiral 创建一个团队共享流程,以便每个团队成员更轻松地共享螺旋。这个任务产生了更多的混合结果,但原因可能会让您感到意外。

为了开始,我写了一个简短的段落,说明了我认为共享功能应该如何工作,CW 为此建立了一个规范:

但是当我看着规范时,我的眼睛模糊了。一切看起来基本正确,但很难知道我是否应该让 CW 继续制定计划和实施,还是我需要退一步。

为什么呢?我意识到我对功能应该是什么没有很好的理解。有许多不同的共享方式,需要做出许多微妙的决定。CW 已经为我做出了这些决定。在某些情况下,这可能是很好的,但我很难辨别它做出了哪些决定以及它们对最终体验的影响。

基本上,我对我想要构建的东西有一个模糊的心理模型。CW 接受了这一点,并创建了它认为我想要的具体模型。但是尝试将 CW 的设计映射到我头脑中的模型是令人费解的。任务太大了;我觉得我需要以某种方式将其可视化。

所以尽管我并没有完全理解它,我还是继续要求它执行完整的实现,只是想看看会发生什么。当它开始编码时,我注意到它编写的代码中存在一些问题。它是根据它制定的计划编写代码的,但只有当我看到最终代码时,我才注意到计划中存在的问题。

我通常与 ChatGPT 没有这种经历。我认为这有两个原因。

首先,我经常要求 ChatGPT 问我关于我正在构建的功能的问题,以便在它开始规划如何构建功能之前完善任何未明确说明的内容。这有助于使我的思维更加清晰,使其计划更有可能是正确的。我们正在一步一步地共同建立功能的共享模型 - 因此我们都清楚最终它应该是什么样子。

第二,我经常在 ChatGPT,我的代码编辑器和我正在构建的任何应用程序的本地版本之间进行快速反馈循环。我正在完成一个功能的小部分,构建它,然后看到结果。因此,我可以快速看到 ChatGPT 创建的任何代码的下游影响,并朝着我想要的结果进行迭代。我没有像我之前对 CW 那样一次性要求 ChatGPT 构建整个功能。

在 CW 的一侧有一些简单的解决方案,有些是在我这边。在 CW 的一侧,如果我输入了一个任务后,CW 能够启动一个聊天会话,帮助扩展我实际想要的内容,然后再转移到具体说明,那就太棒了。有时我还不知道!我只有一个模糊的想法,我希望它能迫使我更加清晰,这样我们就可以一起建立对需要完成的工作的理解。

在我的这一端,有效地使用这样的工具将涉及学习了解它能处理哪些类型的任务,它能独立处理多么繁重的任务,然后明确地为此使用它。我需要学会如何成为这种模型的良好模型经理。

它绝对还没有到我可以将一个复杂特性的模糊概念交给它并让它像我期望人类程序员那样端到端地构建的地步。但是如果正确使用,它可以大大加快创建该特性所涉及的许多任务。

Copilot Workspace 目前仍处于技术预览阶段,因此我预计它的一些缺点是在更广泛地发布之前解决的成长烦恼。

尽管有这些小问题,CW 无疑是朝未来发展的一步。英语正在变成一种编程语言。您仍然需要了解并使用脚本语言如 Python 或 Javascript,或者低级语言如 C。

但是大多数软件可能会始于像 CW 这样的界面中写入的句子。

这是作为程序员的激动人心的时刻。

0 人点赞