一、设计总览

1.1 为什么要构建 Harness

“Agent 出错了,别改完就完事。问自己一句——怎么才能让它永远不再犯这个错?然后把答案写进 Harness。”

LangChain 的实验已经证明:同一个模型,仅改变外围 Harness,性能可以从 Top 30 跃升至 Top 5。OpenAI Codex 团队用 3-5 名工程师、零手写代码,5 个月交付了超 100 万行生产级代码。这些案例的核心结论是一致的:

模型能力不再是瓶颈,围绕模型构建的工程系统才是决定 AI 实际表现的关键变量。

1.2 核心公式

Agent = Model + Harness

Harness = Tools + Knowledge + Observation + Action + Permissions
  • Model(模型)= 驾驶者,有智能、有判断力、有目标感
  • Harness(马具)= 载具,有方向盘、油门、刹车、导航、传感器

1.3 全景架构

Harness Engineering 全景架构

L1 文档层

L2 Agent 编排层

L3 工具与知识层

L4 验证与反馈层

L5 记忆与沉淀层

L6 安全与权限层

AGENTS.md 总纲

SubAgent 角色定义

.ai/memory/ 经验沉淀

Master-Worker 架构

任务分解与调度

子Agent上下文防火墙

MCP 工具协议

Skill 动态加载

RAG 知识检索

CI/CD 自动验证

Lint + 单测闭环

人工审核节点

失败案例沉淀

最佳实践 Skill 化

长期记忆持久化

沙箱执行环境

文件操作白名单

Token 预算管控


二、项目目录结构设计

2.1 推荐的 Harness 目录结构

your-project/
├── AGENTS.md                    # 总纲:Agent 在本项目中的行为准则
├── .ai/
│   ├── subagents/               # 子 Agent 角色定义
│   │   ├── code-analyst.md      # 代码分析师
│   │   ├── code-implementer.md  # 代码实现者
│   │   ├── code-reviewer.md     # 代码审查员
│   │   ├── test-writer.md       # 测试编写者
│   │   └── doc-generator.md     # 文档生成者
│   ├── skills/                  # 团队 Skill 库
│   │   ├── pr-review/
│   │   │   ├── SKILL.md
│   │   │   └── scripts/
│   │   ├── bug-fix/
│   │   │   ├── SKILL.md
│   │   │   └── scripts/
│   │   ├── unit-test/
│   │   │   ├── SKILL.md
│   │   │   └── scripts/
│   │   └── code-migration/
│   │       ├── SKILL.md
│   │       └── references/
│   ├── memory/                  # 经验沉淀库
│   │   ├── pitfalls.md          # 历史踩坑记录
│   │   ├── conventions.md       # 项目隐含约定
│   │   └── decisions.md         # 关键技术决策记录
│   ├── templates/               # 输出模板
│   │   ├── pr-template.md
│   │   ├── commit-message.md
│   │   └── review-checklist.md
│   └── hooks/                   # 验证钩子
│       ├── pre-commit-check.sh
│       └── post-change-verify.sh
├── .cursor/rules/               # IDE 级别规则(如使用 Cursor)
└── .joycode/rules/              # JoyCode 级别规则

2.2 设计原则

Harness 设计五原则

最小权限

渐进披露

可验证

可回退

可沉淀

Agent 只能访问任务相关文件

按需加载 Skill 不预塞

每步修改必须有验证手段

所有改动可一键回退

踩坑经验自动写入 memory


三、AGENTS.md 设计(总纲)

这是整个 Harness 的灵魂文件,严格控制在 60 行以内,只写死规则。

3.1 AGENTS.md 模板

# AGENTS.md

## 目标
本项目采用 Harness Engineering 方式引入 AI 协作。
AI 的职责是:分析代码、进行最小范围修改、执行验证、输出结果、沉淀必要经验。
AI 不是架构重写者,不是自由发挥的重构者,不是产品决策者。

## 总原则
1. 先分析,后修改
2. 优先最小改动,禁止无关重构
3. 优先复用现有实现,禁止随意新增抽象层
4. 只修改与当前任务直接相关的文件
5. 所有修改必须可解释、可验证、可回退
6. 如发现任务正在扩散,立即停止并收敛范围
7. 如发现隐含规则、历史坑或关键约束,必须沉淀到 `.ai/memory/`

## 项目类型约束
这是一个 [前端Vue3/后端Java/Flutter] 项目。
默认假设:
- 现有代码中存在历史兼容逻辑
- 现有实现未必优雅,但通常有业务原因
- 现有分层和调用链优先保持稳定
- 不允许因为"看起来可以优化"而扩大修改范围

## 执行流程
所有任务必须按以下顺序执行,不允许跳步:
1. code-analyst → 分析影响范围
2. code-implementer → 最小改动实现
3. code-reviewer → 验证质量
每一步产出必须包含:改动文件列表、改动理由、验证方式

## 禁止行为
- 禁止修改未经分析的文件
- 禁止引入新的第三方依赖(除非任务明确要求)
- 禁止删除已有测试用例
- 禁止在不理解上下文时"猜测性修改"
- 禁止一次性输出超过 300 行代码

## 输出规范
- Commit message 遵循 .ai/templates/commit-message.md
- PR 描述遵循 .ai/templates/pr-template.md
- 每次任务结束,如有新发现,更新 .ai/memory/

3.2 关键设计要点

要点 说明 原因
60 行以内 ETH Zurich 测试发现,过长的系统提示反而降低性能并多吃 20% token 精简才有效
只写死规则 不写建议性内容,全部是"必须"和"禁止" Agent 不理解"建议"
明确执行流程 强制按步骤执行,不允许跳步 避免 Agent 自由发挥
禁止行为清单 明确列出不能做的事 负面约束比正面引导更有效

四、SubAgent 角色设计

4.1 三角色最小编排

通过

不通过

沉淀经验

沉淀经验

沉淀经验

任务输入

code-analyst

code-implementer

code-reviewer

输出结果

.ai/memory/

4.2 code-analyst.md(代码分析师)

# SubAgent: code-analyst

## 角色
你是代码分析师,负责在任何修改之前,先完成完整的影响分析。

## 工作流程
1. 读取任务描述,明确修改目标
2. 使用 grep/search 定位相关代码
3. 分析调用链、依赖关系、影响范围
4. 检查 .ai/memory/pitfalls.md 中是否有相关踩坑记录
5. 输出分析报告

## 输出格式

影响分析报告

  • 目标:[一句话描述]
  • 涉及文件:[文件列表]
  • 调用链:[A → B → C]
  • 风险点:[可能出问题的地方]
  • 历史踩坑:[来自 memory 的相关记录]
  • 建议改动范围:[最小改动方案]
## 禁止
- 禁止在分析阶段做任何修改
- 禁止跳过 memory 检查

4.3 code-implementer.md(代码实现者)

# SubAgent: code-implementer

## 角色
你是代码实现者,基于分析报告进行最小范围的代码修改。

## 前置条件
必须先获得 code-analyst 的分析报告,否则拒绝执行。

## 工作流程
1. 阅读分析报告,确认改动范围
2. 只修改报告中列出的文件
3. 每个文件改动后,立即运行相关测试
4. 如测试失败,最多重试 3 次
5. 如 3 次仍失败,停止并报告问题

## 约束
- 单次改动不超过 200 行
- 不引入新依赖
- 不修改分析报告外的文件
- 如发现新问题,记录到 .ai/memory/ 而非直接修复

4.4 code-reviewer.md(代码审查员)

# SubAgent: code-reviewer

## 角色
你是代码审查员,独立评估 implementer 的改动质量。

## 评审维度
1. **正确性**:改动是否解决了目标问题
2. **范围**:是否有超出分析报告的改动
3. **风格**:是否符合项目编码规范
4. **测试**:是否有对应的测试覆盖
5. **副作用**:是否引入新的问题

## 输出格式
- ✅ 通过 / ❌ 不通过
- 具体问题列表(如不通过)
- 改进建议

## 关键规则
- 评估必须独立,不受 implementer 的解释影响
- 不通过时必须给出可执行的具体修改建议

五、Skill 库建设

5.1 Skill 标准结构

每个 Skill 是一个独立文件夹,核心是 SKILL.md

bug-fix/
├── SKILL.md           # 必需:执行指令 + 元数据
├── scripts/           # 可选:自动化脚本
│   └── run_lint.sh
├── references/        # 可选:参考文档
│   └── common-bugs.md
└── assets/            # 可选:模板资源
    └── fix-report-template.md

5.2 SKILL.md 模板示例(Bug 修复 Skill)

---
name: bug-fix
description: 基于 Sonar/Lint 报告,自动分析并修复代码缺陷
tags:
  - code-quality
  - bug-fix
  - sonar
---

# Bug Fix Skill

## 触发条件
当用户提供 Sonar issue 或 bug 描述时激活此 Skill。

## 执行流程
1. 读取 bug 描述 / Sonar issue ID
2. 定位相关代码文件
3. 分析 bug 根因(参考 references/common-bugs.md)
4. 生成最小修复方案
5. 执行修复
6. 运行 scripts/run_lint.sh 验证
7. 如验证失败,最多重试 2 次
8. 输出修复报告

## 约束
- 每次只修复一个 issue
- 修复不能引入新的 Sonar 问题
- 修复范围不超过相关函数

5.3 团队推荐首批 Skill

首批 Skill 库

代码质量类

开发效率类

团队协作类

bug-fix: Bug修复

code-review: 代码评审

unit-test: 单测生成

code-migration: 代码迁移

api-generator: 接口生成

doc-generator: 文档生成

pr-review: PR评审

commit-lint: 提交规范

onboarding: 新人引导


六、验证与反馈闭环

6.1 四层验证体系

这是 Harness 的核心差异化能力。没有验证闭环的 Agent,就是一匹没有缰绳的马。

通过

失败

通过

失败

通过

失败

通过

不通过

重试<3次

重试>=3次

Agent 输出

L1 格式验证

L2 Lint/语法检查

自动重试

L3 单元测试

L4 人工审核

合入代码库

反馈给 Agent

升级给人工

沉淀到 .ai/memory/

6.2 验证钩子设计

层级 验证内容 工具 自动/手动
L1 格式 输出是否符合模板 正则/Pydantic 自动
L2 语法 代码是否能编译/Lint通过 ESLint/TSC/Sonar 自动
L3 测试 单测是否通过、覆盖率 Jest/JUnit/pytest 自动
L4 审核 业务逻辑是否正确 人工 Code Review 手动

6.3 反馈沉淀机制

踩坑了

发现隐含约定

做了重要决策

一切顺利

Agent 任务完成

是否有新发现?

写入 pitfalls.md

写入 conventions.md

写入 decisions.md

记录成功模式

下次任务自动检查

沉淀为 Skill

关键实践:每周五花 5 分钟,复盘本周所有 Agent 失败案例,将它们变成规则。Agent 就会每周都变强——不是因为模型升级了,而是因为 Harness 更完善了。


七、推理算力三明治策略

这是来自 LangChain 团队的实战经验,可以节省 60%+ Token 同时不影响效果

任务规划阶段

执行阶段

验收阶段

高等级推理 Strong Model

决策: 去哪, 怎么做

低等级推理 Fast Model

执行: 按计划写代码

高等级推理 Strong Model

验收: 结果是否达标

阶段 模型等级 说明
规划 Strong(如 Claude Opus) 需要理解全局、制定策略
执行 Fast(如 Claude Haiku) 按既定计划执行,节省 Token
验收 Strong(如 Claude Opus) 需要判断质量、发现问题

八、团队落地路线图

8.1 三阶段实施计划

Phase 1 试点

Phase 2 推广

Phase 3 系统化

2-4周

1个项目 + 2-3人

4-8周

3-5个项目

8-12周

全团队 + 平台化

Phase 1:试点(2-4 周)

周次 目标 产出
第1周 选择试点项目,搭建 Harness 目录结构 AGENTS.md + 目录结构
第2周 编写 3 个 SubAgent 角色文件 code-analyst/implementer/reviewer.md
第3周 编写首批 2-3 个 Skill bug-fix + unit-test + pr-review Skill
第4周 试跑一周,收集失败案例,完善 memory pitfalls.md 初版 + 效果评估

试点选择标准

  • 选有明确规范的成熟项目(非新项目)
  • 选中级复杂度的任务(非核心链路)
  • 选技术栈团队最熟悉的项目

Phase 2:推广(4-8 周)

  • 将试点经验沉淀为通用 Harness 模板
  • 推广到 3-5 个项目
  • 建立团队共享 Skill 库
  • 开始追踪采纳率指标

Phase 3:系统化(8-12 周)

  • Harness 平台化:统一的 Skill 市场 + Memory 中心
  • 与 CI/CD 深度集成
  • 建立 Agent 效果看板(采纳率、Bug 率、效率提升)
  • Agent 失败复盘制度化

8.2 团队角色分工

Harness 团队角色

Harness Owner

Knowledge Engineer

Tool Engineer

Eval Engineer

负责 AGENTS.md 维护

负责 Harness 整体演进

负责 Skill 库建设

负责 Memory 维护

负责 MCP 工具接入

负责验证钩子开发

负责效果评估

负责失败案例复盘

关键洞察:Harness 不是个人技巧,而是组织资产。必须有人明确拥有它、维护它、演进它。没有 Owner 的 Harness,注定会腐化。

8.3 效果度量指标

指标 说明 目标
代码采纳率 AI 生成代码被最终合入的比例 >40%
首次通过率 Agent 输出一次通过验证的比例 >60%
修复耗时 Bug 从发现到修复的平均时间 缩短 30%+
Memory 增长率 每周新增的经验沉淀条数 >5 条/周
Skill 复用率 已有 Skill 被调用的频率 每个 Skill >3 次/周
人工介入率 需要升级给人工的任务比例 <20%

九、避坑指南

9.1 六条核心原则(来自一线实践)

原则 说明 来源
避免 AI 自我评估 AI 评估自己的输出是"自我感觉良好",必须用独立验证 Anthropic 实践
限制重试次数 无限重试会消耗大量 Token 且不收敛,上限 3 次 拓尔思经验
使用 Checklist 管理状态 不依赖 AI 记忆,用显式 Checklist 追踪进度 LangChain
不假设 AI 已知任何事 未明确告知的信息,AI 就是不知道 OpenAI Codex
确保每一步可观测 Agent 做了什么、为什么做,必须有日志 Martin Fowler
工具不超过 3 个 工具太多 Agent 会 “tool thrash”,纠结选哪个 ETH Zurich

9.2 常见失败模式

常见失败模式

范围蔓延

幻觉修复

Context 溢出

无限循环

隐式依赖

解法: AGENTS.md 严格约束范围

解法: 独立 reviewer 验证

解法: SubAgent 上下文防火墙

解法: 重试上限 + 超时机制

解法: 强制读取 memory 再执行


十、总结

10.1 Harness 构建核心要义

构建 Harness 的核心要义

约束 Constrain

告知 Inform

验证 Verify

纠正 Correct

沉淀 Accumulate

限制 Agent 可执行的操作

告诉 Agent 应该做什么

验证 Agent 是否正确完成

Agent 出错时进行修复

将经验写入 Harness 持续进化

10.2 一句话总结

你的 Agent 会每周都变强,不是因为模型又升级了,而是因为你的 Harness 更完善了。

每周五花 5 分钟,复盘所有失败,把它们变成规则。这就是 Harness Engineering 的本质。


Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐