AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


2. Copilot 的缓慢反应
发布日期:2024-05-15 13:09:29 浏览次数: 1958




我曾免费使用 GitHub Copilot 一年时间。起初,我逐渐依赖它,习惯了它的存在,甚至开始觉得没有它便不能工作。直到有一天,我失去了它的帮助,这让我不得不重新适应一个没有 Copilot 的工作环境。这段经历让我有机会回顾并思考:Copilot 真的帮助了我吗?

当 Copilot 正常工作时,它确实带有一点魔法般的感觉。它仿佛能直接从我的脑海中提取代码,准确地展现在屏幕上。然而,一旦失去了它,我发现自己在编写那些重复性的模板代码时变得更加烦躁,常常会抱怨:“哎,如果有 Copilot 的话,这些都能替我搞定了!”现在,我不得不亲自动手编写。尽管如此,我发现自己在没有 Copilot 的情况下反而更加高效。接下来,我将解释原因。

免责声明这篇文章只反映了我的个人经历。你会看到,我让 Copilot 帮我写的代码有些特殊。即便如此,如果你在考虑是否值得为 Copilot 付费,希望我的经验能为你提供参考。此外,我也了解当前关于生成式 AI 的种种热议,如其道德性、是否侵犯版权、企业利用开源代码训练模型的公平性等都是重要的讨论点。但请允许我在本文中专注于讨论生产力这一主题。

首先,给你一些背景信息。由于某些你可能猜到的原因,我并不在我的日常工作中使用 Copilot。我只在自己的私人项目中使用它,而现在我大部分的空闲时间都投入到了一个名为 picom[1] 的项目中——这是一个 X11 的窗口管理器,我负责维护它。可能不是每个读者都知道“窗口管理器”是什么。毕竟随着 X11 接近生命周期的尽头,窗口管理器逐渐被新兴的 Wayland 所取代。虽然每个主流的桌面环境都自带窗口管理器,但如果你需要一个独立于任何桌面环境的窗口管理器,picom 几乎是你唯一的选择。这使得它成为一个非常独特的项目。

像其他软件项目一样,picom 也包含了许多常见的组件,如日志系统、字符串处理功能和排序算法等。但这些组件在 picom 中的组合使用方式非常独特。因此,用 Copilot 来进行大规模的代码基分析是不可行的。因为在训练过程中,它没有遇到过类似的项目,所以很难理解其运作逻辑。这就意味着,我使用 Copilot 主要是为了编写那些模板和重复性代码。例如,当你需要解析一个转义字符[2]时:

if (pattern[offset] == '\\\\') {
switch (pattern[offset + 1]) {
case 't': *(output++) = '\\t'; break;
// ????
}
}

如果你将光标置于 ???? 标记的位置,你可以相对确定 Copilot 能为你完成剩下的代码。其他类似的任务包括将枚举类型映射至字符串[3]编写具有通用模式的接口函数[4]等。这些通常是编程中最简单且最枯燥的部分。对于喜欢寻找编程乐趣的我来说,这部分工作无疑是最无聊的。因此,我非常欢迎能有工具来帮我解决这些问题。

那么,究竟哪里出了问题呢?为什么我会说没有 Copilot 我反而工作得更好?这主要是因为 Copilot 存在两个突出的问题:

1. Copilot 的不可预测性

虽然 Copilot 在处理正确的任务时表现出色,但很难预测它何时能成功,何时会失败。在使用 Copilot 一年后,我对它的了解已经比初始时深入许多,但对它的全部细节仍然没有完全掌握。我们很容易将人类的思维方式强加于 AI,期望通过类似评估一个人的方式来判断它的能力。例如,你可能会基于它之前的表现推测,“它之前能根据我的注释写出函数,这次也应该行。”但往往结果却是 Copilot 输出了一段毫无意义的代码。这是因为人工智能与人类智能大不相同,你通过与人交往积累的直觉在这里并

不适用。这意味着,除非让 Copilot 实际尝试,我们很难确切知道它是否能成功。而这个问题还因 Copilot 的另一个缺陷而更加严重:

2. Copilot 的缓慢反应

clangd是我选择的 C 语言服务器,它的反应速度非常快。它的建议几乎是即时的,这意味着在实际操作中,我几乎不需要等待。即使某些建议帮助不大,也不会耽误我的时间。与此相比,Copilot 的反应速度就慢得多。我至少需要等待 2 到 3 秒才能得到任何反馈。如果 Copilot 决定编写一大段代码,那么所需时间会更长。在许多情况下,我可能会白白等待几秒钟,最终 Copilot 只给出了一些无法使用的代码。这时,我不得不考虑是否重新调整指令再试一次,或是接受部分建议并自行完成剩余部分。尽管这种情况并不频繁(在你对 Copilot 有了更深入的了解之后),但这种来回的过程浪费了大量时间。


综上所述,至少目前而言,我不认为 Copilot 能够提高我的工作效率,因此我不打算为此付费。如果 GitHub 希望通过提供一年的免费使用来让我对 Copilot 上瘾,那么他们的计划显然没有成功。不过,如果 Copilot 能变得更聪明,或者速度能快几倍,情况可能就会有所不同了。

那么,我是否应该对此感到担忧呢?

参考资料

[1]

picom: https://github.com/yshui/picom

[2]

解析一个转义字符: https://github.com/yshui/picom/blob/311225be4d9187cbadf7388af87946d9fa62a924/src/c2.c#L1044

[3]

将枚举类型映射至字符串: https://github.com/yshui/picom/blob/311225be4d9187cbadf7388af87946d9fa62a924/src/c2.c#L238

[4]

编写具有通用模式的接口函数: https://github.com/yshui/picom/blob/311225be4d9187cbadf7388af87946d9fa62a924/src/dbus.c#L1421




53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询