原文: https://mitchellh.com/writing/my-ai-adoption-journey[1]
译者: Fermi@dscli 修订
我采用任何有意义的工具,都必然经历三个阶段:(1)低效期,(2)够用期, 最后(3)工作流和人生为之改变的发现期。
多数时候,我得逼自己熬过前两个阶段,因为我通常已经有一套满意、舒服的工 作流。学新工具像干活,我 不想 费这个劲——但为了在自己的手艺上做个全面 的人,我通常还是会去做。
这篇文章,就是我在 AI 工具中寻找价值、并决定下一步试什么的旅程。在满屏 夸张和炒作的噪音里,我希望这篇东西能代表一种更细致、更节制的声音——记 录我对 AI 的看法,以及这些看法如何随时间变化。
这篇博客完全是我亲手写的,用自己的话。我不喜欢专门声明这个,但鉴于主题 特殊,我想说清楚。
第一步:扔掉聊天机器人
立刻停止用聊天机器人(比如 ChatGPT、网页版 Gemini 等等)做正经工作。聊 天机器人确实有价值,也是我每天 AI 工作流的一部分,但它们在编程上的效用 非常有限——你基本上是在赌它凭训练数据碰出正确结果,而纠正它需要一个人 (你)一遍遍告诉它"不对"。效率太低。
我想每个人第一次接触 AI 都是聊天界面。每个人第一次尝试用 AI 写代码,也 都是让聊天界面写代码。
当时我还是个深度 AI 怀疑论者,我的第一个"哇"时刻,是把 Zed 的命令面板 截图贴进 Gemini,让它用 SwiftUI 复现——它做得 非常好 ,我彻底懵了。今 天 Ghostty 在 macOS 上的命令面板,跟 Gemini 几秒钟给我生成的东西相比, 只做了极轻微的修改。
但当我试图在其他任务上复现这种体验时,失望了。在存量项目里,聊天界面产 出的结果经常很差,而我在界面之间来回复制粘贴代码和命令输出,极其让人沮 丧。显然,这比我自己动手做效率低得多。
要找到价值,你 必须 用 智能体(agent) 。智能体是业界采用的术语,指 能聊天并在循环中调用外部行为的大语言模型1。最低要求,智能体必须能: 读文件、执行程序、发 HTTP 请求。
第二步:复现你自己的工作
旅程的下一阶段,我试了 Claude Code[2]。直说吧:我一开始没觉得多厉害。会话里 就是拿不到好结果。它产出的每样东西我都得修,这个过程花的时间比我自己做 还多。我读博客、看视频,就是不太服气。
我没有放弃,而是 强迫自己用智能体提交去复现我所有的手动提交 。我真的把 每件事做了两遍。先手动做完,然后跟智能体死磕,要它在质量和功能上产出完 全相同的结果(当然,它看不到我的手动方案)。
这个过程 极其煎熬 ,因为它直接挡在了"把事做完"的路上。但我跟非 AI 工 具打过足够多年交道,知道摩擦是正常的——不把力气耗尽,得不出一条站得住 的结论。
然后,内行眼力就练出来了。我很快从第一性原理自己发现了别人已经在说的东 西——但自己发现,带来的底层理解更坚实:
1.把会话拆成独立、清晰、可执行的任务。别试图在一个超大会话里"一笔画 出猫头鹰"。2.对模糊需求,把规划和执行拆成两个独立的会话。3.给智能体一套验证自己工作的方法,它多半会自己修好错误、防止回退。
更宽泛地说,我也摸到了智能体——当时那个阶段——擅长什么、不擅长什么, 以及对于它擅长的任务,怎么拿到我想要的结果。
这一切带来了显著的效率提升,以至于我开始自然地使用智能体,感觉不比自己 做慢(但也不觉得更快——因为我主要是在"看孩子")。
反面教训值得再说一遍:效率提升的一部分,是理解了什么时候 不该 找智能体。 让智能体做它大概率失败的事,显然是巨大的时间浪费,而拥有这种判断力,本 身就是省时间2。
这个阶段,我在智能体身上找到了足够的价值,很乐意在工作中使用它们,但仍 然没觉得有净效率提升。不过我不在乎——到这个份上,我对 AI 作为一种工具 已经满意了。
第三步:下班前的智能体
为了再挖出一些效率,我开始了新模式: 每天留出最后 30 分钟,启动一个或 多个智能体 。我的假设是, 也许 在我反正没法工作的时间里,智能体能做出 一些 正向进展 ,我就能白捡一些效率。基本逻辑:不是在"有的时间"里做更 多,而是在"没有的时间"里做更多。
跟之前一样,我一开始觉得既不成功又烦人。但很快又发现了真正有用的几类工 作:
•深度研究会话 :让智能体调研某个领域,比如找出某种语言下、某种许可证 类型的所有库,为每个库产出多页摘要——优缺点、开发活跃度、社区口碑, 等等。•并行智能体尝试我那些模糊的想法 :有些想法我有,但没时间真的上手。我 不指望它们产出能发布的东西,但也许能在我第二天真正动手时,照亮一些 "未知的未知"。•Issue 和 PR 的分诊/审阅 :智能体擅长用 gh (GitHub CLI),所以我手动 写了个快速脚本,并行启动一批智能体去分诊 issue。我 不 允许智能体回复, 我只要第二天的报告,帮我聚焦高价值或低成本的任务。
要说清楚,我没像有些人那样让智能体整夜循环运行。多数情况下,智能体不到 半小时就完成了任务。关键在于,工作日的后半段,我通常很累,从心流里退出 来,个人效率很低——把精力转到启动这些智能体上,反而给了我第二天早上的 "热启动",让我比原本更快进入工作状态。
我挺高兴的,开始觉得比 AI 之前做得更多了——哪怕只多了一点点。
第四步:把十拿九稳的事外包出去
到这个阶段,我对 AI 擅长什么、不擅长什么已经很有把握了。对某些任务,我 有极高的信心——AI 能产出基本正确的方案。所以我旅程的下一步是: 让智能 体做所有这些事,而我去做其他任务 。
具体来说,我每天先看前一晚分诊智能体的结果,人工筛出智能体几乎肯定能做 好的 issue,然后让它们在后台跑着(一次一个,不并行)。
与此同时, 我做别的事 。不是去刷社交媒体(没比不用 AI 时多多少),不是 看视频。我处于自己正常的、AI 之前的深度思考模式,做我想做或必须做的事。
这个阶段非常重要:关掉智能体的桌面通知 。上下文切换的成本极高。为了保 持效率,我发现——作为人,我的职责是掌控什么时候去打断智能体,而不是反 过来。别让智能体通知你。在工作自然间隙,切过去看一眼,然后继续。
重要的是,我认为「做别的事」有助于对冲那篇广为流传的 Anthropic 技能形成 论文[3]。嗯,你在做取舍:委托给智能体的任务,你不形成技能;继续手动做的任 务,你自然地形成技能。
到了这里,我已经坚定地进入了「回不去了」的领域。我感到更有效率,但就算 没有——我最喜欢的一点是,我可以把自己的编码和思考聚焦在真正热爱的任务 上,同时那些不喜欢的任务也能充分完成。
第五步:造好护栏
说个明摆着的事:智能体第一次就产出正确结果——或者最差也只产出仅需微调 的结果——效率要高得多。实现这点最稳妥的办法,是给智能体快速、高质量的 工具,让它自动知道自己错了。
我不知道业界有没有广泛接受的术语,我自己管这个叫「护栏工程(harness engineering)」。意思是:任何时候你发现智能体犯了错,你就花时间设计一个 方案,让智能体 再也不会 犯同样的错。我不需要发明新词——如果有现成的, 我一定跟。
具体分两种:
1.
更好的隐式提示(AGENTS.md) 。对于简单问题,比如智能体反复运行错误 的命令、找错误的 API,更新 AGENTS.md (或等效文件)。这是Ghostty 的例子[4]。 那个文件里的每一行,都来自一次智能体的不良行为——而它几乎完全解决了 所有这些问题。
真正的编程工具 。比如截图脚本、过滤测试运行的脚本,等等。通常会和AGENTS.md 的改动配套,让智能体知道这些工具的存在。
这就是我目前所处的阶段 。每当我看到智能体做了一件坏事,我就认真努力地 防止它再做那件坏事。反过来也一样——我认真努力地让智能体能验证自己在做 好事。
第六步:始终跑着一个智能体
与第五步同步,我还在追求一个目标: 始终跑着一个智能体 。如果智能体没在 跑,我会问自己:「现在有什么是智能体可以替我做的?」
我特别喜欢把这个跟更慢、更深思熟虑的模型结合起来,比如 Amp 的deep mode[5](基本就是 GPT-5.2-Codex),做小改动都能花上 30 多分钟。但另 一面是,它确实倾向于产出非常好的结果。
我还没(目前也不想)并行跑多个智能体 。我觉得跑一个智能体,对我现在来 说是个很好的平衡——既能做我觉得享受的深度手动工作,又能照看我那个有点 蠢、却又神秘地高产的朋友。
「始终跑着一个智能体」目前还只是一个目标。我会说,现在我大概能在一个正 常工作日里让后台智能体有效运行 10% 到 20% 的时间。但我在积极改进这一点。
我不想为了跑智能体而跑智能体 。我只在想,有一个我认为对我真正有帮助的 任务时才跑。这个目标的部分挑战在于,改进我自己的工作流和工具,让我能有 源源不断的高质量任务可以委托出去。这一点——即使没有 AI——也很重要!
今天
这就是我目前的状况。
通过这段旅程,我个人已经到了一个点:在现代 AI 工具上取得了成功,并且我 相信自己正以一种立足现实、恰如其分的态度对待它。我其实不在乎 AI 会不会 留下来3——我是一个软件工匠,想写东西,只是因为爱这门手艺。
整个领域变化太快了,我确信很快回头看这篇文章,会嘲笑自己的天真。但就像 人们说的,如果你不能对过去的自己感到尴尬,你大概没有在成长。我只希望自 己往对的方向成长!
我在这件事里没有利害关系4,当然,除了效用之外也有其他理由选择不用 AI。我完全尊重每个人在这上面的个人选择。我不是来说服你的!对那些感兴趣 的人,我只是想分享我个人驾驭这些新工具的方法,也展示一下我 总体上 怎么 对待新工具——不管是不是 AI。
Footnotes
1 现代编程模型如 Opus 和 Codex,相比对话模型,经过专门训练倾向于使用工具。
2 由于模型创新的速度极快,我必须不断重新审视这方面的既有判断。
3 不过,技能形成的问题——尤其是在基础不扎实的初级开发者身上——让我深感担忧。
4 我不在任何 AI 公司工作、投资或担任顾问。
References
[1]: https://mitchellh.com/writing/my-ai-adoption-journey[2] Claude Code: https://github.com/anthropics/claude-code[3] Anthropic 技能形成 论文: https://www.anthropic.com/research/AI-assistance-coding-skills[4] Ghostty 的例子: https://github.com/ghostty-org/ghostty/blob/ca07f8c3f775fe437d46722db80a755c2b6e6399/src/inspector/AGENTS.md[5] deep mode: https://ampcode.com/news/deep-mode
夜雨聆风