简介:本文围绕AI Agent相关的一组高频术语展开,解释Model、Scaffolding、Harness、Agent、Context Engineering、Policy、Tool Use、Skills、Sub-agents,以及训练侧的RL Environment、Trainer、Rollout、Reward之间的区别与协作关系。文章重点说明“模型如何被驱动成Agent”“Harness与Scaffold为什么是理解Agent架构的关键”,并帮助读者建立从单次推理到可持续任务执行的完整认知。
在讨论AI Agent时,很多概念被交替使用,但真正进入工程实现或系统设计阶段,术语边界不清会导致架构判断错误。常见问题包括:
本文的目标,是从运行机制和模块边界的角度,把这些概念逐个拆开,并说明它们如何协同工作。
大语言模型的核心行为可以抽象为:
接收一段文本输入,输出一段文本结果。
无论是回答问题、生成代码、总结文档,还是表达“调用某个工具”的意图,模型本身只是在完成一次推理。它没有跨轮次记忆,不会主动发起下一次调用,也不会在输出工具调用指令后自己执行该工具。
这意味着,模型的输出可能包含“我想查询数据库”这样的内容,但模型自身并不具备查询数据库的能力。真正执行查询、接收结果、再组织下一次模型调用,必须由外部系统完成。
Agent与模型的根本区别在于:Agent是一个持续运行的系统,而模型是这个系统中的核心计算单元。
一个基本共识是:
Agent = Model + Harness
Harness可以理解为“驱动框架”或“执行外壳”。它负责:
这个循环不是模型自发的,而是Harness在外部驱动的。
Harness的核心职责是维护“模型调用—结果处理—再次调用”的循环。它通常包含以下能力:
一个典型Harness循环可以用以下伪代码表示:
context = system_prompt + user_taskfor step in range(max_steps):output = model(context)if is_final_answer(output):return outputtool_call = parse_tool_call(output)result = execute_tool(tool_call)context = context + output + result
这个循环一旦建立,模型就从“一次性回答器”变成了“可执行多步任务的处理单元”。
Scaffold的语义偏向“脚手架”。它不只是驱动循环,还包括为了让Agent可靠运行而搭建的周边结构:
如果Harness是让模型“动起来”的引擎,Scaffold就是让这个引擎可以被构建、调试、扩展和复用的结构体系。
Harness关注的是运行时循环是否成立,Scaffold关注的是运行时环境是否完整。一个只实现Harness的系统可以跑通演示,但难以处理复杂任务;一个只堆Scaffold而循环设计不好的系统,则容易出现上下文膨胀、无法停止、工具误用等问题。
理解这一区别,有助于在架构设计时明确:哪些逻辑属于执行控制,哪些逻辑属于工程支撑。
模型并不“记忆”世界,它只能处理当前上下文中的内容。因此,Agent的能力强依赖于上下文如何被组织。Context Engineering关注:
上下文设计不当,会导致模型遗忘目标、重复行为、工具结果被淹没、输出质量下降。因此,Context Engineering是Agent系统中最容易被低估但影响最大的部分。
Policy可以理解为模型“在给定状态下选择什么动作”的规则。在推理侧,Policy由提示词、示例、参数和模型能力共同决定;在训练侧,Policy则是强化学习中需要优化的对象。
在Agent上下文中,Policy决定:
一个设计良好的Policy能让Agent在复杂任务中保持稳定推进,而不是频繁无效调用工具或过早终止。
Tool Use是Agent打破“纯文本推理”边界的核心方式。一个工具通常是外部函数或服务,例如搜索、计算、数据库查询、文件读写、API调用等。
其接入机制一般为:
这里的关键是“模型输出意图,Harness执行动作”。模型只负责决定做什么,不负责真正执行。
Skills比Tool Use更高一层。一个Skill通常由“提示词+工具组合+执行流程”封装而成,用于完成某类具体任务,例如:
Skill的价值在于复用与组合。它让Agent不必在每次遇到任务时重新设计提示词和工具调用流程,而是直接调用已经封装好的能力单元。
当一个任务需要同时使用多种策略、多个上下文或不同权限时,通常会引入Sub-agents。主Agent负责拆解任务、分配子任务、汇总结果;子Agent在独立上下文中执行,避免相互干扰。
Sub-agents机制的核心收益:
在强化学习训练中,Agent需要在一个环境中执行动作并获得反馈。RL Environment就是这种“交互世界”的抽象,它定义:
对于语言类Agent,环境可以是代码执行器、网页交互模拟器、数据库环境或对话环境。
Trainer负责更新模型参数,使其在环境中获得更高累计奖励。它通常包含:
训练过程中,Trainer根据Rollout产生的大量交互数据,计算梯度并更新模型,使模型逐渐学会选择更优动作。
Rollout指Agent在环境中从初始状态开始,持续执行动作直到终止条件满足的完整过程。一个Rollout会记录:
多个Rollout构成训练批次,为策略更新提供样本。Rollout质量直接影响训练稳定性和样本效率。
Reward是环境对Agent某一步或整体结果给出的数值反馈。它决定模型“什么该做、什么不该做”。Reward设计通常需要平衡:
Reward机制不完善会导致模型学会投机行为、过早终止或执行冗余动作。因此,Reward设计是Agent训练中最关键的环节之一。
推理侧的Agent运行依赖Harness和Scaffold,而训练侧通过RL Environment、Trainer、Rollout和Reward塑造模型在推理侧能够表现出的Policy。
可以这样理解:
两者不是割裂的。训练时需要模拟推理侧的环境结构,推理侧的Harness设计也会影响训练时的动作空间与上下文构造方式。
以下是一个通用Agent系统的运行结构描述:
用户任务↓上下文工程层:组装系统提示、历史记录、工具说明↓Harness循环:调用模型 → 解析输出 → 判断终止↓Tool Use执行层:调用工具或Skill,获取外部结果↓结果回写上下文↓再次进入Harness循环,直到任务完成或被判定失败
在更复杂场景中,Harness还会将子任务分发给Sub-agents,由它们分别完成独立上下文的执行,并将结果返回给主Agent汇总。
这套架构的价值在于:它将“模型推理能力”转化为“任务执行能力”。这种转化不是通过修改模型内部结构实现的,而是通过外部工程机制完成。因此,同一模型可以适配多种Agent场景,同一套Harness也可以驱动不同模型。
这些限制决定了Agent系统的工程投入往往不低于模型训练本身。
模型只能输出指令,真正调用工具的是Harness。忽略这一点,会导致对失败原因的错误定位——工具没执行成功,不一定是模型问题,可能是Harness解析或执行逻辑出错。
Harness只负责执行循环,Scaffold包含更广泛的工程支撑体系。用Harness替代Scaffold,会在复杂场景中缺少上下文管理、日志追踪、工具注册与权限控制。
模型行为受Policy、上下文组织、工具设计、停止条件、错误恢复等多重因素影响。提示词只是其中一部分,不能单独决定Agent表现。
Sub-agents会引入通信成本、上下文汇总成本、权限管理复杂度。任务拆得过细,反而会导致主Agent难以有效综合结果。
Agent系统的本质不在于“模型变强了”,而在于工程机制让模型能够被驱动、被约束、被组合、被优化。Harness让单次推理变成循环执行,Scaffold让这种循环具备可扩展结构。模型输出Policy,工具提供外部能力,Skill封装能力,Sub-agents隔离任务,Context Engineering管理全部信息流。训练侧则通过Rollout和Reward持续优化Policy,使模型在相同Harness下表现得更好。
理解这些概念之间的层级与协作关系,是设计、调试和评估AI Agent系统的前提。相比记住术语本身,更重要的是理解每一层“为什么需要它”以及“它如何影响整体行为”。