惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
云风的 BLOG
云风的 BLOG
小众软件
小众软件
雷峰网
雷峰网
博客园 - 【当耐特】
V
V2EX
WordPress大学
WordPress大学
IT之家
IT之家
Last Week in AI
Last Week in AI
罗磊的独立博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
The Cloudflare Blog
Jina AI
Jina AI
博客园 - 司徒正美
阮一峰的网络日志
阮一峰的网络日志
博客园 - 聂微东
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
这就是 Harness 要解决的核心问题 - 少数派
2026-04-01 · via 少数派

你一定见过这个场景。

你写了一长串Prompt,AI正常回复,正常执行,正常完成,日志清晰,没有报错,一切看起来都在轨道上。然后你仔细一看结果——它做的事完全不是你想要的。这大概是AI时代最让人沉默的时刻。

所有人发现一个规律:

任务越短,AI 表现得越聪明;任务越长,失控的概率就越高。

不是突然崩溃,而是慢慢走形。最初的目标被淹没,边界被突破,等你意识到的时候,它已经做成了另一个东西。

这篇文章,是我从一连串踩坑经历里总结出来的教训——也是我第一次把背后的机制说清楚。


01 几十次 Git 回滚换来的教训

用 AI 做工程这段时间,我大概经历了几十次 Git 回滚。有些教训,是一次次失败里攒出来的。

重构跑偏。 让 AI 优化代码结构,它「顺手」改了一些接口签名,让代码更「优雅」。测试能通过,但我开始不敢确定:除了我看到的,还有没有没发现的改动?最后只能回滚。

数据幻觉。 让 AI 处理批量数据,它报告「处理完成」。后来我发现:3000 条用户记录,它静默跳过了所有带特殊字符的条目——没有报错,没有日志,只是 skip 了。我排查了两天才定位到问题,那两天里我修了 A 出现 B,修了 B 出现 C,每次修复都带来新的不确定性。

原地打转。 让 AI 写技术文档,七八轮对话后,文档始终「局部满意、整体混乱」。每次优化 A,它就改动 B。上下文越来越长,它越来越「健忘」最初的目标。最后我自己两小时写完了。

这些场景看起来不同,但本质是同一个问题:长任务没有工程约束,就会慢慢走形。


02 Prompt 不是答案

三次踩坑,我的第一反应都是:Prompt 写得还不够好。

如果重构时把「不要改动接口签名」写得更明确? 如果数据处理时把「异常处理步骤」说得更详细? 如果写文档时把「每章的结构模板」给得更清楚?

但当我真的尝试写「完美 Prompt」时,我发现这条路走不通。

因为长任务的问题,根本不是 Prompt 能解决的。

Prompt 解决的是「这一轮对话怎么开始」。但一旦任务跨越多个阶段——涉及文件修改、工具调用、状态切换、失败重试——问题就不再是「怎么说清楚」,而是「系统怎么保证它持续做对」。

重构失控,是因为没有明确的「阶段边界」和「回退机制」。数据处理出错,是因为没有独立的「验证环节」来 catch 静默失败。文档无限循环,是因为没有「验收标准」来锁定每个阶段的结果。

这些问题很难靠「把 Prompt 再写长一点」来解决。它们是持续运行的工程问题。


03 长任务失控,通常是这四种方式

反复踩坑之后,我开始观察 AI 做长任务时的失控模式。见过四种:

上下文腐烂。 任务一长,最初的目标会被后续内容不断挤压。具体表现:到了后期,每一步看起来都像是上一步的自然延续,但整体方向早已偏离最初目标。信号:你感觉「哪里不对」但说不清是从哪一步开始的。

循环重复。 遇到障碍后,模型不断重复同一种无效动作。同一测试失败后,连续三次提交了几乎相同的代码修改,每次都是对上一版本的微调。信号:到了第三轮,修改历史本身就是答案——模型没有在思考「为什么失败」,只是在执行「失败了→改代码」这个循环。

错误前向传播。 单步里的小误判,在后续步骤里被当成既定事实继续放大。AI 在第一轮给一个模块起了个错误的名字,后续所有引用都沿用了这个名字,没人质疑过——因为「命名」这一步早已过去。信号:到了链路后半段,所有人都觉得不对劲,但没人敢动最初那个决定。

边界突破。 没有额外守卫时,模型可能直接删文件、改结构、调用高风险工具。信号:一旦发现,往往已经造成实质损失。

四种模式机制不同,但有一个共同点:越晚发现,修复成本指数上升。


04 这不是造词

网上有人说,从 Prompt Engineering 到 Context Engineering 再到 Harness Engineering,无非是 AI 圈子在造词,同一个东西换着花样说。

我理解这种质疑。但如果把这三层拆开看,你会发现它们解决的问题完全不同:

Prompt Engineering —— 解决「单轮对话怎么表达」。 关心的是措辞、结构、示例。这是和 AI 协作的入门课。

Context Engineering —— 解决「多轮对话怎么管理」。 关心的是上下文窗口有限,重要信息会被挤掉,怎么加载、怎么压缩、怎么保持连贯。

Harness Engineering —— 解决「长任务怎么工程化」。 关心的是运行时的系统约束:怎么保证 AI 持续执行中不越界、不跑偏、可回退、可验证。

这三层不是替代关系,而是叠加关系。

就像学编程:先学语法,再学数据结构,然后才是系统架构。每一层都建立在前一层之上,复杂度完全不一样。

所以那些说「Harness 就是新瓶装旧酒」的人,其实是低估了长任务的复杂度,也高估了 Prompt 的能力边界

真正做过复杂 AI 工程的人,会知道区别在哪里。


05 刷新才是机制

三次教训之后,我开始搭建约束系统。

不是更长的 Prompt,而是明确的阶段、硬性的门槛、可恢复的状态。

这套方法后来有了一个名字——Harness。但在讲 Harness 是什么之前,我想先说清楚我认为它最关键的一个机制,因为这个解释你在官方论文里不会看到:

阶段边界的核心作用,是把「长推理链」拆成「短推理链」的级联。

真正关键的不只是分而治之,而是:每当你强制引入一个阶段边界,特别是人工确认节点,你就在向模型注入它无法靠自己生成的新信息。

模型在第 N 步的推理质量,受限于它在第 1 步到第 N-1 步中积累的上下文。到了第 10 步、第 20 步,早期的关键信息早已被挤压变形,模型的认知窗口里只剩下最近几步的内容。不管模型多强,它都是在残缺的上下文中做推理。

阶段边界打断这个过程。每到一个边界,模型被迫停下来等待确认——而这个「等待」本身,就给你一个注入新信息的机会。

约束是副产品。刷新才是机制。

这就是我把它叫做 On Track 的原因——一条清晰的工程主链,每个箭头都是一个注入点:

方向判断 → 执行计划 → [边界·刷新] → 实现 → [边界·刷新] → 验证 → [边界·刷新] → 评审 → [边界·刷新] → 发布

每个边界都是一个强制刷新点。边界越清晰,注入时机越明确,模型在每个阶段能用的上下文就越干净。

用了三个月之后,我发现一个反直觉的事实:给 AI 的约束越清晰,它反而表现得越自由、越稳定。过去三个月我跑了十几个项目,没有一次需要回滚到两天前的状态——不是因为模型变强了,而是因为系统确保它不会在残缺的上下文中跑太远。


后来读到 OpenAI 的《Harness engineering》和 Anthropic 的《Harness design for long-running application development》。

看完有一种强烈的感觉:他们讲的就是我一直在做的事情。只是他们从系统设计的角度描述,我是从一个人在实际工程里怎么活的视角描述它。

行业里给这个领域起的名字叫 Harness

如果借用计算机系统的类比:

模型像 CPU,提供推理能力

上下文窗口像内存,短暂、有限、会被挤掉

Harness 像操作系统,负责调度、约束、记录、恢复和刷新

没有操作系统,CPU 再强也很难稳定跑复杂程序。

没有 Harness,模型再强也只是会说话、会写代码的大脑,但它缺少持续执行长任务所需的工程环境。


07 Harness 要回答的五个问题

结合我的实践和这两篇论文,我认为 Harness 的核心在于回答五个问题:

约束:你怎么限制 AI 的操作空间?

口头上的「注意分层」「别乱改」没用。真正有效的约束必须落进系统里——路径语义化、模块单向依赖、测试作为硬门槛、高风险操作必须人工确认。

刷新:你在哪里强制注入新信息?

这是我自己踩坑后才真正理解的核心维度。阶段边界不是用来卡住 AI 的,而是用来强制刷新上下文质量的。每个边界都是一个注入点——你在哪里停、停的时候注入什么,决定了下一个阶段的推理基础是否可靠。

校验:你怎么校验 AI 的输出?

AI 不能自己写完再自己宣布做得不错。你需要独立的评估机制——运行测试、检查接口、验证行为,而不是靠 AI 在同一轮对话里给你一个自我评分。

恢复:失败时怎么回到可信状态?

好的回退不是回滚到上一个版本,而是回到上一个经过校验的已知状态。这需要你在每个阶段边界都建立状态快照。

吸收:错误如何被记录、复盘和沉淀成规则?

好的系统不是不犯错,而是同一种错不会无限重复。每一次跑偏、误判、漏检,都应该成为 Harness 改进的输入,而不是修完就忘。


08 硬边界,反而让 AI 更自由

这件事最反直觉的地方是:

很多时候,不是要给 Agent 更多自由,而是要先给它更窄、更硬的边界。

约束解空间,比放大解空间更能提升可靠性。

不是因为 AI 笨,而是因为长任务里的可靠性来自「系统保证」,而不是「AI 自觉」。

当你给 AI 划定了清晰的操作边界,它就知道自己可以在边界内放心发挥。而你也知道,只要它还在边界内,就不会有灾难性的后果。

Anthropic 有一句话:随着模型能力提升,一些原本必要的脚手架会变成负担。

这意味着 Harness 不是一成不变的。你需要持续判断:哪一层还在提供真实收益,哪一层已经过度设计。

但前提是,你得先有 Harness,才能谈得上优化它。


09 交出去之前,先问自己这五个问题

在把任何 AI 协作产出投入正式使用之前,用以下五个问题做一次快速评估:

约束 — 我有没有在系统里明确划定了 AI 的操作边界,而不是只写在 Prompt 里希望它自觉遵守?

刷新 — 在这个任务的哪个节点,我强制注入了新的上下文信息,还是让 AI 从头跑到尾?

校验 — 我有没有独立的验证机制来判断这一步的输出是否正确,还是 AI 自己做完自己宣布及格?

恢复 — 如果这一步出错,我能不能回到上一个已知的好状态,还是只能回滚或者从头再来?

吸收 — 这个任务里出过的错误,有没有被记录下来,变成下一次的预防规则?

这五个问题,对应的是我在实际工作中踩过的五个坑。如果某个问题的答案是「没有」或者「靠 Prompt 里多写几句」——这可能就是你当前的瓶颈所在。


参考:OpenAI《Harness engineering: leveraging Codex in an agent-first world》(2026-02-11);Anthropic《Harness design for long-running application development》(2026-03-24)