【译】我的 AI 进阶之路:从怀疑到深度整合

79 阅读8分钟

Harness Engineering 最近特别火,一起来读读这个术语的源头文章,Mitchell Hashimoto 在 2026-02-05 发的: My AI Adoption Journey

以下是经过整理后的中文版,感兴趣的朋友可以移步英文原版:My AI Adoption Journey

真正有价值的 AI 开发,不是让 AI 一次性写出完美代码,而是给 Agent 一个能行动、验证、纠错、积累经验的环境。

目录

  • 第 1 步:告别聊天机器人
  • 第 2 步:复现你自己的工作
  • 第 3 步:部署“下班后”智能体
  • 第 4 步:外包那些“稳赢”的任务
  • 第 5 步:构建“工程化约束” (Harness Engineering)
  • 第 6 步:让智能体永不掉线
  • 现状与思考

我在上手任何有意义的工具时,必然会经历三个阶段:

(1) 效率阵痛期

(2) 勉强够用期

(3) 工作流重塑与突破期

大多数情况下,我得强迫自己熬过前两个阶段。毕竟我早已习惯了现有的工作流,用起来既顺手又舒服。

拥抱新工具就像是在“加班”,我本心并不想折腾,但为了保持专业素养,成为一个更纯粹的“手艺人”,我通常会选择坚持。

这是我如何发掘 AI 工具价值的心路历程。

在当下充斥着浮夸、炒作的舆论大海中,我希望分享一种更细腻、更克制的视角,记录我的观念是如何随时间演变的。

第 1 步:告别聊天机器人

立即停止尝试通过聊天界面(如网页版 ChatGPT、Gemini 等)来处理正式工作。

聊天机器人当然有价值,也是我日常流的一部分,但它们在编程中的作用非常有限。因为你本质上是在赌它能靠以前的训练“蒙”对结果;一旦它错了,你还得像教小孩一样反复告诉它哪儿错了。这种“你一言我一语”的纠错极其低效。

我第一个“真香”时刻,是将 Zed 编辑器的命令面板截图发给 Gemini,让它用 SwiftUI 复现。结果令我震惊——它做得非常棒。现在 Ghostty macOS 版中的命令面板,基本就是 Gemini 几秒钟内生成的初版。

但当我试图在更复杂的“棕地项目”(Brownfield projects,指在现有代码库上开发)中复现这种成功时,我失望了。在复杂的上下文里,聊天机器人经常翻车,我得不停地在编辑器和网页间反复粘贴代码和错误日志。这显然比我自己写要慢得多。

结论:要产生真正的生产力,你必须使用 Agent(智能体)。

Agent 是指能够在一个循环中运行、并能调用外部工具的 LLM。

它至少得具备::

  • 读项目文件
  • 执行命令
  • 调用工具
  • 根据结果继续修正
  • 在真实仓库里工作

换句话说,Agent 让 AI 从“回答问题的人”变成了“能操作项目的协作者”。

第 2 步:让 Agent 复刻自己的工作

我尝试了 Claude Code。起初印象平平:结果不理想,我还得给它“擦屁股”,花的时间比自己写还长。

但我没有放弃,而是强迫让 Agent 把我刚写完的代码重写一遍。

我相当于把活儿干了两遍:先手写,然后让 Agent 在看不到我答案的情况下,挑战达到同样的质量和功能。

过程很痛苦,因为它阻碍了我的进度。但作为一个老兵,我知道这种摩擦是必然的。

这样做是为了校准:

  • Agent 哪些任务能做
  • 哪些任务容易失败
  • 任务应该怎么拆
  • 什么验证方式能帮 Agent 自己发现问题

我发现,

我总结出了几条核心原则:

  1. 任务拆解: 别指望一步到位,要把任务拆成清晰、可执行的小块。
  2. 规划与执行分离: 模糊的需求要先让 AI 出方案,再执行。
  3. 闭环验证: 给 Agent 明确的验证路径,比如测试脚本、截图、lint,它通常能自己修好 Bug。

在这个阶段,我摸清了 Agent 的边界,不再盲目使用,达到了“不比手写慢”的平衡点。

第 3 步:部署“下班后”智能体

为了榨取效率,我开启了一个新模式:每天下班前最后 30 分钟,启动一个或多个 Agent。

既然我没法 24 小时工作,那就让 Agent 在我休息时帮我推点进度。

我发现这几类工作特别适合“离线运行”:

  • 深度调研: 比如“调研某语言下所有符合某种授权协议的库,整理优缺点、活跃度和社区口碑”。
  • 方案探索: 尝试我脑子里一些不成熟的点子,第二天看 Agent 的尝试是否帮我排雷。
  • Issue 过滤: 让 Agent 用 GitHub CLI 把积压的 Issue 过一遍,打好标签,我第二天就能直接处理高价值任务。

重点不是 Agent 一定要直接产出可合并代码,而是让第二天的工作有一个“热启动”。

第 4 步:把高确定性任务交给 Agent

当我足够了解 Agent 的能力边界后,我开始把那些它肯定能搞定的任务彻底外包出去,而我同时去干别的事。

适合 Agent 的任务通常是:

  • 范围清晰
  • 验证明确
  • 有现成模式可参考
  • 改动风险可控

不适合 Agent 的任务通常是:

  • 需求模糊
  • 架构判断重
  • 缺少测试
  • 失败代价高

关键点:关掉 Agent 的桌面通知。 频繁的上下文切换是效率杀手。

作为人类,我要掌控干扰的时机。

在我工作的自然间隙,切过去扫一眼 Agent 的进度即可。

这种方式让我能专注于那些我真正热爱、需要深度思考的代码,而把琐碎但必须做的杂事交给这位“略显笨拙但任劳任怨”的机器人助手。

第 5 步:构建“工程化约束” (Harness Engineering)

Agent 的效率取决于它能不能“一次跑对”。实现这一点最可靠的方法不是写更长提示词,而是给它一套快速、高质量的工具,让它在犯错时能立刻察觉。

我称之为 “Harness Engineering”(线束/约束工程)

只要 Agent 犯了一次错,我就去写个脚本或更新配置,确保它以后再也不会犯同样的错:

第一种是更新规则文件,比如 AGENTS.md。

如果 Agent 总是:

  • 跑错命令
  • 用错 API
  • 忽略项目规范
  • 改错文件
  • 重复犯同类错误

那就记录各种避坑指南和规范,把规则写进项目说明里,让后续 Agent 能继承这次经验,运行时隐式加载。

第二种是写真正的工程工具。

比如:

  • 自动测试脚本
  • 截图验证工具
  • lint 规则
  • 类型检查
  • 架构约束
  • 本地检查命令

规则文件是“告诉 Agent 不要犯错”,工具和检查是“让 Agent 更容易发现自己错了”。

这就是 Harness Engineering 的核心:把每次错误沉淀成可复用的约束、工具和反馈回路。

第 6 步:让 Agent 永不掉线

现在,我的目标是只要我在电脑前,背景里就一定有一个 Agent 在跑。

如果它没在跑,我会问自己:“现在有什么事是可以分给它做的吗?”

我尤其喜欢用一些“慢而深”的模型(如 Amp 的 Deep Mode),它们可能要跑 30 分钟才能完成一点小改动,但质量极高。

重点是找到那些 Agent 真能推进的任务,让它成为异步生产力。

人类做判断、拆任务、评审和设计环境;Agent 做执行、尝试和重复劳动。

我目前还没打算同时跑多个 Agent。一个背景 Agent 能让我保持专注,同时又像有一个“有点呆但出活”的机器人在旁边搭把手,这种平衡感刚好。

现状与思考

这就是我目前的进度。

我成了一名依然热爱手艺、但学会了使用现代重型武器的软件工匠。

我并不太在意 AI 是否会取代人类,我只想纯粹地因为热爱而创造。

这个领域变化太快,也许几个月后回看此文我会觉得自己很幼稚。

但正如那句话所说:如果你不为过去的自己感到羞愧,说明你没有进步。

总结

这篇文章的价值不在于“AI 很强”,而在于它提出了一种工程师的新职责:

  • 不只是写代码,而是设计 Agent 能稳定工作的环境
  • 不只是修 bug,而是让同类 bug 不再发生
  • 不只是 prompt,而是规则、工具、测试、反馈、约束一起构成系统

真正成熟的 AI coding 工作流,不是靠神奇提示词,而是靠持续建设 harness,让 Agent 在一个可控、可验证、可积累的工程环境里工作。