AI又把改好的功能改坏了:我为什么开始研究 Harness
这篇记录三次真实返工以及我后来怎样给“已完成”补证据做 Nameo 知识卡片解析时我有段时间经常对 AI 说我去大哥你咋又改出问题来了之前不是改好了吗PDF 不能只按一个扩展名处理。文本型 PDF 可以直接抽文字扫描件要走图片和 OCR图文混合文件还要保留页面、图片和表格顺序。实际改起来经常是这样扫描件识别不好补了页面渲染和 OCR再测文本型 PDF阅读页又退成了纯文本把页级预览补回来表格或混排内容接着出问题。改好这一类再拿旧样本回归熟悉的问题又出现了。这张图把几次返工按发生顺序画到了一起。上一篇《一个多跳问题让我返工RAG 还是 Agent》讨论的是 AI 应用怎样选聊天、RAG、Workflow 和 Agent。这篇换一个问题AI 写完代码以后我凭什么相信旧功能没有被它顺手改坏设计稿改对了MCP 取回来的还是旧图PDF 解析只是其中一处。做 UI 还原时设计师已经在 Figma 里改了资源我通过 Figma MCP 下载拿到的还是旧版本。每次都得先变动一下对应资源或节点再重新下载才能拿到最新内容。代码没错设计稿也没错输入给开发链路的“事实”过期了。这件事和 PDF 回归放在一起看问题就比较清楚了AI 会忘记之前修过什么工具可能提供旧输入一个局部补丁也会影响相邻格式。Prompt 里加一句“请不要破坏已有功能”并不能告诉它“已有功能”具体包括哪些样本、入口、设备和失败态。规则写得越来越长我还是不敢信“已完成”我最初也靠补 Prompt。漏了什么就往规则里加文件别太长View 不要直连 DAO资源名用小写亮暗色 Token 成对公共能力要从 Index 导出。规则越来越多执行和验收却还是同一个模型。它读完规则、改代码、自己检查最后再告诉我已经完成。随着项目变大我遇到的返工也开始重复上下文记不住旧能力被重新写一套刚修好的格式又退化。那时我开始找怎样管理大型 AI 开发看到 Harness Engineering 的文章才顺着这个方向研究并落到 Nameo。我把这套项目内的完成检查叫作 Harness。validate-all执行静态门禁构建、接口、真机和交付报告分别交给专项验证。Prompt 继续负责告诉 AI 要做什么。Harness 负责拿规则、退出码和证据检查它做到了哪一步。改一个 Logo门禁先把我拦住了26年5月我在处理 Pad 深色导航。左上角要恢复正确的分层应用图标左下角继续保留原有 SVGA 动效未选中的聊天图标还要使用 Pad 自己的资源不能影响 Phone。补丁完成后A1.4 文件行数检查失败了。PadNavRail继续堆逻辑超过了项目约定的组件行数上限。我当时在想改个 Logo 怎么又牵出一堆事情后来没有删规则也没调大上限只是把品牌 logo 拆成PadBrandLogo.ets让导航只保留自己的职责再重新构建并补真机证据。关键结果如下[FAIL] A1.4 文件行数检查 PadNavRail.ets超过项目约定的组件行数上限 exit code: 1 拆出 PadBrandLogo.ets 后 [PASS] A1.4 文件行数检查 PadNavRail.ets238 行 baseline compare新增失败检查项 ID 0250 行是 Nameo 按组件复杂度设置的项目门禁。换到其他项目阈值要根据组件职责重新定Logo 好不好看则继续看设计稿和真机效果。一句“完成”至少要对上相应证据后来我不再只问“做完了吗”而是把每种结论对应的检查写清楚。要验收的结论先检查接着检查工程规则通过静态门禁、退出码、违规明细目标产物能否构建目标模块可构建HAP/HAR 或后端构建成功应用能否启动并进入目标页面页面改动已经生效目标设备启动、页面截图必要时补 UI tree点击后的接口、落库和列表刷新删除、恢复、支付或同步成功最终状态、接口/日志、列表刷新或真实样本重试、恢复和异常路径可以交给下一位开发者规格、报告、证据路径后续维护者能否复跑同一套检查这次 Pad Logo 改动实际跑了静态门禁、common/phone/pc 构建并在 Pad 真机进入目标页面检查结果。以后写到 IAP、跨设备同步等专题时我会分别使用沙盒订单和两台设备做验收输入。图里按静态门禁、构建、真机和业务结果分层每一层只回答一个问题这份证据能支持什么结论。Pad Logo 这次走到了真机层。我后来把几种证据分开使用build 检查产物能否生成随后启动目标 HAP 并进入改动页面截图和 UI tree 记录页面与控件状态接口日志和列表刷新继续检查真实数据结果hilog 用来定位黑屏、权限和接口错误所有证据都要和本次 change、目标页面及操作路径对应起来。OpenSpec 先定义“怎样才算完成”自动脚本能稳定执行但它得首先知道要检查什么。如果把“PDF 解析完成”写成接口返回 HTTP 200脚本会通过用户仍可能只看到几行乱码。Nameo 的内容解析 OpenSpec 后来把完成条件改成“可阅读包已经准备好”并拆成五项验收AI 使用的analysisText是否准备好用户阅读所需的页面图、图片、表格或 Markdown 是否准备好关键资产是否可访问通知后第一次打开是否仍在做重活失败发生在上传、结构解析、OCR、资产落盘还是首屏准备。OpenSpec 记录为什么改、改到哪里、哪些内容不在范围内以及验收条件。规格如果写错自动化只会稳定地验错。项目里的责任链可以压成四步OpenSpec 定义承诺 ↓ Harness 检查可机械判定的边界 ↓ 构建、接口和真机提供运行证据 ↓ 报告汇总结果、证据路径和执行记录静态验证用 0/1 表示通过或失败baseline compare 区分历史失败与本次新增失败专项 full-goal verifier 在运行证据齐全时输出COMPLETE缺少证据时输出NOT COMPLETE并列出具体项目。baseline 先拦住本次新增问题老项目第一次接门禁通常会带着历史问题。如果要求一天内全部清零规则很容易被绕过如果全部忽略新门禁也没有意义。Nameo 的做法是修改前生成 baseline snapshot记录已有失败修改后 compare出现本次新增 FAIL 就阻断。历史债不算通过但可以单独治理。修改前A1.4、A1.5、A2.3 已失败 修改后A1.4、A1.5、A2.3、A3.1 失败 结论A3.1 是新增 FAIL本次不能交付接入早期曾保留 6 个历史 FAIL同时要求每次修改的新增 FAIL 为 0。历史 FAIL 继续进入技术债清单本次新增问题则由 compare 直接拦住。后续安排baseline v2 改到 violation 粒度当前 baseline v1 比较失败集合时只保留 A1.4、A1.5 这样的检查项 ID没有比较每条具体 violation。baselineA1.4 FAIL - OldPage.ets 超行 currentA1.4 FAIL - OldPage.ets 超行 - NewPage.ets 也超行从具体违规看NewPage.ets是新问题从 ID 集合看前后都是{ A1.4 }“新增失败检查项”仍可能是 0。这次读代码时我把它记录成 baseline v2 的改进项为每条违规生成稳定 key。ruleId repoRelativePath entity violationKind ruleVersion行号、阈值和完整 message 作为展示字段不直接参与身份指纹。规则本身不能生成稳定 key 时先解决规则输出不能直接拿整行错误文本做 diff。可以从一份很小的完成合同开始不必第一天就搭完整云流水线。下面是我根据 Pad Logo 这次交付整理的字段模板替换字段后就能用于其他改动change:pad-brand-logoscope:Pad 深色导航 Logobaseline:report:tmp/harness-baseline.jsongates:static:status:passreport:tmp/harness-current.jsonbuilds:-target:commondefaulttask:assembleHarstatus:pass-target:phonedefaultdeviceScope:Phone / Pad 共用产品 HAPtask:assembleHapstatus:pass-target:pcdefaulttask:assembleHapstatus:passruntime:deviceClass:Pad 真机path:首页-左侧导航screenshot:tmp/pad-brand-logo-final.pngui_tree_simple:tmp/pad-brand-logo-ui-tree.txtresult:ready_for_review字段叫什么不重要。下一位开发者需要知道改了什么、跑了什么、在哪类设备验证、证据在哪里以及怎样复跑。静态门禁失败时写blocked设备启动被拦住时写runtime_blocked只完成构建时写build_passed下一项任务就是补真机验证。等本地规则稳定再把退出码、JSON 报告和构建命令接入 CI/CD。最小执行顺序也要留在记录里修改前生成 baseline完成修改后重新验证并 compare任一步退出码非 0 就停止交付。报告、截图和日志跟着这次 change 保存不能只在聊天窗口里说“我跑过了”。复盘PDF 解析反复回归、Figma MCP 取得旧资源、Logo 修改触发行数门禁来源不同处理办法却指向同一件事项目变大以后不能再靠人或 AI 的记忆维持一致性。Prompt 说明要做什么OpenSpec 定义完成条件Harness 执行检查构建和真机给出运行结果。静态门禁、构建和真机验证各司其职。后续接入支付和跨设备专项验证时我会分别用沙盒订单和两台设备作为验收输入不拿页面截图代替真实业务结果。下一篇继续看一个更麻烦的事故本机检查和接口创建都成功用户轮询却随机拿到 404。任务没有消失它被保存在另一个 PM2 worker 的内存里。

相关新闻

C++ const关键字的深度解析:从语法到实战,构建类型安全的代码防线

C++ const关键字的深度解析:从语法到实战,构建类型安全的代码防线

1. const的本质与核心价值我第一次接触const关键字时,以为它就是个"只读"标记。直到在团队协作项目中踩了坑才发现,const实际上是编译器与开发者之间的契约。想象你给同事传了张纸条写着"中午12点会议室见",如果纸条被意…

2026/7/16 4:06:26阅读更多 →
阿里玄铁 91 当年的“最快开源 CPU“,7 年后还在牌桌上吗?

阿里玄铁 91 当年的“最快开源 CPU“,7 年后还在牌桌上吗?

2019 年 8 月那一周的开源新闻里藏着两条后来都改变了行业的线索:阿里平头哥发布 16 核 RISC-V 处理器玄铁 91、单核跑分 7.1 CoreMark/MHz、自封「最快开源 CPU」;Facebook 把识别儿童剥削视频的哈希算法 PDQ 和 TMKPDQF 扔上 GitHub。前者当年被赋予「…

2026/7/16 4:01:25阅读更多 →
GLM-4.7前端生成:React+Tailwind代码与美学一体化实践

GLM-4.7前端生成:React+Tailwind代码与美学一体化实践

1. 这不是一次模型更新,而是一次“全栈开发权”的移交GLM-4.7正式发布:代码更强,美学更美!——这句话刚刷屏时,我正卡在 React Tailwind 一个响应式表格的colspan嵌套逻辑里,浏览器控制台报错堆栈像一串没…

2026/7/16 4:01:25阅读更多 →
PCIE913-基于XILINX VU13P的PCIE3.0高性能FMC+载板

PCIE913-基于XILINX VU13P的PCIE3.0高性能FMC+载板

板卡介绍PCIE-913是一款基于XILINX XCVU13P-2FHGA2104I的PCIE3.0 X 16高性能板卡,板卡集成FMC连接器,可与公司的全系列FMC子卡实现对接。可将AD采集的数据通过PCIE总线上传至服务器并落盘存储,也可以将服务器数据下传给DAC进行回放。具有4个Q…

2026/7/16 5:11:31阅读更多 →
WAIC期间落地多项合作成果,旭日S600获20+头部客户认可开启量产验证

WAIC期间落地多项合作成果,旭日S600获20+头部客户认可开启量产验证

7月15日,上海世界人工智能大会(WAIC)前期,地瓜机器人于上海举办“开启具身智能机器人量产新纪元”媒体沟通会,对外发布旭日S600算力平台的客户落地、技术适配与生态共建成果。会上,地瓜机器人开发者生态副总…

2026/7/16 5:11:31阅读更多 →
C++实现醉汉随机行走:从蒙特卡洛模拟到工程实践

C++实现醉汉随机行走:从蒙特卡洛模拟到工程实践

1. 项目概述与核心价值最近在整理一些经典的算法和物理模拟案例,准备给团队的新人做培训材料,翻到了“醉汉随机行走”这个模型。别看名字听起来有点戏谑,这其实是随机过程、蒙特卡洛模拟乃至金融建模等多个领域的一个基础到不能再基础的“Hel…

2026/7/16 5:11:31阅读更多 →
大模型私有化部署安全指南:从容器权限到API限流的实战加固

大模型私有化部署安全指南:从容器权限到API限流的实战加固

1. 项目概述:为什么大模型部署必须从“安全”开始最近在帮几个团队部署Qwen2.5-72B-Instruct的GPTQ-Int4量化版本,发现一个普遍现象:大家拿到一个高性能的模型镜像,第一反应往往是兴奋地跑起来,看看它的生成效果有多惊…

2026/7/16 5:11:31阅读更多 →
VC++中贝塞尔与纽曼曲线绘制:从数学原理到GDI+实现

VC++中贝塞尔与纽曼曲线绘制:从数学原理到GDI+实现

1. 项目概述:在VC中绘制优雅的数学曲线最近在整理一个老项目的图形模块,需要将一些复杂的轨迹线可视化。直接绘制折线显得生硬,而平滑的曲线则能带来更好的视觉体验和更精确的路径表达。这时,贝塞尔曲线和纽曼曲线就成了我的首选工…

2026/7/16 5:11:31阅读更多 →
DBeaver 26 深度解析:JDBC协议栈与多数据库协同实践

DBeaver 26 深度解析:JDBC协议栈与多数据库协同实践

1. 为什么是 DBeaver 26?——一个资深数据库工具使用者的真实判断DBeaver 26 不是简单的一次版本号递增,它标志着这个开源数据库管理工具正式迈入“企业级轻量协同”新阶段。我从 2017 年开始在多个金融、电商和政企项目中把 DBeaver 当作主力 SQL 客户端…

2026/7/16 5:06:31阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/15 6:42:19阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/15 6:12:45阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/15 10:54:00阅读更多 →
A--10 Codex Review与GitHub PR工作流实战指南:从代码审查到安全合并

A--10 Codex Review与GitHub PR工作流实战指南:从代码审查到安全合并

摘要:本文系统讲解如何利用Codex App的Review功能与GitHub PR工作流,实现从代码修改到安全合并的完整流程。涵盖Review面板深度使用、/review命令实战、GitHub Connector配置、PR描述撰写技巧,以及常见问题排查方法。通过多个实战案例和流程图,帮助开发者建立高效的AI辅助代…

2026/7/16 0:00:38阅读更多 →
遗传算法解5皇后问题:从Hello World到工业优化的进化实验室

遗传算法解5皇后问题:从Hello World到工业优化的进化实验室

1. 项目概述:为什么用遗传算法解5皇后问题,而不是直接回溯?我带过十几届算法课,也给不少初创团队做过AI架构咨询。每次讲到组合优化问题,学生和工程师的第一反应永远是“写个回溯试试”。这没错——55棋盘上找所有合法…

2026/7/16 0:00:38阅读更多 →
5.1V稳压管输出为何只有4.7V?工作电流与负载影响分析

5.1V稳压管输出为何只有4.7V?工作电流与负载影响分析

前几天调试一个简单的电源模块,用到了5.1V稳压管。电路接好,上电测试,万用表一量——输出居然只有4.7V。第一反应是稳压管坏了,换了一个新的,结果还是4.7V。这让我想起很多初学者都会遇到的困惑:明明标称5.…

2026/7/16 0:00:38阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/15 15:50:47阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/15 8:52:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/15 14:06:23阅读更多 →