site

macOS 最美终端 Ghostty 开发者Mitchell Hashimoto 分享他如何用 2 年半的时间,顺利过渡到用 AI 开发

今天大力推荐 Mitchell Hashimoto 总结自己超过 2 年使用 AI 开发经验,原文地址在这里:

https://mitchellh.com/writing/my-ai-adoption-journey

先介绍 Mitchell Hashimoto 是谁(如果已经知道的,麻烦自行跳过),他是另外一位财富自由退休后复出的开发者,他在 2025 年推出了自行开发的终端 Ghostty,上线就爆火,我称之为 macOS 下最优美的终端。

我个人也非常喜欢他的 X 上的内容,之前他分享他是怎么决定开发一个功能的,对我也非常有启发。今天他写的这篇介绍自己的 AI Coding 的经验,我也认为同样精华。


顺利使用 AI,应当强迫自己度过难用的 2 个阶段

很多人用了一周 AI 编程工具,觉得”还没我手快”就放弃了,但 Mitchell 用亲身经历告诉你:这种”不如手工”的感受是完全正常的,甚至是必然的。

他说任何有意义的工具采用都必然经历三个阶段——先是低效期,然后足够期,最后才是颠覆期。

大多数人死在第一阶段,因为他们期待的是”一用就爽”,但实际上你必须强迫自己度过前两阶段。

Mitchell 甚至用了一个很重的词”force myself through”,因为他深知自己已有的 workflow 很舒适,新工具初期一定会让你不舒服。

这个洞见的价值在于,它彻底改变了你评估 AI 工具的时间尺度:不是一两周,而是一两个月。没有度过这个”痛苦期”就下结论,等于在健身房练了一天说”没效果”。

Chatbot 是陷阱,Agent 才是答案

所有人的 AI 初体验都是 ChatGPT 网页版,所有人的第一直觉都是把需求丢进去让它生成代码,Mitchell 坦言他的”oh wow”时刻也是用 Gemini 网页版上传截图让它复现 UI。

但他说这是陷阱——在已有代码库中,聊天机器人的表现经常很差,你得不断复制粘贴、修正,最后发现”明显比我自己做还慢”。真正的答案是 Agent,也就是能读取文件、执行程序、发起 HTTP 请求的 LLM。

这个区分颠覆了我们对”AI 编程”的认知:Claude Code、Pi 这些才是正经干活的工具,ChatGPT 网页版只适合头脑风暴。如果你还在复制粘贴代码到网页版,你还没开始真正的 AI 编程。

让 AI 学习最笨但最有效的方法——做两遍

Mitchell 刚用 Claude Code 时的感受和我们一样:没什么特别的,结果不好,修改 AI 产出的时间比自己做还长。

但他的做法极其反常识:他强迫自己做两遍——先手工做一遍,再不让 Agent 看到结果的情况下让它独立做一遍,然后对比。他说这很折磨人(”excruciating”),因为这妨碍了” simply getting things done”。

但通过这种摩擦,他从第一性原理摸索出了三个铁律:不要试图一个 mega session 画完猫头鹰,要拆成清晰可执行的小任务;

模糊需求要先开 planning session 再开 execution session;如果给 Agent 验证自己工作的能力,它大多会自己发现并修复错误。

这个经验的价值在于告诉我们:学 AI 工具没有捷径,必须经历这种”做两遍”的痛苦期,通过对比手工结果和 AI 结果,你能快速找到 Agent 的能力边界。

重要的不是”更快”,而是”在我没空的时候工作”

Mitchell 没有试图让 Agent 在自己工作的时候”更快”,而是每天最后 30 分钟启动一个或多个 Agent,让它们在你睡觉、吃饭、陪家人、已经疲惫不在心流状态的时候继续工作。

他明确说他没有让 Agent 通宵跑,大多数任务半小时内完成,但这个策略的核心是”instead of trying to do more in the time I have, try to do more in the time I don’t have”。

他发现的适合”End-of-Day Agents”的任务包括:深度研究(调查某个领域的所有库并生成多页分析)、并行探索模糊想法(开多个 Agent 尝试不同方向,不期待可发布代码,只为了”illuminate unknown unknowns”)、Issue 和 PR 的分类审查(用 gh CLI 脚本启动,不让 Agent 回复,只生成报告)。

这个洞见的价值在于重新定义了 AI 的最大价值——不是替代你的工作,而是利用你的”非工作时间”,给你第二天早上的”warm start”。

关掉通知,你控制节奏

当 Mitchell 识别出 Agent 的”稳赢任务”(几乎肯定能做好的任务)后,他会让这些任务在后台运行,自己做别的。

但这里有一个极其重要的细节:关掉 Agent 的桌面通知。

他说”Context switching is very expensive”,作为人类,你的工作应该是控制何时打断 Agent,而不是反过来。很多人让 Agent 每完成一步就通知,不断 tab 过去看,结果自己的工作被切成碎片。

Mitchell 的做法是让 Agent 安静运行,在你自然的休息间隙(比如刚写完一个函数)tab 过去看一眼,然后继续。这个经验的价值在于教会我们注意力管理——后台运行 Agent,但关掉所有通知,你控制节奏,不是 Agent 控制你。

对抗技能退化的方法不是不用 AI,而是保留手工作业

针对 Anthropic 技能形成论文的担忧(过度依赖 AI 会导致技能退化),Mitchell 的解决方案不是”不用 AI”,而是当你在后台运行 Agent 做任务 A 时,你手动做任务 B。他

说你在做权衡:不为委托给 Agent 的任务形成技能,但在继续手工做的任务中自然形成技能。这个洞见的价值在于提供了一种可持续的 AI 使用方式——不要试图把所有事情都丢给 AI,而是刻意保留一些你喜欢、需要深度思考的任务手工做,这样你既能享受 AI 的效率,又能保持核心技能的锐度。

Harness Engineering——让 Agent 不再犯同样的错误

Mitchell 提出了一个概念叫”Harness Engineering”:每当发现 Agent 犯错,就花时间设计一个解决方案,让 Agent 永远不再犯同样的错误。

这有两种形式:一是更好的隐式提示(AGENTS.md),针对简单问题(Agent 反复运行错误命令、找错 API),他举了 Ghostty 的例子说每一行都基于一个坏行为,几乎完全解决了所有问题;

二是实际的程序化工具,比如截图验证、运行筛选后的测试等脚本,同时更新 AGENTS.md 让 Agent 知道这些工具的存在。这个经验的价值在于它的长期 ROI——前期投入时间,后期 Agent 越来越”懂事”,AGENTS.md 不是一次性文档,是持续迭代的”错误日志”。

始终保持一个 Agent 在运行

Mitchell 的当前目标是”having an agent running at all times”,他甚至给自己设定了一个检查点:如果没有 Agent 在运行,就问自己”现在有没有什么是 Agent 可以帮我做的?”

他喜欢搭配慢速、深度思考的模型(如 Amp’s deep mode),虽然可能花 30 分钟以上做一个小改动,但产出质量很好。但他明确说他还没运行多个 Agent,目前也不想,一个 Agent 在后台运行是他能找到的最佳平衡点——既能做深度手工工作,又能”照顾”这个”有点蠢但又神秘地高效的机器人朋友”。

他坦承目前只有 10-20% 的时间有效保持后台 Agent 运行,但他强调”I don’t want to run agents for the sake of running agents”,目标不是 100% 时间都有 Agent 在跑,而是养成”有没有什么是 AI 可以做的”的习惯。这个洞见的价值在于它提供了一个可渐进的目标——不是为了用 AI 而用 AI,而是让 AI 填补你的”时间空隙”。

我喜欢的 3 个金句

“Instead of trying to do more in the time I have, try to do more in the time I don’t have.”

“Turn off agent desktop notifications. Context switching is very expensive. It was my job as a human to be in control of when I interrupt the agent, not the other way around.”

“I was firmly in the ‘no way I can go back’ territory… I could now focus my coding and thinking on tasks I really loved while still adequately completing the tasks I didn’t.”

文章头图来自 Mitchell 的 X

Thread

1

https://x.com/yibie/status/2019989993645830485

如果觉得这篇文章有帮助,还请麻烦转发,谢谢! https://t.co/cMZ3NUnxeU