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

相关推荐
yi0116 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
志尊宝7 小时前
Vue3 零基础每日笔记(073):keep-alive 页面缓存实战——列表页返回不丢状态
vue.js·笔记·缓存·#vue #前端 #前端开发·#javascript·#vue.js
李日华大战鸡红8 小时前
FOC状态空间方程模型推导(学习记录)
python·学习·线性代数
weixin_448119949 小时前
Datawhale Easy Data × AI:笔记1 已重做,看新的笔记
笔记
要开心吖ZSH10 小时前
MySQL 慢 SQL 排查操作手册-个人笔记版
java·笔记·sql·mysql·慢查询
kkkkkkkkkk_Z10 小时前
新手自学嵌入式 | 学习日记:异常与中断基础、i.MX6ULL裸机开发环境搭建、GPIO模块与点灯原理
学习
咖啡忍者11 小时前
【SAP】程制造生产计划PP-PI(Production Planning for Process Industries)
笔记
m4Rk_11 小时前
【论文阅读】Agent 记忆机制(94):MemGen——在推理过程中动态生成并织入潜在记忆
论文阅读·人工智能·学习·开源·github
晓德11 小时前
0、LLM大模型安全学习系列(启)
学习·安全
Titan202412 小时前
MySQL索引学习笔记
笔记·学习·mysql