跳到正文
Hacker News· devalexwells·· 8 天前AI 评分34

从 GitHub Copilot 到 AI 智能体:一位开发者关于低延迟与手写代码的反思

That's how it's supposed to feel

AI 导读

一位开发者回顾五年来在亲 AI 与反 AI 之间的摇摆,认为 GitHub Copilot 带来的低延迟体验像老虎机,让人启动更多低价值项目却完成更少。他今年初的自我实验显示重度使用 AI 后产出更多但对自己交付的东西感到矛盾,随后受 "I'm done coding with AI" 视频影响停用 AI 三周,重新体会手写代码的摩擦感与满足感。

正文 · AI 翻译

这是关于过去几年 AI 反思系列文章的第三部分(第一部分:怀疑,第二部分:疲劳)。以我的想法和感受呈现,因人而异。

哦,快乐的玩具 #

2021 年夏天,我在摆弄 GitHub Copilot 的原始技术预览版。

我把同事 Brad 拉进一个 Slack 语音频道,就像我每次发现什么新鲜玩意儿时那样。我喜欢和 Brad 一起工作。他很务实,也会容忍我的妄想。我会向他大谈特谈脑子里想的任何东西,他会一直点头,直到我觉得自己被倾听了。然后,我们俩都回去写 Next.js 和 GraphQL,假装一切都好。每个人都应该有一个 Brad。⁠11 如果你是 Brad,谢谢你。

我记得那次语音,记得 Copilot 对我们扔给它的 Leetcode 题吐出那种笨拙但能用的自动补全时我的惊叹。我记得 Brad 基本没说什么。很多“……嗯。”

从 Brad 那里这不是个好兆头——他本该把我拉回现实的。

那时候的 UX 体验……有点不靠谱?写注释,按 Tab,得到代码。用 Ryan Lockwood 的不朽名言(Streets 1:12)来说,真是一阵快感。

// check if a string is a palindrome
function isPalindrome(s) {
  var reversed = "";
  for (var i = s.length - 1; i >= 0; i--) {
    reversed += s[i];
  }
  if (reversed == s) {
    return true;
  } else {
    return false;
  }
}
// alt+]
function isPalindrome(s) {
  return s == s.split("").reverse().join("");
}
// alt+]
function isPalindrome(s) {
  // TODO: handle spaces
  // TODO: handle capital letters
  // TODO: handle anything but racecar
  return s === "racecar";
}

Brad 和我(天真地)开玩笑说,也许孩子们以后不用再学编程了!只要按 Tab,哈哈。这让我想起我写第一批程序时的样子:在 DOS 里手忙脚乱,沮丧不已,我爸安慰我……“不,不,那种感觉本来就该是这样。”

他说得对。那种感觉本来就该是这样。挑战先于奖励。它来得缓慢,像一滴一滴令人愉悦的多巴胺,让我几十年来一直回来。

反过来,Copilot 全是快感,几乎没有手忙脚乱。但就这样吗?显然我不这么认为,否则我就不会写这篇文章了。很多关于 AI 的讨论都两极分化。给我点美妙的细微差别吧!

在这篇文章中,我将呈现我目前对其中细微差别的一些想法:

  • 手写代码(以及通过写作、规划、交流来思考)仍然重要,也许比以往任何时候都更重要
  • 智能体工程很强大,也很容易被误用
  • 存在一个值得探索的中间地带

钟摆 #

在过去 5 年(???说真的怎么这么久)使用 AI 的过程中,我在支持与反对 AI 的钟摆上来回摇摆,来回摇摆。我喝过也分发过这碗迷魂汤。我也曾是一个坚定的批评者。我质疑过我与 AI 的关系、围绕它的伦理,以及它对环境、社会和社区的影响。那些宏大、可怕的存在主义问题。⁠22 我知道我会落入这个俗套,但我已经做了将近二十年的伦理素食者。我不可能为每件事都死磕,但我选择死磕的那些事,我会认真对待。

我曾狂热地运行智能体直到深夜。我也曾连续几周完全不用 AI,理由是倦怠症状和冷漠。

每次把我拉回来的,是延迟,尤其是低延迟。延迟是个有趣的词。我会经常说它,所以让我精确地定义一下。

延迟(名词):源自拉丁语 latere,“隐藏”。刺激与反应之间的延迟。

我有一个想法、某种意图、一点信息,然后我在等待回应。字面意义上,就是答案仍然隐藏的那段时间。很贴切,因为低延迟的代价往往也是隐藏的。

延迟有两面性。低延迟是让 Copilot 感觉像老虎机的原因。低延迟也是让实验室仪器变得有用的原因。你尝试一些疯狂的东西,看到结果,调整,再试一次。同样的想法,不同的含义。

今年年初,我对自己进行了一次结构化实验,并写下了我的发现。简而言之:在大量使用 AI 的情况下,我开始做更多低价值的事情,完成的事情却更少。我交付了更多东西,但对自己交付的东西却感到矛盾。⁠33 哦!不只是我。现在也有行业规模的数据了,我会谈到其中一些。但这篇文章主要是关于感受的。

所以,像任何一个好的、精疲力竭的爸爸一样,我休了一段时间假。回来后,我尝试更有意识地使用 AI。日常工作中允许使用 AI。不做随机的副业项目。手写代码练习。那感觉是可持续的。

用 AI 完成编码 #

然后,到了仲夏,钟摆又摆回来了。

我当时正坐在后廊吃午饭、看 YouTube,偶然看到一个不起眼的视频,标题是“我不再用 AI 编码了”,作者是 Brett Codes。

Brett 描述了一段和我相似的旅程,在钟摆上来回摆动。他表达了自己遇到的一些问题,其中有些我比较认同,有些则不太认同。但真正触动我的,是他觉得自己的 AI 体验与他的价值观并不一致。Brett 重视诚信,这也是我这些天在工作中所珍视的。

也许是因为我对所看到的结果普遍感到恼火,也许是因为仲夏俄亥俄的阳光正好照在我身上,但 Brett 未加修饰的独白引起了我的共鸣。

在那之后,我停用 AI 三周。我在 Zed 里关掉了它,从我的 nix 配置中移除了那些工具,在工作中挂起了我的 token,并在搜索引擎里关掉了它。我没有四处批评那些从中获得价值的人——这感觉像是一个个人决定。

然而,在那几周里,我并没有感受到 Brett 所感受到的那种振奋能量。我确实感觉更好了,享受那种阻力,享受手工编码和解决问题的满足感。我不再把那些不值得动用 AI 的小事扔给我的“clanker”,或者那些一开始就不该被“clank”的事情,这让我感觉更好。

但这并不让人觉得世界一切都好。

我意识到,部分问题在于,我确实对 LLM 背后的科学和技术着迷。我成长于 90 年代初,年轻到足以迷恋快速演变的数字世界,又早到大多数东西都得自己摸索出来。⁠44 或者我会问我爸,结果好坏参半。他是“你赢了吗,儿子?”这个梗的完美化身。

我的一部分觉得自己是在为了某种糊状理想化的工匠精神而拒绝自己的着迷,在这种精神里,AI 的使用是二元且绝对的。我认为这是一个陷阱。

我最喜欢的一句话之一来自 Anne Lamott 的《Bird by Bird》:⁠55 一本巧妙地伪装成“写作建议”的书,但实际上是 Anne 在解释:为了做你想做的那件有趣的事,你会创造性地螺旋坠入深渊,出来时眼睛变成触手,但相信我,兄弟,这会值得的。

"我曾以为成对的对立面是理所当然的,爱是恨的反面,对是错的反面。但现在我觉得,我们有时会接受这些概念,是因为拥抱绝对比承受现实要容易得多。我不认为任何东西是爱的反面。现实复杂得毫不留情。"

Adam Grant 在 Think Again 中提出了类似的观点。他说,当我们争论复杂的事情时,我们倾向于把它们简化为整齐的小桶,而这些桶把我们彼此隔离开来。当我们加入细微差别时,对话往往会取得进展。

"使用 AI" 或 "不使用 AI" 是一对漏水的桶,一种虚假的、略带潮湿的二分法,散发着铁锈和霉味。

铁匠与他们的铁砧 #

对我来说,手艺是主动的。它意味着过程、方向和意图。它是以一种将你的身份融入作品的方式去创造,反过来,作品也在你的身份上留下印记。铁匠在铁砧上塑造金属,经过多年的锻造,铁砧也塑造了铁匠。

我认为 AI 是铁砧的一部分。一个全新的、神奇的铁砧,它有时告诉你有用的东西,有时吐在你的围裙上,然后你还得向同行铁匠们解释。⁠66 呃,我承认用铁匠这个残余职业作为类比有点讽刺。

于是我们陷入了一个困境。我(个人)最大的担忧仍然是技能退化和认知债务,铁匠慢慢退化,生产出千篇一律的长剑,而不是任何有趣的东西。

我热爱编程和构建软件,而且我知道(我测量过!)当我主要手写代码时,我能更好地理解我正在构建的东西。我是长期投入的。

然而,也许这是自我安慰在说话,但我不确定答案是把铁砧扔掉,对同事们沾满呕吐物的围裙翻白眼,尽管那样可能很自我满足。我认为有一种方法可以用 AI 来改进步手艺、磨练手艺人,在不降低铁匠水平的情况下扩展可能性。

在实践中,现在,这意味着一种分裂。

我手写那些就是手艺的代码,例如 API 设计,那些我需要深入理解并能在会议上解释的部分,那些我没有完全凭直觉理解的部分。那些让我快乐的部分。我把 AI 用于手艺周围的工具……比较、基准测试、测试生成器、原型、近似迁移、研究,在这些地方我不关心通往答案的旅程,我不在寻找可能通往瀑布的路上会遇到的绕道。或者在我只需要捏着鼻子输出一些 React 组件的时候。

延迟,在实践中 #

我最近花了很多时间在 Datastar 上,这是一个超媒体框架,正在前端集体意识的某些前沿角落掀起波澜。当我构建一个功能时,我可以在 Datastar 和 React(或[插入竞争技术])中构建它。我可以安全地发布无聊的 React 版本,保住我的健康保险,在我的 Datastar 技术栈中得到一个近似版本,然后测量、基准测试和观察两者。

好吧?那又怎样?我不用 AI 也能做到所有这些。

是的,而且……这是一项投资!通常这项投资是值得的,通常它是一场与利益相关者的令人沮丧的争论。

把同一个解决方案构建两次、搭建基准测试套件,并且还有时间做我想做的质量分析,这对我老板来说要难卖得多。只需相对微不足道的努力⁠77 我想强调,我的观点不是要把质量工程或分析整体交给 AI。它只是一个高杠杆工作的例子,而这种工作(往往)在组织里成本高昂或被忽视。自己衡量并复核结果仍然有价值!但我不会比 LLM 更快地解析数千行日志或理清 HAR 文件。这是有用的技能,但它不是我所感兴趣的那个技能。因人而异。,AI 给我近似值,而我得到硬数据来支撑真正的工程决策。这仍然是工作,但延迟足够低,以至于我工作方式的可能性空间被打开了。

这让我想起 Bret Victor 的一场演讲Inventing on Principle。在演讲中,他展示了反馈循环对于发明创造有多么关键。当你能立即看到一次改动的结果时,那些如果你要等上几分钟、几小时甚至几天就绝不会考虑的解决方案就会浮现出来。他更进一步,强调错失想法是一种道德上的错误,并鼓励我们构建能让我们更好地控制更快反馈循环的界面。

推广来说,更多控制和更快反馈意味着更高质量和更大的可能性空间,而这又意味着新颖的解决方案。

想想性能工程。⁠88 参见:测量,那恐怖……

在产品开发这片天堂里,我们喜欢假装性能是锦上添花的东西,只有 Steve——我们那位饱经风霜的性能工程师——才会在意。我们想象他弓着背盯着火焰图,对着空气摇着他那谢了顶的头。

但 Steve 懂一些东西。Steve 见过一些所谓的烂摊子。Steve 知道延迟就是 MapQuest 和 Google Maps 之间的差别。就是能用的产品和事故之间的差别。

然而性能却时髦地被留在我们行业的边缘,只有大型组织才会去做,带着标志性的企业式迟缓,直到它们被迫关注边缘设备上“突然”涌入的用户投诉。AI 让测量变得(更)可及,尤其是对缺乏纪律的组织而言。

我看到的好处不是开发速度提升 2 倍、5 倍或 10 倍。而是我可以把 Cal Newport 的《慢生产力》(少做事、以自然节奏工作、痴迷于质量)这类作品中的理念拿来,并战略性地使用 AI 来服务于它们。慢工作,快循环。

至少,想法是这样的。

纵观整个行业,这个循环似乎正朝着相反的方向发展。DX 的数据显示,AI 带来的吞吐量提升中位数略低于 8%,而拉取请求的中位规模几乎翻了一番。⁠99 DX 追踪了数百个工程组织中 AI 的影响。请注意,他们销售开发者生产力测量工具,其客户偏向于已经在开发者体验上投入的组织。吞吐量数字来自他们对 400 多个组织、历时 16 个月的研究。AI 采用率上升 65%,PR 吞吐量中位数上升略低于 8%。其余数据来自他们的2026 年第二季度报告。开发者报告每周节省约 6 小时(高于一年前的约 3 小时),但花在新工作上的时间占比几乎没有变化(57% 到 58%)。PR 中位规模从大约 42 行增加到 72 行。他们的开发者体验指数首次下降,从 67 降至 65,受本地迭代速度、增量交付和审查周转拖累。代码可维护性上升 3.8%,而变更信心下降 6.1%。好的一面是,文档和入职引导有所改善,较小的组织(15 到 99 名工程师)正在领先于大型组织。 每次变更的代码更多,审查更慢,循环更长。

Bell-curve meme. Both tails, the simple guy and the hooded master, say "My code should work." The crying midwit in the middle says "Move fast and break things."

纪律 #

用 Brad 的话说,“……呃。”

我正在摸索。这很难。它不是全盘接受 AI 做所有事——我仍然坚决批评这一点——也不是彻底拒绝 AI 作为我工作流程一部分的潜在价值。

用好 AI 需要非凡的纪律,我确信这场对话并不像我可能希望的那么简单。

并非所有东西都应该被构建。能做并不意味着应该做。每次我伸手去用智能体,问题都是结果是否会滋养我的理解。它会以我想要被塑造的方式塑造我吗?⁠1010 对于艺术和任何创意事物,这一点加倍成立。使用 AI 就是按下简单按钮,如果行为本身才是重点,把它外包出去恰恰剥夺了这一点。Brandon Sanderson 在这次演讲中说得好:“我们就是艺术。” 这是我围裙上的呕吐物还是汗水?

价值观 #

这让我回到 Brett,回到正直。

我说过,弃权感觉像个人决定。我已经素食一段时间了,我拿这个作类比。这是一种对环境和对社区都有真实成本的技术,由那些对法律和伦理问题含糊其辞的实验室构建。为什么不弃权,就像我对动物产品那样?

这个比较公平吗?

素食主义,至少就适用于非人类动物而言,对我来说感觉更干脆。看看工厂化农场内部,你要么把那个现实拒之门外,要么承认它并弃权。(正如许多人会指出的,实际上也没那么简单,但你明白我的意思。)AI 并不能那么干净地解决这个问题,至少对我来说不能。它是 Lamott 所说的虚假对立之一。

我希望看到一个 AI 被负责任地使用和构建的世界,我们不会一头栽进恶化或更糟的境地。我的直觉是,这意味着要更深入参与,而不是把头埋进沙子里,嘲笑初级开发者 DeStRoYiNg 编程。

Stick-figure comic. A person tells their computer "build a crappy SAAS." The monitor answers "HERE IS YOUR CRAPPY SAAS." The person, flatly: "oh my god."

决心 #

这算不上什么结论,但这就是我目前的立场。我决心保持内省,实事求是,寻找数据,并保持开放的心态。

我保留改变主意的权利。此刻,我感到矛盾而好奇。

矛盾,是因为围绕AI的包装、对其商品化的痴迷,以及当我们紧随目睹社交媒体造成的破坏之后,又一头扎进一项技术时,隐约逼近的动荡社会影响。因为环境和社区影响,以及前沿实验室对正在被提出的法律和伦理困境普遍漫不经心的摆手态度。

好奇,是因为我——也许是天真地——对负责任、有纪律地使用LLM进行构建会是什么样子感到乐观:这种使用不会把满足感外包出去,也不会导致倦怠和冷漠。这种使用不会对10,000行代码视而不见并草草盖章通过。

“不,不,它本该就是这种感觉。”

谢谢你,爸爸。

  1. 如果你是Brad,谢谢你。↩

  2. 我知道我会落入这个俗套,但我已经做了将近二十年的伦理素食者。我不可能为每一座山头而死,但我选择为之而死的那几座,我会尽量认真对待。↩

  3. 哦!不只是我这样。现在也有行业规模的数据了,我会谈到其中一些。但这篇文章主要是关于感受的。↩

  4. 或者我会去问我爸,效果参差不齐。他是“儿子,你赢了吗?”这个梗的化身。↩

  5. 一本巧妙地伪装成“写作建议”的书,实际上是Anne在解释:为了做你想做的那件有趣的事,你会创造性地螺旋坠入深渊,出来时眼睛变成触手,但这一切都会值得的相信我兄弟。↩

  6. 我,呃,承认用打铁这个残留职业作类比有那么一丁点讽刺。↩

  7. 我想强调,我的观点不是要把质量工程或分析整体交给AI。它只是一个高杠杆工作的例子,而这种工作在一个组织里(往往)成本高昂/被忽视。衡量自己并复核结果仍然有价值!但我不会比LLM更快地解析数千行日志或拆解HAR文件。有用的技能,但它不是我所感兴趣的那个技能。因人而异。↩

  8. 参见:衡量,恐怖……↩

  9. DX追踪AI在数百个工程组织中的影响。注意,他们销售开发者生产力衡量工具,而他们的客户偏向于已经在开发者体验上投入的组织。

    吞吐量数字来自他们对400多个组织为期16个月的研究。AI采用率上升65%,PR吞吐量中位数上升略低于8%。其余数据来自他们的2026年第二季度报告。开发者报告每周节省约6小时(高于一年前的约3小时),但花在新工作上的时间占比几乎没有变化(57%到58%)。PR大小中位数从大约42行增至72行。他们的开发者体验指数首次下降,从67降至65,受本地迭代速度、增量交付和评审周转拖累。代码可维护性上升3.8%,而变更信心下降6.1%。好的一面是,文档和入职引导有所改善,较小的组织(15到99名工程师)正在超过大型组织。↩

  10. 对于艺术和任何创意性的事物来说,这一点加倍成立。使用 AI 就是按下简单模式按钮,而如果行为本身才是重点,把它外包出去恰恰剥夺了这一点。Brandon Sanderson 在这次演讲中说得最好:“我们就是艺术。” ↩

来源:Hacker News · wlls.dev