跳到正文
Hacker News· speckx·· 1 天前AI 评分22

一位工程师回顾 ChatGPT 到 Claude Opus 的编程工作变迁

My old job feels distant now

AI 导读

一位工程师回顾自己从 ChatGPT 到 Claude Opus 4.5/6 的编程方式演变:早期用 ChatGPT 复制粘贴代码、在 Cursor 中做 Tab 补全,随后转向 Claude 的智能体式编程。到 Opus 4.5/6 阶段,任务描述粒度与人工干预时间明显下降,按数月已合并 PR 衡量生产力约为原来的 3 倍,PR 审查成为新瓶颈。

正文 · AI 翻译

2026年10月15日 人类撰写 1c939998

Pumpkin on top of Rattlesnake Ledge
响尾蛇岩顶上的南瓜

我几乎记不清第一次体验ChatGPT的情形了。它已经如此深入地融入我的职业生涯,以至于要回想最初的那一刻,或那些时刻,都很困难。留下的只是几个模糊的片段。某个时候,我意识到它是一个更好的谷歌。这非常像当年Stack Overflow兴起时,谷歌搜索编程话题的结果从毫无用处变得有用的过程。没有结果反而意味着“你用错了”的时刻。我记得摆弄过它,然后记得Bryan一直唠叨我“你问ChatGPT了吗?”,让我烦得不行。直到我不再烦了,而那成了我的默认起点。

下一个阶段很快就来了。我开始复制粘贴代码;通常是我懒得手写的Ruby测试。我会描述惯用法,或者粘贴一些示例代码加上我的新需求,让它吐出代码。这比在IDE里敲代码快多了,那个IDE没有我习惯的、在真正的强类型语言里那种代码补全功能。抱歉,我一直讨厌写Ruby。也许我最终会像那些Rails爱好者一样写得很快。但我无法想象那样的未来,而ChatGPT提供了一个逃生舱。我职业生涯中最早使用的五六种语言,我都以某种方式学会并爱上了它们,用起来很高效。但我已经到达了极限,现在觉得有理由推迟更好地学习它了。

接下来的时刻成对出现:Tab补全和在新领域使用复制粘贴。Tab补全更自然。有时有用,有时没用。它的关键之处在于集成到了我已经熟悉的IDE中,也就是vscode——分叉成了Cursor。它能做的只是接续我留下的模式;我很少甚至从未依赖过它的智能或实际建议。

对于真正的建议,我仍然在复制粘贴ChatGPT。但这次不同了。以前它只是一个更复杂的自动补全。现在我在一个新领域将谷歌搜索和代码生成融合在一起:Python计算机视觉。我转到了一个临时的视觉项目(新物体的边界和对齐);我对这个一无所知。我以最快的速度“搜索”,把回应提示成代码。这是我最喜欢的阶段之一,在后来Opus模型那种废话连篇之前。ChatGPT会以我喜欢的方式吐出代码。有时我只需要一点提示,一个特定的API或一行代码片段。向它倾倒一堆话,然后拿回一行,往往还附带着我要求的俏皮嘲讽。我会在Jupyter notebook里运行代码,然后修修改改,生成可视化、点和图表;同时学习API和领域知识,一边构建东西。 这也是我接触幻觉最多的时候,并发现它们多么容易被发现和处理。对我来说,这成了ChatGPT知道什么和不知道什么的信号;幻觉出现在边界处,轮到我填补空白,弄清楚那些文档较少、或者可能是我们用例独有的东西是如何工作的。有时进展缓慢,但然后我几乎无法想象没有它就能如此迅速地投入一个计算机视觉项目并交付成果。这是一个令人愉快的未来;更多是关于消除SEO垃圾和弱类型语言(更依赖好文档)中写得糟糕的文档,而不是我放弃控制权的未来。

接下来是智能体编程。我至今仍清楚记得在那段时间读到“Snorting the AGI”和Karpathy 那句著名的调侃,并感到有些惊讶。这些人到底在说什么?但慢慢地,我学会了从 Tab 补全转向智能体提示。现在用的是 Claude,但同样像我在 ChatGPT 上的那些时刻一样,我学会了认识它的局限并在局限内工作;慢慢改进我的提示,越来越清楚它能做什么、不能做什么。看着人们经历这个过程让我觉得有趣;冗长啰嗦的提示,更像是愿望清单,但又显得陌生,因为他们懂得如何编程。这与其说是技能,不如说是领悟如何在它的边界内工作;尽管他们的工作方式在某种意义上比我更早预见了未来。“给 Tasks.tsx 详情页添加日期排序;使用 shell 系统,参见 components/Shells.tsx,详情模仿 Research.tsx,测试参考 Users.spec.tsx;遵循社区惯例而非我们自己的,避免 mock,使用 stubs.spec.tsx 模式”。

有一天我抬起头,意识到我的提示方式不再是一个有趣的技巧,而是我现在工作的主要方式。代码库仍然完全在我脑中;每一行都经过审查。更多的 PR 导致请求修改或我自己动手修改。生产力提升了不少,尽管这至少部分是因为我从自己最终并不喜欢的代码中解脱出来。Tab 补全很少用了。智能体流程感觉既强大、有用,又同时受限。我仍然需要告诉它该做什么,如果有什么棘手的地方,就自己动手。

然后 Opus 4.5/6 出现了。描述这一转变会让它听起来比实际更微妙。但突然间,我描述任务所需的粒度,以及我花在手动引导它们上的时间,都下降了。我的生产力从略好提升到大约 3 倍(根据几个月合并的 PR 衡量)。功能和打磨程度都提高了,我们在选择发布什么时不再需要那么受限。我脑中的想法全部倾泻而出,慢慢变成现实。但约束仍然存在;PR 正在成为瓶颈。代码库仍然完全在我脑中,各行仍然大多经过审查。我变得更擅长扫读。我开始觉得使用标准库、组件、模式更加重要,因为它让你能够有效地忽略大多数代码变更——只要它们在正轨上,损害就是有限的,重构也容易。寻找更重要的部分。那些包含我们业务独有业务逻辑的部分。那些处理需要人工审视的客户数据的部分。那些可能不可逆地出问题的部分——数据库变更、加密等。这份工作仍然可以理解,仍然令人愉悦。现在几乎完全是我从重要的东西出发思考——架构、迁移计划、关键业务逻辑、系统的目的、保护数据和访问。所有机械无聊的部分都消失了。

在 Opus 5 的推进过程中,更引人注目的是那些平淡无奇的细节。我能感觉到每个模型都更好了。代码在每一轮中缓慢地变好。需要修正的地方更少。有时它现在还会纠正我。但这一阶段更多关乎成本。以及它变得多么啰嗦。慢慢地我开始讨厌与 Opus 打交道,并短暂转向了 ChatGPT。在我使用它的场景中,这些模型几乎一样好,很多时候不相上下。但便宜得多,更自主,也更不啰嗦。我不信任 OpenAI,因此对它抱有偏见,即使它的某些部分更好(它的界面、语音聊天等)。只要 Anthropic 的编码模型几乎一样好——而且在 ChatGPT 5.5 之外它通常更好——我就愿意回去。鉴于利害攸关,我确信 Anthropic 会解决大段文字的问题——毕竟那是我的工作。

然后 Opus 5.5 发布了。我再次感到僵住了,归零。我花大量时间在推特上,看人们在捣鼓什么。为之惊叹;试图理解它。我们再次学习和适应。我的工作方式再次改变。智能体编码是……不同的。告诉模型该做什么,然后检查它的结果……我需要提升。我需要在什么层面上运作?我构建更有雄心的副项目。我复制我在一条很酷的推文里看到的东西,并尝试一次搞定。我收集了大量垃圾,并产出大量垃圾,比平时还多。常常感觉像是废话;但收集想法本身就很有趣。

A unified activity feed to more quickly see the bots commits and notes across all my projects
一个统一的活动信息流,以便更快地查看机器人跨我所有项目的提交和笔记

我开始基于计划工作。不是旧的那种,我会先规划工作,然后分阶段实现。相反,我不再考虑我想做的代码审查。我考虑我想做的 QA。我想——这个应用能走多远,才会让倒退变得更费劲?架构决策是可逆的。如果我不确定 UI 应该长什么样……我就让它多做一些。如果我有三个相似的想法,就把三个都做出来。我能把它拆成一个单独的 HTML 页面吗?

I have Claude dump its plan, progress, and overall project notes into my notes app(s); sometimes I work from these rather than the chat now
我让 Claude 把它的计划、进度和整体项目笔记倾倒进我的笔记应用;有时我现在基于这些工作,而不是聊天记录

我生成更多工件,现在有数据支撑。我把它们变成 AI 可以用来追踪其工作状态和历史的工具;也是我可以用来可视化其进度的工具。漏洞报告分批修复;我看着带有关键时刻标记的燃尽图。如果我担心性能影响;我就让它也监控性能。我把更多工作移入“子智能体”,并让一个监督者居于其上,以便看到全貌。我开始思考我需要规定什么层面的架构,或者我应该转而关注什么样的结果。它会有漏洞吗?我能不能仅仅让另一个模型尝试利用它们来找出答案;报告其结果,并让模型们协调来加固设计?

Metrics dashboards can be combined with activity tracking and state management; both the LLM and human can make use of it
指标仪表盘可以与活动追踪和状态管理相结合;LLM 和人类都可以利用它

我希望 UI 反应敏捷。我过去常常用 observables 和其他优化偏好来口述需求——有时仍然如此。但我也可以仅仅添加约束——图像应在 15ms 内处理完成 按键 <enter>。哦,糟糕——我本来想写 150ms,但……哦……我想我们就看看模型能不能做到吧?哇。我意识到……我需要重新评估我认为可能和不可能的事情。我提示模型探索把我的 Electron 笔记应用迁移到 iPhone,终于。原生 Swift,重写任何我们想要的部分。我想我在构思,按下回车然后离开。几个小时后,我在手机上查看新闻,被一个(基本的)可运行应用打断,它是通过网络安装的,这样模型就能让我对它进行 QA。它用掉了我 20 美元订阅的 5 小时限额的 40%。它功能还不完整,但它能用了?我用导入器导入了所有笔记……看起来很棒。我盯着屏幕发呆了好一会儿。

一切又都天翻地覆了。我思考未来。但我在当下工作。我的工作方式又在改变;我们只能适应。如果我忘掉恐惧,反而会变得非常兴奋。越快放下过去的工作方式,转而拥抱现在的方式,就越能感到充满力量。随着代码推进得越来越快,我如何继续理解它?我想出新的指标、新的仪表盘。我更深入地思考设计中最重要的部分以及约束是什么。那才是唯一值得关注和投入精力的地方。我思考构建帮助我理解的工具,以及供模型使用的工具。用来更快迭代想法的工具;用来产生新想法、混合搭配旧想法的工具。用来更好地发现别人在做什么、思考事物如何互操作并尝试构建的工具。

而当我浮出水面喘口气时,我惊讶于事情变化之大。模型变化之快。然而,我们也在改变,并继续适应新的工作方式。旧工作方式的许多东西,我怀念。许多东西我不怀念。旧的工作方式感觉就像昨天;但也感觉正在渐行渐远。

来源:Hacker News · pinecoder.dev