如何构建自己的“ Harness ”

发布时间:2026/10/29 8:45:41

如何构建自己的“ Harness ” 干货长文预警。很多人让 AI 写代码已经驾轻就熟但让 AI 稳定地产出能上生产的代码是另一回事。这篇文章我拿一个真实例子——RBAC 权限系统用户-角色-权限——把完整工作流拆开每一步为什么这么做、具体怎么做、有什么坑。全流程真实可复用不灌水。先回答为什么你用 AI 越用越乱先别急着看方法先对号入座——你有没有这些感觉AI 写出来的东西不敢合合了怕出问题AI 换个会话就什么都不记得上次定的方案全作废AI 偶尔会把手头代码越改越乱回退都找不到原样大项目让 AI 接手拆不动、接不住。如果你中了两条以上问题不在 AI而在你没有一套流程。先说一个贯穿全文的观点AI 很好用但它的可靠性是挣出来的不是给出来的。AI 有三件事天生做不好验证不了自己写的代码、记不住上次的决策、偶尔会回退或误删。而这篇文章里的每一步本质上都是在补这三个洞。总览我的 AI 开发流水线先记住这张图后面每一步都是它的展开一句话记住它先让 AI 有地可依环境再让它方向不偏设计然后让它每一步可验证TDD最后让代码落袋为安git CI。技术栈很常规你大概率都熟后端Node.js前端Vue3 Vite UnoCSS Naive UIUI 组件由uipro统一规范。选 RBAC 当例子是因为它足够真实——权限做错了是要出事的最考验流程靠不靠谱。第一步搭环境——让 AI 的产出能被验证为什么这是第一步AI 有个致命短板它自己证明不了代码对不对。你让它改一个接口它说改好了但你能不能放心取决于你能不能立刻验证。所以第一步不是写代码而是给 AI 搭一个实验台。怎么做三件套gitAI 敢大胆动手的前提。一切可回退、可对比、可审查coding agent执行器Claude Code、Codex 等负责理解需求、写代码、跑测试test-env用Docker 本地数据构建的开发环境。test-env 有三个硬性要求缺一个都不合格要求含义反例可重建环境坏了删掉一键重建手修了一个下午的数据库确定性每次起来都是同一套初始状态测试数据被人改过测出幻觉 bug隔离AI 在独立环境里随便折腾直连生产库一次误删全完记住这条红线千万不要直连生产库。AI 的一次误操作对生产数据来说是不可逆的——这条写进项目的规矩里比写进人的自觉里更可靠。技术规约也在这里定环境搭好的同时把技术规约定下来它是给 AI 的宪法架构前后端分离apiweb技术栈Node Vue3 Vite UnoCSS Naive UIUI 规范由uipro统一约束组件保证 AI 产出的界面风格一致、组件可复用。目录怎么摆整个示例系统的目录这一步就定死——它决定了 AI 往哪里写代码rbac/├── api/ # 后端Node.js│ ├── src/│ │ ├── routes/ # 接口层用户 / 角色 / 权限 的 HTTP 接口│ │ ├── services/ # 业务层分配角色、权限校验│ │ └── models/ # 数据模型ORM对应 migrations 的表│ ├── migrations/ # SQL 版本管理schema 变更像代码一样走 git│ │ ├── 001_create_user.sql│ │ ├── 002_create_role.sql│ │ ├── 003_create_permission.sql│ │ ├── 004_create_user_role.sql│ │ └── 005_create_role_permission.sql│ └── tests/ # TDD 测试├── web/ # 前端Vue3 Vite UnoCSS Naive UI│ └── src/│ ├── pages/ # 页面│ ├── components/ # 组件由 uipro 统一规范│ └── api/ # 调后端的 HTTP 客户端├── test-env/ # Docker 本地开发环境本地数据│ ├── docker-compose.test.yml│ └── init/ # 按序执行 migrations 灌种子数据└── docs/ # 技术规约、设计文档这一段的关键认知数据模型不只是 ORM 代码还要有migrations/——每处 schema 变更就是一个带序号的 SQL 文件走 git、可回滚、可追溯。schema 也是代码别让它脱离版本控制。api 和 web 怎么衔接很多团队在这里含糊我讲清楚web 永远不直接碰数据库只通过 HTTP 调api的 REST 接口。用户登录后api 签发 JWTweb 之后每个请求都带上 tokenapi 在路由层做权限校验没有权限返回 403。web 侧也有路由守卫、菜单按权限显示这类前端控制但它只是体验优化——真正的安全边界在 api 侧前端可以被绕过api 不能。想通这一点你才知道安全测试该写在哪一层。第二步设计先行——别让 AI 在流沙上盖楼为什么很多人让 AI 上来就写代码这是最大的坑开发完了才发现方向错了前面的投入全白费。AI 每个会话都失忆如果你连设计都靠嘴说它写着写着就偏了。怎么做我坚持先用superpowers把需求和设计确认好再动手用brainstorming把做什么、为什么、边界在哪想清楚产出设计文档架构、数据模型、接口、页面然后才进开发。RBAC 这一步要确认的东西权限点怎么划分、角色能不能叠加、无角色用户怎么办、哪些页面需要哪些权限……这些不确定就开发等于让 AI 在流沙上盖楼。记住这条经验设计阶段多花的时间会在开发阶段成倍省回来。第三步TDD 开发——给 AI 一份需求契约设计确认后进入开发推荐使用TDD做法是按功能点推进一个功能点一套红 → 绿 → 重构。为什么 TDD 对 AI 开发尤其重要因为测试是给 AI 的唯一一份需求契约它不记得开会内容但它能读懂这个函数必须通过这组测试。测试红了它知道要实现测试绿了它知道做完了。RBAC 里最典型的就是权限校验——永远先写测试// 红先写测试此刻实现还不存在describe(requirePermission, () { it(有权限的请求放行, () { withUser({ role: admin }) const handler requirePermission(user:create, () ok) expect(handler()).toBe(ok) }) it(无权限的请求返回 403, () { withUser({ role: viewer }) const handler requirePermission(user:create, () ok) expect(() handler()).toThrowError(/403/) })})测试红了 → 让 agent 实现 → 变绿 → 重构。每完成一个功能点、测试全绿才进下一个。测试不仅是给 AI 的契约也是你后面验收时的依据。第四步代码评审——从三个角度挑刺功能写完不直接验收先过code-review我从三个角度审性能有没有明显的慢操作、N1 查询、无谓的重复计算安全权限校验能不能被绕过、参数校验漏没漏、有没有注入风险功能是否真正满足需求边界场景无权限、重复分配、空角色有没有覆盖。RBAC 的评审重点是安全——权限矩阵是否完备、有没有绕过路径。这个角度错了上线就是事故。一个建议写代码的和审代码的分开。让 AI 审自己的代码等于让运动员兼裁判换一个 agent 来挑刺它没有维护自己产出的包袱能狠得下心。第五步用户验收——需求和代码的唯一对账评审通过后进入用户验收。我把功能点摆给用户看验收通过 → 这个功能点落袋有调整 → 回到开发流程迭代改完再评再验。记住验收是一个循环不是一个终点。它是需求和代码之间唯一的对账动作——评审保证代码写得对验收保证做的东西是想要的两件事不能互相替代。第六步提交 推送——防止 AI回退的最后防线一个很多人在意的细节功能点验收通过就立即提交代码。但这还不够我有个习惯审核通过的功能不仅提交还要推送远程仓库。为什么防止 AI 回退。AI 在后续迭代中可能误改或回退掉已验证的代码——如果只在本地万一丢了就是不可恢复的损失。所以先落袋为安把已验证的代码推上远程作为安全基线。后面 AI 再怎么折腾都有这个基线可以回到原点。hooks 自动推 CI/CD推送之后hooks自动触发 CI/CD 部署push → hook 触发 → 拉代码 → 起 test-env → 跑测试 → 构建 → 部署又一个前后呼应CI 跑的环境就是第一步搭的那套 test-env数据库 schema 是同一套 migrations。验证机制从本地习惯变成了强制流程——这就是生产可部署和原型的分水岭原型靠运气生产靠流水线。第七步上下文管理——给 AI 装持久记忆最后一步也最容易被忽略。AI 会话是失忆的我用wdp-ctx当项目记忆。项目启动建一份profile把会长期不变的东西固化下来至少四类技术规约架构决策、技术栈、UI 规范——AI 照它写才不会越写越偏业务 skills业务规则与方法如权限点怎么命名角色叠加取什么策略——AI 照它判才不会想当然工具 skills项目用哪些技能、各在什么场景调用TDD、评审、画图——AI 照它选才不会用错方法运行方式与已知坑怎么起环境、怎么跑测试、踩过哪些雷——AI 照它执行才不会重蹈覆辙。每个阶段收尾跑一次sum固化进度为快照新开会话用init一键载入无缝接续收工 /wdp-ctx sum# 把今天的进展和决策固化下来开工 /wdp-ctx init # 新会话载入全貌无缝接续记住让决策跨会话存活AI 才真正变成长期的生产力而不是一段用完即弃的对话。推荐阅读原文给 AI 开发找个简单的记忆方案避坑清单这 7 条我踩过坑才总结出来#规则防止什么1验收通过立即提交并推送远程防 AI 回退代码落袋为安2先用 superpowers确认需求和设计再开发防方向错误别开发完才发现做错了3本地数据 Docker开发环境绝不直连生产库防误删、防污染误操作不可逆4上下文当日用品profile 启动建、sum 阶段收尾跑、init 新会话接续防换会话就断片5按复杂度分级选工具简单直接 agent中等走 skill复杂上子代理/工作流防止杀鸡用牛刀 / 拿菜刀砍大树6写和审分开交付前给 AI 戴技术专家/业务专家角色终审防止自说自话堵住盲区7技术图用archify轻量图用Mermaid让图也可验证、可维护你现在就能开始做的 3 件事别想着一步到位从最小闭环开始搭一个最小环境半天一个 Docker test-env 一份技术规约。环境能一键重建这是后面所有步骤的地基挑一个小功能走一遍 TDD一天先写测试 → 让 agent 实现 → 变绿。感受一下每一步有据可依是什么体验项目启动就建一个 wdp-ctx profile每个阶段收尾sum一次。等你要换会话接续时你会感谢这个习惯。最后总结把流程当工作台而不是负担回顾这条完整流水线每一站单独看都不复杂真正的价值在串成一条流水线环境保证能验证设计先行保证方向不偏TDD 保证每一步有据可依评审保证有人挑刺验收保证需求和代码对齐提交推送保证代码落袋为安CI 保证强制验证上下文保证决策不丢。AI 开发不是丢一句话让它写而是用一套流程把 AI 的不可靠性兜住。当你发现 AI 的产出可以被验证、被接续、被审查时它就从玩具变成了真正能部署上生产线的生产力。这套流程用到的工具superpowers设计 TDD、code-reviewer评审、wdp-ctx上下文管理、archify架构图、uiproUI 规范。都是开源或常见的技能/插件你可以按自己的栈替换——方法比工具重要但工具能让方法落地。
延伸阅读

更多相关文章

2026/10/29 11:18:48

装修还没开工,AI已经替你把坑踩了一遍

装修这件事,大概是成年人世界里最让人头疼的“必修课”之一。 你刚拿到新房钥匙,满心欢喜地开始看效果图、选风格、谈装修公司。设计师给你看的效果图美得让你心动——无主灯设计、满墙收纳柜、开放式厨房、艺术吊顶……每一个细节都像是理想中家的模样…

2026/10/29 12:28:04

Linux 驱动研究 —— SDIO (5)

1. 计算机体系“总线”与 Linux 驱动“总线” 1.1 硬件电路上的“总线”1.2 内核驱动架构中的“总线”1.3 两者的映射关系与本质区别1.4 狭义共享总线与广义 Linux 驱动总线的区别 1.4.1 计算机系统结构中对总线的严格定义1.4.2 物理接口泛化为 bus_type 1.5 物理可枚举总线 与…

2026/10/29 15:02:10

中小企业AI建站工具的成本优势与技术实践

1. 为什么中小企业开始拥抱AI建站工具上周帮朋友的小型设计工作室搭建官网时,我惊讶地发现从注册域名到上线完整网站只用了47分钟——这个速度在五年前需要专业团队工作一周。如今像Wix ADI、Bookmark等AI建站平台正在颠覆传统建站模式,根据BuiltWith统计…

2026/10/29 15:02:10

AI监控器在制造业的应用与架构设计

1. 项目概述:AI监控器如何重塑制造业竞争格局在金属加工车间里,老师傅们常说要"听声辨位"——通过机床运转的声音判断刀具磨损程度。如今,这套经验法则正在被AI监控器数字化。作为在工业AI领域深耕多年的架构师,我发现制…

2026/10/29 15:02:10

吸收光谱技术实操指南:光路、光源、探测与数据解析全闭环

1. 什么是吸收光谱技术:从实验室台面到产线现场的真实存在吸收光谱技术不是教科书里那个被简化成几条竖线的抽象图示,也不是PPT上一闪而过的“高大上”术语。它是我过去十年在多个项目现场反复调试、校准、推翻重来又重建的日常工具——某高校光学实验室…

2026/10/29 15:02:10

SpringBoot公益餐饮平台开发与智能匹配算法实践

1. 项目背景与核心价值 郑州爱心餐饮联盟平台是一个基于SpringBoot框架开发的公益性质餐饮协同管理系统。这个毕业设计选题的巧妙之处在于,它抓住了当前社会对公益事业数字化转型的迫切需求。随着互联网技术的普及,传统公益餐饮服务面临着信息不对称、资…

2026/10/29 15:02:10

iOS 17+ 免越狱虚拟定位:基于libimobiledevice的合规轨迹模拟方案

简介:本资源是一款面向iOS 17设备用户的免越狱虚拟定位跑步模拟工具,专为需在不实际运动场景下完成健康类App打卡(如Keep、Nike Run Club等)的开发者与进阶用户设计。它通过CLI命令行方式实现路径在线拾取、自定义距离/速度/时间等…

2026/10/29 14:57:08

C语言数据结构入门:从链表到算法的工程实践

简介:本资源是一套面向C语言初学者与算法进阶学习者的数据结构与算法实践代码合集,聚焦线性表、栈、队列、树、图、查找、排序等核心模块的C语言实现,覆盖高校课程教学与工程实践常见需求。压缩包共558个文件,以80个.c源码文件为主…

2026/10/28 14:42:12

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/28 15:28:56

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/28 3:32:29

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/29 0:03:42

学生选课系统DFD图绘制指南:边界划分与分层校验实战

简介:文档以顶层与第一层DFD图为核心,完整刻画学生选课系统的逻辑模型,面向软件工程课程设计、系统分析学习及毕设前期建模人群。顶层图界定系统边界,外部实体包括管理员、教师和学生三类角色;第一层图进一步细化用户登…

2026/10/29 0:03:42

JIRA敏捷落地:Scrum角色权限、Sprint与燃尽图避坑指南

简介:围绕“基于JIRA的敏捷开发项目管理”这一主题,面向产品负责人、Scrum Master及研发测试成员,梳理Scrum角色分工、迭代流程与JIRA工具配置的对应关系,适合初、中级团队导入敏捷管理时参考。压缩包共1个docx文件,大…

2026/10/29 0:03:42

SEMI S8人机工程验收实战:从条款拆解到现场实测的完整指南

简介:面向半导体设备设计、制造与运维工程师及安全合规人员,这份资料聚焦SEMI标准体系下的设备安全规范,重点收录SEMI S8-0308《半导体制造设备人体工程学工程安全指南》。内容围绕设备设计原则、错误与事故预防、人体工程学适配三大主线展开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑