简介:模型能力持续增强,但让 AI 独立完成一个完整需求仍常以失败告终,瓶颈往往不在模型而在工程。本文系统定义 AI Harness——围绕大模型构建的上下文供给、环境沙箱、验证门禁与流程收口体系,讲清其核心组成与运行原理,辨析它与 Vibe Coding、CI/CD 的区别,并给出大仓场景下的落地要点与注意事项。
Harness 一词原意是“马具、挽具”,在传统软件测试领域,“测试脚手架(test harness)”指为了运行和验证被测程序而搭建的一整套支撑设施——包括驱动程序、桩模块、测试数据与执行环境。把这个概念迁移到 AI 编码场景,可以给出如下定义:
AI Harness 是围绕大模型构建的一整套工程化支撑体系。它负责向模型持续供给正确的上下文、执行模型的动作意图、以机器可执行的方式验证产出正确性,并把验证结果回灌给模型,最终将模型能力“套”进团队真实的研发流程中,跑完从需求受理到可上线交付的完整闭环。
同一个概念,可以从三个视角理解:
一句话概括:模型决定能力上限,Harness 决定交付下限。
现在开发者手里都有越来越强的模型,但如果尝试让 AI 独立完成一个完整的产品需求——从项目协作平台上的需求工单开始,到技术方案落地、代码修改完成、接口跑通、代码评审通过、最后提交合并请求——大概率会中途夭折。原因并不在于模型不会写代码,而在于整条链路上大部分工作根本不是“写代码”本身,而是四类经常被低估的事:
Vibe Coding 指开发者以对话方式驱动模型即兴生成代码的工作方式。它的典型特征是:上下文局部、验证靠人、产出片段。这种方式适合写原型、写脚本、写局部函数,但在跨模块、强约束、需要真实集成验证的业务工程中,会迅速暴露三个短板:生成结果缺乏全局一致性、正确性判断完全依赖人工、与团队既有流程脱节。Vibe Coding 是一种“使用方式”,而 Harness 是让这种方式升级为“交付能力”的支撑设施。
以某企业内部一个典型的 A/B 实验平台类业务为例:三十余个微服务、十余个前端微应用、多套 SDK 库,统一在一个大仓中管理;验证一个功能不是“能跑起来就行”,而是要拉起沙箱、初始化数据库表结构、准备缓存等中间件依赖、运行真实接口测试;信息输入输出也横跨需求管理系统、文档知识库、代码托管平台、评审与知识管理等多套外部系统。在这种工程形态下,一次改动可能同时跨越多个子模块,模型单打独斗几乎必然失败——这正是 Harness 存在的价值。
一个可落地的 Harness,通常可以拆解为五层:
Harness 的运行核心是一个持续迭代的反馈闭环,示意如下:
# Harness 驱动模型完成任务的主循环(示意)task = load_requirement() # 从需求系统拉取工单ctx = build_context(task) # 注入方案文档、相关代码、接口约定while not done:actions = model.plan(ctx) # 模型产出动作计划result = harness.exec(actions) # 执行:改代码、拉沙箱、跑测试report = gates.check(result) # 门禁:lint/单测/接口测试/规范校验if report.passed:harness.submit(result) # 提交合并请求并回写需求状态done = Trueelse:ctx.append(report) # 失败信息回灌,驱动下一轮修正
背后有三条设计原则:
Harness 适合以下场景:
相应的,它并不适合:纯探索性原型(Vibe Coding 足够)、缺乏测试保护的代码库(应先补门禁再引入)、以及以人工创意设计为核心的工作。
回到定义本身:AI Harness 是围绕大模型构建的上下文供给、工具执行、环境支撑、验证门禁与流程收口体系。它回答的问题是——当模型能力已经够强,如何让 AI 在真实的多人协作、多系统耦合、多门禁约束的工程现实中,独立跑完一个完整需求。模型决定能力上限,Harness 决定交付下限。对多数团队而言,比追逐更强模型更务实的路径,是先把门禁、沙箱和流程收口这三件事做扎实——这往往才是“AI 能不能真正干活”的分水岭。