新闻详情

新闻详情

首页 / 资讯中心 / 详情

SDD与Harness驾驭工程:从氛围编码到可控AI编程实战

发布时间:2026/10/1 13:02:16来源:尧图网络
SDD与Harness驾驭工程:从氛围编码到可控AI编程实战
1. 从“氛围编码”到可控工程SDD 与 Harness 到底在解决什么“氛围编码”这个词最早在开发者圈子里流行起来的时候带着一种半调侃半惊喜的语气。你对着 AI 编程助手敲下一段模糊的需求比如“帮我做一个用户登录页面要好看一点”然后 AI 哗啦啦吐出一大段代码跑起来居然还能用。那种感觉就像开盲盒——运气好一次成型运气不好改到怀疑人生。我身边不少朋友一开始都沉迷于这种“对话式开发”觉得效率飞起但项目稍微复杂一点问题就全暴露了需求漂移、代码风格不统一、边界条件没人管、测试覆盖率约等于零。这就是“氛围编码”的本质它把软件工程中最需要严谨性的部分交给了概率模型去即兴发挥。AI 大模型确实能写出语法正确的代码但它不知道你的项目里已经有一个同名的工具函数不知道你们的数据库连接池配置上限是 20更不知道这段代码三个月后会被谁维护。于是代码能跑但不可控。SDDSpecification-Driven Development规范驱动开发和 Harness驾驭工程这两个概念就是在这个背景下被推到台前的。SDD 的核心思想并不新鲜——先写规范再写代码。但它在 AI 原生软件工程语境下有了新的含义规范不再只是给人看的文档而是直接作为 AI 生成代码的约束条件和验证依据。Harness 则更像是一套“缰绳”和“马具”它不负责生成代码而是负责把 AI 的生成行为框定在可控范围内包括提示词管理、上下文注入、输出校验、失败重试、插件编排等一系列工程化手段。关键词里提到的“deepseek harness”“harness engineering”“claudecode 实战 harness 工程之道”这些热词其实都指向同一个趋势开发者正在从“让 AI 写代码”转向“让 AI 在工程约束下写代码”。这不是简单的工具升级而是工作范式的迁移。我自己的体会是当你把 SDD 和 Harness 结合起来用的时候AI 编程助手才真正从一个“会写代码的实习生”变成了“能按规范交付的工程协作者”。这篇文章适合两类人看一类是已经在用 AI 编程工具、但被“氛围编码”坑过的开发者另一类是软件工程专业的学生或刚入行的新人想了解 AI 原生软件工程到底和传统软件工程有什么区别。我会从核心概念拆解、工具链选型、实操流程、踩坑经验几个维度展开尽量把每个“为什么”讲清楚让你看完能直接在自己的项目里复现。2. SDD 规范驱动开发把“说清楚”变成可执行的约束2.1 规范在 AI 编程语境下的三重角色传统软件工程里规范文档通常是需求分析阶段的产物写完就归档后续开发靠口口相传或者代码注释。但在 AI 原生软件工程里规范的角色发生了根本性变化。它同时承担三个功能生成输入、验证依据、回归基准。生成输入很好理解——你把规范喂给 AIAI 根据规范生成代码。但这里有个关键细节规范的结构化程度直接决定了生成质量。我试过用一段自然语言描述“用户登录功能”AI 生成的代码里居然把密码明文存进了 localStorage。后来我把规范改成表格形式明确列出“密码字段仅用于传输禁止本地持久化”AI 就再也没犯过这个错误。验证依据是指规范里的每一条约束都可以转化成测试用例或者静态检查规则。回归基准则是在后续迭代中任何代码变更都要重新对照规范检查防止 AI 在修改时“顺手”破坏原有约束。提示规范不是越详细越好而是要“可判定”。像“界面要美观”这种描述AI 无法判定是否满足但“按钮圆角半径 8px主色调 #1890FF”就是可判定的。2.2 一份可被 AI 消费的规范长什么样我目前用的规范模板包含五个部分功能边界、数据契约、接口签名、异常路径、验收标准。功能边界用一句话说明这个模块做什么、不做什么数据契约定义输入输出的数据结构包括字段名、类型、是否必填、默认值接口签名给出函数名、参数列表、返回值类型异常路径列出所有可能的错误场景和对应的处理方式验收标准则是可执行的测试断言。举个例子如果我要让 AI 生成一个“分页查询用户列表”的函数规范会写成这样function: queryUserList input: page: int, required, min1, default1 pageSize: int, required, min1, max100, default20 keyword: string, optional, maxLength50 output: total: int items: array of User User: id: string name: string email: string errors: - INVALID_PAGE: page 1 - INVALID_PAGE_SIZE: pageSize 1 or pageSize 100 - KEYWORD_TOO_LONG: keyword length 50 acceptance: - 当 page0 时返回 INVALID_PAGE 错误 - 当 pageSize101 时返回 INVALID_PAGE_SIZE 错误 - 当 keyword 长度 51 时返回 KEYWORD_TOO_LONG 错误 - 正常查询返回 total 和 itemsitems 长度不超过 pageSize这种 YAML 格式的规范AI 解析起来准确率极高而且可以直接转成单元测试。我实测下来用这种规范生成的代码首次通过测试的比例从原来的 40% 左右提升到了 85% 以上。2.3 规范漂移AI 编程中最隐蔽的坑规范漂移是指在多次迭代中AI 生成的代码逐渐偏离了原始规范而开发者没有及时发现。这个问题在“氛围编码”模式下几乎必然发生因为每次对话都是独立的AI 不会主动检查历史规范。我踩过最惨的一次是一个订单状态机在第三次迭代时AI 把“已取消”状态的流转条件改成了“任何状态都可以直接取消”导致已发货的订单也能被取消。这个 bug 上线后才发现回滚花了两天。解决规范漂移的核心手段是规范版本化 差异检查。每次让 AI 修改代码之前先把当前规范版本和代码实际行为做一次比对确认没有漂移后再进行修改。具体操作上我会用 Git 管理规范文件每次修改都提交 commit然后在 CI 流程里加一步用 AI 解析规范文件生成断言跑一遍测试。如果测试失败说明代码和规范不一致需要人工介入。3. Harness 驾驭工程给 AI 套上缰绳的工程化手段3.1 Harness 不是工具而是一层编排架构很多人第一次听到“Harness”这个词会以为它是某个具体的软件或者插件。其实不是。Harness 在 AI 原生软件工程里指的是一层编排架构它位于开发者和 AI 大模型之间负责管理提示词、注入上下文、校验输出、处理失败、调度插件。你可以把它理解成一个“AI 编程的操作系统”——大模型是 CPUHarness 是内核开发者通过 Harness 提供的接口来调用 AI 能力。为什么需要这层架构因为直接调用大模型 API 太“裸”了。你需要自己拼接提示词、自己管理对话历史、自己解析输出、自己处理格式错误。项目小的时候还能应付一旦涉及多个模块、多种语言、多套规范裸调 API 的复杂度会指数级上升。Harness 把这些通用能力抽象出来让开发者只需要关注“我要 AI 做什么”而不是“怎么让 AI 稳定地做”。关键词里提到的“deepseek harness”“dsh harness”“harness anything”这些本质上都是不同团队对 Harness 架构的具体实现。有的偏向插件化有的偏向工作流编排有的偏向多模型路由。选型的时候不要只看功能列表要看它的扩展点是否满足你的场景。3.2 提示词模板管理别再把提示词硬编码在代码里我见过太多项目把提示词直接写在 Python 文件里用 f-string 拼接。这种做法在原型阶段没问题但到了生产环境就是灾难。提示词需要版本管理、需要 A/B 测试、需要根据上下文动态组装。Harness 的第一个价值就是提示词模板化。我的做法是把提示词拆成三层系统层、任务层、上下文层。系统层定义 AI 的角色和通用约束比如“你是一个资深 Python 后端工程师遵循 PEP8 规范禁止使用 eval”。任务层定义当前要完成的具体任务比如“根据以下规范生成一个分页查询函数”。上下文层注入当前项目的相关信息比如已有的工具函数列表、数据库表结构、依赖库版本。这三层在 Harness 里分别存储运行时动态组装。这样做的好处是修改系统层约束不需要动任务层新增项目上下文不需要改提示词模板。我实测下来这种分层方式让提示词维护成本降低了至少一半。3.3 输出校验与失败重试让 AI 的“胡说八道”无处遁形AI 生成代码最让人头疼的问题不是写得不好而是写得看起来很好但实际上是错的。比如它可能会调用一个不存在的库函数或者返回一个和规范不符的数据结构。Harness 的第二个核心价值就是输出校验。校验分三个层次语法校验、类型校验、行为校验。语法校验最简单用对应语言的解析器跑一遍就行。类型校验需要结合规范里的数据契约检查生成的函数签名和返回值类型是否匹配。行为校验最复杂需要实际运行代码或者用静态分析工具检查逻辑是否符合规范。我目前的做法是在 Harness 里配置一个校验管道AI 生成代码后先跑语法校验失败则直接重试通过后跑类型校验失败则把错误信息拼回提示词让 AI 修正最后跑行为校验用规范里的验收标准生成测试用例跑通才算完成。整个流程自动化开发者只需要最后 review 一次。注意重试次数不要超过 3 次。超过 3 次还失败说明要么规范有问题要么任务太复杂需要人工拆解。无限重试只会浪费 token 和时间。3.4 插件编排把重复劳动交给 HarnessHarness 的第三个价值是插件编排。在 AI 编程过程中有很多重复性的辅助工作比如查数据库表结构、查依赖库版本、查代码风格配置、查历史提交记录。这些工作如果每次都手动做效率很低。Harness 允许你把这些能力封装成插件在需要的时候自动调用。举个例子我写了一个“数据库表结构查询”插件。当 AI 需要生成一个涉及数据库操作的函数时Harness 会自动调用这个插件把相关表的结构注入到上下文里。AI 就不需要猜字段名和类型了生成的代码准确率大幅提升。另一个常用的插件是“依赖库版本检查”防止 AI 调用一个项目里根本没装的库。关键词里提到的“harness failed to load plugins”是一个常见问题通常是因为插件路径配置错误或者插件依赖缺失。排查的时候先看 Harness 的日志确认插件加载失败的具体原因再检查插件的入口文件和依赖声明。4. 把 SDD 和 Harness 串起来一个完整的 AI 原生开发流程4.1 环境准备别急着写代码先把工具链搭好在开始之前你需要准备以下工具一个支持插件扩展的 Harness 实现比如 deepseek harness 或者自己基于开源框架搭建、一个 AI 大模型 API可以是本地部署的也可以是云端的、一个版本控制工具Git、一个 CI 工具比如 GitHub Actions 或者 GitLab CI。如果你用的是 Python 技术栈还需要准备好 pytest 或者 unittest 作为测试框架。安装 Harness 的时候最容易忽略的是插件目录的权限配置。我遇到过好几次插件加载失败最后发现是 Harness 进程没有读取插件目录的权限。另外如果你的项目有多个 Python 虚拟环境要确保 Harness 使用的是正确的那个否则会出现“插件依赖装在了 A 环境Harness 跑在 B 环境”的尴尬情况。4.2 从规范到代码一次完整的生成过程假设我要开发一个“用户注册”功能。第一步写规范文件spec/user_register.yaml内容包括功能边界、数据契约、接口签名、异常路径、验收标准。第二步在 Harness 里配置任务提示词指定使用spec/user_register.yaml作为生成依据。第三步运行 Harness它会自动完成以下动作读取规范文件、注入项目上下文比如已有的用户模型定义、调用大模型生成代码、跑语法校验、跑类型校验、跑行为校验、输出最终代码。整个过程我只需要敲一行命令剩下的交给 Harness。生成出来的代码会放在指定的目录里同时附带一份测试文件。我 review 一遍确认没问题就提交。如果校验失败Harness 会输出失败原因和重试记录我可以根据这些信息调整规范或者提示词。4.3 迭代与回归AI 改代码时怎么防止“改坏”AI 修改代码比生成代码更容易出问题因为它可能会“顺手”优化一些不该优化的地方。我的做法是每次让 AI 修改代码之前先跑一遍全量测试确认当前代码是绿的。然后让 AI 基于规范修改修改完再跑一遍全量测试。如果测试变红说明 AI 改坏了直接回滚重来。Harness 在这里的作用是自动执行回归测试。我会在 Harness 里配置一个“修改后校验”管道AI 每次输出修改后的代码Harness 自动跑测试失败则拒绝接受修改并提示 AI 重新生成。这样即使 AI 偶尔“手滑”也不会把问题代码提交到仓库里。5. 踩坑实录那些文档里不会写的经验5.1 规范写得太细AI 反而不会写了刚开始用 SDD 的时候我恨不得把每个字段的长度、每个错误码的数值都写进规范里。结果 AI 生成的代码虽然符合规范但极其僵硬完全没有考虑实际业务场景。后来我调整了策略规范只写“必须满足的约束”不写“建议的实现方式”。比如“密码长度 8-20 位”是必须满足的约束“密码要用 bcrypt 加密”是建议的实现方式。前者写进规范后者放在提示词里作为参考。5.2 Harness 插件加载失败一个折腾了两小时的坑有一次我写了一个自定义插件本地测试没问题放到 CI 环境就报harness failed to load plugins。排查了半天最后发现是 CI 环境里的 Python 版本比本地低一个小版本插件里用了一个新版本的语法特性。这件事给我的教训是插件的依赖声明要尽可能宽松不要用太新的语法特性。另外Harness 的日志级别要调到 DEBUG否则插件加载失败的具体原因根本看不到。5.3 AI 生成的测试用例“自欺欺人”AI 生成测试用例的时候倾向于生成“能通过”的测试而不是“能发现问题”的测试。比如它会写assert result is not None这种毫无意义的断言。我的应对方法是在规范里明确要求测试用例必须覆盖所有异常路径并且每个断言必须检查具体的值或者状态。Harness 的校验管道里也会加一条如果测试用例的断言过于宽松直接拒绝。5.4 多模型切换带来的上下文不一致我试过在 Harness 里配置多个大模型根据任务类型自动切换。结果发现不同模型对同一段规范的理解有差异生成的代码风格也不统一。后来我固定用一个模型做代码生成只在代码 review 阶段用另一个模型做辅助检查。这样既保证了生成风格的一致性又利用了多模型的互补优势。6. 给不同阶段开发者的实操建议如果你刚开始接触 AI 编程我的建议是先从 Harness 入手不要一上来就搞全套 SDD。选一个轻量的 Harness 实现把提示词管理和输出校验用起来感受一下“可控生成”和“氛围编码”的区别。等你习惯了这种工作方式再逐步引入规范驱动把规范文件作为生成依据。如果你已经有一定 AI 编程经验但项目规模上来了感觉越来越乱那我的建议是先做规范梳理再上 Harness 编排。把你项目里最核心的三个模块的规范写出来用 YAML 格式然后手动跑一遍生成和校验流程。确认规范本身没问题之后再把流程自动化。如果你是在做软件工程课程设计或者毕业设计想用 AI 辅助开发但怕被老师看出来“全是 AI 写的”那我的建议是把 SDD 和 Harness 的流程记录下来作为你工程能力的证明。规范文件、提示词模板、校验管道配置、测试报告这些都是实打实的工程产出比单纯堆代码更有说服力。最后分享一个我自己的小技巧每次让 AI 生成代码之前先让它复述一遍规范。比如我会在提示词里加一句“请先用一句话总结你要实现的功能和关键约束然后再生成代码”。这样做有两个好处一是确认 AI 真的理解了规范二是如果 AI 复述错了我可以及时纠正避免生成一堆废代码。这个技巧看起来简单但实测下来能减少至少 30% 的无效生成。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Agent判断器选型指南:Laya与Jev模型部署及并发实践 2026/10/1 13:43:40

Agent判断器选型指南:Laya与Jev模型部署及并发实践

1. 从“能跑”到“靠谱”:为什么你的 Agent 需要一个判断器做 Agent 开发的朋友大概率都经历过这个阶段:Demo 跑通了,工具调用也能走通,但一上真实场景就开始“发疯”——该调工具的时候跟你闲聊,该直接回答的时候非要…

阅读更多 →
游戏清单lua下载站:lua脚本资源、罗技脚本与调试工具全解析 2026/10/1 13:43:40

游戏清单lua下载站:lua脚本资源、罗技脚本与调试工具全解析

1. 从“游戏清单”三个字说起:这个站到底在解决什么问题第一次看到“NPC520是一家游戏清单lua下载站”这个标题,很多人脑子里冒出来的第一个问号是:游戏清单和lua脚本有什么关系?这俩词放在一起,乍看像是两个不相干的东…

阅读更多 →
C#调用ONNX Runtime部署YOLOv8实现工业级计数 2026/10/1 13:43:40

C#调用ONNX Runtime部署YOLOv8实现工业级计数

简介:本资源是一套基于C#与ONNX Runtime集成YOLOv8模型的工业级计数解决方案,面向具备.NET开发基础及初步计算机视觉认知的中高级开发者,聚焦竹签、一次性筷子等细长规则物体的实时检测与精准计数场景,适用于食品包装质检、餐饮耗…

阅读更多 →
Jenkins从安装到自动化部署Java应用完整实战指南 2026/10/1 13:43:40

Jenkins从安装到自动化部署Java应用完整实战指南

做持续集成和自动化部署,Jenkins基本是绕不开的工具。我自己从最早用Hudson那会儿开始,到后来接手带几百个构建任务的Jenkins集群,前前后后装过不知道多少遍。每次有朋友问我在新环境上从零装Jenkins,最常听到的问题就是&#xff…

阅读更多 →
Java多线程进阶小结:从线程池到数据一致性的并发实战 2026/10/1 13:43:40

Java多线程进阶小结:从线程池到数据一致性的并发实战

我先说个真事。去年我帮一个朋友排查线上问题,服务在高峰期突然卡死,日志最后一条停在某个批量任务里,后面什么都没打出来。我让他先jstack抓线程快照,结果一抓就发现问题——几十个线程全部阻塞在同一个锁上,而持有锁…

阅读更多 →
Univer实战:构建模板化填报表单的单元格锁定与数据回收 2026/10/1 13:43:33

Univer实战:构建模板化填报表单的单元格锁定与数据回收

前一阵子接了一个内部管理系统的小项目,业务方提的需求特别典型:我们要一个表格,可以自己设计表头、设置格式,然后发给各个部门的人填数据。填的人只能改他们该填的格,不能动其他区域,最后所有数据能收回来…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉