课程0基础Agent开发课 / AI全景认知 / Harness 架构实战指南
— 6 min read

Harness 架构实战指南

Harness 不是 Agent 框架,也不是 RAG,它是一种**让 LLM 驱动复杂工作流、自动完成质量闭环**的工程架构模式。

Harness 架构实战指南

一、什么是 Harness?

Harness 不是 Agent 框架,也不是 RAG,它是一种让 LLM 驱动复杂工作流、自动完成质量闭环的工程架构模式。

最简洁的定义:

Harness = LLM 导演 + 工具集 + 质量门禁 + 持久状态 + 长期记忆

它解决的核心问题:把"需要反复试错、人工判断质量"的工作流,变成可以自动运行、自动迭代、达标才输出的系统。


二、Harness 的五个核心组件

Agentic Loop

启动时注入历史经验

选择工具并调用

通过:执行工具

拒绝:返回错误消息

写入执行结果

触发检测

写入质量问题

读取当前状态

达标

未达标,继续迭代

🧠 Memory
长期记忆
跨job经验

🎬 LLM 导演
分析状态,决策下一步

🛡️ Permissions
权限守卫
次数上限 / 质量门禁

🔧 Tools
工具集
执行具体操作

📋 Context
job.json
共享状态 / 断点续跑

✅ Hooks
质量门禁
检测问题并记录

🎯 最终输出
artifacts

1. Tools(工具集)

  • 所有能力封装成工具,LLM 通过 tool_use 调用
  • 每个工具有明确的输入/输出 schema(Claude API 格式)
  • 工具失败不崩溃,返回 {success: false, error: ...}

2. Context(共享状态)

  • job.json 是 LLM 的"工作记忆",所有工具读写同一份状态
  • 原子写入(.tmp → rename),防止崩溃丢数据
  • 支持断点续跑:任何时刻中断,重启后从 job.json 恢复

3. Hooks(质量门禁)

  • 每次工具执行后自动触发,检测质量问题写入 job.json
  • Hook 只做检测和记录,不做修复(修复由 LLM 决定)
  • 失败不影响主流程(catch 所有异常)

4. Permissions(权限守卫)

  • 防止 LLM 陷入无限循环:每个工具有调用次数上限
  • 关键工具设质量门禁:质量分达标才允许调用
  • 软拒绝(返回错误消息)而不是硬抛异常

5. Memory(长期记忆)

  • 跨 job 积累经验:哪类内容容易出问题、历史平均质量分
  • 关键词匹配检索(不用向量),简单有效
  • 新 job 启动时自动注入相关历史经验

三、什么项目适合用 Harness?

核心判断标准:这个任务有没有"质量"这个维度,且质量需要反复迭代才能达标?

3.1 适合的特征

特征 说明 举例
多步骤、有依赖 步骤间有明确的先后关系 先写旁白→再生成音频→再渲染视频
质量可量化 能定义"达标"的客观指标 音频时长>15s、视频>5MB
需要反复迭代 第一次很难一次成功 旁白太短→重写→重新生成音频
有副作用要防护 某些操作代价高,不能随意重试 渲染视频(耗时长)、发布内容
积累经验有价值 同类任务反复做,历史经验有参考价值 每篇文章都要做视频

3.2 适合用 Harness 的项目类型

内容生产类

  • 文章→PPT:结构设计→内容填充→视觉优化
  • 数据→报告:数据分析→叙事设计→可视化→格式校验
  • 代码→文档:API 解析→文档生成→准确性验证

软件工程类

  • 需求→代码:需求分析→设计→实现→测试→修复,循环直到测试通过
  • 代码审查:静态分析→LLM 审查→问题分类→修复建议→验证
  • 数据库迁移:方案设计→脚本生成→验证→回滚预案

数据处理类

  • ETL 管道:数据抽取→清洗→转换→质量检测→问题修复
  • 爬虫 + 结构化:爬取→解析→校验→缺失补充→去重
  • 批量标注:初始标注→质量抽检→不合格重标→统计验收

运营自动化类

  • 营销内容生产:关键词→文案→合规检查→A/B 变体→发布
  • 客服知识库维护:问题收集→答案生成→准确性验证→更新
  • SEO 优化:内容分析→优化建议→改写→效果预测

3.3 不适合用 Harness 的场景

  • 单次查询:用户问一个问题,直接回答,没有迭代需求
  • 纯确定性流程:每步都有唯一正确答案,不需要 LLM 判断
  • 实时性要求极高:Harness 的 LLM 调用开销不适合毫秒级响应
  • 质量完全主观:没有任何客观指标,只能靠人判断

四、Harness vs 其他模式的对比

模式 适用场景 质量控制 状态持久 经验积累
单次 LLM 调用 简单问答
线性 Workflow 固定流程 手动 部分
ReAct Agent 探索性任务
Harness 质量要求高的生产任务 ✅ 自动
人工流程 创意性/高风险决策 视情况

Harness 的核心价值:把"人工监督的工作流"变成"自动化的质量驱动循环",LLM 扮演原来"人工审核、判断、修复"的角色。


五、Harness 架构模板

如果你要在新项目里用 Harness,以下是最小可行架构:

目录结构

code
my_harness/
├── harness/
│   ├── job.py          # 状态管理(必须)
│   ├── loop.py         # Agentic Loop(必须)
│   ├── hooks.py        # 质量门禁(推荐)
│   ├── permissions.py  # 权限守卫(推荐)
│   ├── memory.py       # 长期记忆(可选)
│   └── tools/
│       ├── registry.py # 工具注册表(必须)
│       └── *.py        # 具体工具
└── run_harness.py      # 统一入口

job.json 最小结构

json
{
  "job_id": "20260403_123456",
  "status": "pending|in_progress|done|failed",
  "created_at": "...",
  "updated_at": "...",
  "input": {},          // 输入数据
  "production": {},     // 生产过程状态
  "quality": {
    "overall_score": null,
    "issues": []
  },
  "artifacts": {}       // 最终输出
}

System Prompt 关键要素

code
你是[角色]。

你的标准:[具体的质量标准,要量化]

工作流程:
1. [步骤1]
2. [步骤2]
...

硬性约束(必须遵守):
- [约束1,要量化]
- [约束2,要量化]

规则:
- 每次只调用一个工具,等结果后再决定下一步
- 达到质量目标才输出最终结果

最关键的设计原则

  1. 约束必须量化:不说"不要太长",说"不超过 45 秒"
  2. 工具要防御性:假设环境会出问题,返回结构化错误而不是崩溃
  3. 状态要持久化:任何时刻中断都能恢复,断点续跑是标配
  4. 质量要可测量:每个维度都要有客观的检测方法
  5. 失败要可诊断:错误信息要具体,LLM 能根据错误决定下一步
本页目录