Skip to content

什么是 Harness Engineering

如果你觉得 AI 辅助编程像是在和一个聪明但健忘的实习生协作——它学东西很快,却不记得你昨天说过什么——那 Harness Engineering 就是你一直在寻找的答案。

实验性项目,非生产就绪

本项目的 Harness Engineering 实践目前处于初期探索阶段,文档描述的是设计意图,实际落地程度参差不齐:

  • 推理型引导层(AGENTS.md、技能文档):已完成基础定义,尚未经过多轮迭代和实战验证,内容仍在持续演进
  • 架构依赖检查:当前未配置 dependency-cruiser 或类似工具,分层边界主要依赖约定而非强制执行
  • AI 代码审查 Agent:感知层中提到的"推理型"检查尚未实现,目前只有计算型传感器(lint / 测试 / 类型检查)
  • 突变测试、架构漂移检测:属于规划中的方向,暂未引入

将文档描述的理想状态与当前实现之间的距离保持透明,是这个项目诚实的一部分。

从一个问题开始

你有没有遇到过这种情况:让 AI 帮你写了一段代码,它用了一种你们团队早就废弃的旧模式;或者,它生成的测试能跑通,但根本没覆盖你在意的边界条件?

这不是 AI 不够聪明,而是它缺少你团队的上下文。它不知道你们的架构约束,不记得上次代码审查的反馈,也不清楚"在这个项目里,错误处理应该这样写"。

Harness Engineering 就是解决这个问题的工程实践体系。

什么是 Harness?

在 AI 辅助编程语境中,"Harness"(驾驭层) 指的是 AI 模型之外的一切——所有用来引导 AI 行为的机制:

  • 你写给 AI 读的说明文档(AGENTS.md、Skills)
  • 自动运行的质量检查(lint、类型检查、测试)
  • CI 流水线里的门控规则
  • 项目结构本身带来的隐性约束

用一个图来理解:

你的 AI 编程工具
  └── 构建方 Harness(系统提示、内置工具、代码检索机制)
        └── 用户 Harness ← 这是你能控制的部分
              ├── 引导层(Feedforward):告诉 AI 应该怎么做
              └── 感知层(Feedback):告诉 AI 它做得对不对

Harness Engineering,就是持续设计和维护这个用户 Harness 的工程实践。

两个核心机制

Harness Engineering 围绕两个互补的控制方向展开:

引导层(Feedforward)

在 AI 行动之前就给出方向,提升"一次做对"的概率:

  • 推理型:AGENTS.md、技能文档(Skills)、架构说明、编码风格指南
  • 计算型:代码模板、脚手架脚本、代码修改工具(codemods)

引导层是被动的——它的价值取决于 AI 有没有"读到"并理解它。

感知层(Feedback)

在 AI 行动之后提供信号,让它发现并修正问题:

  • 计算型:ESLint、TypeScript 类型检查、Jest 测试、架构依赖检查
  • 推理型:AI 代码审查 Agent、语义分析

感知层是主动的——无论 AI 多自信,传感器都会说实话。

两者缺一不可

只有引导层:AI 记住了规则,但永远不知道有没有真正遵守。 只有感知层:AI 知道哪里错了,却不断犯同样的错误。

把两者结合起来,才能形成真正的自我修正闭环。

质量要尽量前移

一个经典的工程原则:越早发现问题,修复成本越低

Harness Engineering 把这个原则应用到了 AI 辅助开发:

时机应该运行什么
编写代码时LSP 实时提示、架构说明文档
提交代码前linter、快速测试套件、类型检查
PR 合并前完整测试套件、AI 代码审查
集成之后更耗时的质量分析(突变测试、架构漂移检测)
持续运行死代码检测、依赖扫描、SLO 监控

什么是"可驾驭性"?

不是所有项目都同样容易被驾驭。可驾驭性( Harnessability) 取决于项目的结构特性:

  • 强类型系统:TypeScript 的类型检查天然就是一个可靠的感知传感器
  • 清晰的模块边界:让架构约束规则更容易被自动化检验
  • 框架约束:NestJS 的模块化结构限制了 AI 的"发挥空间",减少了随意决策的可能性
  • 一致的约定:统一的命名规范、错误处理模式……这些"环境提示"让 AI 更容易推断出"在这个项目里,应该这么做"

本项目在设计之初就把可驾驭性作为一等公民,这是它能作为 AI 友好型项目基线的核心原因之一。

这个项目的 Harness 长什么样

本项目的 Harness Engineering 实践分布在整个工程体系中:

引导层

机制文件作用
AI 操作手册AGENTS.mddocs/AGENTS.md告诉 AI 核心原则、上下文获取路径、反馈循环
架构说明docs/03-architecture/AI 修改架构相关代码前的必读参考
技能文档.agents/skills/专项任务的操作 SOP(如 git commit、PR 自动化)
错误码目录src/constants/error-catalog.constant.ts防止 AI 硬编码错误信息或重复发明错误类型

感知层

机制触发时机验证内容
TypeScript 编译每次修改类型安全、路径别名解析
ESLint提交前代码风格、潜在 bug
Jest 单元测试每次修改业务逻辑正确性
E2E 测试CI接口契约、真实数据库集成
CI 流水线PR 和推送完整质量门控,包含多分支策略

想了解引导层和感知层的具体设计?分别查看: