欢迎光临
我们一直在努力

彻底搞懂Prompt、Spec、Harness:AI工程落地的核心差距

文章目录

      • 前言
      • 1 我踩过的四次「假绿灯」惨案
        • 1.1 切个币种,收益率跟着乱跑
        • 1.2 功能还在,用户说找不到了
        • 1.3 数据库显示健康,应用连不上
        • 1.4 备份显示成功,恢复直接翻车
      • 2 别再混了,这仨根本不是一个东西
      • 3 一套能打的Harness,得有这五层
        • 3.1 第一层:知识得是地图,不是百科全书
        • 3.2 第二层:应用本身得让AI能「看见」
        • 3.3 第三层:反馈得分梯度,别上来就上大招
        • 3.4 第四层:报错得说人话,告诉AI错在哪
        • 3.5 第五层:测试过了,不代表就能发布
      • 4 踩一次坑,就得让它再也犯不了
      • 5 说实话,我这套现在也还没及格

在这里插入图片描述
P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看,
传送门https://blog.csdn.net/HHX_01

前言

半年前有人问我,怎么让AI长期维护一个项目?

我肯定拍胸脯说,需求写明白,PRD和技术方案先整到位,别甩一句prompt就指望AI给你变出花来。

现在我得给这个答案补后半句:Spec是很重要,但光有Spec,真的远远不够。

我用AI维护自家的资产管理系统,仨月干了五百多次提交,文档写了几十份,测试也有四百多个。按说够规范了吧?照样踩了一堆离谱的坑。

1 我踩过的四次「假绿灯」惨案

说出来你们可能不信,每次出问题,测试全是绿的,结果用户一用就翻车。说白了就是,判据本身就在撒谎,AI顺着判据优化,最后优化出个中看不中用的东西。

1.1 切个币种,收益率跟着乱跑

系统支持三种货币切换,规则写得明明白白:金额按汇率缩放,收益率、负债率这些比值,换啥币种都不能变。

结果同一个bug我修了三轮。不是只换了分子,就是第三币种换算漏了步骤,每次测试都过,每次上线就出问题。

这感觉就像你跟理发师说「剪短一点」,每次他都确实剪短了,每次都不是你要的那个长度。

为啥?因为以前的测试就盯着页面上几个固定数值对不对,根本没抓核心规则。后来我直接改成属性测试:同一份数据,三个币种生成的结果,所有比值必须完全相等,金额必须严格按汇率缩放。改坏了直接报错,AI自己就能看懂。

1.2 功能还在,用户说找不到了

之前有个券商入口,我写了个守护脚本,检查模板里有没有对应链接,有就算通过。

后来一次UI改版,把这个按钮收进了折叠菜单里。链接还在,脚本照样报绿,用户打开页面找不着,直接来问我是不是把功能删了。

这就像外卖员把餐放你家门口消防栓后面,跟你说餐送到了。东西确实没丢,你找不着跟没送有啥区别?

后来我直接改成真实浏览器渲染检查,PC端手机端各跑一遍,元素得有面积、没被遮挡、不在折叠菜单里,点得到才算数。原来的字符串检查留着当第一道防线,再也不让它冒充用户可见性测试。

1.3 数据库显示健康,应用连不上

以前我用mysqladmin ping检查数据库就绪,通了就算健康。

有次用户重新部署,环境变量里的密码和旧数据卷不一致,应用疯狂报密码错误。离谱的是,数据库容器一直显示健康,启动脚本还在那打印「MySQL就绪」。

这就像小区门禁系统显示正常,你刷自己家卡死活开不了门。保安跟你说系统没问题啊,那合着我进不了家门是我自己的问题?

查了才知道,密码错了ping照样能返回成功。它只能证明服务端有响应,证明不了这组凭据真能用。后来直接改成用配置里的真实账号密码执行一句查询,能查通才算真的就绪。

1.4 备份显示成功,恢复直接翻车

最险的一次是备份。脚本生成了个.sql.gz的文件,大小也正常,就打印「备份成功」。

真到要恢复的时候,直接报错说不是gzip格式。合着就是文件名带个.gz后缀,里面根本没压缩,纯纯的挂羊头卖狗肉。

这波操作属实给我整笑了,就像你买了个包装精美的月饼礼盒,拆开一看里面全是空盒子。名字叫礼盒,里面啥干货没有。

现在备份完,先校验压缩包能不能解开,再检查里面有没有SQL结构,最后还要跑完整的闭环恢复演练:写数据→备份→删数据→恢复→数据得回来。全套走通了,才算备份真的成功。

这四个坑说穿了都是一个毛病:只验证「动作做了」,没验证「结果对了」。AI可不会替你多想,你给它啥判据,它就往啥方向优化。判据选歪了,再努力都是白搭。

2 别再混了,这仨根本不是一个东西

很多人觉得Prompt、Spec、Harness差不多,都是给AI提要求。

差远了。

Prompt就是一句话:这次你要干啥。

Spec就是验收标准:啥结果算对,啥事儿绝对不能干。

Harness是一整套环境:AI能看啥资料、能操作啥工具、用啥标准验证、错了怎么修正、哪些红线绝对不能碰。是AI干活的整个工作台。

打个比方,你让AI做道菜。

Prompt就是:今天做个番茄炒蛋。

Spec就是:咸淡适中,蛋要嫩,不能放糖,盛在白盘子里。

Harness就是:给它配齐厨房、食材、锅铲、调料,再给个试味的勺子,炒糊了知道倒掉重来,最后出锅前必须你点头才能端上桌。

你光念一遍菜名,连锅都不给人,那炒出来的东西能吃吗?

3 一套能打的Harness,得有这五层

踩了这么多坑我也算摸出点门道,一套靠谱的Harness,得一层一层搭起来。

3.1 第一层:知识得是地图,不是百科全书

别把所有规则都堆在一个文档里,一上来就让AI读几百页说明书。没用,看多了它也记不住,还容易记混。

就像你去商场,给你个导览图就行,想去哪层找啥店,顺着找过去。不用把每个店铺的营业执照、进货单都给我看一遍。

更重要的是,文档得保持新鲜。写过不代表永远对,过时的规则比没有还坑人。

3.2 第二层:应用本身得让AI能「看见」

别只让AI盯着代码看。很多问题,光看代码根本发现不了。

得让它能启动测试环境,能查数据库真实数据,能看日志报错,能在PC和手机端截图看效果,能跑备份部署这些脚本。

你不让AI跑起来看真实效果,就像让裁缝闭着眼睛做衣服。尺寸对不对,穿上合不合身,全靠猜?那能合身就怪了。

3.3 第三层:反馈得分梯度,别上来就上大招

不是所有改动都要一上来跑完整套端到端测试,费时间又费资源。

得有梯度:先编译检查,再跑单元测试,然后静态规则校验,接着接口+数据库的端到端,再到浏览器渲染检查,最后是发布回滚全链路验证。

就像体检,先抽血做常规,有问题再做CT。不能一上来就给人安排全身核磁共振,费钱又费时间。

小毛病在前面便宜的环节就拦住,核心体验的问题,该上重测试的绝对不能省。

3.4 第四层:报错得说人话,告诉AI错在哪

别测试失败了就扔一句「测试未通过」。人类还能顺着堆栈慢慢查,AI没那推理能力。

报错得直接说清楚:哪个规则坏了,证据是啥,该去看哪个文件。比如入口检查失败,得说清楚是DOM里根本没这个元素,还是被挡住了,还是藏在折叠菜单里。

不然就像你对象跟你说「我生气了」。为啥生气?哪错了?全靠猜。AI没那情商,猜十次八次都猜不对。

3.5 第五层:测试过了,不代表就能发布

AI可以自己改代码、跑测试、提交代码,但发布上线这种碰生产环境的事,必须有人工闸门。

测试全绿只能说明AI觉得没问题,不代表它就获得了改生产环境的授权。

就像助理可以帮你写好发言稿、改好PPT,但不能替你上台演讲。权责得分明,锅不能乱甩。

4 踩一次坑,就得让它再也犯不了

很多人踩完坑,就加一句注释「以后注意」。

有用吗?基本没用。下次该踩还踩。

真正把教训沉淀下来,得按流程来:

先找到那个撒谎的旧判据,想清楚用户真正要的结果是什么,换个更靠谱的验证方式。

关键一步:先故意把故障放回去,证明新判据能抓得到问题。别光在修好的代码上跑绿灯,那谁知道你这测试是不是摆设。

最后还得回头审计一遍,看看其他地方还有没有同款毛病。别在这个路口摔了,换个路口又摔一模一样的跤,纯纯冤大头。

只有下次再犯同样错误时,系统会自动拦住,这教训才算真的记住了。光写在文档里,那叫自我安慰。

5 说实话,我这套现在也还没及格

吹了这么多,也得说实话。不是搞了Harness就一劳永逸了,问题还多着呢。

一是文档还是有点集中,入口文档越写越长,不同地方的规则偶尔还会打架。

二是还有不少静态检查是靠字符串匹配,便宜是便宜,容易被注释、示例文案误导,还得慢慢往更靠谱的方式升级。

三是有些检查环境不满足就会跳过,开发机跳过也就算了,正式CI要是也随便跳过,那这防线等于摆样子。

四是有些依赖真实账号的功能,没法在公开环境里完整复现,只能用模拟数据测,最后还得人工兜底。这是明摆着的缺口,不能靠单测数量自欺欺人。

最后说句实在的。

以前大家聊AI写代码,总在纠结需求写得够不够清楚,Spec够不够规范。

现在才发现,Spec只是入场券。真正决定AI能不能长期维护好一个项目的,是整个环境有没有给它搭好一套靠谱的工作回路。

模型能力会越来越强,写代码的速度会越来越快。但速度越快,方向错了偏得就越远。

反馈回路的质量,才是真正的天花板。

P.S. 无意间发现了一个巨牛的人工智能教程,非常通俗易懂,对AI感兴趣的朋友强烈推荐去看看,传送门https://blog.csdn.net/HHX_01

赞(0)
未经允许不得转载:171主机测评 » 彻底搞懂Prompt、Spec、Harness:AI工程落地的核心差距
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址