人类掌控之中
摘要
curl项目负责人主张在软件开发中对AI采取平衡方法,强调人工代码审查和责任,同时承认AI工具可以辅助错误检测。
<p><a href="https://lobste.rs/s/p4ey1w/human_control">评论</a></p>
查看缓存全文
缓存时间: 2026/06/10 17:49
# 以人为本
来源:https://daniel.haxx.se/blog/2026/06/10/a-human-in-control/
在当前的 AI 领域,似乎有相当多的人处于两个极端。一边是“氛围编码者”(vibe coders),他们使用智能体,允许其合并代码而无需任何人查看代码;另一边则是对一切与 AI 哪怕只有一丝关联都持反对态度的人。
我个人的立场介于两者之间,我想这对本博客的读者来说应该不算太意外。
## 因热爱与骄傲而作
curl 核心团队(成员不止我一个)由一群重视代码质量和源代码卓越性的人组成。我们从事软件开发,是因为这是我们热爱的技艺,我们为自己迄今为止所取得的成就感到自豪。我们不会将任何责任交给机器。*我们作为人类,为我们合并的每一行代码负责。*
## AI 会犯错
盲目接受 AI 编写的代码意味着你会合并一定数量的错误,但这同样适用于人类编写的代码,所以这本身并不特殊。一些数据表明,AI 生成的代码可能比人类版本包含更多错误。
很久以前,我们发明了测试用例和代码审查,作为帮助我们减少并避免错误合并的方法。代码编写方式本身并不会削弱代码审查以及为待定更改增加额外检查和审查所带来的好处。良好的代码审查有助于发现错误、遗漏或失误。它也有助于强化架构和既定的设计选择。无论代码是如何创建的,这一点都成立。
到目前为止,由自动 AI 机器人等执行的代码审查尚未取代人类。它们根本不够好。
人类审查要好得多。它们能发现其他东西,并有助于确保提议的更改保持在正轨上。
更不用提,我希望了解 curl 的工作原理,即使我无法完全掌握每一个角度和细节,我也基本了解它。我认为这有助于我做出更好的决策、更高效地调试、更好地帮助用户,并保持架构的健全。
编写初始代码并非难事。对于 curl 而言,*历经数十载*维护和打磨已落地的代码才是真正的任务。
*我们在 curl 中合并的所有内容,都经人类判定为合适且良好。*
## 人类也会犯错
在所有活跃的软件项目中,我们都会收到漏洞报告并修复它们。我们发布新版本并持续迭代。自从软件被发明以来,我们一直在这样做,并且仍然如此,因为人类相当容易犯错。
我们试图通过增加测试和在代码获批前增加更多人工审查来降低错误密度和频率。这有帮助,但并非完美。
为了帮助我们写出更优质的代码,我们发明、引入并强制执行各种不同的工具。这些工具在早期阶段检查代码并识别问题,有助于从一开始就避免不良代码落地。它们使我们写出更好的代码,降低错误频率。
如今,一些检测编程错误的最佳工具使用了 AI。这些工具可能针对 git 仓库中的现有源代码工作,也可能检查拉取请求中的提议变更。
上面我提到人工代码审查更好;但反过来也成立。在一个稍微复杂的变更请求中,现在常见的情况是,在人类无法发现更多问题之后,AI 拉取请求审查机器人仍然能找出一两个值得评论的问题。当然,有时它们会出错,此时评论很容易被忽略,但更多时候,它们指出的发现确实值得在合并前处理。
*curl 由人类驱动和开发,并由工具辅助。*
## 沟通属于人类
开源是关于分享代码的,是一种开放式的开发模式。这种模式的*沟通*部分至关重要。分享你的想法、愿景、问题,或者仅仅是你今天下午想做什么的主意。
表达你想要什么或问题是什么,团队可以回应,我们可以共同努力修复和改进需要完成的工作。
有效的沟通是优秀开源的条件之一,这意味着*人与人*之间的互动。在这种流程中插入一大段由 AI 生成、缺乏情感的大段文字*可能*仍然有效,但这就像人类也能学会与难以相处的人共事一样。这不是理想状态,也不是顺畅的工作方式。它会在机器中引入沙砾。不要这样做。这很无礼。
*有效的开源工作意味着我们作为人类进行沟通,即使部分工作和代码是在 AI 帮助下完成的。*
## 结合
人类和机器各自擅长不同的事情。在软件开发中,我们可以相互补充。
每个人都可以自由按照自己的意愿行事,但在 curl 项目中,我们不将责任交给机器。我们为自己的产品负责。我们尽最大努力将其做到最好,利用所有可用的工具。我认为要做到这一点,人类必须保持主导地位。
相似文章
@4rblaber:Anthropic 负责人:"人们总是执着于写出完美的代码行。别再这样做。" "直接告诉Claude你要...
Anthropic CEO Dario Amodei 建议开发者停止手动编码,转而通过目标驱动的提示来引导像Claude这样的AI模型;同时,OpenAI联合创始人Andrej Karpathy在播客中也表达了类似的“vibe coding”观点,这标志着向AI驱动开发工作流的转变。
掌控思想,而非代码
在这篇博文中,antirez认为在人工智能时代,程序员应该专注于掌控软件背后的思想,而非阅读每一行代码,因为AI可以生成局部最优的代码,而人类擅长大局设计和方向。
当AI代理自主执行编码任务时,人类应该处于循环中的哪个位置?
讨论了在自主AI编码代理工作流中人类审查的最佳位置,考虑了自动化与安全性之间的权衡,特别是针对认证、支付和数据库迁移等风险较高的系统。
即使AI代码能工作,我也会拒绝
作者解释了为何他们经常拒绝AI生成的代码,即使这些代码可以工作,原因包括无法解释方法、diff过大、过早抽象以及降低系统推理能力,并主张必须进行人工审查。
@techwith_ram: https://x.com/techwith_ram/status/2064925285003542820
探讨了AI编程中从人类在环到自主代理循环的转变,其中代理自我提示并迭代,讨论了减少人类控制的前景与隐藏成本。