My AI Adoption Journey

mitchellh.com

本文详细记录了作者 Mitchell Hashimoto 采纳 AI 工具的六个阶段。起初,作者对 AI 持怀疑态度,认为聊天机器人(如 ChatGPT)在复杂编程任务中效率低下。随后,他通过“强制复现自身工作”的极端练习,掌握了使用 AI Agent(智能体) 的技巧,学会了如何拆解任务和提供验证手段。

随着探索深入,作者开发出了“日终代理”模式,利用非工作时间让 AI 进行调研和琐事处理;并进一步演进到“外包稳赢任务”阶段,在自己处理核心难题时,让 AI 在后台异步处理简单确定的任务。为了提升 AI 的准确率,他提出了“框架工程(Harness Engineering)”的概念,通过编写 AGENTS.md 约束文件和专用工具来防止 AI 重犯错误。目前,作者的目标是维持一个“始终有 Agent 在运行”的工作流,将 AI 视为一个虽不完美但极具生产力的“机器人伙伴”。作者强调,这并非为了追逐热度,而是作为一名软件工匠在探索提升效率的新边界。


1. 从聊天机器人转向智能体 (Agent)

作者认为,初学者最容易犯的错误是试图通过网页聊天界面(如 ChatGPT 或 Gemini)进行编程。这种方式在处理全新项目(Greenfield)时可能令人惊艳,但在现有的复杂项目(Brownfield)中,频繁的复制粘贴和反复的人工纠错会导致效率远低于手动编写。 要获得真正的价值,必须使用 Agent(智能体)。Agent 与普通聊天机器人的区别在于它拥有“行动能力”:它能在一个循环中读取文件、执行程序并发送 HTTP 请求。只有当 AI 能够直接操作环境并根据反馈自我修正时,它才能真正融入开发工作流。

2. 通过复现自身工作来建立直觉

为了克服对 AI 的不信任,作者采取了一种“笨办法”:在完成一项手动开发任务后,强迫自己引导 Agent 重新实现一遍完全相同的效果。这种“做两次活”的过程虽然痛苦,却让作者摸索出了高效协作的三大原则:

  • 任务拆解:不要试图一次性完成宏大目标,要将其拆分为清晰、可执行的小任务。
  • 规划与执行分离:对于模糊的需求,先让 AI 制定计划,确认后再执行。
  • 提供验证手段:如果给 Agent 一个运行测试或校验结果的方法,它通常能自行修复错误。 这一阶段的关键在于建立“什么时候不该用 AI”的直觉,避免在 AI 必将失败的任务上浪费时间。

3. 利用非工作时间的“日终代理”

为了实现净效率的提升,作者开始在每天下班前的最后 30 分钟启动 Agent。这些 Agent 负责处理那些不需要实时监督的任务,例如:

  • 深度调研:搜集特定许可证的库,并生成优缺点对比报告。
  • 并行探索:对一些模糊的想法进行初步尝试,为第二天的开发扫清未知障碍。
  • Issue 和 PR 分类:利用 GitHub CLI 自动整理待办事项。 这种方式让作者在第二天早晨能有一个“热启动”,直接进入高价值工作,而不是被琐事淹没。

4. 异步外包“稳赢”任务

当作者对 AI 的能力边界有了清晰认知后,他开始在自己处理核心逻辑的同时,让 Agent 在后台处理那些“稳赢”的简单任务(如修复已知的小 Bug 或编写样板代码)。 在这个阶段,作者强调了两个关键点:首先是关闭 Agent 的桌面通知,因为上下文切换的成本极高,人类应当主动去检查进度,而不是被动被干扰;其次是有选择地外包,通过外包琐事来换取更多深思熟虑的时间,从而在核心领域继续磨炼技能。

5. 框架工程 (Harness Engineering)

为了减少 AI 的重复犯错,作者提出了“框架工程”的概念。每当 Agent 犯错时,不应只是口头纠正,而应通过工程手段确保它不再犯错:

  • 隐式提示词 (AGENTS.md):在项目中维护一个约束文件,记录 Agent 应该遵循的规范和避开的坑。
  • 专用工具开发:为 Agent 编写专门的脚本(如截图工具、过滤测试工具),让它具备更强的自我校验能力。 这种投入虽然短期增加了工作量,但长期来看极大地提升了 Agent 的自主性和准确率。

6. 迈向“始终运行”的自动化愿景

作者目前的目标是让后台始终有一个 Agent 在运行。他并不追求多 Agent 并行,而是倾向于使用像 Amp 的 Deep Mode 这种速度较慢但思考更深的模型。 这种状态下,AI 就像一个“略显笨拙但非常勤快”的伙伴。作者认为,这种模式倒逼他去优化自己的工作流,以便能不断分解出高质量的任务交给 AI 处理。这不仅是 AI 的进化,也是开发者管理能力和工程素养的进化。


问答

问:为什么作者建议放弃使用网页版的聊天机器人进行编程? 答:因为网页版缺乏与本地环境的交互能力,开发者需要频繁手动复制粘贴代码和报错信息,且纠错过程高度依赖人工干预,效率往往低于手动编写。

问:什么是“框架工程(Harness Engineering)”? 答:这是一种通过工程手段约束 AI 行为的方法。包括编写 AGENTS.md 文件来记录规则,以及开发专门的脚本工具供 AI 调用,目的是让 AI 能够自动发现并修正错误,避免重复犯错。

问:在后台运行 Agent 时,如何避免干扰开发者的专注力? 答:必须关闭 Agent 的所有主动通知。开发者应在自己工作的自然停顿期间(如喝水或休息时)主动切换窗口检查进度,确保人类掌握中断的主动权。

问:作者如何看待 AI 对开发者技能形成的影响? 答:作者承认这可能导致在被外包的任务上技能退化(尤其是对初学者),但他认为通过外包琐事,开发者可以腾出更多精力在核心难题上进行深思熟虑,这是一种技能重心的转移。

问:如何判断一个任务是否适合交给 AI Agent? 答:适合的任务通常是“稳赢”的(Slam Dunks),即逻辑清晰、结果易于验证的任务。作者建议通过前期的“复现练习”来摸清 AI 的能力边界,从而建立这种判断直觉。