作者归档:admin

AI Agent不够聪明,但 SaaS 公司可能是解药

最近经常会和 AI Agent 聊天,使用 AI 编程,并且也会和正在用 AI Agent 的朋友聊天,发现大家 AI Agent 的期待值和实际体验之间,存在着相当大的落差。

换句话说,大家觉得 Agent 不怎么聪明。

1. AI Agent 到底哪里不聪明

可能是以下的方面:

  1. 业务理解能力差。很多 AI Agent 看起来能对答如流,但一涉及到具体业务场景就开始答非所问。先不说原因,原因后面再细讲。
  2. 执行能力有限。在大家的预期中 AI Agent 应该能自主规划和执行任务,但实际上大部分所谓的 AI Agent 还停留在”问一句答一句”的阶段。我们想像中的一句话需求,如”帮我分析这份财报并生成投资建议”,大部分 AI Agent 是搞不定的,类似于 Manus 这种勉强可以的,但其结论是否能参考也是存疑的。
  3. 可控性差。我们一方面希望 Agent 有自主能力,能像人一样灵活处理问题;另一方面又希望它的行为可预测、可控制。这本身就是个悖论。结果就是,要么 Agent 太死板,只能按预设流程走;要么太「聪明」,经常做出一些让人意外的操作。
  4. 定制成本高。这本来不是聪明的问题,但这是聪明的代价,每个企业的业务都有自己的特殊性,要让 Agent 真正理解并适应这些特殊性,需要大量的定制化工作。但问题是,很多企业并没有这个技术能力或者预算来做深度定制。

2. 为什么会出现这些问题

我觉得主要是三方面的原因:

  1. 过高的预期。过去一年,AI Agent 的概念被炒得太热了。各种厂商都在宣传 Agent 能够”完全替代人工”、”自主完成复杂任务”。但实际上,现在的技术水平离这个目标还有很大距离。有的老板,听了厂商的宣传后,真的以为买个 Agent 产品就能替代掉几个员工。结果上线后发现,不仅没法替代人,反而需要专人来”照顾”这个 Agent,教它怎么工作,纠正它的错误。
  2. 模糊的产品定位。现在市面上的 Agent 产品,很多都想做成”万能助手”。但越是想什么都做,越是什么都做不好。反而是那些专注于特定场景的 Agent,比如专门做客服的、专门做数据分析的,效果会好很多。
  3. 技术栈的割裂。做好一个 Agent,需要模型能力、工程能力、业务理解能力的深度结合。但往往懂模型的不懂业务,懂业务的不懂模型,懂工程的可能两个都不太懂。这种割裂导致做出来的产品总是差那么一些。

3. 当前谁最有优势?

答案是:SaaS 公司。

在 AI Agent 落地上,SaaS 公司有着天然的优势。

SaaS 公司最大的优势是接近客户和数据。他们天天跟客户打交道,知道客户的真实需求是什么,痛点在哪里,实际的业务流程是怎样的。更重要的是,他们手里有大量的业务数据和场景数据,这些数据对于训练和优化 Agent 来说是无价之宝。

举个例子,一家做 CRM 的 SaaS 公司,如果要做销售 Agent,它有几个天然优势:

第一,它知道销售的真实工作流程是什么样的。不是理论上的流程,而是实际操作中的流程,包括各种例外情况和潜规则。

第二,它有大量的销售数据。什么样的话术转化率高,什么时间打电话效果好,不同行业的客户有什么特点,这些数据都在它的系统里。

第三,它有现成的客户界面。不需要重新教育客户怎么使用 Agent,可以直接嵌入到现有的产品里。

第四,它有持续优化的能力。客户每天都在使用它的产品,产生新的数据,这些数据可以用来持续优化 Agent 的表现。

相比之下,纯做 AI 的公司,虽然模型能力很强,但在落地时往往会遇到各种水土不服的问题。

4. 垂直场景的突破

在个人粗浅的认知中,Agent 的突破口在于垂直场景,而不是通用场景。在于需要 Konw-How 的场景。

为什么?因为垂直场景有几个优势:

第一,需求明确,专注。不需要 Agent 什么都会,只需要它把一件事做好就行。

第二,数据充足。垂直场景往往有大量的历史数据可以用来训练和优化。

第三,容错率高。因为场景固定,出现意外情况的概率较低,即使出现了也比较容易处理。

第四,ROI 清晰。在垂直场景下,Agent 的价值很容易量化。

比如法律文书撰写、行业分析、代码生成这些场景,都是合适的 Agent 应用场景。这些场景有明确的输入输出,有清晰的质量标准,有大量的历史数据,非常适合 Agent 来处理。

5. 可预测与可掌控的矛盾

在 ToB 场景下,企业客户最怕的就是不确定性。如果一个 Agent 今天的回答和明天的回答不一样,或者在关键时刻做出了意料之外的决策,那对企业来说不可接受的。

但是,客户又希望 Agent 有自适应能力,能够灵活处理各种情况。

当前的解决方案基本上是两个极端:

  1. 完全用 Workflow 来定义 Agent 的行为。每一步做什么都规定得清清楚楚,Agent 只是一个执行者。这样做的好处是完全可控,坏处是太死板,失去了 Agent 的灵活性。
  2. 完全放开,让 Agent 自己去学习和适应。这样做的好处是灵活,能处理各种意外情况,坏处是不可控,你永远不知道它下一步会做什么。

比较理想的方案应该是两者的结合:在关键决策点上用 Workflow 来控制,在具体执行上给 Agent 一定的自主权。但这说起来容易,做起来很难。需要对业务有深入的理解,知道哪些地方需要控制,哪些地方可以放开。

6. 模型能力 vs 工程能力

要解决这些矛盾和问题需要模型和工程两方面的提升,并且现阶段工程能力可能比模型能力更重要。

为什么?

因为现在的大模型能力其实已经不错了,GPT-5、Claude、DeepSeek 这些模型的理解和生成能力都很强。真正的瓶颈在于如何把这些能力转化成实际的业务价值。

这就需要大量的工程工作:

  • 如何设计合理的 Prompt,让模型理解业务需求
  • 如何构建知识库,让模型能够获取必要的信息
  • 如何设计工作流,让模型的输出能够被系统消费
  • 如何做异常处理,保证系统的稳定性
  • 如何做监控和优化,持续提升系统表现

这些工作属于比较累和碎的活儿,不如训练模型那么「高大上」,但却是 Agent 能否落地的关键。

7. 安全问题

AI Agent 的安全问题不仅仅是数据泄露,更大的问题在于,Agent 可能会做出一些不当的决策或者操作。

比如,一个有权限访问企业数据库的 Agent,如果被恶意引导,可能会删除重要数据或者泄露敏感信息。一个负责采购的 Agent,如果判断失误,可能会下错订单,造成巨大损失。如此种种……

现在的解决方案主要是加各种限制和审核机制,但这又回到了前面的矛盾:限制越多,Agent 就越不「智能」。

8. 可能的未来

基于目前的情况,我觉得接下来的一段时间 Agent 的发展会有几个趋势:

第一,从通用到垂直。越来越多的 Agent 会专注于特定的场景和行业。

第二,从替代到增强。Agent 的定位会从「替代人工」转变为「增强人工」。

第三,从单点到系统。不再是一个个孤立的 Agent,而是多个 Agent 协同工作的系统。

第四,从产品到服务。Agent 不再是一个买来就用的产品,而是需要持续优化的服务。

这些趋势意味着什么?

意味着 Agent 市场会越来越理性,泡沫会逐渐消失,真正有价值的应用会脱颖而出。

9. 最后

回到标题:AI Agent不够聪明

确实不够聪明,至少没有我们期望的那么聪明。

但这不意味着 Agent 没有价值。就像早期的计算机,虽然功能有限,但在特定场景下已经能创造巨大价值。关键是找到合适的场景,用合适的方式,解决真实的问题。

AI Agent 的发展还处于早期阶段,现在下结论还为时过早。但有一点是确定的:那些能够深入理解客户需求,扎实做好工程实施,持续优化产品体验的公司,最终会在这个市场上站稳脚跟。

至于 AI Agent 什么时候能真正「聪明」起来?我觉得还需要时间。可能是一年,可能是三年,也可能是五年。但在这个过程中,我们需要做的不是等待,而是不断探索、试错、优化,一步步接近那个目标。

毕竟,罗马不是一下子建成的,AI Agent 也不是。

以上。

从 LangChain 和 Manus 两巨头上下文工程实战中学到的 5 点经验

最近仔细看了 LangChain 的 Lance 和 Manus 的 Pete 的视频,主题是构建 AI 智能体中的上下文工程。这次分享没有那些空泛的理论,全是在生产环境中验证过的实战经验。

我结合自己的思考,整理了我认为 5 个最有价值的技术要点,每一个都直接影响着智能体的性能和可用性。

1. 上下文爆炸是智能体最大的瓶颈

Manus 统计显示,一个典型的智能体任务需要约 50 次工具调用。Anthropic 也提到,生产环境中的智能体对话可能持续数百轮。每次工具调用都会返回结果,这些结果会不断累积在消息历史中。

问题在于,随着上下文长度增加,模型性能会明显下降。Anthropic 把这个现象称为”上下文腐烂”(context rot)。具体表现是模型开始重复输出、推理速度变慢、回答质量下降。大部分模型在 200k Token 左右就开始出现这些问题,远低于它们宣称的上限。

这就形成了一个矛盾:智能体需要大量上下文来保持工作状态的连续性,但上下文太长又会导致性能下降。这是所有开发智能体的团队都会遇到的核心挑战。

Lance 在分享中展示了他们 Open Deep Research 项目的数据。这个开源项目在 Deep Research Bench 测试中排名前十,但即使是这样优秀的实现,也需要在三个阶段中不断地卸载和压缩上下文才能保持高效运行。

Pete 则分享了 Manus 的经验。他们发现,如果不做任何优化,上下文会在几十轮对话后就达到模型的处理极限。更糟糕的是,用户往往在这时才开始进入任务的核心部分。

解决这个问题没有捷径,必须从架构设计开始就考虑上下文管理。这也是为什么”上下文工程”这个概念在今年 5 月开始迅速流行的原因。它不是可选的优化项,而是构建生产级智能体的必要条件。

2. 上下文工程的五大组成部分

Lance 和 Pete 在分享中系统地总结了上下文工程的五个核心组成部分,这些部分相互关联,形成了一个完整的技术体系。

上下文卸载 是把部分信息移出主消息历史,存储到外部系统中。最常见的是使用文件系统。当搜索工具返回大量结果时,不是把完整内容放在消息队列里,而是写入文件,只在上下文中保留文件路径。Claude Code、Manus、Open Deep Research 项目都大量使用这种方法。

上下文缩减 包括压缩和摘要两种策略。压缩是去掉可以从外部重建的信息,摘要是对信息进行不可逆的精简。Claude 3.5 Sonnet 已经内置了修剪旧工具调用的功能。Cognition 在智能体交接时也会触发摘要。

上下文检索 解决如何按需获取被卸载的信息。有两派做法:Cursor 使用索引加语义搜索,Claude Code 和 Manus 只用文件系统加 grep、glob 这样的简单工具。两种方法各有优劣,选择哪种取决于具体场景。

上下文隔离 通过多智能体架构实现关注点分离。每个子智能体有自己的上下文窗口,避免信息混杂。Manus 的 Wide Agents、LangChain 的 Deep Agents、Claude 的多智能体研究员都采用了这种设计。

上下文缓存 利用 KV 缓存等机制减少重复计算。Anthropic 等服务商提供的缓存功能对长上下文智能体至关重要,特别是在输入远长于输出的场景下。

这五个部分不是独立的,而是相互影响的系统。卸载和检索让缩减更高效,稳定的检索让隔离变得安全。但隔离会减慢上下文传递,降低缩减频率。更多的隔离和缩减又会影响缓存效率。

Pete 特别强调,这种相互依赖意味着你不能只优化某一个方面,必须从整体考虑。比如,如果你的检索机制不够稳定,就不能激进地进行上下文隔离,否则子智能体可能无法获取必要的信息。

3. 上下文管理和数据库系统的对比

在分享中我个人的感觉是上下文工程的设计和数据库系统设计有比较多的相似性。

上下文卸载和数据库索引有很多相似之处,但它们的设计目标和实现机制存在本质差异。

展开来讲:相似性是都是为了解决容量与性能的矛盾

数据库索引解决的是「如何在海量数据中快速定位」的问题,而上下文卸载解决的是「如何在有限窗口中访问无限信息」的问题。两者都是通过建立某种间接引用机制,让系统能够处理超出直接处理能力的数据量。

数据库有内存中的索引页、磁盘上的索引文件、以及实际的数据页。上下文工程也有类似的层次:活跃上下文(相当于内存中的热数据)、文件路径引用(相当于索引)、文件系统中的完整内容(相当于磁盘数据)。

数据库索引针对不同的查询模式有不同类型:B 树索引适合范围查询,哈希索引适合等值查询,全文索引适合文本搜索。上下文卸载也有类似的分类:代码文件用路径索引,搜索结果用语义向量索引,对话历史用时间戳索引。

数据库的 buffer pool 会缓存频繁访问的索引页和数据页。上下文工程中的 KV 缓存也会保留频繁引用的上下文片段。两者都使用 LRU 或类似算法决定淘汰策略。

关键差异:索引是查询优化,卸载是容量管理

数据库索引的主要目标是加速查询,即使没有索引,全表扫描也能得到结果,只是慢一些。而上下文卸载是为了突破硬性限制,没有卸载机制,超出窗口的信息就完全无法访问。这是「优化」与「必需」的区别。

数据库索引是冗余信息,删除索引不会丢失数据,只会影响查询性能。但上下文卸载中,如果文件系统中的内容丢失,而上下文中只有路径引用,信息就永久丢失了。这就是为什么 Pete 强调卸载必须配合可靠的检索机制。

数据库索引需要随数据更新而维护,这是 ACID 事务的一部分。而上下文卸载通常是单向的:信息从上下文移到外部存储,很少需要反向更新。即使文件内容被修改,上下文中的引用通常保持不变。

数据库可以选择性地为某些列建立索引,基于查询模式和数据分布做决策。而上下文卸载往往是强制的:当接近 Token 限制时,必须卸载某些内容,没有”不建索引”的选项。

就像数据库有内存、磁盘、缓存的层次结构,上下文工程也有类似的分层:活跃上下文(内存)、文件系统(磁盘)、KV 缓存(缓存层)。数据库的查询优化对应着上下文检索,事务隔离对应着智能体隔离,数据压缩对应着上下文压缩。

Pete 提到的”通过通信”和”通过共享内存”两种模式,实际上对应着数据库中的消息传递和共享存储两种架构。当子智能体需要完整历史记录时,使用共享上下文模式,这就像数据库中的共享存储架构。当任务相对独立时,使用通信模式,类似于分布式数据库的消息传递。

智能体间的状态同步问题,本质上就是分布式系统的一致性问题。

Manus 的解决方案也借鉴了数据库的设计思想。他们使用结构化的模式(schema)来定义智能体间的通信接口,确保数据的一致性。他们的分层行为空间设计(函数调用、沙盒工具、软件包与API)类似于数据库的存储引擎分层。

这种类比不仅仅是理论上的相似。在实践中,你可以直接应用数据库系统的很多优化技术。比如,使用 LRU 策略决定哪些上下文应该被压缩或摘要;使用预写日志(WAL)的思想,在摘要前先把完整上下文写入日志文件;使用索引来加速文件系统中的信息检索。

我们可以借鉴数据库领域几十年的研究成果和工程实践,而不是从零开始摸索。

3. 上下文工程的核心是做减法,而不是加法

Pete 在分享最后强调的这一点可能是最重要的:避免上下文过度工程(context over-engineering)。

他提到,Manus 上线六七个月以来,最大的性能提升不是来自增加更复杂的上下文管理机制,而是来自简化架构、移除不必要的功能、对模型给予更多信任。他们已经重构了 Manus 五次,每次都是在做减法。

比如,早期的 Manus 使用 todo.md 文件来管理任务列表,结果发现约三分之一的操作都在更新这个列表,浪费了大量 Token。后来他们改用更简单的结构化规划器,效果反而更好。

另一个例子是工具选择。他们没有使用复杂的语义搜索来动态加载工具,而是固定使用 10-20 个原子功能,其他所有功能都通过沙盒中的命令行工具或 Python 脚本来实现。这种分层的行为空间设计,让系统既灵活又简单。

Pete 还提到了一个评估架构的方法:在强弱模型之间切换测试。如果你的架构从弱模型切换到强模型后能获得明显提升,说明架构有较好的未来适应性。因为明年的弱模型可能就和今天的强模型一样好。

关于是否要训练专门的模型,Pete 的观点也很明确:初创公司应该尽可能长时间地依赖通用模型和上下文工程。训练专门模型不仅成本高,而且在产品快速迭代的阶段,很可能在优化错误的指标。MCP(Model Context Protocol)的推出就是个例子,它彻底改变了 Manus 的设计,如果之前投入大量资源训练专门模型,这些投入就浪费了。

他们现在也不使用开源模型,不是因为质量问题,而是成本问题。对于输入远长于输出的智能体应用,KV 缓存至关重要。大型云服务商有更好的分布式缓存基础设施,算下来使用他们的 API 反而更便宜。

这些经验告诉我们:上下文工程的目标是让模型的工作变得更简单,而不是更复杂。不要为了优化而优化,每个设计决策都要基于实际的性能数据和用户反馈。

4. 压缩与摘要的本质区别决定了使用策略

Pete 详细解释了压缩和摘要这两种看似相似实则截然不同的策略,这个区分对实际应用至关重要。

压缩是可逆的。在 Manus 中,每个工具调用都有完整格式和紧凑格式。比如写文件操作,完整格式包含路径和内容,紧凑格式只保留路径。因为文件已经存在于文件系统中,通过路径可以随时恢复完整信息。这种可逆性至关重要,因为你永远不知道哪个历史操作会在后续变得重要。

摘要是不可逆的。一旦执行摘要,原始信息就永久丢失了。因此必须非常谨慎。Manus 的做法是在摘要前将完整上下文转储为日志文件,作为最后的保险。而且摘要时要保留最新几次工具调用的完整信息,让模型知道当前的工作状态。

关于阈值的确定,Pete 分享了具体数据:大多数模型在 200k Token 左右开始出现性能下降,他们将 128k-200k 设定为”腐烂前”阈值。这不是随意设定的,而是通过大量评估得出的。他们测试了不同长度下模型的重复率、推理速度、输出质量等指标。

触发策略是渐进式的:

  • 接近 128k 时,开始压缩最旧的 50% 工具调用
  • 压缩后检查实际释放的空间
  • 如果压缩效果不明显(因为即使紧凑格式也占用空间),才考虑摘要
  • 摘要时使用完整版本而非压缩版本的数据
  • 始终保留最新的几次完整工具调用

尽可能保留信息的完整性,只在必要时才接受信息损失。这就像数据压缩算法中的无损压缩和有损压缩,你总是先尝试无损方案。

不同类型的内容有不同的压缩潜力。搜索结果、API 响应这类内容压缩效果好,因为大部分信息可以通过查询重新获取。而用户的指令、模型的推理过程压缩空间有限,因为这些信息往往都是必要的。

5. 隔离策略的选择取决于任务特性而非直觉

多智能体隔离是个老话题,但 Pete 分享的经验推翻了很多常见做法。

首先是反模式的识别。很多团队喜欢按人类角色划分智能体:设计师智能体、程序员智能体、经理智能体等。Pete 明确指出这是个陷阱。这种划分源于人类组织的局限性(个人能力和注意力有限),而不是 AI 系统的最优设计。Manus 只有极少的几个功能性智能体:通用执行器、规划器、知识管理器。

关于隔离模式的选择,Pete 区分了两种场景:

通信模式适合结果导向的独立任务。主智能体发送明确指令,子智能体独立完成,返回结果。整个过程主智能体不关心细节,只要最终输出。比如”在代码库中搜索特定函数”、”将这段文本翻译成中文”。这种模式的优势是上下文干净、成本低、易于调试。

共享上下文模式适合需要完整历史信息的复杂任务。子智能体能看到所有历史对话和工具调用,但有自己的系统提示和工具集。比如深度研究任务,最终报告需要参考大量中间搜索和笔记。这种模式成本高(需要预填充大量上下文,无法复用 KV 缓存),但对某些任务是必要的。

判断使用哪种模式的关键是从结果推理过程的依赖性。如果最终输出强依赖于中间步骤的细节,就需要共享上下文。如果只需要最终结果,通信模式就足够了。

Pete 还提到了一个实用技巧:”智能体即工具”(agent as tool)。从主智能体视角,调用子智能体就像调用普通工具,有明确的输入输出接口。这简化了系统设计,也让调试更容易。Manus 的”高级搜索”功能就是这样实现的,表面上是个工具,实际是个完整的子智能体工作流。

他们解决通信问题的方法是强制使用结构化输出。主智能体调用子智能体前必须定义输出模式,子智能体通过专门的”提交结果”工具返回数据,系统用约束解码确保格式正确。这避免了自由格式通信带来的解析问题和信息丢失。

6. 一些额外的技术洞察

除了这五个核心经验,还有一些值得记录的技术细节。

信息的局部性。使用基于行的格式意味着每行都是独立的信息单元,读取第 100 行不需要解析前 99 行。这对于大文件的随机访问至关重要。

结构化不等于复杂格式。Pete 强调,他们优先使用基于行(line-based)的纯文本格式,而不是 JSON 或 XML。原因很简单:模型可以用 grep 搜索特定行,用 sed 修改特定内容,用 head/tail 读取部分数据。这些都是模型已经掌握的基础工具。

关于 Markdown 的使用要特别谨慎。虽然模型都接受过 Markdown 训练,但过度使用会带来副作用。某些模型会因此输出过多的项目符号和格式化标记,浪费 Token 还影响可读性。Manus 的经验是:在需要结构时用 Markdown,在存储数据时用纯文本。

关于模型切换的评估方法。Pete 提到,他们会在强弱模型间切换来评估架构的未来适应性。如果一个架构在弱模型上也能工作(虽然效果差一些),说明它不是过度依赖特定模型能力的脆弱设计。

关于工具数量的上限,他们的经验是不超过 30 个。这不是任意数字,而是基于大量测试。超过这个数量,模型开始频繁调用错误的工具,甚至调用不存在的工具。解决方案不是动态加载工具,而是设计分层的行为空间:少量原子工具 + 沙盒命令 + 代码执行。

关于评估体系,Manus 的三层评估值得借鉴:用户评分是北极星指标,自动化测试覆盖可验证的任务,真人评估处理主观性强的输出。学术基准测试只是参考,不能作为主要依据。

上下文工程不是一些零散的技巧,而是一个需要系统思考的工程领域。每个设计决策都会影响到其他部分,没有放之四海而皆准的最佳实践,只有基于具体场景的权衡取舍。

以上。

AI Agent 架构常用的 4 种设计模式

AI Agent 持续火爆,不仅仅是产品上,在融资市场也同样火爆,各种产品都在往上靠。但对于 AI Agent 该如何架构,有人关注,但少有人刻意去了解和分析。一些常见的问题有:如单个 Agent 搞不定复杂任务,多个 Agent 又容易失控,成本高,在不同的场景应该使用什么样的架构等等。

这篇文章我会尝试分享一下 AI Agent 的 4 个常用设计模式。

1. 什么是 Agent 设计模式

设计模式这个概念最早来自建筑行业,后来被软件工程借鉴过来。Christopher Alexander 在《建筑的永恒之道》里说,每个模式都是一个三元组:在特定的上下文中,解决特定的问题,采用特定的方案。

放到 AI Agent 领域,设计模式就是构建智能体系统的常见架构方法。每种模式都提供了一个组织系统组件、集成模型、编排单个或多个 Agent 来完成工作流的框架。

为什么需要设计模式?因为 Agent 系统的复杂性在于它需要自主决策、动态规划、处理不确定性。我们需要有特定场景下的特定解决方案,不过于复杂,也不过于简单,刚刚好。

选择设计模式前,需要考虑几个关键因素:任务复杂度、响应时间要求、成本预算、是否需要人工参与。想清楚这些,才能选对模式。

2. 单 Agent 模式

2.1 模式定义

单 Agent 模式是最基础的设计模式。整个系统只有一个 Agent,通过一个 AI 模型、一组预定义的工具、一个精心设计的系统提示词来完成任务。

这也是我们实际工作中常用的设计模式。

Agent 依赖模型的推理能力来理解用户请求、规划执行步骤、选择合适的工具。

这个模式的架构很简单:

用户输入 → Agent(模型+工具+提示词) → 输出结果

所有的决策和执行都在一个 Agent 内完成。

2.2 解决的问题

单 Agent 模式主要解决的是需要多步骤处理但逻辑相对清晰的任务。比如:

  • 需要调用多个 API 获取信息然后综合
  • 需要访问数据库查询后给出答案
  • 需要执行一系列操作来完成用户请求

这些任务用传统的非 Agent 系统也能做,但整个逻辑非常固化,都是规则,而使用了 Agent 后,它能动态决策,自行做工具调用。

2.3 核心组件

AI 模型:这是 Agent 的大脑,负责理解、推理和决策。模型的能力直接决定了 Agent 的上限。选择模型时要平衡能力和成本,不是所有任务都需要用最强的模型。

工具集:Agent 能调用的外部功能,比如搜索引擎、数据库、API、计算器等。工具定义要清晰,包括什么时候用、怎么用、预期结果是什么。工具太多会增加选择难度,太少又限制能力。

系统提示词:定义 Agent 的角色、任务、行为规范。好的提示词能较大幅提升 Agent 的表现。要明确告诉 Agent 它是谁、要做什么、有哪些限制、如何处理异常情况。

记忆系统:虽然不是必需的,但记忆系统能让 Agent 保持上下文,避免重复操作。可以是简单的对话历史,也可以是复杂的向量数据库。

2.4 工作流程

  1. 接收请求:Agent 接收用户的输入,可能是文本、语音或其他格式
  2. 理解意图:通过模型分析用户想要什么,需要哪些信息
  3. 制定计划:决定需要执行哪些步骤,调用哪些工具
  4. 执行操作:按计划调用工具,获取必要信息
  5. 综合结果:把各种信息整合成最终答案
  6. 返回响应:将结果返回给用户

整个过程是线性的,但 Agent 可以根据中间结果调整计划。

2.5 应用场景

客服助手:处理常见的客户询问,比如查订单、改地址、退换货。Agent 可以访问订单系统、物流系统、用户数据库,一站式解决客户问题。

研究助手:帮助用户收集和总结信息。比如搜索特定主题的最新进展,整理成报告。Agent 可以调用搜索 API、访问学术数据库、生成摘要。

个人助理:管理日程、发邮件、设置提醒。Agent 可以访问日历、邮箱、任务管理工具,帮用户处理日常事务。

2.6 优势与局限

优势:

  • 架构简单,容易实现和维护
  • 成本可控,只需要调用一个模型
  • 响应速度快,没有多 Agent 协调的开销
  • 调试方便,所有逻辑在一个地方

局限:

  • 处理复杂任务能力有限
  • 工具太多时容易混乱
  • 单点故障,Agent 出问题整个系统就挂了
  • 难以并行处理多个子任务

2.7 实施建议

从简单开始:先实现核心功能,确保基本流程跑通,再逐步添加工具和能力。

工具要精不要多:与其给 Agent 20 个工具,不如精选 5-8 个最常用的。每个工具的使用场景要明确。

提示词要迭代优化:没有一次就完美的提示词。要根据实际使用情况不断调整,特别是边界情况的处理。

加入失败处理:工具调用可能失败,模型推理可能出错。要有明确的错误处理机制,比如重试、降级、转人工。

监控关键指标:响应时间、成功率、工具调用次数、token 消耗等。这些数据是优化的基础。

3. ReAct 模式

3.1 模式定义

ReAct(Reasoning and Acting)模式是一种让 Agent 交替进行推理和行动的设计模式。不同于简单的输入输出,ReAct 模式让 Agent 在一个循环中不断地思考、行动、观察,直到找到问题的答案。

这个模式的核心思想是把 Agent 的思维过程显式化。每一步都要说明在想什么、要做什么、观察到什么,形成一个完整的推理链条。这不仅提高了结果的可靠性,也让整个过程变得可解释。

3.2 解决的问题

ReAct 模式解决的是那些需要多步探索和动态调整策略的复杂问题:

  • 答案不是显而易见的,需要逐步收集信息
  • 初始计划可能不完善,需要根据中间结果调整
  • 需要试错和迭代才能找到最优解
  • 推理过程和结果同样重要,需要可解释性

传统的一次性推理经常不够用,需要 Agent 能够根据新信息不断调整自己的理解和策略。

3.2 核心机制

Thought(思考):Agent 分析当前状况,推理下一步该做什么。这包括理解已有信息、识别缺失信息、评估可能的行动方案。思考过程要明确表达出来,比如「我需要知道 X 才能回答 Y」。

Action(行动):基于思考结果,Agent 决定采取什么行动。通常是调用某个工具获取信息,也可能是进行计算或转换。行动要具体,包括使用什么工具、传入什么参数。

Observation(观察):Agent 接收行动的结果,理解新获得的信息。观察不是简单的记录,而要分析这些信息对解决问题有什么帮助,是否需要调整策略。

这三个步骤形成一个循环,不断重复直到找到满意的答案或达到终止条件。

3.3 工作流程

用户输入问题
↓
初始思考:理解问题,确定需要什么信息
↓
循环开始:
  → 思考:基于当前信息,决定下一步
  → 行动:执行决定的操作
  → 观察:分析操作结果
  → 判断:是否已经可以回答问题?
     ├─ 否:继续循环
     └─ 是:退出循环
↓
综合所有信息,生成最终答案
↓
返回给用户

每个循环都在积累信息,逐步接近答案。关键是 Agent 要能判断什么时候信息足够了。

3.4 典型应用场景

复杂问题求解:比如数学应用题,需要分步骤求解。Agent 先理解问题,识别已知和未知,然后逐步计算中间结果,最后得出答案。每一步都要验证是否合理。

信息检索与验证:用户问一个需要多方印证的问题。Agent 从不同来源收集信息,交叉验证,排除矛盾,最终给出可靠的答案。比如”某个历史事件的真实经过”。

调试和故障排查:系统出问题了,Agent 需要逐步检查各个组件,收集日志,测试假设,最终定位问题原因。这个过程充满了试错和调整。

研究和分析:对某个主题进行深入研究。Agent 先了解背景,然后深入特定方面,发现新的线索后调整研究方向,最终形成完整的分析报告。

3.5 实现要点

推理链的质量:ReAct 模式的效果很大程度上取决于模型的推理能力。要选择推理能力强的模型,并通过提示词引导它进行结构化思考。

终止条件设计:必须有明确的终止条件,否则可能陷入无限循环。常见的终止条件包括:找到满意答案、达到最大迭代次数、遇到无法处理的错误、用户主动终止。可以参考我上一篇文章《AI Agent 核心策略:如何判断 Agent 应该停止》

上下文管理:随着循环次数增加,上下文会越来越长。需要策略性地管理上下文,比如总结之前的发现、删除无关信息、保留关键结论。

错误恢复:某一步出错不应该导致整个流程失败。要有恢复机制,比如重试、换一种方法、跳过这一步等。

3.6 优势与挑战

优势:

  • 可解释性强,每一步推理都有记录
  • 灵活性高,可以动态调整策略
  • 准确性好,通过多步验证减少错误
  • 适应性强,能处理预料之外的情况

挑战:

  • 延迟较高,多次循环导致响应时间长
  • 成本增加,每次循环都要调用模型
  • 可能陷入循环,在某些问题上来回打转
  • 对模型能力要求高,弱模型效果差

3.7 优化策略

设置合理的最大循环次数:根据任务类型和复杂度,设置合适的上限。简单任务 3-5 次,复杂任务 10-15 次。

缓存中间结果:相同的查询不要重复执行,工具调用的结果要缓存起来。

并行化某些操作:如果多个信息获取操作互不依赖,可以并行执行,减少总体时间。

使用更轻量的模型进行初步筛选:不是每个思考步骤都需要最强的模型,可以用小模型做初筛,大模型做关键决策。

提供思考模板:通过提示词工程,给 Agent 提供思考的框架,提高推理效率。

4. 多 Agent 协作模式

4.1 模式定义

多 Agent 协作模式是让多个专门化的 Agent 共同完成一个复杂任务。每个 Agent 负责自己擅长的领域,通过协调器(Coordinator)或预定义的工作流来协同工作。

这个模式的核心理念是”专业分工”。就像一个团队,每个成员都有自己的专长,通过协作可以完成单个人无法完成的任务。协调可以是中心化的(有一个协调器),也可以是去中心化的(Agent 之间直接通信)。

4.2 解决的问题

多 Agent 协作模式解决的是单个 Agent 难以处理的复杂问题:

  • 任务涉及多个专业领域,单个 Agent 难以精通所有领域
  • 需要并行处理多个子任务以提高效率
  • 任务太复杂,单个提示词难以覆盖所有情况
  • 需要不同视角的交叉验证来提高可靠性

当你发现单个 Agent 的提示词越写越长、工具越加越多、错误率开始上升时,就该考虑多 Agent 协作了。

4.3 架构类型

顺序协作:Agent 按照预定顺序依次工作,前一个的输出是后一个的输入。像流水线一样,每个 Agent 完成特定的加工步骤。适合步骤明确、顺序固定的任务。

并行协作:多个 Agent 同时工作,各自处理任务的不同方面,最后汇总结果。像团队分工一样,每个人负责一部分,最后整合。适合可以分解的独立子任务。

层级协作:Agent 组织成树状结构,上层 Agent 负责任务分解和结果汇总,下层 Agent 负责具体执行。像公司组织架构,有管理层和执行层。适合需要多级分解的复杂任务。

网状协作:Agent 之间可以自由通信,没有固定的上下级关系。像专家会诊,大家平等讨论,共同决策。适合需要充分讨论和创意的任务。

4.4 核心组件

专业 Agent:每个 Agent 专注于特定领域或功能。比如数据分析 Agent、文案撰写 Agent、代码生成 Agent 等。专业化让每个 Agent 的提示词更精简、更有效。

协调器 Agent:负责任务分解、Agent 调度、结果汇总。协调器需要理解整体任务,知道每个 Agent 的能力,能做出合理的分配决策。

通信机制:Agent 之间如何传递信息。可以是直接传递(点对点),也可以通过共享内存(如消息队列、数据库)。通信协议要明确,包括数据格式、错误处理等。一般是 json 格式。

上下文管理:如何在 Agent 之间共享和传递上下文。不是所有信息都需要传给所有 Agent,要有选择地传递相关信息,避免信息过载。

4.5 典型场景

内容创作流水线:

  • 研究 Agent:收集资料、查证事实
  • 写作 Agent:撰写初稿
  • 编辑 Agent:优化文笔、检查逻辑
  • 审核 Agent:确保符合规范、没有敏感内容

每个 Agent 专注自己的环节,整体产出高质量内容。

客户服务系统:

  • 分类 Agent:理解客户问题类型
  • 查询 Agent:从数据库获取相关信息
  • 解决方案 Agent:生成解决方案
  • 回复 Agent:组织友好的回复话术

根据问题类型,协调器可能跳过某些 Agent 或调整流程。

代码开发助手:

  • 需求分析 Agent:理解用户需求
  • 架构设计 Agent:设计系统架构
  • 代码生成 Agent:编写具体代码
  • 测试 Agent:生成测试用例并执行
  • 文档 Agent:生成代码文档

可以迭代工作,测试发现问题后返回给代码生成 Agent 修改。

数据分析系统:

  • 数据收集 Agent:从各个源获取数据
  • 清洗 Agent:处理缺失值、异常值
  • 分析 Agent:统计分析、模式识别
  • 可视化 Agent:生成图表
  • 报告 Agent:撰写分析报告

可以并行处理多个数据源,提高效率。

4.6 协调策略

中心化协调:所有决策都由协调器做出。优点是逻辑清晰、易于控制;缺点是协调器可能成为瓶颈。

分布式协调:Agent 之间直接协商。优点是灵活、无单点故障;缺点是可能出现冲突、难以调试。

混合协调:结合两者优点,重要决策由协调器做,细节由 Agent 之间协商。

动态协调:根据任务特点动态选择协调策略。简单任务用顺序协作,复杂任务用层级协作。

4.7 实施要点

明确分工:每个 Agent 的职责要清晰,避免重叠和空白。写清楚每个 Agent 负责什么、不负责什么。

接口标准化:Agent 之间的接口要标准化,包括输入输出格式、错误码、超时处理等。

错误隔离:一个 Agent 出错不应该导致整个系统崩溃。要有错误隔离和恢复机制。

性能优化:识别瓶颈 Agent,考虑并行化、缓存、负载均衡等优化手段。

版本管理:不同 Agent 可能有不同的更新频率,要有版本管理机制,确保兼容性。

4.8 优势与挑战

优势:

  • 可扩展性好,可以随时添加新的专业 Agent
  • 复用性高,Agent 可以在不同任务中复用
  • 维护性好,每个 Agent 独立维护,互不影响
  • 可靠性高,通过冗余和交叉验证提高准确性

挑战:

  • 协调开销大,Agent 之间的通信和协调需要额外成本
  • 调试困难,问题可能出现在任何一个 Agent 或它们的交互中
  • 延迟增加,多个 Agent 串行或协调都会增加总体时间
  • 成本上升,每个 Agent 都需要模型调用,成本成倍增加

5. 人机协同模式

5.1 模式定义

人机协同模式是在 Agent 工作流程中嵌入人工干预点的设计模式。Agent 在关键决策点暂停执行,等待人类审核、提供额外信息或做出决策,然后继续执行。这不是简单的人工兜底,而是人类智慧和 AI 能力的有机结合。

这个模式承认了一个现实:当前的 AI 还不能完全自主地处理所有情况,特别是涉及主观判断、伦理决策、高风险操作的场景。通过合理的人机协同,可以发挥各自优势。

在 AI 编程中通用有一个手动模式和一个自动模式。

5.2 解决的问题

人机协同模式解决的是纯 AI 方案风险太高或能力不足的问题:

  • 高风险决策需要人工确认,比如大额交易、医疗诊断
  • 主观判断 AI 难以把握,比如创意评审、品牌调性
  • 异常情况超出 AI 训练范围,需要人类经验
  • 法律或合规要求必须有人参与决策
  • AI 不确定性太高,需要人工验证

这个模式的关键是找到人机协同的最佳平衡点,既不能过度依赖人工(那就失去了自动化的意义),也不能完全放手给 AI(可能造成严重后果)。

5.3 协同机制

审核点(Checkpoint):在工作流的特定位置设置审核点,Agent 必须等待人工审核才能继续。审核点的位置很关键,太多会影响效率,太少可能错过关键决策。

升级机制(Escalation):当 Agent 遇到超出能力范围的情况时,自动升级到人工处理。需要定义清楚什么情况下升级,比如置信度低于阈值、遇到预定义的异常情况等。

协作模式(Collaboration):人类和 Agent 共同完成任务,各自负责擅长的部分。比如 Agent 做数据分析,人类做战略决策;Agent 生成初稿,人类做最终润色。

反馈循环(Feedback Loop):人类的决策和修正会反馈给 Agent,用于改进后续的行为。这是一个持续学习的过程。

5.4 干预类型

批准型干预:Agent 完成工作后,需要人工批准才能生效。比如 Agent 起草了一份合同,法务人员审核批准后才发送。这种干预主要是把关和确认。

选择型干预:Agent 提供多个选项,由人类选择。比如 Agent 生成了三个营销方案,市场总监选择最合适的。这种干预利用人类的判断力。

修正型干预:人类可以修改 Agent 的输出。比如 Agent 写了一篇文章,编辑可以直接修改其中的内容。这种干预是精细调整。

补充型干预:人类提供 Agent 缺少的信息。比如 Agent 在处理客户投诉时,遇到特殊情况,客服人员提供额外的背景信息。这种干预是信息补充。

接管型干预:在某些情况下,人类完全接管任务。比如 Agent 判断问题太复杂,直接转给人工处理。这种干预是兜底机制。

5.5 设计原则

最小干预原则:只在必要的地方设置人工干预,尽量让 Agent 自主完成任务。过多的干预会降低效率,失去自动化的意义。

透明度原则:人类要能理解 Agent 的决策依据。Agent 应该提供决策的理由、使用的数据、考虑的因素等,让人类能做出明智的判断。

可控性原则:人类要能随时介入、修改或停止 Agent 的行为。要有紧急停止按钮、回滚机制等。

责任明确原则:明确人和 AI 各自的责任边界。特别是出现问题时,要清楚责任在谁。

用户体验原则:人机交互界面要友好,信息呈现要清晰,操作要简便。不能因为加入人工环节就让流程变得复杂。

5.6 实施要点

界面设计:人机交互界面是关键。要展示必要信息,但不能信息过载。要提供便捷的操作方式,减少人工负担。可以用可视化、摘要、高亮等技术。

通知机制:需要人工介入时,要有及时的通知机制。可以是应用内通知、邮件、短信等。要考虑优先级和紧急程度。

超时处理:人工可能不能及时响应,要有超时机制。可以是自动采用保守方案、转给其他人、暂停任务等。

权限管理:不同的人可能有不同的干预权限。要有完善的权限体系,确保只有合适的人才能做关键决策。

审计追踪:所有的人工干预都要有记录。谁在什么时间做了什么决定,依据是什么。这对于问题追溯和合规审计都很重要。

5.7 优势与挑战

优势:

  • 安全性高,关键决策有人把关
  • 灵活性好,能处理 AI 无法处理的特殊情况
  • 可信度高,用户更信任有人参与的系统
  • 持续改进,人工反馈帮助系统不断优化

挑战:

  • 效率降低,人工环节会增加处理时间
  • 成本增加,需要人力投入
  • 一致性难保证,不同人可能有不同判断
  • 扩展性受限,人工环节可能成为瓶颈

6. 选择建议

选择合适的设计模式需要综合考虑多个因素。这里提供一个决策框架:

6.1 从简单到复杂的演进路径

第一阶段:单 Agent 模式

  • 任务相对简单,领域单一
  • 团队刚开始尝试 Agent
  • 需要快速验证概念
  • 成本敏感

第二阶段:ReAct 模式

  • 任务需要多步推理
  • 结果需要可解释性
  • 有一定的复杂度但还能单 Agent 处理

第三阶段:多 Agent 协作

  • 任务跨越多个领域
  • 需要专业分工
  • 单 Agent 已经力不从心

始终考虑:人机协同

  • 涉及高风险决策
  • 需要主观判断
  • 法规要求人工参与

6.2 关键决策因素

任务复杂度:

  • 低:单 Agent
  • 中:ReAct 或简单的多 Agent
  • 高:复杂的多 Agent

响应时间要求:

  • 实时(秒级):单 Agent
  • 近实时(分钟级):ReAct 或并行多 Agent
  • 非实时(小时级):任何模式都可以

成本预算:

  • 紧张:单 Agent
  • 适中:ReAct 或简单多 Agent
  • 充足:复杂多 Agent

可靠性要求:

  • 一般:单 Agent 或 ReAct
  • 高:多 Agent 协作(通过冗余提高可靠性)
  • 关键:人机协同

团队能力:

  • 初级:从单 Agent 开始
  • 中级:可以尝试 ReAct 和简单多 Agent
  • 高级:可以驾驭任何模式

7. 总结

AI Agent 的设计模式不是银弹,每种模式都有自己的适用场景和权衡。单 Agent 模式简单直接,适合入门和简单任务。ReAct 模式增加了推理能力,适合需要探索的问题。多 Agent 协作通过分工提高能力,适合复杂的领域任务。层级规划通过递归分解处理高复杂度问题。人机协同则是当前 AI 能力限制下的必要补充。

选择模式时,要从实际需求出发,考虑任务特性、资源限制、团队能力等因素。不要过度设计,也不要畏手畏脚。从简单开始,逐步演进,在实践中找到最适合的方案。

技术最终是为业务服务的。不管用什么模式,最终目的是解决实际问题,创造价值。

以上。