
今天大力推荐 Mitchell Hashimoto 总结自己超过 2 年使用 AI 开发经验,原文地址在这里:
https://mitchellh.com/writing/my-ai-adoption-journey
先介绍 Mitchell Hashimoto 是谁(如果已经知道的,麻烦自行跳过),他是另外一位财富自由退休后复出的开发者,他在 2025 年推出了自行开发的终端 Ghostty,上线就爆火,我称之为 macOS 下最优美的终端。
我个人也非常喜欢他的 X 上的内容,之前他分享他是怎么决定开发一个功能的,对我也非常有启发。今天他写的这篇介绍自己的 AI Coding 的经验,我也认为同样精华。
很多人用了一周 AI 编程工具,觉得”还没我手快”就放弃了,但 Mitchell 用亲身经历告诉你:这种”不如手工”的感受是完全正常的,甚至是必然的。
他说任何有意义的工具采用都必然经历三个阶段——先是低效期,然后足够期,最后才是颠覆期。
大多数人死在第一阶段,因为他们期待的是”一用就爽”,但实际上你必须强迫自己度过前两阶段。
Mitchell 甚至用了一个很重的词”force myself through”,因为他深知自己已有的 workflow 很舒适,新工具初期一定会让你不舒服。
这个洞见的价值在于,它彻底改变了你评估 AI 工具的时间尺度:不是一两周,而是一两个月。没有度过这个”痛苦期”就下结论,等于在健身房练了一天说”没效果”。
所有人的 AI 初体验都是 ChatGPT 网页版,所有人的第一直觉都是把需求丢进去让它生成代码,Mitchell 坦言他的”oh wow”时刻也是用 Gemini 网页版上传截图让它复现 UI。
但他说这是陷阱——在已有代码库中,聊天机器人的表现经常很差,你得不断复制粘贴、修正,最后发现”明显比我自己做还慢”。真正的答案是 Agent,也就是能读取文件、执行程序、发起 HTTP 请求的 LLM。
这个区分颠覆了我们对”AI 编程”的认知:Claude Code、Pi 这些才是正经干活的工具,ChatGPT 网页版只适合头脑风暴。如果你还在复制粘贴代码到网页版,你还没开始真正的 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 控制你。
针对 Anthropic 技能形成论文的担忧(过度依赖 AI 会导致技能退化),Mitchell 的解决方案不是”不用 AI”,而是当你在后台运行 Agent 做任务 A 时,你手动做任务 B。他
说你在做权衡:不为委托给 Agent 的任务形成技能,但在继续手工做的任务中自然形成技能。这个洞见的价值在于提供了一种可持续的 AI 使用方式——不要试图把所有事情都丢给 AI,而是刻意保留一些你喜欢、需要深度思考的任务手工做,这样你既能享受 AI 的效率,又能保持核心技能的锐度。
Mitchell 提出了一个概念叫”Harness Engineering”:每当发现 Agent 犯错,就花时间设计一个解决方案,让 Agent 永远不再犯同样的错误。
这有两种形式:一是更好的隐式提示(AGENTS.md),针对简单问题(Agent 反复运行错误命令、找错 API),他举了 Ghostty 的例子说每一行都基于一个坏行为,几乎完全解决了所有问题;
二是实际的程序化工具,比如截图验证、运行筛选后的测试等脚本,同时更新 AGENTS.md 让 Agent 知道这些工具的存在。这个经验的价值在于它的长期 ROI——前期投入时间,后期 Agent 越来越”懂事”,AGENTS.md 不是一次性文档,是持续迭代的”错误日志”。
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 填补你的”时间空隙”。
“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
https://x.com/yibie/status/2019989993645830485
如果觉得这篇文章有帮助,还请麻烦转发,谢谢! https://t.co/cMZ3NUnxeU
