驾驭工程就是软件工程:换个对象而已
工具变了,对象变了,但工程没有变
我们并没有进入一个“全新领域”
最近一段时间,“驾驭工程(Harness Engineering)”被反复提起,很多人把它描述成 AI 时代的一门新学科,甚至有点“不会这个就落后”的意味。
但如果把这层滤镜拿掉,你会发现一件很朴素的事实:我们并没有进入一个全新的领域,我们只是换了一个合作对象。
过去写代码的是人,现在写代码的是 AI。差别确实存在,但工程的核心问题,从来没有变过。
你以为在写 Prompt,其实在写“规格说明”
很多人刚开始用 AI 写代码,会觉得自己在“调 Prompt”。但用久了会发现,这件事越来越像在写一份规格说明。
比如你让 AI:
“帮我实现一个文件上传接口”
它可能会:
-
• 直接保存文件 -
• 忽略文件类型校验 -
• 没有限制大小 -
• 没有任何安全处理
这时候你会开始补充:
-
• 只允许上传图片 -
• 限制文件大小 -
• 做 MIME 校验 -
• 防止路径穿越 -
• 返回统一结构
这一过程,如果换个说法,其实就是:把一句模糊的需求,逐步压缩成一份不可歧义的约束。
这和我们过去写接口文档、写设计说明,本质是同一件事。
所以所谓“Prompt 工程”,更准确的说法是:用另一种形式在写规格说明(Spec)。
AI 不会替你保证质量,反而更需要你兜底
很多人一开始会有个错觉:AI 很强,写代码很快,是不是可以少写测试?
现实往往是反过来的。
AI 的问题不在“写不出来”,而在于:
-
• 会漏边界条件 -
• 会误解语义 -
• 会给出“看起来合理”的错误实现
比如你让它写一个“订单超时自动取消”的逻辑,它可能完全忽略:
-
• 并发场景 -
• 重复执行 -
• 状态幂等 -
• 定时任务漂移
这些问题,人类工程师也会犯,但 AI 更容易“系统性忽略”。
于是你很自然会开始做这些事:
-
• 准备一组典型场景去验证输出 -
• 在关键路径加断言 -
• 记录 AI 的行为日志 -
• 对异常结果做兜底处理
你会发现,这一整套东西,其实就是:测试 + 校验 + 监控。
也就是说:AI 没有让工程更简单,它只是让“工程约束”变得更重要了。
复杂度没有降低,只是换了表达方式
很多人会觉得,用了 AI 之后,很多复杂问题被“隐藏”了。
但实际情况是:复杂度没有减少,只是换了一种形态出现。
以前你在处理的是:
-
• 线程安全 -
• 内存管理 -
• 分布式一致性
现在你在处理的是:
-
• 上下文怎么拆分 -
• 多个 Agent 怎么协作 -
• 长尾输入如何覆盖 -
• 输出如何保持稳定
比如一个简单的“自动生成接口文档”的需求,如果完全交给 AI,往往会出现:
-
• 风格不一致 -
• 字段解释缺失 -
• 示例不完整
于是你开始:
-
• 拆分步骤 -
• 约束输出格式 -
• 引入中间校验 -
• 组合多个能力
换个说法,这就是:再做一遍模块化设计。
不确定性从来不是新问题
有人会说:
AI 是概率系统,软件工程是确定系统,这两者不一样
听起来很有道理,但其实有点误导。
因为软件工程从来就不“纯确定”。
现实世界里:
-
• 请求会失败 -
• 服务会超时 -
• 数据会延迟 -
• 系统会抖动
我们一直在做的事情,就是:用工程手段控制不确定性。
比如:
-
• 重试机制 -
• 超时控制 -
• 降级策略 -
• 熔断保护
现在面对 AI,只是换了另一套工具:
-
• 多次生成取最优 -
• 加规则过滤输出 -
• 用评估集做打分 -
• 控制生成参数
本质还是一样的:把一个不稳定的系统,限制在可接受范围内。
我们的工作,其实更接近“设计系统”
当代码可以由 AI 生成之后,工程师的重心自然发生了变化。
你不再需要花大量时间写实现细节,而是更多地在做:
-
• 定义边界 -
• 设计流程 -
• 约束行为 -
• 控制风险
换句话说,你不再是“写代码的人”,而更像是:设计系统如何运作的人。
你写的东西,也不再只是代码,而是:
-
• 规则 -
• 结构 -
• 流程 -
• 约束
这些东西组合在一起,本质上就是:一份“系统蓝图”。
名字可以变,问题没有变
“驾驭工程”这个名字本身没有问题,它确实描述了一种新的工作方式。
但如果因此觉得这是一个完全不同的领域,反而容易走偏。
因为从头到尾,我们解决的都是同一个问题:怎么构建一个可靠、可维护、能长期演进的系统。
过去我们约束的是人,现在我们约束的是模型。过去输入的是需求,现在输入的是上下文和规则。
但最终目标没有变:用工程的确定性,对抗系统的不确定性。
如果一定要总结成一句话,那就是:
驾驭工程,本质上还是软件工程。

夜雨聆风