跳到正文
原文
Hacker News· speckx·· 4 小时前精选AI 评分34

从 ChatGPT 到 Opus 5.5:一位程序员的 AI 编码工作流复盘

My old job feels distant now

AI 导读

程序员 speckx 在个人博客中回顾从 ChatGPT、Cursor 到 Claude Opus 5.5 的工作流变化,自述从手写代码逐步转向 agent 编程与结果监督,到了 Opus 4.5/6 阶段,他按几个月合并 PR 数据测算的个人生产力约提升 3 倍。

推荐理由

作者按时间顺序记录 ChatGPT 到 Claude Opus 5.5 带来的工作流变化,为理解 agent 编程阶段的真实体感提供亲历参照。

正文 · AI 翻译

Oct 15, 2026 人工撰写 1c939998

Pumpkin on top of Rattlesnake Ledge
南瓜在响尾蛇岩顶部

我几乎记不清第一次接触 ChatGPT 是怎样的感受。它已经完全融入我的职业生活,以至于很难回溯最初的那一刻,或那几个瞬间。取而代之的是几个模糊的瞬间。在某个时刻,我意识到它是一个更好的 Google。这和 Stackoverflow 走红时的情况非常相似:当时编程相关的 Google 搜索结果从毫无用处变得有用,搜索没有结果反而意味着一个"你使用方法不对"的时刻。我记得摆弄过它,然后记得 Bryan 一直唠叨我"你问 ChatGPT 了吗?",让我不胜其烦。直到我不再反感,而它也成了我默认的起点。

下一阶段很快到来。我开始复制粘贴代码;通常是我不想亲手写的 Ruby 测试代码。我会描述那些惯用法,或者粘贴一些示例代码加上我想要的新行为,让它把代码吐出来。这比在一个没有按我习惯的方式启用代码补全的 IDE 中键入要快得多——那种方式是我在真正的强类型语言中所熟悉的。抱歉,我一直讨厌写 Ruby。也许我最终会像 Rails 的拥护者那样写得很快。但我无法想象那样的未来,而 ChatGPT 提供了一条退路。我职业中用过的前 5 或 6 种语言,我以这样或那样的方式学会了热爱它们并高效使用。但我触及了自己的极限,现在觉得推迟学好它是合理的。

接下来的时刻成对出现:Tab 补全,以及在一个新领域使用复制粘贴。Tab 补全更自然一些,有时有帮助,有时没有。它的关键之处在于它如何被集成到我已熟悉的 IDE 中——vscode 被分叉成了 Cursor。它基本上只能拾起我放下的那些模式;我极少甚至从未依赖它的智能或真正的建议。

为了真正的建议,我仍在复制粘贴 ChatGPT。但这已有所不同。在此之前它仅仅是一个更复杂的自动补全。现在我在一个新领域中融合了 Google 搜索和代码生成:Python 中的计算机视觉。我转去做一个临时的视觉项目(新物体的边界和对齐);对此我一无所知。以我能够"搜索"的速度,我把我的回答提示成了代码。这是我最喜欢的阶段之一,早于后来的 Opus 模型的"词海"泛滥之前。ChatGPT 会按我喜欢的方式吐出代码。有时我只需要一个小小的提示、一个特定的 API 或一行代码片段。向它"倾倒"问题,得到一行回复——通常还配着我要求的俏皮嘲讽。我在 Jupyter notebook 中运行它,执行代码,然后琢磨修改,生成可视化结果、点和图形;在构建东西的同时学习这些 API 和这个领域。 这也是我最频繁遇到幻觉的时段,并且发现它们其实很容易察觉和处理。对我而言,这成了 ChatGPT 知道什么、不知道什么的信号——幻觉出现在边界处,而轮到我来填补空白,搞清楚那些文档较少、或可能对我们用例而言独特的东西是如何运作的。进展有时很慢,但我很难想象如果没有它,还能跳进一个计算机视觉项目并这么快地交付东西。这是一个令人愉悦的未来;它更多关乎消除 SEO 垃圾内容和写得糟糕的无类型语言文档(这些语言更依赖好的文档),而不是关乎我正在放弃控制权。

接着很快就出现了智能体编程(agentic programming)。我至今仍清楚地记得那时读到"Snorting the AGI"和Karpathy 那句名言时的情景,并对此感到有点惊讶。这些人在说什么?但慢慢地,我学会了从代码补全转向智能体提示。现在用的是 Claude,但又像我当初接触 ChatGPT 时那样,我学会了认清它的局限并在这些局限之内工作;逐步打磨我的提示,更高效地了解它能做什么、不能做什么。看着人们摸索这个过程,我觉得很有意思:啰嗦冗长的提示,更像是愿望清单,却又显得陌生——毕竟他们懂得如何编程。这与其说是技术问题,不如说是领悟如何在其边界内工作;不过他们的工作方式在某种意义上比我的更具有前瞻性。"为 Tasks.tsx 的详情页添加日期排序;参照 shell 系统查看 components/Shells.tsx,模仿 Research.tsx 的详情和 Users.spec.tsx 的测试;遵循社区惯用法而非我们自己的,避免使用 stubs.spec.tsx 模式中的 mock。"

有一天我抬起头来,才意识到提示已经不是一种有趣的把戏,而成了我现在主要的工作方式。代码库仍然完整地装在我脑子里,每一行都审过。越来越多的 PR 最终要么被打回,要么由我自己动手改。生产力有了相当可观的提升,虽然这至少有一部分是因为我终于摆脱了去写那些我并不喜欢的代码。代码补全已经很少用了。智能体流程给人的感觉是既强大、有用,又受限于此。我依然需要告诉它该做什么,而如果任务稍有棘手,就得自己动手。

然后 Opus 4.5/6 出现了。把这种转变描述出来,听起来比实际微妙得多。但突然之间,我描述任务所需的粒度,以及我手把手引导它们所花的时间,都骤然下降了。我的生产力从"略好一些"跃升到大约 3 倍(按几个月合并 PR 的数据衡量)。功能的丰富程度和完成度都上去了,不必再对我们选择交付的内容束手束脚。我脑中的想法源源不断地流淌出来,一点一点化为现实。瓶颈依然存在,但变成了 PR 本身。代码库仍然完整地装在我脑子里,代码行也大多过过目。我的扫读能力变得更强了。我开始越发觉得,使用标准库、标准组件、标准模式甚至更加重要,因为这样你就能有效地忽略大部分代码变更——只要它们在正轨之内,损害就是有限的,重构也是轻松的。聚焦到更重要的部分。聚焦到那些承载着我们独有业务逻辑的部分。聚焦到那些处理客户数据、需要人工把关的部分。聚焦到那些一旦出错便不可逆的部分——数据库变更、加密,等等。这份工作仍然是可以理解的,仍然令人愉快。它如今几乎完全变成了这样:我只在思考那些真正重要的事——架构、迁移方案、关键业务逻辑、系统的目的、保护数据与访问权限。所有那些机械而乏味的部分,都渐渐淡出了。

在 Opus 5 的迭代过程中,真正让我眼前一亮的反而是那些更平凡的部分。我能看出每个模型都在变好。每一轮下来,代码都慢慢变得更好。需要修正的地方越来越少,有时候它反过来会纠正我。但这个阶段更多是在讲成本,以及它变得多么啰嗦。我慢慢开始厌倦和 Opus 打交道,曾短暂地转去用 ChatGPT。在我使用的那些场景里,那些模型几乎一样好,常常不相上下。但便宜得多、更自主,也没那么啰嗦。我不信任 OpenAI,因此对它抱有偏见,哪怕它的某些部分确实更好(界面、语音聊天等)。只要 Anthropic 的编码模型几乎一样好——而且除 ChatGPT 5.5 之外它通常更好——我就能接受再回去。考虑到这事的份量,我确信 Anthropic 会解决文字墙的问题——毕竟这本来就是我的活儿。

然后 Opus 5.5 发布了。我又一次感到停滞不前,停在原地。我在 twitter 上花大量时间,看看人们在搞些什么。为之惊叹;试图去理解它。我们再一次学习和适应。我的工作方式再一次改变。智能体编程……不一样。告诉模型要做什么,然后检查它的结果……我需要提升。我需要在什么层级上运作?我构建更有野心的副业项目。我复制那些有趣的推文里看到的东西,尝试一次性搞定。我收集了大量废料,也 产生了大量废料,比平时更多。很多时候感觉像是胡言乱语;但收集点子本身还是有趣的。

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%。它功能并不完整,但能用?。我用 importer 导入所有笔记……看起来很棒。我对着屏幕愣神了好一会儿。

一切再次颠倒过来。我思考未来。但我在当下工作。我工作的方式又在变化;我们必须适应。如果我抛开恐惧,我反而会变得非常兴奋。越快放下我过去的工作方式,转而拥抱现在的工作方式,就越感到充满力量。代码迭代得越来越快,我要如何继续理解它?我想出新的指标、新的仪表板。我更深入地思考设计中最重要的部分以及约束条件。那是唯一值得关注和投入精力的地方。我思考构建工具来帮助我理解,以及供模型使用的工具。用来更快地迭代想法的工具;用来产生新想法、混合搭配旧想法的工具。用来更好地发现其他人在做什么、思考事物如何互通,并尝试构建这种互通性的工具。

当我喘口气抬头时,我惊讶于变化之大。模型变化得如此之快。然而,我们也已经改变,并继续适应新的工作方式。旧工作方式的许多方面,我怀念。许多我不怀念。旧的工作方式感觉就像昨天;但同时又感觉正在渐渐远去。

来源:Hacker News · pinecoder.dev