滴滴一面:怎么做好 Harness?大部分面试者的回答只停留在怎么用,没有回答的更系统
现在这个时代嘛“Vibe Coding”氛围感编程特别火相信大家身边不少开发者都已经习惯了拉上 AI Agent 就是一顿狂刷代码。你只要把 Prompt 写好了代码那不就哗哗出来了嘛。但是呢话说回来你真的管得住 AI 吗说实话很多时候确实是这样代码是刷出来了可坑也跟着一块儿埋进去了分层不对的情况就是那种本该写在 Service 层的逻辑结果被硬生生塞进了 Controller 里面。格式混乱的问题也挺常见缩进和命名五花八门的看了真的逼死强迫症。还有异常乱抛的一个 try-catch 就想包揽天下要不就是直接把异常给吞掉了。再就是没有测试跑不跑得通全凭运气更别说什么单测覆盖率了。“光靠提示词Prompt根本管不住 AI Agent。坑往往比功能还要多。”在最近某大厂的一面真题里面试官就直接抛出了一个挺前沿的考点就是问 Harness Engineering安全绳/缰绳工程具体怎么做。这道题现在已经是大模型相关岗位面试的经典必考题之一了但是呢据面试官反馈说大部分面试者的回答都只是停留在怎么用这个层面——说说自己配过 ESLint、写过 .cursorrules然后就没有然后了很少有人能讲出一套完整的、成体系的分层方法论出来。那今天我们就来把这套方法论给讲透了帮你在回答这道题的时候能够更有深度一些。什么是 Harness Engineering简单来说的话呢Harness Engineering 就是给 AI Agent 去搭建一套工程约束。在传统开发里面我们靠的是规范和人肉 Code Review 来约束程序员的。但是到了 Agent 时代呢我们就需要把这些规范变成硬规则做成一套让 AI Agent 绕不过去的反馈闭环才行。这套闭环的核心其实就是八个字能跑、能查、能拦、能改。[ AI Agent 生成代码 ] ── 1. 跑得起来 ── 2. 查得出问题 ── 3. 拦截不合格 ── 4. 逼它改过 (循环自我修正)这绝不是说你在 Prompt 里面反复唠叨请注意代码格式必须写单测就行了因为 Agent 这东西它很容易就转头就忘了。我们要做的是用硬性门禁让它在一遍遍的失败和报错当中去进行自我修正直到把合格的代码给写出来。核心框架Harness 工程约束的三层修炼如果你用过 AGENTS.md 或者 .cursorrules 的话呢那恭喜你你其实已经迈入了 Harness 的大门了入门版的。但这还只是怎么用这个层面。真正能让面试官眼前一亮的回答是能够往下做得更加扎实的三层约束1. 第一层架构级约束落在既定架构里AI 最容易放飞自我的地方就是系统架构了。架构级约束的本质说白了就是Agent 写出来的东西必须落在你定好的框架里面才行。统一技术栈这一块比如说 Java 项目就必须统一使用 Spring Boot。统一分层呢就是要严格限制 Controller - Service - Mapper 的调用链路。统一异常与返回体就是规定好全局异常处理的机制和统一的 JSON 返回格式。统一依赖边界就是严格禁止模块之间的循环依赖和越权调用。举个例子来说吧你让 Agent 帮你加一个用户注册接口如果没有架构约束的话呢它可能就直接在 Controller 里面写数据库操作了手动拼 SQL返回体格式跟其他接口完全不一样。但是你要是有了架构级约束——比如在 AGENTS.md 里面写明所有业务逻辑必须在 Service 层Controller 只做参数校验和调用统一返回 Result包装类——那 Agent 生成的代码就能跟项目里其他接口长得一样了你就不用去逐行搬家了嘛。2. 第二层质量级约束格式、规范、覆盖率把质量指标做成铁律一层一层地卡死。这里呢就需要祭出各种自动化静态分析和检测工具了配在本地或者 CI 阶段都行工具名称约束维度作用说明Spotless统一格式化强制规范代码缩进、空格、换行格式不对的话直接编译就失败了。Checkstyle编码规范约束命名风格、类大小、魔术常量这些。SpotBugs缺陷拦截自动扫描代码里面常见的空指针、资源未关闭这些潜在的 Bug。JaCoCo覆盖率门禁强制单测门禁比如说单测覆盖率必须达到 90%不然就不给通过。ESLint / Prettier前端规范前端质量约束同样也不能落下把语法和样式都给卡死了。举个例子来说明一下Agent 写了一段代码里面 catch (Exception e) {} 直接就把异常给吞掉了——这种写法人眼一看就知道是坑但是 Agent 自己往往意识不到有什么问题。你要是配上 SpotBugs 之后呢这类空 catch 块资源未关闭的问题就会被自动标红构建直接就失败了Agent 拿到报错信息之后才会老老实实地把异常处理给补全了。JaCoCo 覆盖率门槛也是同样的道理没有它的话 Agent 大概率就只写业务代码不写测试了你卡了 90% 的门槛呢它就必须把边界情况的单测也给补上才行。3. 第三层流程级约束CI/CD 门禁反馈闭环工具都有了那怎么才能让 Agent 乖乖听话呢这就需要流程级门禁了。不要等到人肉 Review 的时候才发现问题。要通过 CI/CD比如 Jenkins、Git Hooks来构建自动化流水线Agent 提交代码之后就触发流水线了。然后编译器去进行编译Spotless 去做格式化检查Checkstyle 去做静态扫描JaCoCo 去运行单测。任何一步要是挂了的话呢流水线就直接中断了并且把编译报错、测试未通过的这些堆栈信息作为上下文自动反哺给 Agent。然后逼迫 Agent 根据这些报错信息去进行自我修正直到流水线全部变绿通过为止。举个实际的例子Agent 提交了一版代码Git Hook 触发了本地检查Checkstyle 报出了 3 处命名不规范的问题JaCoCo 显示覆盖率只有 72%。这些报错不需要人工去转述直接把日志喂回给 Agent 就行了它就能照着报错逐条去修——改命名、补单测直到门禁全部变绿了才允许合入。整个过程当中工程师几乎就不用插手了真正做到把重复修正的工作交给 Agent 来扛。有没有 Harness差别有多大我们可以用一张图来直观对比一下两种开发模式下的长远走向没有 Harness 约束的情况是这样的现状就是 AI 刷代码确实挺快的但是技术债呈指数级飙升越滚越大。结局呢就是后期维护成本变得极高项目最终就沦为没人敢动的屎山了。引入 Harness 约束之后呢现状就是 AI 生成代码之后在编译器、测试报告、质量门禁、人工审查的这些层层关卡当中被一逼再逼。结局就是 Agent 在编译和测试当中进行自我修正最终产出符合高标准的企业级代码。终局思考Vibe Coding 时代程序员的活是什么在 AI 这个时代呢开发者的定位正在悄悄地发生变化。我们需要记住下面这三个关键点工程规范比以前更严了——正因为代码生成变得简单了嘛入口的把关就必须比以前更加严苛才行不然的话垃圾代码就会泛滥成灾了。重复的修正工作呢大部分都可以交给 Agent 来扛了——程序员不再需要机械地去改格式、补单测、修小 Bug 了把门禁日志丢给 Agent 让它自己去改就行了。工程师的核心价值——其实就是去设计和维护好这套 Harness也就是安全绳工程。未来的优秀工程师不再是那个写代码最快的人了而是那个能为 AI 搭建完美运行轨道的轨道设计师。这也是为什么面试官会在这道题上格外挑剔——他想看到的不是我用过什么工具而是我能不能设计出一套完整的、能够自我闭环的约束体系。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

相关新闻

【试读】企业级项目五:金融信贷实时数仓建设

【试读】企业级项目五:金融信贷实时数仓建设

帮助很多同学掌握了金融数仓项目的整体建设思路,但在真实企业中,仅有离线数仓其实远远不够,因为金融业务天然对实时性有极高要求。 例如: 当一个用户发起贷款申请时,风控系统需要在几百毫秒内完成风险评估&#xff1…

2026/8/24 21:32:11 阅读更多 →
人工智能与国家安全:机遇与挑战

人工智能与国家安全:机遇与挑战

人工智能(AI)的浪潮不仅改变了我们的工作方式、沟通渠道和信息获取途径,更在以惊人的速度颠覆着国家的安全防护模式。对于国家安全和情报机构来说,AI是一座巨大的宝库:它能以人类分析师无法企及的规模和速度&#xff0…

2026/8/29 21:07:01 阅读更多 →
自动驾驶仿真利器Carla:从游戏引擎到算法测试沙盒

自动驾驶仿真利器Carla:从游戏引擎到算法测试沙盒

1. 从游戏引擎到自动驾驶仿真:Carla的诞生与定位 如果你正在研究自动驾驶,或者对机器人仿真感兴趣,那么“Carla”这个名字你大概率不会陌生。它不是一个简单的游戏,也不是一个纯粹的物理引擎,而是一个专门为自动驾驶研…

2026/8/30 22:33:36 阅读更多 →

最新新闻

Claude Code 在测试中的正确用法:从脚本生成到测试闭环

Claude Code 在测试中的正确用法:从脚本生成到测试闭环

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 4:51:06 阅读更多 →
基于双扩展卡尔曼滤波的锂电池SOC估计:Matlab实现与工程实践

基于双扩展卡尔曼滤波的锂电池SOC估计:Matlab实现与工程实践

简介:本资源是一套面向电池管理系统(BMS)算法研究者与新能源方向研究生的锂电池荷电状态(SOC)估计算法实现方案,聚焦双扩展卡尔曼滤波(Dual EKF)这一高精度动态估计方法,…

2026/9/3 4:51:06 阅读更多 →
transcribe.cpp:基于C++的本地语音识别工具部署与性能测试

transcribe.cpp:基于C++的本地语音识别工具部署与性能测试

这次我们来看一个专门用于语音识别的本地部署项目——transcribe.cpp。这个开源工具基于 C/C 开发,支持 GGUF 模型格式,能够在 CPU 和 GPU 上高效运行,特别适合需要离线语音转文字的场景。transcribe.cpp 的核心优势在于它的轻量化和高性能。…

2026/9/3 4:51:06 阅读更多 →
基于vnpy的量化交易AI工程化实践闭环

基于vnpy的量化交易AI工程化实践闭环

简介:本资源是一个面向量化交易开发者与金融AI学习者的实战型测试项目,基于开源vnpy框架集成机器学习与深度学习算法,覆盖金融时间序列预测、市场情绪分析、高频信号挖掘、多因子建模、投资组合优化及回测验证等核心环节,解决策略…

2026/9/3 4:51:06 阅读更多 →
PHP+MySQL成绩查询系统毕业设计完整开发指南

PHP+MySQL成绩查询系统毕业设计完整开发指南

简介:一份基于PHPSQL的成绩查询系统毕业设计资料包,专为计算机相关专业学生准备,覆盖毕业设计从选题、开发、文档撰写到最终答辩的完整链路。系统以PHP为后端、MySQL为数据库,采用MVC架构实现学生端登录、成绩查询、个人信息修改&…

2026/9/3 4:51:06 阅读更多 →
PHP在线客服系统WeLive:架构、部署与二次开发实战指南

PHP在线客服系统WeLive:架构、部署与二次开发实战指南

简介:WeLive是一款采用PHP开发的开源在线客服系统,基于WebSocket全双工通信实现请求与推送,兼顾Web端和移动端,内置AI自动回复、5种配色、中英文自动切换,且客服坐席无数量限制,适合需要自主搭建网站客服体…

2026/9/3 4:50:05 阅读更多 →

日新闻

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

先别急着点开,这不是劝退文,而是想讲清楚一件事:用 AI 做逆向值不值得学?如果要用,怎么搭一套“V8 环境 AI 智能体”来提升效率。最近逆向圈、爬虫圈都在聊 AI Agent、AST 工程逆向、JS 逆向这些词,很多新手…

2026/9/3 0:00:29 阅读更多 →
安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →
ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/3 0:00:29 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/3 4:22:22 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/3 4:22:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/3 4:22:59 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/3 4:17:49 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/3 4:18:56 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/3 4:21:44 阅读更多 →