您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center 汽车系统工程   模型库  
会员   
   
OCSMP认证课程:OCSMP-MU
4月9-10日 线上
基于模型的数据治理与数据中台
5月19-20日 北京+线上
网络安全原理与实践
5月21-22日 北京+线上
     
   
 订阅
一文搞懂 Harness Engineering 五大主流设计范式

 
作者:AI茶水间管理员
 
  25   次浏览      2 次
 2026-4-8
 
编辑推荐:
本文主要介绍了 Harness Engineering 五大主流设计范式,每个范式都讲透适用场景、核心架构、可直接复制的代码、避坑指南等相关内容!希望对你的学习有帮助。
本文来自于稀土掘金,由火龙果软件Alice编辑,推荐。

设计Agent就像盖房子,你得先选对结构 —— 砖混、框架还是钢结构,再按图纸砌砖,而不是先乱堆一堆砖头,再想怎么让它不塌。Harness Engineering 的设计范式,就是经过 OpenAI、LangChain、Anthropic 这些大厂生产验证过的「Agent 架构图纸」,是让你的 Agent 从 Demo 走向生产的核心骨架。

今天这篇文章,我把5 大主流 Harness Engineering 设计范式全拆解透了,每个范式都讲透适用场景、核心架构、可直接复制的代码、避坑指南,看完你就能直接套用到自己的项目里,不管是个人提效还是团队生产,都能用。

前置认知:到底什么是 Harness 设计范式?

先给大家一个面试能直接说的标准答案,一句话拉开你和 90% 人的差距:Harness 设计范式,是经过生产验证的、可复用的 Harness 架构设计模式,它定义了模型如何与系统交互、任务如何流转、规则如何执行、反馈如何闭环,解决的是「Agent 输出不可控、长任务易失败、场景难扩展」的核心问题。

再直白点说:普通 ReAct 循环是 “给 AI 一把锤子,让它自己看着办”,而 Harness 范式是 “给 AI 搭了一条完整的生产线,每一步该干什么、不能干什么、干错了怎么办,全给它定死了,出来的结果稳定可控”。

范式一:单 Agent 全闭环范式 —— 新手入门必学,80% 的场景都能用

这是所有 Harness 范式的基础,也是个人开发者、小工具场景用得最多的范式,OpenAI 官方说的「人类掌舵,智能体执行」,最小闭环就是这个范式。

【适用场景】

个人提效工具、简单自动化任务、单一场景小 Agent、新手入门学习、面试 Demo 快速落地。比如:自动写周报、批量处理 Excel、简单接口测试、单功能代码生成。

【核心设计思想】

一个 Agent,一套 Harness,一个完整闭环。把「规则注入→任务执行→工具调用→结果校验→失败重试→结果输出」全链路封在一个 Harness 里,没有复杂的调度,极简、稳定、易维护,彻底解决普通 ReAct“输出不可控、干错了没人管” 的问题。

【可直接落地的代码示例】

Python 实现的完整单 Agent 闭环 Harness,复制就能改了用:

from openai import OpenAI

client = OpenAI()

class SingleAgentHarness:
   """单Agent全闭环Harness范式实现"""
   def __init__(self, system_rules: str, max_retry: int = 3):
      self.system_rules = system_rules # Harness核心:定死行为边界
      self.max_retry = max_retry # 重试兜底机制
      self.conversation_history = [] # 会话状态管理

   def _tool_call_control(self, tool_name: str, params: dict) -> str:
   """   Harness工具管控:白名单机制,防止AI乱调用工具"""
      allowed_tools = ["read_file", "write_file", "run_bash", "excel_process"]
      if tool_name not in allowed_tools:
         return f"错误:禁止调用工具{tool_name},仅允许调用{allowed_tools}"
      # 此处可扩展具体工具实现
      return f"工具{tool_name}执行完成,参数:{params}"

   def _result_validate(self, result: str, task: str) -> tuple[bool, str]:
      """Harness闭环核心:后置结果校验,不合格直接打回"""
      validate_prompt = f"""
      核心任务:{task}
      交付结果:{result}
      校验规则:
      1. 是否完整完成核心任务
      2. 是否符合预设的系统规则
      3. 是否有错误、遗漏、不符合要求的内容
      只输出【PASS】或【FAIL】,并说明具体原因
      """
      response = client.chat.completions.create(
      model="gpt-4o",
         messages=[{"role": "user", "content": validate_prompt}],
         temperature=0
      )
        validate_result = response.choices[0].message.content
      return "PASS" in validate_result, validate_result

   def run(self, task: str) -> str:
   """Harness全链路闭环执行入口"""
      # 1. 前置规则注入,从源头管控行为
      self.conversation_history = [
         {"role": "system", "content": self.system_rules},
         {"role": "user", "content": f"核心任务:{task},严格遵守系统规则执行"}
      ]
      retry_count = 0

      while retry_count < self.max_retry:
         # 2. 模型推理执行
         response = client.chat.completions.create(
            model="gpt-4o",
            messages=self.conversation_history,
            temperature=0.3
         )
         result = response.choices[0].message.content
         self.conversation_history.append({"role": "assistant", "content": result})

      # 3. 工具调用管控
      if "调用工具" in result:
          tool_result = self._tool_call_control("demo_tool", {"param": "demo"})
         self.conversation_history.append({"role": "user", "content": f"工具执行结果:{tool_result}"})
         continue

       # 4. 后置结果校验,闭环核心
      is_pass, validate_msg = self._result_validate(result, task)
      if is_pass:
            return f"任务执行完成:\n{result}\n校验结果:{validate_msg}"

         # 5. 失败重试,注入错误信息
         retry_count += 1
         self.conversation_history.append({
            "role": "user",
               "content": f"结果不符合要求,失败原因:{validate_msg},请重新修改,重试次数:{retry_count}/{self.max_retry}"
         })

       return f"任务执行失败,达到最大重试次数,最终结果:{result}"

# 直接使用示例
if __name__ == "__main__":
      # 定义Harness核心规则,定死Agent的行为边界
      system_rules = """
      你是Java代码生成助手,必须严格遵守以下规则:
      1. 所有代码符合SpringBoot 3.2规范,严格遵循分层架构
      2. 所有入参必须做校验,禁止使用System.out.println,必须用SLF4J日志
      3. 所有SQL必须防止注入,必须使用参数化查询
      4. 生成的代码必须包含完整注释、单元测试
      """
      # 初始化Harness
      harness = SingleAgentHarness(system_rules=system_rules, max_retry=3)
      # 执行任务
      result = harness.run("生成用户管理CRUD接口,包含Controller、Service、Repository、Entity")
      print(result)

【避坑指南】

工具白名单越短越稳定,80% 的场景只需要 3-5 个核心工具就够了,别堆一堆没用的工具

规则只抓核心红线,别写几百条无效规则,比如你只需要定分层架构,不用管变量名怎么起

校验逻辑要可量化,别用 “写得好一点” 这种模糊要求,要明确 “必须包含单元测试” 这种可校验的规则

重试次数别超过 3 次,重试多了只会让 AI 在错误的方向上越走越远

范式二:多 Agent 分工协同范式 —— 复杂项目的终极解法

这是 LangChain 官方主推的范式,也是中大型团队、复杂项目的首选。OpenAI 3 人团队 5 个月写 100 万行代码,核心用的就是这个范式的变种。

【适用场景】

中大型复杂项目、多角色分工的任务、团队级生产应用、跨领域复杂任务。比如:完整的 Web 应用全栈开发、复杂的数据分析系统、多模块的业务自动化流程。

【核心设计思想】

分角色、定边界、专事专办。把一个复杂任务,拆成多个专业子角色,每个角色对应一个专属的 Agent,每个 Agent 有自己独立的 Harness(自己的规则、工具、校验逻辑),再通过一个总控 Harness做任务调度、进度同步、结果汇总。

就像一个成熟的开发团队,有产品经理、前端开发、后端开发、测试工程师,每个人只干自己专业的事,比一个人全干效果好 10 倍。普通单 Agent 干复杂活,就像让一个人既当产品又当开发还当测试,必然顾此失彼,干出来的东西全是漏洞。

【可直接落地的代码示例】

Java 实现的多 Agent 总控 Harness 核心调度逻辑,适配后端团队场景:

package com.harness.multiagent;

import java.util.*;

/**
* 多Agent协同分工范式 总控Harness核心实现
*/
public class MultiAgentMasterHarness {

      // 角色Agent注册中心,每个Agent有独立的Harness
      private final Map<String, AgentHarness> agentRegistry = new HashMap<>();
       private final int maxRetry = 3;

       public MultiAgentMasterHarness() {
            // 注册各角色Agent,每个Agent有独立的规则和Harness
            agentRegistry.put("PRODUCT", new AgentHarness(
               "产品经理Agent",
               """
               "你是专业产品经理,输出PRD必须包含:
               "1. 需求背景、核心目标、用户场景
               "2. 功能详情、业务规则、异常流程
               "3. 验收标准、非功能需求
               "输出必须清晰可落地,开发能直接照着做
               """"
      "));
      "agentRegistry.put("BACKEND", new AgentHarness(
               "后端开发Agent",
               """"
               "你是专业Java后端开发,基于PRD开发必须遵守:
               "1. SpringBoot 3.2规范,分层架构Controller→Service→Repository→Entity
               "2. 入参校验、异常处理、日志规范、防SQL注入
               "3. 代码必须包含完整注释、单元测试
               """"
      "));
      "agentRegistry.put("TEST", new AgentHarness(
               ""测试工程师Agent",
"""
               "你是专业测试工程师,输出测试用例必须包含:
               "1. 功能测试、边界测试、异常测试用例
               "2. 接口测试、性能测试要求
               "3. 验收标准对应的测试点
               """"
       " ));
   "}

/**
* 总控Harness核心执行入口
*/
public Map<String, String> run(String task) {
   Map<String, String> resultMap = new HashMap<>();
   int retryCount = 0;

    while (retryCount < maxRetry) {
       try {
          // 1. 产品Agent输出PRD
          AgentHarness productAgent = agentRegistry.get("PRODUCT");
          String prd = productAgent.run("基于以下需求,输出完整PRD:" + task);
         resultMap.put("PRD", prd);

         // 2. 后端Agent基于PRD开发代码
         AgentHarness backendAgent = agentRegistry.get("BACKEND");
         String code = backendAgent.run("基于以下PRD,输出完整Java后端代码:" + prd);
          resultMap.put("BACKEND_CODE", code);

         // 3. 测试Agent输出测试用例
         AgentHarness testAgent = agentRegistry.get("TEST");
         String testCase = testAgent.run("基于以下PRD,输出完整测试用例:" + prd);
         resultMap.put("TEST_CASE", testCase);

         // 4. 总控Harness最终校验
         boolean isPass = finalValidate(resultMap);
         if (isPass) {
                   resultMap.put("STATUS", "SUCCESS");
                    return resultMap;
          }
          retryCount++;
     } catch (Exception e) {
          retryCount++;
         resultMap.put("ERROR", e.getMessage());
    }
  }

  resultMap.put("STATUS", "FAIL");
   return resultMap;
   }

/**
* 总控Harness最终校验逻辑
*/
private boolean finalValidate(Map<String, String> resultMap) {
     return resultMap.containsKey("PRD")
        && resultMap.containsKey("BACKEND_CODE")
        && resultMap.containsKey("TEST_CASE");
  }

/**
* 子Agent独立Harness实现
*/
static class AgentHarness {
     private final String roleName;
      private final String systemRules;

     public AgentHarness(String roleName, String systemRules) {
        this.roleName = roleName;
        this.systemRules = systemRules;
      }

     public String run(String task) {
        // 实际实现调用大模型+独立校验闭环,参考范式一
         return "【" + roleName + "】执行结果:\n" + task;
      }
   }
}

【避坑指南】

角色边界必须清晰,绝对不能让一个 Agent 干多个角色的活,比如让后端 Agent 改 PRD,必然逻辑混乱

总控 Harness 只做调度和最终校验,绝对不插手具体角色的执行,否则会破坏分工逻辑

角色数量别超过 6 个,太多会导致调度混乱、沟通成本过高,反而不如单 Agent

必须有统一的信息同步标准,比如 PRD 格式、代码目录结构,所有 Agent 必须遵守,否则各干各的合不起来

范式三:渐进式技能解锁范式 —— 长周期大项目的防崩神器

这是 OpenAI Codex 百万行代码项目的核心范式,专门解决长周期大项目里的「上下文腐烂」「AI 失忆」问题。

【适用场景】

超大型长周期项目、持续迭代的产品开发、多阶段复杂任务、需要避免上下文腐烂的场景。比如:百万行代码级的产品开发、持续数月的自动化项目、多阶段的业务系统搭建。

【核心设计思想】

地图式导航,渐进式披露,用多少给多少。不是一上来把所有规则、工具、技能、文档全塞给 Agent,而是通过 Harness 做一个「导航地图」(也就是 OpenAI 用的 AGENTS.md),把项目拆成多个阶段,Agent 当前阶段需要什么技能、什么规则、什么文档,Harness 就只注入什么内容,用不到的绝对不塞到上下文里。

同时用文件系统做持久化,每一步的进度、决策、成果全存在代码仓库里,Agent 跨会话、跨阶段也不会失忆,彻底解决上下文溢出、干着干着就忘了目标的问题。

【可直接落地的代码示例】

Python 实现的渐进式技能管理 Harness 核心:

import os
from typing import Dict, List

class ProgressiveSkillHarness:
   """渐进式技能解锁范式Harness实现"""
   def __init__(self, project_root: str = "./agent_project"):
     self.project_root = project_root
     self.nav_map_path = os.path.join(project_root, "AGENTS.md")
     self.skill_library = {} # 按阶段分类的技能库
     self.phase_progress = {} # 阶段进度持久化
     self._init_project()

  def _init_project(self):
     """初始化项目目录和导航地图"""
     os.makedirs(self.project_root, exist_ok=True)
     # 初始化导航地图,核心是阶段拆分和技能索引
     if not os.path.exists(self.nav_map_path):
        default_nav_map = """
        # AGENT 项目导航地图
        ## 项目阶段拆分
        1. 阶段1:项目初始化 - 技能:环境搭建、仓库初始化、规范定义
        2. 阶段2:架构设计 - 技能:分层架构设计、数据库设计、接口设计
        3. 阶段3:核心功能开发 - 技能:业务代码开发、单元测试
         4. 阶段4:测试与优化 - 技能:集成测试、性能优化、bug修复
        5. 阶段5:上线交付 - 技能:部署配置、上线文档、验收交付

        ## 技能索引
        所有技能文档在 ./docs/skills/ 目录下,仅当前阶段的技能会被注入
        """
        with open(self.nav_map_path, "w", encoding="utf-8") as f:
                f.write(default_nav_map)
        # 加载技能库
        self._load_skill_library()

   def _load_skill_library(self):
        """加载技能库,按阶段分类"""
        skill_dir = os.path.join(self.project_root, "docs", "skills")
        os.makedirs(skill_dir, exist_ok=True)
        # 遍历技能文件,按阶段分类
        for phase in ["phase1", "phase2", "phase3", "phase4", "phase5"]:
                phase_skill_path = os.path.join(skill_dir, phase)
                 os.makedirs(phase_skill_path, exist_ok=True)
                 self.skill_library[phase] = []
                for file in os.listdir(phase_skill_path):
                    if file.endswith(".md"):
                        with open(os.path.join(phase_skill_path, file), "r", encoding="utf-8") as f:
                         self.skill_library[phase].append(f.read())

def get_current_phase_skills(self, current_phase: str) -> str:
      """Harness核心:仅获取当前阶段的技能,渐进式披露"""
      return "\n\n".join(self.skill_library.get(current_phase, []))

def update_phase_progress(self, phase: str, progress: str, result: str):
      """持久化阶段进度到文件系统,跨会话不会丢失"""
      self.phase_progress[phase] = progress
      progress_path = os.path.join(self.project_root, "docs", "progress", f"{phase}_progress.md")
      os.makedirs(os.path.dirname(progress_path), exist_ok=True)
      with open(progress_path, "w", encoding="utf-8") as f:
            f.write(f"# {phase} 进度记录\n\n进度:{progress}\n\n成果:{result}")

def run_phase(self, phase: str, phase_task: str) -> str:
      """执行指定阶段的任务,仅注入当前阶段的技能和规则"""
      # 1. 仅注入导航地图和当前阶段的技能,避免上下文溢出
system_prompt = f"""
      项目导航地图:{open(self.nav_map_path, "r",       encoding="utf-8").read()}
      当前阶段:{phase}
      当前阶段专属技能和规则:{self.get_current_phase_skills(phase)}
      历史阶段进度:{self.phase_progress}
      你只需要完成当前阶段的任务,不要涉及后续阶段的内容
      """
      # 2. 执行任务(实际调用大模型)
      print(f"===== 执行{phase}任务 =====")
      print(f"注入上下文长度:{len(system_prompt)} 字符")
      result = f"{phase}任务执行完成,成果:{phase_task}"
      # 3. 持久化进度
      self.update_phase_progress(phase, "已完成",       result)
      return result

# 使用示例
if __name__ == "__main__":
      harness = ProgressiveSkillHarness(project_root="./user_management_project")
      # 分阶段执行,每个阶段仅注入对应的技能,上下文不会爆炸
      print(harness.run_phase("phase1", "初始化SpringBoot项目,搭建仓库结构,定义编码规范"))
      print(harness.run_phase("phase2", "设计用户管理系统的分层架构、数据库表结构、接口规范"))

 

【避坑指南】

导航地图必须清晰,阶段拆分要合理,每个阶段的目标必须可量化、可验收,不能模糊

技能必须和阶段强绑定,绝对不能提前注入后续阶段的内容,否则就失去了渐进式披露的意义

所有进度、决策、成果必须持久化到文件系统,绝对不能只存在会话历史里,否则重启就全没了

必须完成上一个阶段的验收,才能解锁下一个阶段,避免跳步导致的逻辑混乱

范式四:事件驱动流式范式 —— 高并发实时场景的首选

这是企业级高并发 Agent 服务的主流范式,专门解决实时交互、高并发、7*24 小时在线的场景需求。

【适用场景】

高并发实时交互场景、流式对话应用、实时数据处理、7*24 小时在线的 Agent 服务。比如:AI 客服系统、实时监控告警 Agent、流式对话机器人、高并发的 API 服务。

【核心设计思想】

事件触发,流式响应,无状态闭环。Harness 基于事件驱动架构设计,把用户输入、工具返回、系统回调、超时告警都定义为标准事件,Harness 通过事件总线监听事件,触发对应的处理逻辑,流式输出结果。同时每个会话的状态完全隔离,高并发下也能稳定运行,不会出现会话串扰、状态混乱的问题。

普通的循环式 Agent,在高并发场景下会出现阻塞、内存溢出、会话串扰的问题,而事件驱动范式,天生适配高并发、异步化的场景,是企业级生产服务的首选。

【避坑指南】

事件必须有标准格式,唯一 ID、类型、时间戳、会话 ID、payload 缺一不可,必须保证幂等性

会话状态必须完全隔离,每个会话的状态只能由自己的事件修改,绝对不能出现跨会话的状态共享

事件处理必须异步非阻塞,绝对不能在事件处理器里加阻塞逻辑,否则高并发下会直接崩

必须有超时、重试、死信队列机制,避免某个事件处理失败导致整个链路阻塞

范式五:反馈自进化范式 —— 长期运营系统的终极形态

这是 Harness Engineering 的高阶范式,专门解决「Agent 越用越难用,需要不停手动改规则」的问题,让你的 Agent 越用越好用。

【适用场景】

长期迭代的产品、持续优化的自动化系统、需要自主学习优化的 Agent、团队级长期使用的工具。比如:团队内部长期使用的研发效能 Agent、持续运营的 AI 产品、长期维护的自动化系统。

【核心设计思想】

反馈闭环,自动迭代,规则自进化。Harness 不仅执行任务,还会自动收集每一次的执行结果、人工反馈、错误信息、成功案例,自动分析优化规则、更新记忆、调整执行策略,把优化后的内容更新到 Harness 里,下一次执行直接生效,越用越好用,不用你每次手动改 prompt、改规则。

普通的 Agent,用的时间越长,需求变化越多,规则越乱,效果越差;而自进化范式的 Harness,用的时间越长,数据越多,优化得越好,效果越稳定。

【避坑指南】

必须有人工审核节点,核心规则的修改必须经过人工确认,绝对不能让 Agent 无限制修改核心规则

进化逻辑必须可控,只能优化规则、更新记忆、调整策略,绝对不能修改 Harness 的核心执行逻辑

反馈数据必须结构化,成功案例、失败原因、优化点必须清晰,不能用模糊的反馈做优化

必须有版本回滚机制,优化后的规则如果效果变差,必须能一键回滚到上一个稳定版本

核心选型指南:你的场景该选哪个范式?

很多人看完会问,这么多范式,我该选哪个?给大家做了一个清晰的选型表,一眼就能找到适合自己的范式:

表格

范式 适用人群 核心场景 落地难度 稳定性 扩展性
单 Agent 全闭环范式 个人开发者、新手 简单工具、小任务、提效脚本 ★☆☆☆☆ ★★★★★ ★☆☆☆☆
多 Agent 协同范式 团队、中大型项目 复杂项目、全栈开发、跨领域任务 ★★★☆☆ ★★★★☆ ★★★★☆
渐进式技能解锁范式 长周期项目开发者 大项目、持续迭代产品、防上下文腐烂 ★★★☆☆ ★★★★☆ ★★★☆☆
事件驱动流式范式 企业级服务开发者 高并发实时服务、7*24 在线 Agent ★★★★☆ ★★★☆☆ ★★★★★
反馈自进化范式 长期运营产品团队 持续优化的系统、长期使用的工具 ★★★★☆ ★★★☆☆ ★★★★★

核心选型铁则:

场景优先,不炫技:80% 的场景,单 Agent 闭环范式就足够用了,别为了装 X 搞复杂的多 Agent,反而不稳定

先闭环,再扩展:先把最小闭环跑通,能稳定落地,再扩展更复杂的范式,别一上来就搞大而全的系统

范式可组合,不固定:大项目里可以组合多个范式,比如总控用多 Agent 协同,每个子 Agent 用单 Agent 闭环,长周期任务用渐进式技能解锁,灵活适配自己的场景

结尾总结

最后,跟大家说句掏心窝子的话:AI 时代,程序员的核心竞争力,早就不是手写代码的速度了,而是设计系统、定义规则、驾驭 AI 的能力。Harness Engineering 的本质,就是把你的工程能力、业务理解、团队规则,编码成一套 AI 能稳定执行的系统。

你不用再卷模型、卷 prompt,选对了适合自己场景的 Harness 范式,你的 Agent 就能从 Demo 走向生产,真正实现 10 倍、100 倍的提效。

   
25   次浏览       2 次
相关文章

基于图卷积网络的图深度学习
自动驾驶中的3D目标检测
工业机器人控制系统架构介绍
项目实战:如何构建知识图谱
 
相关文档

5G人工智能物联网的典型应用
深度学习在自动驾驶中的应用
图神经网络在交叉学科领域的应用研究
无人机系统原理
相关课程

人工智能、机器学习&TensorFlow
机器人软件开发技术
人工智能,机器学习和深度学习
图像处理算法方法与实践

最新活动计划
认证课:OCSMP-MU 4-9[在线]
需求分析与管理 4-21[北京]
基于大模型Agent应用开发 4-18[北京]
AI Spec Coding工程化实践 4-24[北京]
基于模型的数据治理 5-19[北京]
企业网络安全 5-21[北京]
具身智能技能与实践 6-11[厦门]
 
 
最新文章
AIGC技术与应用全解析
详解知识图谱的构建全流程
大模型升级与设计之道
自动驾驶和辅助驾驶系统
ROS机器人操作系统底层原理
最新课程
人工智能,机器学习和深度学习
人工智能与机器学习应用实战
人工智能-图像处理和识别
人工智能、机器学习& TensorFlow+Keras框架实践
人工智能+Python+大数据
成功案例
某综合性科研机构 人工智能与机器学习
某银行 人工智能+Python+大数据
北京 人工智能、机器学习& TensorFlow
某领先数字地图提供商 Python数据分析
中国移动 人工智能、机器学习和深度学习