Harness Engineering 解析:AI Coding Agent 的可靠性工程
Harness Engineering 解析:AI Coding Agent 的可靠性工程 一个开发团队在用 Claude Code 重构认证模块时记录了这样一个过程:第一个 Agent 会话完成了 JWT 登录逻辑,干净地提交了代码;第二个会话接手时,Agent 读不到上一次的决策上下文,重新推断了一套 HS256 方案,与第一个会话的 RS256 实现产生了冲突;第三个会话在修复冲突时又顺手重构了不在任务范围内的密码哈希模块,把一个已经通过测试的部分改出了新的 bug。三个会话,每个单独看都显示"任务完成",合在一起却是一片混乱。 这不是一个极端案例。AI 编程 Agent 当前最普遍的失效模式不是推理错误,而是环境问题——多会话之间状态不衔接,任务边界不清晰,完成标准没有外部锚点。同一个 Claude Code,在精心设计的环境里能连续完成数十步骤的复杂重构,在另一个项目里却在第三步就开始偏轨。模型没变,变的是工作环境。 Walkinglabs 的 Learn Harness Engineering 正是针对这个问题构建的工程体系。它的核心主张可以用一句话概括:与其让模型更聪明,不如把模型的工作环境设计得更可靠。这个主张背后有一套完整的方法论,涵盖 AI Agent 从指令设计、状态管理、验证机制到会话生命周期的全链路约束。本文将逐层拆解这套方法论的设计逻辑,并在必要的地方指出它与现有实践之间的分歧与权衡。 1 能力与可靠性之间的裂缝 1.1 失效的根源不在模型 当一个 AI Agent 在项目中频繁失效时,直觉上的归因通常落在模型能力上。但如果仔细审视失效的具体场景,会发现大多数问题指向的是另一个方向。 第一类是任务欠规格(underspecification)。“实现用户认证功能"对模型来说是一个开放空间:使用哪个框架、认证状态存在哪里、哪些文件不应该被改、“完成"意味着 happy path 跑通还是含错误处理的全流程——这些信息都缺失。模型会用统计先验填空,填空的结果可能合理,也可能偏离预期,而模型在两种情况下的表现一样自信。 第二类是跨会话状态丢失。真实开发任务很少能在单次会话里完成。上一次会话确定的技术选型、做出的妥协决定、标记为"暂不处理"的边缘案例——会话结束后全部消失。下一次 Agent 启动时,需要重新建立这些上下文,而重建的结果不一定与原来一致,不一致的决定在代码库里积累,就成了开篇那个案例的样子。 第三类是提前宣告完成(premature victory declaration)。Agent 完成了任务的核心路径后,将其汇报为整体完成。这不是欺骗,而是对"完成"边界的不同理解——模型基于它看到的信息做出判断,但它不知道自己遗漏了什么。在没有外部验证机制的情况下,这个误判只能在代码审查或 QA 阶段才能被发现。 失效类型 根源 通常的归因误区 ──────────── ────────────────── ────────────────── 任务欠规格 意图传递有损 "模型理解能力不够" 跨会话状态丢失 环境无持久化机制 "上下文窗口太短" 提前宣告完成 无外部完成标准 "模型不够严谨" 这三类失效指向的不是模型能力,而是意图传递机制和环境设计的缺陷。给模型更大的上下文窗口、更强的 RAG 检索,都不能从根本上解决任务边界模糊或完成标准缺失的问题,因为这些问题的根源在系统层面,不在模型层面。 ...