View on GitHub

软件开发与教练

blog

最近 AI 相关的新概念、新技术一波接一波,光是跟着名字走都够人忙一阵。前几天还在聊这个新框架,过几天又冒出一个新说法。最近比较火的是 Harness Engineering。它大意上是在讨论,怎么把模型接进一个可执行、可验证、可反馈的闭环里;但你要再追问一句,Harness 到底是什么,又很容易越说越虚。有人干脆把它理解成模型之外的一切,可这样一来,反倒什么都没说明白。

可真往下想,会发现所谓 Harness,很多时候恰恰就是程序员最熟悉的代码和软件。代码会把任务拆成清楚的步骤,交给运行时去执行,也允许调试、测试和重跑。对“让 AI 解决问题”这件事来说,它不只是最终产物,更像是把问题先整理成某种可落地形式的中间层。

这一点在数字任务上特别明显。直接让 LLM 从一堆数据里生成统计结论,常见的情况是文字完整,数字却不对。可如果把任务改成“先写一段 Python,读取数据,完成统计,再给出报表”,结果通常会稳很多,因为真正的计算被交给了解释器。这也不只是零散技巧。已经有一些研究专门比较过两种做法:一种是让模型直接在自然语言里一步步计算,另一种是让模型先把解法写成小程序,再交给解释器执行,后者在数值和多步推理任务上通常会更准。

数学里也有类似路数。陶哲轩谈 AI 与数学形式化时提到,更稳的做法往往不是让模型直接写自然语言证明,而是先把问题写进形式语言,再交给工具检查或推进。这个例子在这里不是重点,只是说明同一件事:很多任务一旦有了合适的中间层,结果就会可靠不少。

所以我越来越觉得,那种“软件会被智能体替代”或者“软件会变成按需生成的即抛型产物”的说法,只说对了一半。AI 辅助甚至主导软件开发,的确是现在进展最快的领域之一。但软件先爆发,不是因为它更简单,也不是因为它更不值得人做,而是因为这里本来就有现成的一整套支架:语法、编译、解释、测试、diff、review、CI、回滚。模型一接上去,能力就比很多别的行业更容易落地。

对程序员来说未来的机会可能在这些问题上:哪些场景只要补上一层很薄的代码,AI 处理起来就会顺手很多;接口要不要更清楚,流程能不能重跑,结果能不能核对,失败后能不能恢复,本质上也都是同一类事。技术变化太快,未必追得上每一个新词,但沿着这个方向看,至少更容易找到自己愿意投入的地方。