核心挑战:如何赋予AI Agent解决具体问题的能力
在构建能够执行复杂任务的AI智能体(Agent)时,仅依靠模型预训练阶段所蕴含的通用知识往往是不够的。为了完成特定任务,我们需要通过多种途径为Agent注入额外的上下文和专业知识。视频以一个典型的Web应用故障排查场景为例:当用户访问某个网页时,系统抛出了令人头疼的“500内部服务器错误”。此时,AI Agent的核心目标就是定位并修复这一错误。直觉上,人们可能会认为最简单的方法是收集尽可能多的上下文信息——包括运行手册(runbooks)、监控仪表盘数据以及客户历史记录,然后将这些海量信息全部塞入Agent的上下文窗口中。然而,这种做法存在显著缺陷。盲目堆砌上下文会导致信息过载,Agent极易在庞杂的数据中迷失方向,或者陷入死胡同。更严重的是,这种通用化的处理方式无法体现特定结账页面(checkout page)的独特运作逻辑。因此,“把所有东西扔进上下文窗口”并非解决此类复杂工程问题的最佳策略,我们需要更精细化的知识管理手段。
“Just throwing context into the fire it might not be the best way to go.”
方案一:Agent Skills(技能)——标准化的操作程序
Skills是赋予AI Agent执行特定任务能力的结构化指令集。它不仅仅是一堆静态信息,而是包含了一套明确的程序步骤以及执行这些步骤时的判断逻辑。在某些情况下,Skill还可能附带相关的代码片段。其核心机制在于“渐进式披露”(progressive disclosure),即只有当任务真正需要时,Agent才会加载相应的Skill。以解决500错误为例,我们可以为Agent创建一个名为“分诊技能”(triage skill)的专用模块。该Skill详细规定了排查流程:首先检查错误率,随后核实最近的部署状态。Skills的价值在于提供了明确的行动指南和边界判断。除了列出步骤外,优秀的Skill还包含“何时停止自主探索并升级给人类专家”的判断逻辑。如果没有这个分诊Skill,Agent可能根本不知道要去检查错误率或部署状态,因为这些信息并未包含在模型的训练数据中。然而,Skills的局限性也很明显:它只能告诉Agent“做什么”,却无法直接提供数据。Skill可以指示去检查错误率,但Agent本身并不具备访问后台仪表盘以读取实时数据的能力。因此,我们需要另一种机制来连接外部世界。
“A good skill can also carry a bit of judgment as well. Like, when the agent should stop poking around on its own and instead it should escalate to maybe a actual human.”
方案二:MCP(模型上下文协议)——连接外部世界的桥梁
为了解决Agent无法直接获取实时数据的问题,MCP(Model Context Protocol)应运而生。它是一种标准协议,旨在将Agent与外部世界连接起来。在MCP架构中,运行着AI模型的客户端被视为“MCP主机”,而Agent想要访问的每个外部系统(如日志堆栈、数据库等)则通过“MCP服务器”进行封装和暴露。这种设计使得Agent无需编写专有代码即可与各种后端服务交互。MCP的核心作用是赋予Agent“行动”的能力。回到500错误的案例,当分诊Skill指示需要检查错误率时,Agent可以通过发起MCP调用来直接连接日志堆栈的服务器。通过这种方式,Agent能够实时获取日志信息、查询指标数据,并真正读取到当前的错误率。MCP填补了Skill中“指令”与“数据获取能力”之间的空白,使Agent能够从被动接收信息转变为主动从外部系统提取实时状态。然而,即使拥有了实时数据,Agent仍然缺乏对特定业务环境历史行为和依赖关系的深层理解。要解决这一认知层面的缺失,我们需要引入基于文档的知识检索机制。
“The agent itself, that is considered the MCP host and each system it wants to talk to that sits behind an MCP server.”
方案三:RAG(检索增强生成)——基于文档的语义知识注入
RAG(Retrieval Augmented Generation,检索增强生成)解决了Agent对特定系统架构和历史背景知识缺乏了解的问题。与将大量文档预先塞入上下文窗口不同,RAG采用按需检索的策略。当Agent遇到特定问题时(如500错误),它会向外部知识库发起查询,该库中存储了手册、依赖关系图等文档。RAG通过语义搜索(semantic search)技术,从向量数据库中检索出与当前问题最相关的文本片段,并将其返回到Agent的上下文窗口中。RAG的关键在于“相关性”和“按需获取”。它确保Agent只加载解决当前问题所需的具体知识,而不是所有可能的信息。例如,当Agent询问结账页面的依赖关系时,RAG会检索出相关的架构图或文档片段。这种方法不仅提高了效率,还保证了知识的准确性,因为这些信息是由人类专家预先整理并存储的。然而,RAG提供的知识是静态的、由人定义的,它无法涵盖那些未在文档中记录但通过过往经验积累下来的隐性知识。这就需要另一种动态的知识存储机制——Memory(记忆)。
“Instead of stuffing everything into the context window up front, the agent is just gonna pull in the information that it needs... from some outside source.”
方案四:Memory(记忆)——Agent的自我经验积累
虽然RAG和Memory都涉及在需要时检索相关知识,但两者的知识来源截然不同。RAG的知识来源于人工存储的文档(如手册、依赖图),而Memory则是Agent在过往交互中自主收集并存储的经验数据。Memory的核心价值在于“经验学习”和“自我进化”。例如,当某个500错误再次发生时,Agent可以查阅其Memory中记录的过往案例。如果之前的排查发现实际原因与运行手册中的描述不符,且是通过某种“艰难的方式”(hard way)解决的,那么Memory中保存的这一经验将指导Agent避免重蹈覆辙。此外,当问题最终被解决后,Agent可以将新的解决方案写回Memory中,供未来参考。这种机制使得AI Agent能够随着使用时间的推移而不断积累领域特定的隐性知识,从而在后续任务中表现得更加精准和高效。Memory填补了RAG无法覆盖的“非文档化经验”空白,形成了从静态知识到动态经验的完整闭环。
“Memory is the stuff that the agent has picked up itself and kind of stored for later from things that have happened previously.”
结论
视频最后总结了一套关于何时使用哪种知识增强机制的经验法则。如果所需的知识是人工编写并记录的文档(如手册、架构图),应使用RAG;如果知识是Agent从过往交互中自主积累的经验(如历史故障排查记录),应使用Memory;如果需要执行可重复的标准化操作流程,应配置Agent Skills;如果Agent需要无需专有代码即可访问外部系统以获取实时数据或执行操作,应使用MCP。这四种机制并非互斥,而是互补的。在实际应用中,一个强大的AI Agent往往需要同时结合这四种能力:通过Skills定义流程,利用MCP获取实时数据,借助RAG理解系统架构,并通过Memory积累历史经验。这种组合拳式的方法才能确保Agent在面对复杂、多变的现实任务时,既具备正确的操作逻辑,又拥有准确的情境感知能力和持续进化的潜力。
“If it's knowledge that somebody has written down That's RAG. If it's knowledge the agents picked up from experience, that's memory.”