harness engineering 时代,程序员的价值在于定义问题
- 内容介绍
- 文章标签
- 相关推荐
2025 年是 reasoning 之年,也是 agent 之年。以 Claude Code 为首的 coding agent,展现出了让程序员绝望的能力。
2024 年秋天我还在字节时,AI coding 还没有那么普及,RAG 还是很新的技术。那时候,我还是把代码粘贴到网页端的 ChatGPT 里来解决问题;如果输出太长,还要分几次才能输出完。内部的服务全是各种 RPC 调用,光是捋清楚逻辑就已经很难了,更别提让 AI 读懂上下文了。当时的 AI coding 看起来还很鸡肋,Trae 也是大概半年后的事情了。再往前,到 ChatGPT-4 时代,程序员看待 AI coding 还像 Tom 看到机器猫一样,觉得这玩意儿替代程序员还早得很;而在 ChatGPT-3.5 时代,AI 还只有情绪价值,扮演个猫娘还行,coding 更是无从谈起。没想到 AI 的能力是指数级上升的,短短三年,沧海桑田。
我最早接触的 coding agent 工具是 VS Code 的 Copilot。那时候它还主要是 Tab 补全,后面因为 Trae 免费,我转向了 Trae;直到 2025 年下半年,我才开始高强度使用 Cursor。第一次用到 Anthropic 模型的时候,简直惊为天人,从此爱不释手,告别古法编程。后来我在小红书上看到有人说 Claude Code 比 Cursor 强一大截,但因为一直没有廉价的 Claude Code API,所以一直没有尝试。直到 2026 年春天,我才开始逐渐从 Cursor 转向 Claude Code。CC 就像海洛因,沾上就戒不掉了。
我曾经像绝大多数程序员一样傲慢,认为 context engineering、rules、skills、MCP 都只是对 prompt engineering 的包装,不过是为了公司股价炒作出来的概念罢了。不就是自然语言吗,搞这么多名词干嘛?直到 Harness Engineering 时代,我才开始重新审视这些概念,意识到以前的认知错了。定义问题是什么,是一件十分重要的事情:LLM 为什么不能交付生产级别的代码?因为它没有生产环境的约束。而上述这些技术,本质上都是通过各种手段给 LLM 定义问题的边界、分解目标,并减少幻觉的影响。
在我自己接近两年的 AI coding 经验中,也不断面临 Harness Engineering 想要解决的这些问题:LLM 总是一口气写一堆代码,然后把上下文耗光,最后留下来一堆垃圾。Harness Engineering 基本上就是为了解决这个问题。简单来说,就是将大的目标拆解成一个个小的、可交付的目标,然后进行 coding-testing,直到一个个小目标被交付,再逐步集成,最终实现大的目标。这和软件工程里瀑布模型的思想是一样的。
在讨论 LLM 是否能达到 AGI 之前,我想先说两个我自己的观点。首先,LLM 的 next-token prediction 只是表象;在 latent space 里,LLM 已经规划好了内容,next-token prediction 只是 output stream。其次,Harness Engineering 不能简单地被认为是对 prompt 的包装,它是传统软件工程思想在 AI coding 时代下的实践。
其实本文并不打算深入讨论这个问题。我的观点大概是:语言本身是对物理世界的 projection,只学习语言达不到人类级别的 AGI。这就好比人类作为三维生物无法理解四维世界一样,上限被锁死了。另外,即使达不到 AGI,LLM 所展示出来的能力也已经足够颠覆人类社会了。
LLM 的吞吐远高于程序员手动 coding 的速度。在这种情况下,coding 似乎不再是 bottleneck,程序员的护城河似乎一夜之间崩塌了。于是自媒体开始疯狂渲染:程序员要完蛋了。国内外互联网行业的裁员潮,似乎更印证了这一点。无论是美国的 Meta、Oracle,还是国内的各种中小互联网企业,都在疯狂裁员。但我觉得,目前的裁员潮更多还是公司本身的问题。像 Meta 在元宇宙上烧掉的几百亿美元,还有 Oracle 因为疯狂建设服务器集群把现金流榨干,至少目前的大规模裁员,更多还是因为公司经营不善导致的。
实际上,互联网的裁员,本质上是互联网的需求走到头了。毕竟移动互联网已经 15 年了,该开发的需求基本上也都开发完了。像 Alibaba 为了继续讲故事,甚至不惜一切代价 all in 外卖这个没什么油水的行业;大量互联网巨头都在开超市、搞餐饮,实在是没故事可讲了。如果不是 LLM 续了一波命,或许 2023 年就要开始大规模裁员了。就像疫情延缓了楼市暴雷的进程一样,LLM 延缓了互联网裁员的进程。
回到 AI coding 本身,经常有人会吐槽:“AI 哪有你说的那么牛,我做个 xx,AI 搞得一团糟。”这时候就会有 NPC 回复:“那是因为你没用 Opus 4.6 / GPT-5.4。”或者,“那是因为你 prompt 给得不精确。”前者暂且不谈,不同基模的能力差距确实很大;而后者所强调的,其实就是定义问题的能力,这也是 Harness Engineering 所强调的边界问题。
打个比方,Opus 4.6 就像赤兔,Claude Code 就像马镫和缰绳。如果骑手不能正确使用马镫和缰绳,那这匹马只会撂挑子,结果南辕北辙。同样的模型,在一个 CS 专业大一新生和一个有 10 年开发经验的 Java 老兵手里,效果能一样吗?前 LLM 时代的开发经验,就像冷兵器时代的技巧;而在火器时代,10 岁的小孩和 30 岁的成年人射出的子弹同样致命,但成年人的各种经验和认知,会让他运用火器时比小孩子更致命。
将“给我做一个淘宝的竞品”输入给 LLM,它只能在上下文耗光后给你一堆报错的代码;“帮我优化这个 kernel”,通常 LLM 甚至会在不用 NCU profiling 的情况下就开始瞎写,最后只能 discard all。如果 LLM 的使用者本人连什么是链表、队列,什么是关系型数据库、消息队列都不知道,那他大概率只能得到一堆屎山。的确,有很多人 vibe coding 出了一些很有意思的项目,这也是 vibe coding 时代的特点:code is cheap, show me your idea。
但即使是 OpenClaw 这样的爆品,现在也会因为技术债和认知债太严重,导致 GitHub 仓库里堆满了 issue 和 pull request 而无法维护。大量垃圾逻辑代码把海量 context 塞进上下文里,烧光 token。AI coding 能解决一切问题吗?我看未必。
理解问题在哪里、定义问题的边界,是后 Harness Engineering 时代程序员的核心价值。Coding 的范式确实被极大地改变了。以前我们上 Stack Overflow,查阅各种文档,RTFM、STFW;现在我们把日志丢给 LLM,问一句:“这是为什么?请用中文回答。”Coding 的门槛被极大地降低了,但这不代表不再需要 coding。我觉得,在这个时代,No Silver Bullet 依然成立。自然语言的模糊性决定了,真正有价值的人,依然是那些能定义问题的人。
Agent 目前只是在 coding 领域的商业化比较成功,而全世界的程序员大约只有 2500 万人。全世界有 80 亿人,真正对 token 有较大需求的,只有这几千万人。电影《战争之王》片头,尼古拉斯·凯奇说:
“这个世界上有 5.5 亿支枪,差不多每 12 个人就有 1 支。唯一的问题是:怎么让另外 11 个人也武装起来。”
现在的问题是,如何把 token 卖给剩下的 80 亿人?
这将是一个巨大的工程。如同资本主义发展早期阶段“羊吃人”一样,现在是“GPU 吃人”;但在不远的未来,LLM 将会创造海量的需求,同时生产力也将会得到极大提升。我们应该相信,生产力的进步总是好的,社会的进步也是螺旋上升的。
网友解答:--【壹】--:
先回复再看
--【贰】--:
是这样的,因为前段时间去读了维特根斯坦有了这样的想法,语言是对现实世界的抽象,这个抽象过程必定会有信息熵的损失,用这样一个不完备的set去训练智能模型,肯定会有一个不可逾越的上界。就像人类作为三维生物会有时间的幻觉一样,llm也永远不能理解物理世界,你可以定义颜色定义味道用语言来表达,但如何没有视觉嗅觉的话永远不知道什么是红色,什么是咸。
--【叁】--: liuyao:
其实本文并不打算深入讨论这个问题。我的观点大概是:语言本身是对物理世界的 projection,只学习语言达不到人类级别的 AGI。这就好比人类作为三维生物无法理解四维世界一样,上限被锁死了。另外,即使达不到 AGI,LLM 所展示出来的能力也已经足够颠覆人类社会了。
这里我跟老哥的观点很像,我认为语言是作为思维和物理世界交互的一种投射,把所有人的思维,基于物理世界这样的客观事实,进行的一个思维交互的中间态。作为这样的一种表达来说,天生就是被降维的,语言是用来契合思维的,而语言永远无法彻底表达思维。我想训练模型,或者说我们和模型交流的困难也大抵如此,模型从语言反向建模思维,很可能得到的只是一个模糊的死物,或许模型已经具备思维的光点,但是面向的物理世界是不一样的,也就导致我们与模型在面对语言的时候不像人与人一样,是有一定距离的(虽然人与人交流的时候也很可能有这种情况)。
--【肆】--:
读完感觉说的很好,学习了
--【伍】--:
其实没有一个特别精确的定义,可以这么这么区分
--【陆】--:
定义问题是一项很重要的能力
--【柒】--:
我在b站上看到对Harness 的定义就是agent内部不能自定义,如claude code。还有一类叫framework,如dify这种,内部可以自定义工作流。这种定义正确么?
--【捌】--:
你是龙虾吗? 实际上能把一个人尽皆知的东西搞个定义出来比我们想象的要重要,skills如此, harness engineering也是如此
--【玖】--:
学习了,学习并适应当前时代下的新程序员
--【拾】--:
即使互联网公司大规模裁员,对于大模型使用最好的仍然会是这一批程序员,现在找不到工作只是时代的阵痛罢了。
--【拾壹】--: kimi:
我不绕,直说白话说
这句话很GPT
--【拾贰】--:
在对一个项目develop一个feat的时候, 知道在哪个模块,牵扯到哪些依赖,需要进行什么样的测试,用哪些技术,保证前向兼容和未来的可拓展性。一家之言。
--【拾叁】--:
skills 是成熟工程产品
跟harness engineering这种连个具体概念构架都没有的是完全两回事吧
佬
过度抽像不是好事情
如果一样事物甚么都能代入,那很可能代表它甚么都不是
--【拾肆】--:
感谢认可
--【拾伍】--:
佬说的东西很深入
--【拾陆】--:
终于跟research对齐了,天天定义问题造数据集
--【拾柒】--:
好文,
--【拾捌】--:
定义问题很重要,能举具体例子吗
--【拾玖】--:
其实根本就没有harness engineering,或者人人都是做harness engineering。
我不绕,直说白话说
harness engineering就是「让AI尽最大化当牛马长时间干活,而又不捅出马蜂窝(或捅了马蜂窝自动能救回来)」
只是OpenAI那篇文章引出网上群雄说出自己的harness大法而已
其实以前所有的bmad 、spec driven、superpower ,或种框架,以至说得很神的Paypal Minions基础系统,大家都是为了那个目标
实确上现在的状况与其说是出现了harness engineering时代
还不如说OPUS4.5/4.6 及GPT5.2-5.4 真正出现了能长时间干活,而又能可靠完成任务的模型
加上skills 以及各种框架的成熟,而涌现的一个开发范式转变
2025 年是 reasoning 之年,也是 agent 之年。以 Claude Code 为首的 coding agent,展现出了让程序员绝望的能力。
2024 年秋天我还在字节时,AI coding 还没有那么普及,RAG 还是很新的技术。那时候,我还是把代码粘贴到网页端的 ChatGPT 里来解决问题;如果输出太长,还要分几次才能输出完。内部的服务全是各种 RPC 调用,光是捋清楚逻辑就已经很难了,更别提让 AI 读懂上下文了。当时的 AI coding 看起来还很鸡肋,Trae 也是大概半年后的事情了。再往前,到 ChatGPT-4 时代,程序员看待 AI coding 还像 Tom 看到机器猫一样,觉得这玩意儿替代程序员还早得很;而在 ChatGPT-3.5 时代,AI 还只有情绪价值,扮演个猫娘还行,coding 更是无从谈起。没想到 AI 的能力是指数级上升的,短短三年,沧海桑田。
我最早接触的 coding agent 工具是 VS Code 的 Copilot。那时候它还主要是 Tab 补全,后面因为 Trae 免费,我转向了 Trae;直到 2025 年下半年,我才开始高强度使用 Cursor。第一次用到 Anthropic 模型的时候,简直惊为天人,从此爱不释手,告别古法编程。后来我在小红书上看到有人说 Claude Code 比 Cursor 强一大截,但因为一直没有廉价的 Claude Code API,所以一直没有尝试。直到 2026 年春天,我才开始逐渐从 Cursor 转向 Claude Code。CC 就像海洛因,沾上就戒不掉了。
我曾经像绝大多数程序员一样傲慢,认为 context engineering、rules、skills、MCP 都只是对 prompt engineering 的包装,不过是为了公司股价炒作出来的概念罢了。不就是自然语言吗,搞这么多名词干嘛?直到 Harness Engineering 时代,我才开始重新审视这些概念,意识到以前的认知错了。定义问题是什么,是一件十分重要的事情:LLM 为什么不能交付生产级别的代码?因为它没有生产环境的约束。而上述这些技术,本质上都是通过各种手段给 LLM 定义问题的边界、分解目标,并减少幻觉的影响。
在我自己接近两年的 AI coding 经验中,也不断面临 Harness Engineering 想要解决的这些问题:LLM 总是一口气写一堆代码,然后把上下文耗光,最后留下来一堆垃圾。Harness Engineering 基本上就是为了解决这个问题。简单来说,就是将大的目标拆解成一个个小的、可交付的目标,然后进行 coding-testing,直到一个个小目标被交付,再逐步集成,最终实现大的目标。这和软件工程里瀑布模型的思想是一样的。
在讨论 LLM 是否能达到 AGI 之前,我想先说两个我自己的观点。首先,LLM 的 next-token prediction 只是表象;在 latent space 里,LLM 已经规划好了内容,next-token prediction 只是 output stream。其次,Harness Engineering 不能简单地被认为是对 prompt 的包装,它是传统软件工程思想在 AI coding 时代下的实践。
其实本文并不打算深入讨论这个问题。我的观点大概是:语言本身是对物理世界的 projection,只学习语言达不到人类级别的 AGI。这就好比人类作为三维生物无法理解四维世界一样,上限被锁死了。另外,即使达不到 AGI,LLM 所展示出来的能力也已经足够颠覆人类社会了。
LLM 的吞吐远高于程序员手动 coding 的速度。在这种情况下,coding 似乎不再是 bottleneck,程序员的护城河似乎一夜之间崩塌了。于是自媒体开始疯狂渲染:程序员要完蛋了。国内外互联网行业的裁员潮,似乎更印证了这一点。无论是美国的 Meta、Oracle,还是国内的各种中小互联网企业,都在疯狂裁员。但我觉得,目前的裁员潮更多还是公司本身的问题。像 Meta 在元宇宙上烧掉的几百亿美元,还有 Oracle 因为疯狂建设服务器集群把现金流榨干,至少目前的大规模裁员,更多还是因为公司经营不善导致的。
实际上,互联网的裁员,本质上是互联网的需求走到头了。毕竟移动互联网已经 15 年了,该开发的需求基本上也都开发完了。像 Alibaba 为了继续讲故事,甚至不惜一切代价 all in 外卖这个没什么油水的行业;大量互联网巨头都在开超市、搞餐饮,实在是没故事可讲了。如果不是 LLM 续了一波命,或许 2023 年就要开始大规模裁员了。就像疫情延缓了楼市暴雷的进程一样,LLM 延缓了互联网裁员的进程。
回到 AI coding 本身,经常有人会吐槽:“AI 哪有你说的那么牛,我做个 xx,AI 搞得一团糟。”这时候就会有 NPC 回复:“那是因为你没用 Opus 4.6 / GPT-5.4。”或者,“那是因为你 prompt 给得不精确。”前者暂且不谈,不同基模的能力差距确实很大;而后者所强调的,其实就是定义问题的能力,这也是 Harness Engineering 所强调的边界问题。
打个比方,Opus 4.6 就像赤兔,Claude Code 就像马镫和缰绳。如果骑手不能正确使用马镫和缰绳,那这匹马只会撂挑子,结果南辕北辙。同样的模型,在一个 CS 专业大一新生和一个有 10 年开发经验的 Java 老兵手里,效果能一样吗?前 LLM 时代的开发经验,就像冷兵器时代的技巧;而在火器时代,10 岁的小孩和 30 岁的成年人射出的子弹同样致命,但成年人的各种经验和认知,会让他运用火器时比小孩子更致命。
将“给我做一个淘宝的竞品”输入给 LLM,它只能在上下文耗光后给你一堆报错的代码;“帮我优化这个 kernel”,通常 LLM 甚至会在不用 NCU profiling 的情况下就开始瞎写,最后只能 discard all。如果 LLM 的使用者本人连什么是链表、队列,什么是关系型数据库、消息队列都不知道,那他大概率只能得到一堆屎山。的确,有很多人 vibe coding 出了一些很有意思的项目,这也是 vibe coding 时代的特点:code is cheap, show me your idea。
但即使是 OpenClaw 这样的爆品,现在也会因为技术债和认知债太严重,导致 GitHub 仓库里堆满了 issue 和 pull request 而无法维护。大量垃圾逻辑代码把海量 context 塞进上下文里,烧光 token。AI coding 能解决一切问题吗?我看未必。
理解问题在哪里、定义问题的边界,是后 Harness Engineering 时代程序员的核心价值。Coding 的范式确实被极大地改变了。以前我们上 Stack Overflow,查阅各种文档,RTFM、STFW;现在我们把日志丢给 LLM,问一句:“这是为什么?请用中文回答。”Coding 的门槛被极大地降低了,但这不代表不再需要 coding。我觉得,在这个时代,No Silver Bullet 依然成立。自然语言的模糊性决定了,真正有价值的人,依然是那些能定义问题的人。
Agent 目前只是在 coding 领域的商业化比较成功,而全世界的程序员大约只有 2500 万人。全世界有 80 亿人,真正对 token 有较大需求的,只有这几千万人。电影《战争之王》片头,尼古拉斯·凯奇说:
“这个世界上有 5.5 亿支枪,差不多每 12 个人就有 1 支。唯一的问题是:怎么让另外 11 个人也武装起来。”
现在的问题是,如何把 token 卖给剩下的 80 亿人?
这将是一个巨大的工程。如同资本主义发展早期阶段“羊吃人”一样,现在是“GPU 吃人”;但在不远的未来,LLM 将会创造海量的需求,同时生产力也将会得到极大提升。我们应该相信,生产力的进步总是好的,社会的进步也是螺旋上升的。
网友解答:--【壹】--:
先回复再看
--【贰】--:
是这样的,因为前段时间去读了维特根斯坦有了这样的想法,语言是对现实世界的抽象,这个抽象过程必定会有信息熵的损失,用这样一个不完备的set去训练智能模型,肯定会有一个不可逾越的上界。就像人类作为三维生物会有时间的幻觉一样,llm也永远不能理解物理世界,你可以定义颜色定义味道用语言来表达,但如何没有视觉嗅觉的话永远不知道什么是红色,什么是咸。
--【叁】--: liuyao:
其实本文并不打算深入讨论这个问题。我的观点大概是:语言本身是对物理世界的 projection,只学习语言达不到人类级别的 AGI。这就好比人类作为三维生物无法理解四维世界一样,上限被锁死了。另外,即使达不到 AGI,LLM 所展示出来的能力也已经足够颠覆人类社会了。
这里我跟老哥的观点很像,我认为语言是作为思维和物理世界交互的一种投射,把所有人的思维,基于物理世界这样的客观事实,进行的一个思维交互的中间态。作为这样的一种表达来说,天生就是被降维的,语言是用来契合思维的,而语言永远无法彻底表达思维。我想训练模型,或者说我们和模型交流的困难也大抵如此,模型从语言反向建模思维,很可能得到的只是一个模糊的死物,或许模型已经具备思维的光点,但是面向的物理世界是不一样的,也就导致我们与模型在面对语言的时候不像人与人一样,是有一定距离的(虽然人与人交流的时候也很可能有这种情况)。
--【肆】--:
读完感觉说的很好,学习了
--【伍】--:
其实没有一个特别精确的定义,可以这么这么区分
--【陆】--:
定义问题是一项很重要的能力
--【柒】--:
我在b站上看到对Harness 的定义就是agent内部不能自定义,如claude code。还有一类叫framework,如dify这种,内部可以自定义工作流。这种定义正确么?
--【捌】--:
你是龙虾吗? 实际上能把一个人尽皆知的东西搞个定义出来比我们想象的要重要,skills如此, harness engineering也是如此
--【玖】--:
学习了,学习并适应当前时代下的新程序员
--【拾】--:
即使互联网公司大规模裁员,对于大模型使用最好的仍然会是这一批程序员,现在找不到工作只是时代的阵痛罢了。
--【拾壹】--: kimi:
我不绕,直说白话说
这句话很GPT
--【拾贰】--:
在对一个项目develop一个feat的时候, 知道在哪个模块,牵扯到哪些依赖,需要进行什么样的测试,用哪些技术,保证前向兼容和未来的可拓展性。一家之言。
--【拾叁】--:
skills 是成熟工程产品
跟harness engineering这种连个具体概念构架都没有的是完全两回事吧
佬
过度抽像不是好事情
如果一样事物甚么都能代入,那很可能代表它甚么都不是
--【拾肆】--:
感谢认可
--【拾伍】--:
佬说的东西很深入
--【拾陆】--:
终于跟research对齐了,天天定义问题造数据集
--【拾柒】--:
好文,
--【拾捌】--:
定义问题很重要,能举具体例子吗
--【拾玖】--:
其实根本就没有harness engineering,或者人人都是做harness engineering。
我不绕,直说白话说
harness engineering就是「让AI尽最大化当牛马长时间干活,而又不捅出马蜂窝(或捅了马蜂窝自动能救回来)」
只是OpenAI那篇文章引出网上群雄说出自己的harness大法而已
其实以前所有的bmad 、spec driven、superpower ,或种框架,以至说得很神的Paypal Minions基础系统,大家都是为了那个目标
实确上现在的状况与其说是出现了harness engineering时代
还不如说OPUS4.5/4.6 及GPT5.2-5.4 真正出现了能长时间干活,而又能可靠完成任务的模型
加上skills 以及各种框架的成熟,而涌现的一个开发范式转变

