Harness Engineering工程——AI应用视角理解
一、引言
回顾Harness Engineering工程的相关技术文档时,发现现有的多数博客内容参杂引用内容繁多且结合了AI辅助生成内容之后,出现的问题有:
- 生成内容混乱;
- 逻辑不清;
导致难以以最少的理解时间确定Harness Engineering,该文章主要以简明的定义说明和个人的理解以分享Harness Engineering工程内容。
二、概念理解
Harness Engineering一个工程实践概念。它指的是:为引导、约束和协调大语言模型以完成复杂、长时间运行的任务,而设计的一套外部控制架构与工具系统。
每次当你发现 Agent 犯了一个错误,就花点时间去工程化一个解决方案,让它永远不会再犯同样的错误。
适用场景:
- 长上下文任务
- 可迭代任务(即难以确定明确需求排期)
- Agent构建
三、工程说明
当我们在构建Agent时通常需要对应构建Agent的整体能力,而Agent能力主要模块为记忆、规划、行动和工具调用能力。

回顾Agent构建图片,Harness Engineering工程则主要涉及了工具模块和行为模块的设计。即Harness Engineering工程是工程手段,通过工程手段设计Agent工具模块和行为模块形成一定范式,该范式在实际应用中取得较好成效,其主要模块设计为:
| 组件 | 作用 |
|---|---|
| AGENTS.md | Agent定义,类似System prompt |
| 工具 | Agent functioncall 能力,Agent 的感知和行动能力 |
| 验证脚本 |
Agent functioncall能力一部分, 自动检查 Agent 的输出是否合格 |
| 闭环迭代 | 不合格就自动loop,修完再验,直到通过 |
e.g. 简单样例
目标:每次发布新功能时,让 Agent 自动生成一段结构化的卡片文案,用于内部文档与对外公告。
核心问题:直接让 Agent 写,格式容易出错、语言风格不统一、可能遗漏必填字段。
1.AGENTS.md
# 功能卡片规范
## 必填字段
- feature_name: 字符串,不超过 12 个字
- release_date: 格式 YYYY-MM-DD,必须是今天或未来 7 天内
- one_liner: 一句话描述,不超过 20 个字
- impact_score: 整数,1-5## 可选字段
- tags: 字符串数组,最多 3 个## 输出格式
必须输出严格的 JSON,例如:
{
"feature_name": "智能补全",
"release_date": "2026-05-07",
"one_liner": "在编辑器中实时预测下一行代码",
"impact_score": 4,
"tags": ["AI", "效率"]
}## 禁止事项
- 不要使用 Markdown 标题
- 不要输出 JSON 以外的任何解释文字
- impact_score 不能为 0 或超过 5
2. 验证脚本 validate_card.py
import json, sys, re from datetime import datetime data = json.load(sys.stdin) # 必填字段检查 required = ["feature_name", "release_date", "one_liner", "impact_score"] for f in required: if f not in data: print(f"Missing {f}") sys.exit(1) # 字段规则检查 if len(data["feature_name"]) > 12: print("feature_name too long") sys.exit(1) if not re.match(r"\d{4}-\d{2}-\d{2}", data["release_date"]): print("invalid date format") sys.exit(1) if not (1 <= data["impact_score"] <= 5): print("impact_score out of range") sys.exit(1) # ... 更多检查(日期范围、tags 数量等) print("OK") sys.exit(0)
3. user prompt
请遵循以下流程生成功能卡片:
1. 阅读 CARD_RULES.md 中的全部规范。
2. 根据最新功能【代码片段一键分享】生成满足规范的 JSON 卡片。
3. 将 JSON 保存为 card.json,然后运行 `python validate_card.py < card.json`。
4. 如果验证脚本退出码不为 0,读取错误信息,**修改 JSON 并重新验证**。
5. 重复步骤 3-4 直到验证通过(退出码 0)。
6. 最后仅输出验证通过的 JSON 内容。
4. 闭环效果
-
第一轮:Agent 可能写出
impact_score: 6→ 验证失败,返回impact_score out of range。 -
Agent 自我修复:将其改为
4,重新验证通过。 -
最终输出:一个完全符合规范的 JSON 卡片。
在后续的业务变更时,仅需要在脚本或者AGENT.md中的禁用或者约束部分修改即可完成业务迭代,随着约束累积以形成飞轮效应。
小结:
- Harness Engineering 之所以 work,是因为它不再试图让模型变聪明,而是为模型搭建了一个“失败→反馈→修正”的脚手架,利用 LLM 修复错误的能力远强于一次做对的能力。
- 对应在信息学上,在一个庞大的信息领域中约束的作用会大于教会其他人知识使其能理解不进行某种行为。 即禁止小孩碰电线比教会小孩理解电线的危险,使其不靠近电线更容易。
四、对比学习
- Prompt Engineering:设计、优化输入给 LLM 的文本(即提示词),以引导模型输出更符合预期结果的一整套方法与实践,即角色定义、context说明、CoT、few shot 等。
- In context Learing:注入领域知识,通常以few shot的形式,通常消耗较多token
- Skills:一种模块化的标准扩展规范,将特定领域的专家知识、流程、脚本和资源打包成一个可被 AI Agent 动态加载并执行的“能力包”。核心文件是 SKILL.md。 类比提示词结合了RAG。
- Harness Engineering:为引导、约束和协调 LLM 以完成复杂、长时间运行的任务而设计的一套外部系统架构与控制流程。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)