harness engineering学习

1 什么是Harness Engineering

针对agent的设计和构建约束机制、反馈回路、工作流控制和持续改进循环的系统工程实践。解决agent 1)无有效的实时评测,不稳定。2)输出一致性不强。3)不好长期维护的问题。

注:仅做自己的学习笔记用

2 harness的工程架构

2.1 架构介绍

Harness Engineering 并不是凭空出现的,它是Prompt Engineering和Context Engineering的自然延伸。三者构成嵌套关系。

harness engineering有四大支柱:

  1. 上下文工程

实践中分为三层记忆:

三层上下文体系

|---------------|-------------------|------------------------------|-------|
| 层级 | 加载时机 | 内容示例 | 上下文占用 |
| Tier 1:会话常驻 | 每次会话自动加载 | AGENTS.md / CLAUDE.md,项目结构概览 | 最小 |
| Tier 2:按需加载 | 特定子 Agent 或技能被调用时 | 专业化 Agent 的上下文、领域知识 | 中等 |
| Tier 3:持久化知识库 | Agent 主动查询时 | 研究文档、规格说明、历史会话 | 按需 |

  1. agent专业化

将agent根据领域进行技能划分,子agent只要获取相关上下文即可,通用性agent由于上下文巨大反而不利于扩展,子agent化有利于扩展。

实践中的角色分工

|----------|---------------|----------------------|
| Agent 角色 | 职责范围 | 工具权限 |
| 研究 Agent | 探索代码库、分析实现细节 | 只读(Read, Grep, Glob) |
| 规划 Agent | 将需求分解为结构化任务 | 只读,无写入权限 |
| 执行 Agent | 实现单个具体任务 | 限定范围的读写权限 |
| 审查 Agent | 审计完成的工作,标记问题 | 只读 + 标记权限 |
| 调试 Agent | 修复审查发现的问题 | 限定范围的修复权限 |
| 清理 Agent | 对抗熵积累,清理低质量代码 | 读写权限 |

  1. 持久化记忆

核心原则:进度持久化在文件系统上,而非上下文窗口中。每次新 Agent 会话从零开始,通过文件系统制品重建上下文。

* Linter 错误消息即修复指令

传统 Linter 错误消息仅标记违规。OpenAI 的自定义 Linter 在错误消息中直接包含修复方法------Agent 在遇到违规时同时获得了"教学"。

  1. 结构化执行

核心原则:将思考与执行分离。研究和规划在受控阶段进行,执行基于验证过的计划,验证通过自动化反馈(测试、Linter、CI)和人类审查完成。

Harness 模板可能包含

自定义 Linter 规则

结构测试

基础上下文和知识文档

额外的上下文提供者

预配置的 CI/CD 管道

2.2 最佳实践总结

2.2.1 立即可行的行动清单

创建并维护 AGENTS.md:不是一次性任务,而是每当 Agent 犯错时都更新的活文档。

在仓库中建立单一事实源:所有团队知识作为版本控制的制品存放在代码仓库中,不放在 Slack、Wiki 或 Google Docs。

构建自定义 Linter 并在错误消息中嵌入修复指令:工具在 Agent 工作时同时"教会"它。

为 Agent 提供端到端测试工具:浏览器自动化(如 Puppeteer MCP)显著提升验证质量。

实施增量执行策略:每次会话只处理一个功能,完成后提交 git 和进度更新。

分层管理上下文:避免将所有信息堆叠在单个文件中,使用 Tier 1/2/3 渐进式披露。

上下文利用率保持在 40% 以下:更多 token 不代表更好的结果。

建立定期"垃圾回收"机制:自动化 Agent 定期清理技术债、检查文档一致性。

2.2.2 Harness 成熟度评估模型

|-------------------|------------------------------|------------------|
| 阶段 | 特征 | 工程师角色 |
| Level 0:无 Harness | 直接给 Agent prompt,无结构化约束 | 手动写代码+偶尔使用 AI |
| Level 1:基础约束 | AGENTS.md + 基础 Linter + 手动测试 | 主要写代码,AI 辅助 |
| Level 2:反馈回路 | CI/CD 集成 + 自动化测试 + 进度追踪 | 规划+审查为主,部分 AI 编码 |
| Level 3:专业化 Agent | 多 Agent 角色分工 + 分层上下文 + 持久化记忆 | 环境设计+管理为主 |
| Level 4:自治循环 | 无人值守并行化 + 自动化熵管理 + 自修复 | 架构师+质量把关者 |

2.2.3 关键 Harness 组件检查清单

|----------------------------|----------------|-----|
| 组件 | 用途 | 优先级 |
| AGENTS.md / CLAUDE.md | 会话常驻上下文,动态反馈循环 | P0 |
| 自定义 Linter + 结构测试 | 机械化执行架构约束 | P0 |
| CI/CD 管道 | 自动化测试和验证反馈 | P0 |
| 进度文件 (progress.txt / JSON) | 跨会话的持久化记忆 | P1 |
| 功能列表文件 (feature_list.json) | 结构化完成标准 | P1 |
| 浏览器自动化 (Puppeteer MCP) | 端到端测试验证 | P1 |
| 可观测性集成 | Agent 可查询日志/指标 | P2 |
| 熵管理 Agent | 定期清理低质量代码 | P2 |
| 专业化子 Agent | 分工协作减少上下文污染 | P2 |
| MCP 工具集成 | 连接外部工具和数据 | P2 |

3 参考

https://zhuanlan.zhihu.com/p/2014014859164026634

相关推荐
chools1 天前
【AI超级智能体】快速搞懂工具调用Tool Calling 和 MCP协议
java·人工智能·学习·ai
自信150413057591 天前
重生之从0开始学习c++之模板初级
c++·学习
nashane1 天前
HarmonyOS 6学习:解决异步场景下Toast提示框无法弹出的UI上下文丢失问题
学习·ui·harmonyos·harmony app
江湖人称小鱼哥1 天前
Obsidian-Graphify-让你的笔记库自己长出知识图谱
笔记·知识图谱·obsidian·claude code·graphify·卡帕西
苦 涩1 天前
考研408笔记之计算机网络(三)——数据链路层
笔记·计算机网络·考研408
码喽7号1 天前
Vue学习七:MockJs前端数据模拟
前端·vue.js·学习
三品吉他手会点灯1 天前
STM32F103 学习笔记-21-串口通信(第4节)—串口发送和接收代码讲解(中)
笔记·stm32·单片机·嵌入式硬件·学习
雾岛听蓝1 天前
Qt操作指南:窗口组成与菜单栏
开发语言·经验分享·笔记·qt
EnglishJun1 天前
ARM嵌入式学习(二十三)--- I2C总线和SPI总线
arm开发·学习
饭后一颗花生米1 天前
2026 AI加持下前端学习路线:从入门到进阶,高效突破核心竞争力
前端·人工智能·学习