在工程上“检索” 这件事情远没有看起来那么简单。因为 AI 世界的检索不是一个简单的数据库查询而是一个决策系统查什么、查多少、如何确保相关性、如何排序等等。Agent 这个词这两年已经被用的有点“概念疲劳”了。如果你问Agent智能体 是什么可能答案会五花八门 — 机器人、数字员工、“龙虾”。但当 Agent 落到工程特别是企业应用它就不是玄学而是一套围绕大模型构建的系统工程执行循环、工具链、上下文、知识结构以及人机协作机制。如果你正在学习或者尝试 Agent 应用落地下面这20个核心概念是我们认为当前 Agent 工程领域最必须搞懂的概念。本文用更浅显易懂的方式来拆解它们并分成两篇上篇更聚焦运行机制解释 Agent 如何感知、推理与执行。下篇侧重系统能力层探讨如何扩展、协同与工程落地。Agent智能体从聊天到行动的执行体很多人接触生成式 AI 是从 ChatGPT 这样的聊天机器人ChatBot开始。但 Agent 和 ChatBot 的差别不在于回答是不是更像真正的人而在于Agent 不仅会想会说它还会”做“且会根据结果不断调整下一步直到完成目标当然也可能失败。ChatBot 像咨询台你问一句它答一句答完就结束。Agent 像带着工具箱的工程师你布置一个任务它会思考方法然后用工具来执行步骤如果没完成再继续下一步。关键区别不是回答质量而是会不会用工具、会不会自我“循环”翻译一句话、创作一首诗回答一个问题这些都只需要一个简单的模型LLM调用就够了不需要 Agent但如果是修复一个线上 Bug你必须查看日志、分析代码、修改代码、测试集成、并多轮反复这就是 Agent 的典型工作 — 使用工具、不断推进目标、且下一步需要依赖上一步结果。【工程 Tips】所以工程上判断要不要 Agent你可以问自己一句这个任务能不能提前写死步骤如果能那么只需要传统工作流或者脚本否则才需要考虑更自主的 Agent。当然Agent 的智能与自主并不代表没有边界。它能做什么、不能做什么、完成标准是什么这些边界不约束Agent 会变成摸盲盒式的冒险。Harness运行框架模型运行的系统外壳Harness 是一个今年兴起的热点名词可译为“运行框架”或“智能体外壳”。如果说模型是“发动机”那么 Harness 就是决定如何把模型这台发动机变成汽车跑起来、且确保不翻车的那套系统 — 从“光说不练”的模型变成真正能办事的 Agent。其中的道理很简单因为大模型本身只会一件事生成文本。但要变成一个 Agent 系统就面临了一堆自己无法解决的问题 — 怎么使用工具、上下文和参考知识放哪里、执行到哪一步了。这些问题大模型自己是不会的就必须依赖“Harness”。一个成熟的 Agent Harness 要管很多事如何控制循环、中间结果放哪里、系统提示怎么组织、怎么使用工具、权限如何管理、失败如何重试、上下文如何压缩、如何持久记忆、最终结果如何验证、如何加入人类审核。你可以认为Agent 模型LLM Harness这就决定了尽管很多 Agent 看起来用的是同一个模型但行为差异却巨大 — 原因就在 Harness 不一样。【工程 Tips】这个道理告诉我们买更强模型不等于拥有更强 Agent。就像汽车有 V16 的发动机不代表它就一定比普通发动机更好开 — 有了好的 Harness较弱的模型也可能达到逼近强模型的效果。Execution Model执行模式思考与行动的范式如果说 Harness 解决的是怎么把模型变成真正能干活的系统那么现在就面临另一个更细节的问题这个系统“到底按什么节奏、用什么行为方式来思考和行动”。因为一旦 Agent 真正开始运行它就需要在不断的做决策并采取行动。那么它是先想再做还是边做边想又或者二者结合呢不同的执行节奏直接决定了 Agent 的行为模式。这种行为模式就是 Agent 的 Execution Model。最常见的行为模式是 ReAct也就是Reason Act先推理再行动再观察结果再推理周而复始。这是一种“走一步、看一步、再决定下一步”的范式有点类似侦探破案 — 观察现场根据线索决定下一步直到破案。另一种行为模式是 Plan-then-Execute先把任务拆成计划再按计划执行执行过程中尽量不偏离实际上有可能会动态调整计划。这种模式通常用在较长距离的任务中 — 有了计划的约束Agent 不容易发生目标偏离比如大型软件编码任务。【工程 Tips】在复杂工程中更常见的实践是两种模式结合 — Plan 负责整体计划 ReAct 推进执行细节。比如修一个复杂Bug先 Plan-then-Execute 列出工作计划如上下文分析 - 代码修复 - 测试验证 - PR提交 但是在测试验证这一步又可以用 ReAct 模式不断动态的根据测试结果修补代码。Loop Engineering循环工程多轮任务自动推进这又是一个最近兴起的 Agent 工程概念。上一个概念 Execution Model 解决了在一轮任务里Agent 思考与行动的方式。但问题还没有结束无论怎么行动也都只回答了“这一轮怎么做”。但在真实世界里比如软件开发问题大多不是一轮就能解决的。比如开发一个新功能Agent 编程 - 人类验证 - Agent 修复 - 人类继续验证 - Agent 再执行。看到没这个更高层的“Loop”本质是上人类在推动着向前。而 Loop Engineering 要解决的就是让人类跳出这样的 Loop — 不再参与这个 Loop而是去设计这样一个 Loop 让 Agent 系统能自主的持续推进到最终目标。这里的关键不是 Loop 本身而是 Loop 的控制权。现在的控制权交给了系统系统自己完成推进通过触发机制启动任务通过验证机制判断结果通过状态机制记录进度通过停止条件决定是否终止。你可以把这样的 Agent 系统想象成一个持续运转的生产线ReAct 决定的是机器这一站怎么加工零件但 Loop Engineering 决定的是这条生产线什么时候启动、什么时候继续运行、什么时候可以停机。【工程 Tips】并非所有任务都需要 Loop Engieering。它更适合目标清晰、完成标准可以独立验证、失败风险可控、人类可以 Review 的长距离任务比如大型编程任务。Agent State智能体状态Agent 能“知道什么”Agent State智能体状态解决的是Agent 运行时它到底“知道什么”、“干了什么”以及“进行到了哪一步”。在单次对话中Agent State 可以认为就是那短暂的上下文提示词。但在复杂的长任务 Agent 系统中光有聊天历史显然不够。原因很简单大模型的“记忆”是有上限的上下文窗口。当任务拉长聊天记录开始“注水” — 无用日志、过期的工具结果等此时如果还仅仅依赖于这些聊天记录。模型就会出现遗忘目标、被无关信息误导等从而发生任务偏离。所以成熟的 Agent 工程还需要有严格的状态管理。至少要管好三件事任务的进度。当前处于总流程的哪个节点、下一步是什么等。窗口内的短期状态提示词、最新消息记录、工具调用及结果、规则等。需加载的长期状态这是需要 Agent 从长期存储或接口中加载的内容比如文件、数据库、API 结果、搜索结果等。有了 Agent State 管理现在 Agent 系统随时可以“知道”我从哪里来、要到哪里去、和模型说了什么、改了哪些代码、查了哪些客户的信息等等。Agent State 在实际系统中需要具备可持久化保存的能力缓存、文件、数据库容错级别不一样等。【工程 Tips】Agent State 在工程上的一个重要意义在于通过 Agent State 的持久化保存与必要的检查点机制可以让 Agent 系统具备随时“断点续运行”、甚至“重放任务”的能力。这对于关键任务下的企业 Agent 系统尤为重要。Context Engineering上下文工程模型能“看到什么”如果说 Agent State 解决的是 Agent 在运行时“知道什么”当前进度、历史对话、从记忆中加载的必要信息等那么上下文解决的是另一个问题在每一轮与模型对话时模型“能够看到什么信息”。所以上下文Context与 状态State之间的界限就很清楚了State 是 Agent 的事实空间 — 但不一定在每轮交互中都输入 LLMContext 是 LLM 的可见视野 — LLM 用于推理与决策的全部信息既然这样把所有的信息都交给模型不就行了显然不行原因是模型的上下文空间是有限资源比如最大1M。上下文并非越多越好“营养搭配”很重要要有结构、有重点。所以我们才需要上下文工程为 LLM 提供所有用于合理推进任务的上下文信息的方法。更具体一点上下文工程不是简单的把资料全部塞给模型而是要把正确的信息在正确的时间以正确的形式送到模型面前。以一个 Bug 修复的任务举例不是直接塞给它所有代码和设计文档而是要决策送入哪些设计文档、业务知识、代码、日志、可用工具这些信息什么时候获取哪些历史对话要被丢弃哪些要压缩哪些人类约束和边界用什么结构与顺序送入模型。【工程 Tips】理解了上下文工程那么它的工程意义就非常清楚它本质上是 Harness 工程的一部分。它直接决定了 LLM 到底在基于什么做决策看到的是一个清晰的“环境”还是混乱的“世界” 。这也是整个 Agent 系统的大脑 — LLM 正常工作的前提。Context Rot上下文腐化复杂上下文的信息退化Context Engineering 解决的是“把正确的信息送进模型”但是随着任务的推进上下文窗口中的信息越来越拥挤模型反而开始“看不清重点”。这就是著名的“上下文腐烂”问题。它说的是尽管当前主流模型的上下文窗口越来越大从最初的4K8K到现在的1M)可以容纳更多的信息输入但模型未必更聪明反而可能被分散注意力、被无关信息干扰甚至误导。早期“Lost in the Middle”以及“大海捞针”的一些研究已经发现上下文中的信息并非总会被“关注”到窗口大小、信息所处的位置都会有影响。这就像开会时候的会议桌。如果只有一份合同在大家很容易聚焦并理解会议的主题但如果堆积了大量的文档和邮件大家反而抓不住重点。Agent也是一样长上下文并不总是越多越好。如果信息有用而结构清晰自然会有帮助但大量冗余、无关的内容只会干扰模型的注意力让推理不稳定。比如在一个行业应用的 Agent 中给模型塞入大量与当前任务无关的、未经治理的业务知识文档这很容易让模型“失焦”而应该通过检索机制、按需加载等策略让模型优先看到最重要的信息。【工程 Tips】具体到 Agent 系统工程应该遵循的规则是借助上下文工程让上下文尽量的保持精简。具体包括指令与规则保持短而具体、过期信息及时卸载、日志信息先压缩或摘要、借助索引做精准检索、检索结果做合理排序Rerank、及时清理无用的工具结果等。分层、按需加载、压缩、检索都是真正可持续的上下文策略。Prompt Caching提示词缓存别让模型理解重复信息现在我们解决了“给模型看什么”上下文工程也知道给模型的信息“并非越多越好”上下文会腐烂。但还有一个问题每次给模型的上下文中一些重复的内容是否都要重新运算一遍在一个真实的 Agent 系统中每一轮对话可能会携带同一批内容系统提示、工具说明、项目规则、少量示例、前几轮对话等。这里的本质原因是模型本身是无状态的也就是没有“记忆”能力 — 每一轮对话时都要输入必要的全部上下文。如果每一轮都让模型完整重读并计算这些重复内容就像学习新课文时每次都把前面学过的课文重新理解一遍不仅慢而且昂贵浪费 Token。所以 Prompt Caching提示词缓存的思路就是把那些每次不变的上下文“存起来”下次就不必重新处理。在模型实现中缓存通常基于前缀匹配因此稳定内容需要被组织在 Prompt 的前部所以也被称为“稳定前缀”。第一次调用时系统会完整处理所有内容包括系统提示、工具定义、规则和背景信息并进行缓存。而之后的每一轮调用输入中重复的“稳定前缀”就可以命中并复用缓存其处理成本大大降低。这特别适合长会话、长时间运行、前缀稳定的 Agent 任务比如编码。如果没有缓存成本会被稳定上下文反复放大。【工程 Tips】工程实践中的一个关键策略是保持稳定的上下文前缀有助于降低成本并提高响应速度。把稳定、有价值、反复用的内容如系统提示、整体规则、任务背景等放前面而每轮变化的用户输入、执行反馈等放后面。但注意缓存并不能使你的上下文质量更高。错误的上下文被缓存也只是让错误的成本更低但并没有让错误变正确。Ontology本体让AI听懂企业的业务语言即使已经学会了如何筛选信息、组织信息、控制信息进入模型的方式Agent 依然会在企业任务中理解出错。原因不在于你给的信息不够多而是模型并没有真正的理解你的信息在企业自身业务背景下的语义和规则。比如在企业系统里一个词的含义可能并非固定的比如“ALLOCATED”在 ERP 里可能代表库存已锁定在生产系统里可能代表产能已分配在客服系统里又可能只是一个状态字段。但对于语言模型来说它看到的是一个字符串 — 如果不提供更多的语义信息。模型在做判断时可能就是基于通用语义做推测。这也是企业 Agent 常见的一类失败来源。而这正是 Ontology本体要解决的问题用一种标准的形式对企业的业务世界进行建模作为 Agent 的“业务地图”。说白了就是把企业里的业务对象、属性、关系和规则讲清楚。比如电信系统里的客户、套餐、订单、工单、开通、计费、退订分别是什么、有什么属性它们之间什么关系比如客户-生成-订单有哪些约束规则比如欠费客户无法变更套餐等。注意本体一定是语义的表达而不是定义数据库结构 — 企业的多个系统可能有不同的“客户表”但在语义层“客户”只有一个含义。【工程 Tips】本体对于 Agent 系统的一个典型应用是让企业规则从代码和经验中抽离沉淀到可计算、可推理、可复用的业务语义层本体并提供给 Agent 系统使用通过本体的“推理机”。这样当业务规则发生变化时不需要在多个系统中同步修改逻辑只需要在本体中调整定义所有基于它的 Agent 行为都会自然变化。总的来说本体的意义在于帮助企业级 Agent 系统理解企业业务并基于统一的业务语义层做推理而不是简单的“文字”推理。Live Retrieval实时检索别让模型靠过期信息推理Context Engineering 解决的是“在这一轮推理中模型应该看到什么信息”但这些信息特别是企业的业务知识与事实从哪里、用什么方式获得模型并不直接拥有真实世界的数据它看到的所有内容本质上都必须被“喂进 Context”。但业务事实在不断变化代码在不断更新系统状态在不断流转。如果这些变化不能被持续地、准确地送入模型上下文那么即使 Context 设计得再好也只是基于“过期信息”做推理。这就是 Live Retrieval 可以发挥作用的地方为 Agent 提供一个持续连接外部世界的“信息获取机制”让模型在需要做决策时能够随时获取当前最新的知识与事实。相对于本体Ontology 定义“业务世界是怎样的”Live Retrieval 则提供“这个世界发生了什么”。我们熟知的 RAG 可以作为 Live Retrieval 的一种实现方式 — 用来在任务开始或过程中从外部知识源文档库、代码库、知识库中检索与当前任务相关的信息并注入到 Context 中具体的检索技术可以是向量、图谱、关键词或者融合检索。但实际上 Live Retrieval 的范围更大它强调的是实时性与持续性也就是说模型在执行过程中可以不断从外部系统获取最新状态例如编码 Agent 可能查询数据库的最新 Schema 客服 Agent 需要查询 CRM系统的客户信息等。【工程 Tips】在工程上“检索” 这件事情远没有看起来那么简单。因为 AI 世界的检索不是一个简单的数据库查询而是一个决策系统查什么、查多少、如何确保相关性、如何排序等等。如果检索做得不好错误的信息会进入 Context会被模型当作参考知识使用从而放大决策错误。所以Live Retrieval 的核心是建立一种机制让模型每一次关键决策都尽可能基于真实世界的知识与状态而不是静态的历史记忆。