AI Agent 核心认知框架详解

1. 引言

在人工智能领域,Agent(智能体)之所以区别于传统的聊天机器人,核心在于其具备感知、规划、记忆和使用工具的能力。而决定 Agent 如何思考、如何决策以及如何执行任务的底层逻辑,被称为"认知框架"。认知框架是 AI Agent 的大脑结构,从基础的思维链到复杂的反思机制,每种框架都在试图解决大模型幻觉、逻辑断层或工具使用不当的问题

选择合适的认知框架,直接决定了 Agent 的任务成功率、响应速度以及成本消耗。本文介绍最常用的五种认知框架:思维链(CoT)、思维树(ToT)、ReAct、Plan-and-Execute 以及 Reflexion。开发者应根据业务对成本、延迟和准确率的具体要求,灵活选择或组合使用上述框架。

2. 思维链(Chain of Thought, CoT)

2.1 核心原理

思维链是最基础的推理框架。它的核心思想是引导大模型不要直接输出答案,而是将复杂问题分解为多个中间步骤,一步一步进行推理。通过展示推理过程,模型能够显著提高在数学、逻辑推理等任务上的准确率。

2.2 工作流程

  1. 接收用户问题。

  2. 模型生成"让我们一步步思考"的提示。

  3. 模型输出中间推理步骤。

  4. 模型输出最终结论。

2.3 代码案例

复制代码
# 伪代码示例:CoT 推理过程
def cot_reasoning(question):
    prompt = f"""
    问题:{question}
    请一步步思考并解答:
    """
    # 调用大模型
    response = llm.generate(prompt)
    return response
​
# 输入
question = "罗杰有 5 个网球,又买了两筒网球,每筒有 3 个,他现在有多少个?"
# 模型输出示例
# 1. 罗杰最初有 5 个球。
# 2. 买了 2 筒,每筒 3 个,即 2 * 3 = 6 个。
# 3. 总数是 5 + 6 = 11 个。
# 答案:11 个。

2.4 优缺点

优点:实现简单,显著提升逻辑推理能力,无需额外训练。 缺点:仅适用于文本推理,无法与外部工具交互,无法处理需要多路径探索的复杂任务。

2.5 案例

复制代码
1.项目背景
某金融机构需要开发一个内部工具,能够自动读取长篇上市公司财报,并提取关键财务指标(如营收增长率、净利润、现金流等),最后生成简短的投资建议。
2.框架应用
在这个场景中,模型不需要调用外部工具,也不需要多路径探索,核心难点在于处理长文本的逻辑一致性。使用思维链(CoT)框架,强制模型在给出投资建议前,先列出提取到的数据依据。
3.工作流程
输入:上传某公司 2023 年年度财报 PDF 文本。
思维步骤 1:模型首先提取“总营收”数值。
思维步骤 2:模型提取“去年同期营收”数值。
思维步骤 3:模型计算增长率((今年 - 去年)/去年)。
思维步骤 4:模型提取“净利润”数值并判断盈亏。
最终输出:基于上述步骤,生成“买入/持有/卖出”建议。
4.为什么选择 CoT
该任务属于典型的逻辑推理任务。如果直接让模型生成建议,容易出现幻觉(胡乱编造数据)。通过 CoT 强制模型展示计算过程,开发人员可以核查中间步骤的准确性,显著提高了数据提取的可靠性。

3. 思维树(Tree of Thoughts, ToT)

3.1 核心原理

思维树是思维链的升级版。它允许模型在推理过程中探索多条可能的路径,形成树状结构。模型可以对每个思维步骤进行评估,选择最优路径继续,或者在遇到死胡同时回溯(Backtracking)。这模拟了人类面对难题时的"试错"过程。

3.2 工作流程

  1. 将问题分解为多个思维步骤。

  2. 每一步生成多个可能的选项(分支)。

  3. 评估每个选项的价值。

  4. 通过搜索算法(如 BFS 或 DFS)选择最佳路径。

  5. 回溯或继续直到找到解决方案。

3.3 代码案例

复制代码
# 伪代码示例:ToT 搜索逻辑
def tot_solve(problem):
    root = ThoughtNode(content=problem)
    queue = [root]
    
    while queue:
        current_node = queue.pop(0)
        
        # 1. 生成多个可能的下一步思维
        next_thoughts = llm.generate_thoughts(current_node, num_branches=3)
        
        for thought in next_thoughts:
            # 2. 评估该思维的价值
            score = llm.evaluate(thought)
            node = ThoughtNode(content=thought, score=score, parent=current_node)
            
            if is_solution(node):
                return get_path(node)
            
            if score > threshold:
                queue.append(node)
            # 如果分数低,则剪枝,不加入队列
                
    return "未找到解决方案"

3.4 优缺点

优点:适合解决创意写作、复杂数学证明等需要全局规划的问题,具备自我纠错能力。 缺点:计算成本高,延迟大,需要多次调用模型进行评估和生成。

3.5 案例

复制代码
1.项目背景
一家游戏公司希望开发一款 AI 驱动的文字冒险游戏。玩家需要扮演侦探破案,AI 作为游戏主持人(DM),需要根据玩家的选择生成合理的剧情分支,保证故事逻辑严密且有趣。
2.框架应用
剧情生成具有高度的不确定性,一条路径可能导致故事过早结束或逻辑矛盾。思维树(ToT)框架允许 AI 在后台预演多种剧情走向,评估哪种最精彩,再呈现给玩家。
3.工作流程
当前状态:玩家在仓库发现了一把带血的钥匙。
分支生成:模型生成三个可能的后续剧情:
分支 A:钥匙是凶手的,玩家被埋伏。
分支 B:钥匙是受害者的,指向另一个地点。
分支 C:钥匙是陷阱,引发爆炸。
评估:模型对三个分支进行打分(趣味性、逻辑性、连贯性)。
选择:分支 B 得分最高,被选中作为正式剧情输出给玩家。
回溯:如果玩家后续操作导致死胡同,系统可回溯到上一个节点重新生成分支。
4.为什么选择 ToT
创意类任务没有标准答案,需要全局规划。ToT 的多路径搜索能力避免了故事走向平庸或逻辑崩坏,提升了用户体验。虽然成本较高,但对于游戏内容生成来说,质量优于速度。

4. ReAct(Reasoning + Acting)

4.1 核心原理

ReAct 是目前最主流的 Agent 框架。它将"推理"(Reasoning)与"行动"(Acting)结合在一起。模型在生成动作之前先进行推理,然后根据动作的执行结果(Observation)再进行下一步推理。这种交替循环使得模型能够利用外部工具(如搜索引擎、计算器)来解决知识缺失或计算问题。

4.2 工作流程

  1. 思考(Thought):分析当前情况,决定下一步做什么。

  2. 行动(Action):调用工具或 API。

  3. 观察(Observation):获取工具返回的结果。

  4. 循环:基于观察结果再次思考,直到完成任务。

4.3 代码案例

复制代码
# 伪代码示例:ReAct 循环
def react_agent(task):
    history = []
    while not is_finished(task):
        # 1. 生成思考和行动
        prompt = build_prompt(task, history)
        response = llm.generate(prompt) 
        # 解析出 Thought 和 Action
        thought, action, action_input = parse_response(response)
        
        # 2. 执行行动
        observation = execute_tool(action, action_input)
        
        # 3. 记录历史
        history.append({
            "thought": thought,
            "action": action,
            "observation": observation
        })
        
    return history[-1]["thought"] # 最终答案

4.4 优缺点

优点:可解释性强,能够利用外部工具弥补模型知识短板,灵活适应动态环境。 缺点:串行执行效率较低,每一步都需要调用模型,Token 消耗较快。

4.5 案例

复制代码
1.项目背景
某大型互联网公司的内部运维团队需要一个机器人,帮助员工处理常见 IT 问题,如重置密码、查询服务器状态、重启服务等。机器人需要权限验证和操作执行。
2.框架应用
这是典型的需要与外部系统交互的场景。机器人不能只靠内部知识,必须调用 API。ReAct 框架的“推理 - 行动 - 观察”循环非常适合此类任务。
3.工作流程
用户请求:帮我重启测试环境的数据库服务。
思考(Thought):用户需要重启服务,我需要先确认他的权限,然后执行重启命令。
行动(Action):调用 check_permission_api(user_id)。
观察(Observation):返回结果“权限不足”。
思考(Thought):用户权限不足,不能直接重启,需要引导其申请权限。
行动(Action):调用 send_reply_api("抱歉,您没有权限...")。
结束:任务完成。
4.为什么选择 ReAct
运维任务高度依赖实时状态和工具权限。ReAct 允许模型根据工具返回的实际结果(如权限不足、服务已停止)动态调整下一步策略,而不是盲目执行预设指令,极大地提高了操作的安全性。

5. Plan-and-Execute(计划 - 执行)

5.1 核心原理

该框架将任务分为两个阶段:规划阶段和执行阶段。首先由一个规划器(Planner)生成完整的任务步骤列表,然后由执行器(Executor)依次执行这些步骤。这种结构适合流程固定、步骤清晰的任务。

5.2 工作流程

  1. 规划器接收任务,生成步骤列表 [Step 1, Step 2, Step 3...]。

  2. 执行器遍历列表,依次执行每个步骤。

  3. 如有必要,可根据执行结果重新规划。

5.3 代码案例

复制代码
# 伪代码示例:计划与执行
def plan_and_execute(task):
    # 阶段 1:规划
    plan_prompt = f"为任务生成步骤计划:{task}"
    plan = llm.generate(plan_prompt) 
    # 假设输出为列表:["搜索天气", "查找穿衣建议", "总结"]
    
    # 阶段 2:执行
    results = []
    for step in plan:
        result = execute_step(step)
        results.append(result)
        
    # 阶段 3:合成最终结果
    final_answer = llm.synthesize(results)
    return final_answer

5.4 优缺点

优点:全局视角好,减少中途迷路的风险,执行阶段可使用小模型降低成本。 缺点:灵活性较差,遇到计划外情况需要重新规划,导致延迟增加。

5.5 案例

复制代码
1.项目背景
某旅游平台希望推出一个 AI 规划师,用户输入目的地和天数,系统生成包含机票、酒店、景点、交通的完整行程单,并支持预订链接。
2.框架应用
旅行规划是一个强流程化的任务,必须先定机票再定酒店,最后安排景点。Plan-and-Execute 框架的“先规划后执行”模式能确保步骤不乱。
3.工作流程
规划阶段:
步骤 1:搜索往返机票。
步骤 2:根据机票时间搜索附近酒店。
步骤 3:搜索目的地热门景点。
步骤 4:规划每日路线。
步骤 5:生成最终 PDF 行程单。
执行阶段:
执行器依次调用机票 API、酒店 API、景点数据库。
将每一步的结果传递给下一步(例如将机票到达时间传递给酒店搜索模块)。
输出:完整的行程文档。
4.为什么选择 Plan-and-Execute
该任务步骤固定且依赖性强(没有到达时间无法推荐酒店)。先生成完整计划可以避免执行过程中遗漏关键环节。同时,规划阶段可以一次性完成,执行阶段可以批量处理,效率较高。

6. Reflexion(反思 - 迭代)

6.1 核心原理

Reflexion 框架强调"自我反思"。Agent 在执行任务后,会对结果进行评估。如果失败,它会生成反思文本,记录错误原因,并将这些反思存入记忆。在下一次尝试中,模型会参考之前的反思来避免重复错误。

6.2 工作流程

  1. 尝试执行任务。

  2. 评估执行结果(成功/失败)。

  3. 如果失败,生成反思内容(为什么失败,如何改进)。

  4. 将反思加入上下文,重新尝试。

  5. 直到成功或达到最大尝试次数。

6.3 代码案例

复制代码
# 伪代码示例:Reflexion 循环
def reflexion_agent(task, max_trials=3):
    memory = [] # 存储反思
    
    for i in range(max_trials):
        # 1. 尝试执行
        response = llm.generate(task, context=memory)
        result = execute(response)
        
        # 2. 评估
        feedback = evaluate(result)
        
        if feedback.is_success:
            return result
            
        # 3. 生成反思并存入记忆
        reflection = llm.reflect(response, feedback)
        memory.append(f" trial {i} reflection: {reflection}")
        
    return "任务失败"

6.4 优缺点

优点:具备自我进化能力,无需外部训练即可从错误中学习,适合代码生成等高精度任务。 缺点:可能需要多次迭代才能成功,耗时较长。

6.5 案例

复制代码
1.项目背景
某软件开发团队希望引入一个 AI 助手,自动检测代码仓库中的 Bug 并提供修复补丁。由于代码编译报错信息复杂,一次性修复成功率低,需要反复尝试。
2.框架应用
代码修复是一个典型的“试错”过程。Reflexion 框架通过引入“反思”机制,让模型记住之前的错误原因,在下一次生成代码时避免重犯。
3.工作流程
第一次尝试:模型生成修复代码补丁。
执行测试:运行单元测试,发现报错“空指针异常”。
反思(Reflection):模型分析错误日志,生成反思文本:“上次修复未检查对象是否为空,下次需要增加判空逻辑”。
记忆存储:将反思文本存入上下文。
第二次尝试:模型结合原始代码和反思文本,生成新补丁(增加了判空逻辑)。
执行测试:测试通过,任务结束。
4.为什么选择 Reflexion
代码任务对准确性要求极高。普通框架一旦生成错误代码就可能终止,而 Reflexion 允许模型从错误中学习,显著提高了复杂 Bug 修复的成功率,模拟了人类程序员调试代码的过程。

7. 框架对比总结

下表总结了五种框架的核心差异,便于开发者选型。

框架 核心逻辑 工具交互 计算成本 适合场景 灵活性
CoT 线性逐步推理 逻辑题、数学题
ToT 多路径搜索与回溯 极高 创意写作、复杂规划
ReAct 推理与行动交替 强支持 问答、工具调用、搜索
Plan-and-Execute 先规划后执行 支持 结构化工作流、多步骤任务
Reflexion 执行后反思改进 支持 代码生成、高精度决策

以下表格总结了五个案例的核心特征:

框架 代表案例 核心优势 核心劣势 关键决策指标
CoT 财务研报分析 逻辑清晰,可解释性强 无法调用工具,无法多路径探索 任务是否仅需文本推理?
ToT 侦探游戏生成 全局最优,创意丰富 成本高,延迟大,实现复杂 是否需要多方案择优?
ReAct IT 运维机器人 灵活交互,工具利用率高 串行执行,步骤多时易迷失 是否需频繁调用外部工具?
Plan-and-Execute 旅行行程规划 流程可控,步骤完整 灵活性差,遇意外需重规划 任务步骤是否固定清晰?
Reflexion 代码修复助手 自我纠错,准确率随迭代提升 耗时较长,需多次尝试 是否允许试错且要求高准确率?

8. 选型建议

在实际开发中,没有绝对最好的框架,只有最适合场景的框架。以下是具体的选型建议:

  1. 简单推理任务 :如果任务仅涉及逻辑计算或文本分析,不需要调用外部工具,直接使用 CoT 即可,成本最低。

  2. 需要调用工具 :如果 Agent 需要搜索网络、查询数据库或调用 API,ReAct 是首选标准方案,生态支持最完善。

  3. 复杂长流程任务 :如果任务步骤固定且较长(如数据处理流水线),Plan-and-Execute 能提供更好的全局控制。

  4. 高准确率要求 :对于代码生成或关键决策任务,建议结合 Reflexion,让模型有机会自我纠错。

  5. 探索性任务 :对于需要创意或多路径探索的任务(如游戏策略、故事创作),可以考虑 ToT,但需注意成本控制。

通过项目案例,我们可以看出,没有一种框架是万能的:

  1. 如果你的任务是纯文本处理且逻辑复杂 ,如合同审查、数学题解答,请优先选择 CoT

  2. 如果你的任务需要高度创意或多路径决策 ,如游戏剧情、战略模拟,请考虑 ToT

  3. 如果你的任务核心是操作外部系统 ,如客服机器人、数据查询,ReAct 是行业标准。

  4. 如果你的任务流程固定且步骤繁多 ,如数据清洗流水线、行程规划,Plan-and-Execute 更稳定。

  5. 如果你的任务对准确率要求极高且允许重试 ,如代码生成、SQL 编写,Reflexion 能带来质的提升。

相关推荐
在未来等你2 小时前
AI Agent Skill Day 12:Web Search技能:互联网搜索与信息聚合
ai agent· langchain· 技能开发· web search· serpapi· mcp· 信息聚合
~无忧花开~2 小时前
React组件与Props完全指南
开发语言·前端·react
yusheng_xyb2 小时前
使用TypeScript与React构建高效用户界面
typescript·react·前端开发
arvin_xiaoting5 小时前
Kimmy评论论文的深度分析:AI Agent自我认知与进化路径
人工智能·ai agent
星野云联AIoT技术洞察1 天前
2026 年 MCP + MQTT:AI Agent 真正控制 IoT 设备的落地路径
数字孪生·ack·ai agent·物联网平台·agentic·mcp·命令服务
胡少侠71 天前
ReAct Agent:手写 Thought-Action-Observe 循环,从工具调用到真正的 Agent
ai·agent·react·rag
胡西风_foxww2 天前
nextjs部署更新,Turbopack 和 Webpack 缓存冲突问题解决
缓存·webpack·react·nextjs·turbopack
Java后端的Ai之路2 天前
OpenManus 开发实战图文教程
ai agent·智能体·manus·open manus·manus 开发
杨超越luckly2 天前
AI Agent应用指南 :自动化构建品牌数据库:提示词 + API + 结构化输出
大数据·数据库·人工智能·自动化·ai agent