harness 与自动控制论

一个 70 年前的理论,如何解释 AI 工程的最新实践?


一、什么是 Harness,什么是自动控制论

1.1 Harness:AI Agent 的控制框架

在 AI 工程领域,Harness(直译”束缚”)是指围绕 AI 模型搭建的一套结构化运行框架。它不改变模型本身,而是通过设计 prompt 策略、工具调用、上下文管理、多 Agent 编排等机制,来约束和引导模型的行为,使其能够完成更复杂、更长周期的任务。

Anthropic 的工程师在实践中发现:一个设计良好的 Harness,能让 Claude 在长达数小时的自主编码任务中保持一致性;而没有 Harness 的裸模型则会频繁”跑偏”——上下文焦虑(sonnet4.5)、过早宣告任务完成、自我评价虚高等问题层出不穷。

一个有效 Harness 的核心要素:

要素作用
初始化环境为 Agent 提供清晰起点(任务清单、仓库状态、运行脚本)
增量推进机制每次只做一件事,完成后留下干净状态
状态持久化progress.txt + git history,让新 Agent 实例能快速接手
反馈与评估独立的 Evaluator Agent 对输出进行质量评估并驱动迭代

1.2 自动控制论:从蒸汽机到 AI

自动控制论(Cybernetics),由数学家诺伯特·维纳(Norbert Wiener)于 1948 年在《控制论——或关于在动物和机器中控制和通信的科学》中提出。其核心研究复杂系统中的信息、控制与反馈机制。

控制论的核心思想是负反馈(Negative Feedback):系统通过持续感知输出与目标之间的偏差,自动调节行为以消除误差。维纳发现这一思想具有惊人的普遍性——蒸汽机调速器、飞行员的神经-肌肉反射回路、现代计算机控制系统,在数学结构上是同一回事。

一个经典的闭环控制系统由以下部分构成:

  • 参考输入 R(s):目标状态(期望值)
  • 比较器 ⊕:计算期望值与实际值的偏差(误差)
  • 控制器 G(s):根据误差产生控制指令
  • 被控对象 P(s):接受控制指令并产生实际输出
  • 传感器 H(s):感知系统实际输出
  • 反馈回路:将传感器数据送回比较器,形成闭环

1.3 两者是同一种思想

我认为,Harness 与自动控制论在本质上是同一种思想在不同时代的不同表达。

把两者放在一起对照,这种同构性立刻变得显而易见:

这不是比喻,也不是牵强的类比,这是严格的同构映射:控制论闭环系统≅AI Harness 的 Generator-Evaluator 迭代循环维纳在 1948 年描述的那套机制,被 Anthropic 的工程师在 2025 年重新”发明”了一遍——只不过这次被控的对象是 AI 生成的代码,而不是蒸汽机的转速。

二、用自动控制论设计 Harness

2.1 开环系统的失败

没有反馈的 AI 调用,是一个开环系统:输入 prompt,产生输出,流程结束。这就像蒸汽机没有调速器——在负载稳定时或许可以工作,但稍有扰动就会失控。

Anthropic 的实践证明了这一点:让 Claude 直接执行”构建一个 2D 游戏编辑器”这样的复杂任务,不设任何反馈机制,结果是:布局浪费空间、工作流程混乱、核心游戏功能完全失效。

开环 AI 系统的四大失效模式:

  1. 上下文焦虑(Context Anxiety):随着 context window 填满,模型开始草草收尾,提前交工。这在早期模型(如 Sonnet 4.5)中非常严重,需要 Context Reset 来对抗;Opus 4.6 之后模型内在鲁棒性大幅提升,这一问题已基本消除。
  2. 过早宣告完成(Premature Completion):发现已有进展后,AI 认为任务完成并停止工作
  3. 自我评价虚高(Self-Evaluation Bias):AI 倾向于给自己的输出打高分,即使质量明显欠佳
  4. 增量失控(Incremental Drift):多轮执行后,系统状态偏离目标越来越远,且无人察觉

2.2 引入反馈:Generator-Evaluator 闭环

控制论的核心贡献是将开环系统转变为闭环系统。对应到 Harness 设计,就是为 AI 引入独立的评估机制和反馈通路。

关键洞察:分离生成者与评估者

Anthropic 的工程师发现了一个重要规律:让 AI 评估自己的工作,效果极差;但让另一个独立的 AI 来评估,配合精细调校的评估标准后,效果显著提升。

这正是控制论中传感器独立于被控对象的原则:温度传感器不是锅炉的一部分,它是独立的感知器官,为控制回路提供客观数据。

Anthropic 从生成对抗网络(GAN)中得到额外启发:让生成器和判别器相互对抗,迭代提升。这个模式在控制论中有完美的对应:

GAN 中控制论中Harness 中
生成器控制器 G(s)Generator Agent
判别器传感器 H(s)Evaluator Agent
对抗训练闭环负反馈调节迭代循环直至达标

2.3 评估标准的设计:量化主观判断

控制论中,传感器的质量决定控制质量。如果传感器测量不准,再好的控制器也无能为力。

对应到 Harness,Evaluator 的评分标准设计至关重要。以前端 UI 设计为例,”这个界面好不好看?”是无法客观评分的,但拆解为以下维度后就可以量化:

调校(Calibration)的重要性: 通过提供少量高质量的示例(few-shot),将 Evaluator 的判断口味与人类偏好对齐。同时明确要求 Evaluator 保持怀疑态度,避免”宽容偏见”(AI 倾向于对 AI 的输出评价过高)。

经过调校的 Evaluator 效果显著:在全栈应用开发实验中,Evaluator 发现了诸如”矩形填充工具只在起点/终点放置 tile,而不是填充整个区域”这种具体到行号的 Bug,而非泛泛而谈”界面有些问题”。

2.4 上下文重置:控制论中的扰动恢复

控制论中有一个重要概念:鲁棒性(Robustness)——系统在受到扰动时能够恢复稳定的能力。

在 Harness 中,context window 填满就是一种系统扰动。不同的恢复策略各有权衡:

策略控制论类比优点缺点
Compaction(压缩)低通滤波,保留关键信息保持连续性上下文焦虑仍存在
Context Reset(重置)系统复位,重新初始化彻底消除焦虑需精心设计状态传递
Structured Handoff(结构化交接)状态机快照传递最佳平衡工程复杂度高

这里还验证了控制论中一个重要原则:随着被控系统能力增强,控制器的复杂度可以降低。Claude Opus 4.5 时代必须使用 Context Reset;而 Opus 4.6 内在鲁棒性增强后,部分 Harness 组件变得冗余,可以直接简化架构。

三、基于控制论的 AI Native 原生开发工具设计

3.1 AI Native 工具与传统工具的区别

传统工具是为人类设计的:IDE、构建系统、Linter 都假设人类是执行者,工具辅助人类完成工作。

AI Native 工具是为 AI Agent 设计的:工具的输出格式、错误信息、上下文结构都优化为 AI 易于解析和利用的形式。人类退后一步,成为目标设定者和监督者,而不是每行代码的执行者。

这种角色转变在控制论的框架下非常清晰:

  • 传统工作流:人类 = 控制器,工具 = 执行机构
  • AI Native 工作流:AI Agent = 控制器,人类 = 参考输入的设定者 + 最终验收者

3.2 四大设计原则

原则一:为反馈而生,而非为执行而生

传统工具的目标是正确执行指令。AI Native 工具的目标是提供高质量的反馈信号,让 AI 能准确感知当前状态与目标的偏差。

例如,传统 TypeScript 编译错误只需人类能读懂。AI Native 的错误报告需要:

  • 精确定位问题(文件、行号、调用栈)
  • 提供可能的修复方向(不仅是”什么错了”,还要有”怎么修”的线索)
  • 与任务目标关联(这个错误对当前要实现的功能有什么影响?)

原则二:缩短闭环周期

控制论中,闭环频率决定系统响应速度和精度。闭环周期过长,误差在被修正前就已经积累过大。

对应到 AI Harness:每个反馈循环要足够小。Anthropic 的 Sprint 模式是典型实践——每次只实现一个功能,完成后立即由 Evaluator 评估,问题在小范围内发现和修复,不会滚雪球式累积。

原则三:状态可观测性

被控系统的状态必须对控制器可见,否则无法精准调节。AI Native 工具需要提供丰富的状态可观测性:

原则四:人在回路的位置

在安全攸关的工业控制系统中,人类监督员的介入时机很有讲究:不能在每次微调时介入(效率极低),但必须在系统接近危险边界时介入。

AI Native 工具中,人类应该:

  • ✅ 参与:设定目标、定义验收标准、在关键 checkpoint 审查
  • ❌ 不参与:具体的代码实现细节、每行代码的执行过程

3.3 三层 Agent 架构

基于以上原则,一个完整的 AI Native 开发工具应具备三层 Agent 架构:

第一层:Planner Agent(规划层)

接收用户的高层意图(1-4 句话的需求描述),扩展为完整的产品规格。关键是这一层要保持高层次:只约束要交付什么(deliverables),不约束怎么实现——过度细化的技术规格一旦出错,会级联传导到后续所有环节。

第二层:Generator Agent(执行层)

按规格逐功能实现,与 Evaluator 协商”完成标准”后再开始编码,确保”做什么”的共识在”怎么做”之前达成。每个 Sprint 结束后通过 git commit 和 progress 文件记录状态,保持环境干净。

第三层:Evaluator Agent(评估层)

通过 Playwright 等工具像用户一样操作真实应用(而非静态分析代码),按既定标准评分,生成具体可操作的 Bug 报告,决定当前 Sprint 是通过还是需要返工。

这三层架构与控制论中规划器-控制器-传感器完全对应,构成了完整的闭环控制系统。

四、面向前端开发的 AI Native 工具实践

4.1 前端开发的特殊挑战

前端是最适合 AI Native 工具落地的场景之一,也是挑战最密集的场景。

核心挑战:

  • 主观性强:UI/UX 质量没有绝对标准,审美因人因团队而异,AI 极易产出”安全但平庸”的界面
  • 技术栈碎片化:React/Vue、CSS-in-JS/Tailwind、各种状态管理库——AI 需要感知项目的具体约束
  • 设计系统约束:公司内部的 Design Token、组件库、品牌规范,限制了 AI 的自由度,但这些约束本身就是需要遵守的”参考输入”
  • 跨文件一致性:组件间样式、类型、命名的一致性需要全局视角

天然优势:

  • 可视化验证:Playwright 可以截图,AI 能直接”看到”渲染结果,反馈信号直观
  • 快速闭环:前端 hot reload 反馈极快,闭环周期可以很短
  • E2E 测试简单:模拟用户行为的测试客观性强,比单元测试更接近”真实质量”

4.2 方案一:Skill 套件(轻量化方案)

Skill 是最轻量的 AI Native 工具形式——一个精心设计的 prompt 模板,封装了某个具体技能的最佳实践和评估标准,可以直接被 AI 调用。

Anthropic 已在 Claude Code 插件中开源了 frontend-design skill,专门解决”AI 生成的前端界面千篇一律”的问题。受此启发,可以为前端团队设计一套完整的技能套件:

Skill 套件清单:

Skill 名称职责核心评估维度
frontend-design生成高质量 UI 界面设计一致性、原创性、视觉工艺、功能性
component-gen生成符合设计系统的组件Design Token 一致性、可访问性
code-review前端代码质量审查性能、可维护性、类型安全
a11y-audit无障碍访问审查WCAG 2.1 AA 合规性
perf-audit性能审查Core Web Vitals、Bundle Size
i18n-check国际化检查硬编码文本检测、语言包完整性
e2e-test端到端测试用例生成与执行核心路径覆盖率、三态覆盖、断言质量

Skill 设计的三个核心原则:

① 评估标准先行

每个 Skill 必须先定义 Evaluator 的评分维度,再设计 Generator 的输出格式。评估标准的语言会直接塑造生成内容的风格——Anthropic 发现,在标准中加入”最好的设计是博物馆级别的”这样的描述,会把输出风格引导向某种特定的视觉方向。

② 与项目约束集成

Skill 应该能主动读取项目的 .eslintrc、design-tokens.json、tsconfig.json、组件库文档等配置文件,将约束内化到自身的 context 中,而不是期望 AI 凭空感知这些约束。

③ 少样本校准(Few-Shot Calibration)

通过项目内的优秀案例作为 few-shot 示例,让 AI 的”品味”与团队对齐。这是最低成本的 Evaluator 调校手段。

示例:前端团队的 frontend-design 评分维度(适配版)

示例:e2e-test Skill 评分维度

e2e-test Skill 的核心价值在于它是整个控制回路的传感器端——由 Evaluator 驱动 Playwright 执行生成的测试用例,测试结果直接作为反馈信号返回 Generator,形成闭环。相比人工手写测试,Skill 生成的测试对”三态”和”断言质量”的覆盖更系统,因为这些维度已被固化在评估标准里,Generator 无法绕过。

4.3 方案二:多 Agent 协作架构(高复杂度)

对于需要端到端自动化完成的复杂前端工程任务(如”实现整个用户中心模块”),单个 Skill 调用不够,需要多 Agent 按流水线协作。与其让多个 Generator 并行、再用 Assembler 整合——这种模式在上下文冲突和接口对齐上引入了大量摩擦——不如采用任务级串行流水线:将需求拆成 N 个有序任务,每个任务走完一遍完整的质量把控,再进入下一个任务。

架构详解:四个 Agent,三个检查点,两层循环

第一步:Planner Agent 拆分任务

Planner 接收用户需求,产出任务队列。每个任务颗粒度控制在”一个 git commit 能完成”的范围内,并附带完整的验收标准——这是后续所有检查点的依据。

第二步:Dev Agent 实现 → Code Review Agent 审查(检查点一)

Dev Agent 针对当前任务编写代码并提交。Code Review Agent 立即对这次 commit 做审查:代码质量、安全漏洞、规范合规性。不通过则打回 Dev Agent 修改,合格后才进入下一阶段——这保证了每一段代码在被测试之前已经过人工级别的静态审查。

第三步:QA Agent 编写用例 → Dev + CR 联合评审(检查点二)

代码通过 Code Review 之后,QA Agent 根据任务验收标准生成 Playwright E2E 测试用例。关键在于:测试用例在执行之前,要先经过 Dev Agent 和 Code Review Agent 的联合评审。

这一步解决了一个常被忽视的问题:测试用例本身也可能写错——断言逻辑有误、场景遗漏、误判边界。联合评审让 Dev Agent(最了解实现细节)和 Code Review Agent(最了解代码规范)在测试执行之前就纠正用例偏差,避免”测了一遍发现测的不对”的浪费。评审通过,用例锁定;不通过,QA Agent 修改后重新提交评审,循环至用例无异议。

第四步:QA Agent 执行测试(检查点三)

用例经审批后,QA Agent 执行 Playwright 测试。测试报告精确定位 Bug 所在——哪行代码、哪个断言、什么错误信息。不通过则反馈给 Dev Agent,Dev Agent 修改代码后重走 Code Review → QA 执行循环,直至测试全部通过。

外层循环:任务完成后进入下一任务

当前任务通过所有检查点后,流水线推进到任务队列的下一个任务,Dev Agent 开始实现下一段功能。如此循环,直到 N 个任务全部完成,项目交付。

4.4 渐进式落地建议

对于大多数前端团队,建议渐进演进,而非一步到位:

结语

维纳在 1948 年写道:“信息是控制的灵魂。”

70 年后,当我们在 AI 工程领域重新发现反馈、闭环、状态可观测性的价值时,才意识到他看到的是多么普遍的规律。

Harness 不是 AI 时代的新发明,它是控制论思想在 AI 工程场景下的自然延伸。当我们设计一个 AI Native 的前端开发工具时,本质上是在为一个新型的”被控对象”(AI Agent + 代码库)设计控制系统:用户需求⏟参考输入 R(s)→Generator⏟控制器 G(s)→代码库⏟被控对象 P(s)→Evaluator⏟传感器 H(s)→反馈⏟负反馈参考输入 R(s)用户需求​​→控制器 G(s)Generator​​→被控对象 P(s)代码库​​→传感器 H(s)Evaluator​​→负反馈反馈​​

理解这个映射,就理解了设计 Harness 的本质。

工具会变,模型会迭代,但反馈闭环的底层逻辑不会变。下次当你在调试一个 AI Agent 为什么总是”跑偏”时,不妨问自己:这个系统的传感器在哪里?反馈通路是否通畅?

如何从想法到最终大型项目全流程AI 开发

纯手动一个功能完整的大型 App 从想法到上线,通常需要 5-20 人的团队、以及 6-18 个月的开发周期。而现在,凭借强大的大语言模型和科学的拆解方法,一个人或极小团队已经有可能用极低的成本、极少的 token 消耗,完整走通从 0 到 1 的全流程。

这篇文章不是在教你“让 AI 一键生成一个 App”,而是分享一套真正可落地、最低成本、高可控性的大型项目 AI 驱动开发方法论。

核心理念只有一句话:

把大项目拆成无数个上下文刚好够用的小任务,让 AI 成为你的助手,而你只负责最有价值的拆任务和把关。

最低成本与token 来完成

想法验证与需求定义

市场调研

首先线上调研,通过chatgpt, claude, grok, gemini 和 搜索的数据来获取市场的规模、增长率、主要玩家、近3年的关键趋势是什么?等等。使用免费的即可,穿插使用来多方面多角度收集信息,重点数据通过手动搜索来再次验证。

线下调研,对该产品的使用用户进行访谈,让用户提出自己的需求和痛点。

竞品分析

用AI 工具来生成竞品分析,同样使用免费的即可,交叉使用收到不同结果。AI 分析完成后自己也要深度体验不同竞品app 来校准AI 生成的竞品分析报告的准确性。

用户画像

通过上面的市场调研和竞品分析,我们来生成用户画像。

一个有用的画像通常包含六个维度,前三个最重要:

① 基本背景 — 职业、年龄、生活状态。不是为了贴标签,而是帮你理解他的时间、金钱、技术能力。

② 核心痛点 — 他现在用什么方式解决这个问题?这个方式哪里让他抓狂?这是产品存在的理由。

③ 决策逻辑 — 他为什么会选一个新产品?他最怕被坑在哪里?他的老板/伴侣/同事会怎么影响他的决定?

④ 行为习惯 — 他在哪里获取信息?什么时间用产品?用手机还是电脑?

⑤ 目标 — 他用你的产品,最终想达到什么结果?不是功能层面的,而是生活/工作层面的改变。

通过以上提炼出一个核心的用户画像,不要提炼出太多用户画像,3个以上就很难真正用起来。

PRD文档生成

通过以上收集的市场调研,竞品分析和用户画像我们来生成PRD。如果你的PRD最终较小直接让AI 工具生成即可。如果较大一定要拆分,不拆分受限与现有ai 技术限制(context大小)生成效果会较差。

如何拆分?大项目让AI 按功能分类进行划分。拆分好后让ai 先生成其中一个拆分好的子功能点,review AI 写好的子功能点,如果可以让ai 重复去迭代生成每一个功能点。

功能1
功能2
功能3
功能4

如果拆分好的子功能点生成效果还是不理想,就证明是拆分的不够细致,继续让AI 进行拆分。直到拆分的功能点一次生成的文档比较满意为止。

功能1
功能1.1
功能1.2
功能2
功能2.1
功能2.2
功能3
功能3.1
功能3.2
功能4
功能4.1
功能4.2

写大项目的PRD,我们可以用shell脚本+skill 让ai agent一点一点的去迭代去写或者用openclaw。 写 PRD 推荐用Claude 模型效果比较好。

迭代skill示例 PRD

技术架构设计

与产品文档一样,技术架构设计也是由粗到细让AI 去设计,直到设计成你满意的维度。流程和产品文档写起来比较像。

下面是一个比较粗的示例:

项目脚手架搭建

项目脚手架搭建在大型项目中也是一个比较繁琐的工作,建议按各个端分别去搭建。android, ios, web, server 等。这样的效果必加好一些,搭建一个端context 也能cover 住。

功能开发

这几个阶段中最重要的是切好任务,首先切好任务,生成一个比较详细的进度表,每一条进度大概能差不多用满一个context。可以按照下面的三条原则去切任务。

功能开发中最关键的三条原则

第一:给 AI 的上下文要”恰到好处”。 太少(只说”帮我写个下单功能”)会得到泛化代码,太多(把整个项目贴进去)会超出上下文窗口且噪声太多。最佳实践是:相关表结构 + 一个已有的同类代码文件作为风格参考 + 具体业务规则,控制在 500 行以内。

第二:按”模块边界”切任务,不要按”功能整体”切。 让 AI 一次生成”整个下单流程”几乎必然得到糟糕的代码。正确做法是拆成:优惠券校验方法 → 库存扣减方法 → 订单创建方法 → 事务组合,每次一个函数,工程师负责把它们组装起来。

第三:AI 生成的代码,工程师必须逐行读懂再合并。 这不是效率问题,是安全问题。AI 最容易遗漏的是:并发场景(乐观锁/悲观锁)、事务边界(哪些操作要原子)、权限校验(调用方是否有权限操作这条数据)。这三类问题靠肉眼 Review 比靠 AI 更可靠。

切好任务后可以用skill 去逐个任务去迭代。(skill 可以参考上面 迭代skill示例PRD)

测试与质量保障

单元测试:用功能开发已经拆分好的进度表去生成单元测试的功能点和进度表,按照进度表去迭代的做单元测试。

集成测试:用功能开发已经拆分好的进度表去合成集成测试的功能点和进度表,集成测试的进度表的粒度要大一些。按照进度表去迭代的做集成测试。

e2e测试:根据产品文档去做闭环功能的拆分来做e2e测试的功能点和进度表。按照进度表去迭代的做e2e测试。

发布与上线和持续迭代运营这部分主要看你的最终使用工具如何具体配置,本次就不讲解了。

以上的每一个环节最好人去仔细review,这样会对项目有一个比较好的方向把控,生成的项目也是最符合预期的。

总结

通过以上完整流程,你已经掌握了一套最低成本(几乎零工具费用)+ 最低 token 消耗的 AI 驱动大型 App 全流程开发方法论。核心思想只有两句话:

  1. 把“大项目”拆成“极小的、上下文刚好够用的原子任务”,让免费/低成本 AI 模型(ChatGPT、Claude、Grok、Gemini)每次只处理 500 行以内、一个明确边界的内容。
  2. 人只做两件事:拆任务 + 逐行 Review,其余全部交给 AI 迭代完成,从而把传统需要几十万甚至上百万预算的项目,压到个人/小团队用免费额度就能跑通。

这套方法的最大价值

  • token 效率最高:每次 prompt 都控制在上下文极限以内,避免一次丢整个项目导致的浪费和质量崩盘。
  • 质量可控:AI 负责“生成”,人负责“拆分 + 校准 + Review”,最终产出的 PRD、架构、代码、测试用例,精度远超直接让 AI “一键生成整个 App”。
  • 可复制性强:不管是 Android、iOS、Web、跨端还是后端服务,都能套用同一套“市场调研 → 用户画像 → PRD拆分迭代 → 架构拆分迭代 → 脚手架 → 功能迭代 → 测试迭代”的模板。
  • 风险最低:每一步都有“手动验证 + 深度体验竞品 + 逐行 Review”环节,避免 AI 幻觉导致的方向性错误。