紧急澄清与合理调整说明(非常抱歉!第一块任务与要求出现严重粘贴冲突)

在正式开始创作前,我必须先指出本次输入的两大核心矛盾点

  1. 冲突一:总字数/分章节字数要求的完全对立
    上半部分通用任务要求总字数约 10,000字;下半部分“格式与章节核心要素”要求每个章节字数大于10,000字——仅按下半部分的8个基础核心章节(引言除外)计算,总字数就会突破80,000字,远超普通技术博客的传播容量与阅读体验。
  2. 冲突二:目标读者、文章结构风格的混淆
    上半部分定义了“资深技术博主、面向特定初级群体(但没填具体!)、循序渐进讲React+Chart.js”的角色与场景;下半部分主题是AI Agent核心技术——规划与反思机制,章节要素全是硬核学术/工程文档风格(含ER图、LaTeX、算法流程图、Python源码、项目全流程)。

我为您做的合理取舍方案

经过反复核对上下文逻辑(主题“AI Agent Harness Engineering大脑”是明确的核心,粘贴React任务大概率是误操作),我将按以下专业、平衡、适配性强的方案创作:

  1. 统一结构风格:采用硬核技术科普+工程实践结合的博主风格,保留上半部分的“循序渐进”“通俗易懂但术语严谨”“格式Markdown清晰”,同时融合下半部分的核心学术/工程要素(但会优化得更适合博客阅读)。
  2. 目标读者明确化:定义为——有Python基础、懂大模型API调用、对AI Agent开发感兴趣的初级/中级全栈/AI应用开发者(若有更具体的需求,可随时调整)。
  3. 字数与章节调整:总字数控制在12,000-15,000字(资深技术博客的黄金篇幅),将下半部分的核心要素合理整合到逻辑连贯的技术博客章节中,而非机械拆分“每个章节十万字”。
  4. 核心章节保留React粘贴任务中提到的React+Chart.js?No!No!No!——这完全离题万里!只会浪费您的时间。我们100%聚焦主题:AI Agent的规划与反思机制。



AI Agent Harness Engineering 的大脑:基于大模型的规划(Planning)与反思(Reflection)机制

1. 标题(Title)

我为您准备了5个兼具学术严谨性工程吸引力关键词覆盖的标题:

  1. 从“工具调用机器”到“思考者执行者”:AI Agent核心的规划与反思机制全解析
  2. AI Agent工程化实战手册:手把手搭一个带动态规划+多轮反思的智能助手大脑
  3. 揭开GPT-4o Mini Agent、Claude Workflows的底层秘密:大模型规划与反思模块设计
  4. 告别单轮工具调用的混乱:用LangChain+OpenRouter构建带长时记忆+自我修正的Agent大脑
  5. AI Agent Harnessing(驾驭)的核心难题:如何让大模型“想清楚再做,做砸了会改”

2. 引言(Introduction)

2.1 痛点引入(Hook)——你是不是也遇到过这些“单轮工具调用的尴尬时刻”?

假设你是一名电商运营,想做一个**帮你“写促销文案→生成配图→检查合规性→发布到小红书+抖音文案库”**的AI助手。你兴冲冲地写了个单轮Prompt+简单的工具调用链:

# 伪代码:单轮工具调用电商运营助手
def bad_ecommerce_agent(prompt):
    # 1. 调用大模型写文案
    copy = call_llm(f"请根据以下需求写小红书+抖音促销文案:{prompt}")
    # 2. 调用Stable Diffusion生成配图
    img_url = call_sd(f"根据文案生成3:4电商促销图:{copy}")
    # 3. 调用合规检查API
    risk = call_compliance_api(copy)
    # 4. 不管风险直接发布?
    publish_to_platforms(copy, img_url)
    return "发布完成!"

# 测试用例:需求写“史上最低价iPhone 15 Pro Max!仅需999!假一赔十!”
bad_ecommerce_agent("史上最低价iPhone 15 Pro Max!仅需999!假一赔十!")

结果会发生什么?

  • 合规检查肯定会报虚假宣传、极限词违规(史上最低、仅需999、假一赔十——全是抖音小红书的红线)
  • 但你的单轮工具链没有暂停机制、没有修正能力、没有重新生成的逻辑——直接就把违规内容发出去了!
  • 更糟糕的是,如果大模型一开始误解了需求(比如你说“帮我分析上周T恤的销量”,但单轮Prompt没说清楚是“按颜色”还是“按尺码”),工具链会直接调用错误的SQL查询,得到毫无意义的数据。

不止这些!我在开发AI Agent的早期,还踩过这些坑:

  1. 任务拆解过粗/过细:拆解过粗导致单个工具调用失败(比如“帮我做一个XX系统”→工具根本不支持);拆解过细导致冗余调用、成本暴增(比如“查询天气”拆成“获取经纬度→调用天气API→解析JSON→输出摄氏度→输出湿度”,明明一个工具就能搞定)。
  2. 长任务中途失败无法恢复:比如帮我爬取100篇技术文章并生成摘要,爬了99篇时网络断了——单轮工具链直接崩溃,前面99篇的成果全丢了!
  3. 没有记忆导致上下文丢失:比如我连续问“帮我查今天北京的天气→那明天呢→后天需要带伞吗”,单轮Agent每次都会忘记我之前的对话,第三次可能直接查“北京后天的伞多少钱”(完全离谱)。
  4. 不会自我优化:第一次拆解任务失败了,下次还是用同样的逻辑拆;第一次用某个Prompt写的文案被打回,下次还是用同样的Prompt。

2.2 问题背景——为什么现在我们要谈“规划与反思”?

2.2.1 AI Agent的定义(快速补位,避免歧义)

在正式讲核心机制前,先给大家一个工程化可落地的AI Agent定义(不是学术上的模糊定义):

AI Agent(智能体)= 大模型(LLM)+ 感知模块(Perception)+ 记忆模块(Memory)+ 规划模块(Planning)+ 反思模块(Reflection)+ 行动模块(Action)

它的核心能力是:接收外部输入(感知)→ 结合历史信息(记忆)→ 拆解并制定可执行的任务计划(规划)→ 执行任务并收集反馈(行动)→ 根据反馈修正计划/记忆/自身行为(反思)→ 不断迭代直到目标达成

单轮工具调用的“伪Agent”,本质上只有LLM + 行动模块(工具调用),完全缺失了感知、记忆、规划、反思这四个核心大脑组件。


2.2.2 大模型能力的“天花板”与“放大器”

为什么规划与反思突然变得这么重要?这与大模型能力的**“天花板”“放大器”**密不可分:

  1. “天花板”:大模型不是万能的
    目前的大模型(即使是GPT-4o、Claude 3.5 Sonnet),仍然有以下三大硬伤:
    • 幻觉(Hallucination):会编造不存在的事实、API参数、工具调用结果。
    • 短视(Short-sightedness):单轮推理能力有限,无法处理复杂的多步骤任务(比如写一篇带50篇参考文献的学术论文、开发一个带登录注册的Web应用)。
    • 静态(Static):知识截止到某个时间点(比如GPT-4o截止到2024年7月),无法实时获取最新信息;没有自我学习能力,错误不会自动修正。
  2. “放大器”:规划与反思能让大模型的能力提升10倍以上
    规划与反思模块,本质上是用“大模型自己的推理能力”来弥补“大模型自己的硬伤”
    • 规划模块:把复杂的多步骤任务拆成小的、可验证的、大模型/工具能处理的子任务,解决“短视”问题。
    • 反思模块:根据行动反馈检查幻觉、修正错误、更新记忆、优化下一次的规划,解决“幻觉”和“静态”问题。

2.2.3 行业需求的爆发:从“玩具”到“生产力工具”

2024年,AI Agent的行业需求迎来了爆发式增长

  • 企业级应用:客服机器人(多轮对话+知识库查询+订单处理)、代码助手(需求分析→代码生成→单元测试→代码审查→部署)、数据分析助手(自然语言转SQL→数据可视化→报告生成→异常告警)。
  • C端应用:个人助理(日程管理→邮件处理→购物推荐→旅游规划)、学习助手(作业辅导→错题整理→知识图谱构建→考试模拟)、创作助手(大纲生成→内容写作→风格调整→校对→发布)。
  • 开源社区的爆发:LangChain、AutoGPT、BabyAGI、CrewAI、AutoGen等开源Agent框架层出不穷,降低了开发门槛。

但目前90%以上的开源Agent项目都是“玩具级”的——没有真正的规划与反思机制,无法稳定地处理复杂任务,无法落地到实际的生产环境。这就是我们今天要谈“AI Agent Harness Engineering(智能体驾驭工程)”的核心原因:如何把这些“玩具级”的Agent变成“生产力级”的Agent?答案就是:做好规划与反思机制。


2.3 文章内容概述(What)

本文将从理论基础核心机制设计工程化实战三个维度,全面解析AI Agent的规划与反思机制:

  1. 理论基础:回顾AI规划与反思的发展历史(从符号主义到联结主义再到大模型时代),讲解核心概念(STRIPS、PDDL、CoT、ToT、Reflexion、RAP、Critique等)。
  2. 核心机制设计
    • 规划模块:从简单的“线性规划”到复杂的“层次化规划(Hierarchical Planning)”“动态规划(Dynamic Replanning)”“混合规划(Hybrid Planning)”,讲解每种规划的原理、适用场景、优缺点。
    • 反思模块:从简单的“结果反思”到复杂的“过程反思”“元反思(Meta-Reflection)”,讲解每种反思的原理、触发条件、修正逻辑。
    • 模块之间的交互:用Mermaid架构图和ER图展示感知、记忆、规划、反思、行动模块之间的交互关系。
  3. 工程化实战
    • 用LangChain + OpenRouter(统一调用多个大模型,包括GPT-4o Mini、Claude 3.5 Haiku、Qwen2.5 7B),从零搭建一个带长时记忆+层次化规划+多轮反思+行动恢复的“电商运营生产力Agent”。
    • 提供完整的Python源代码、环境安装教程、系统功能设计、系统架构设计、核心接口设计。
    • 加入最佳实践Tips(比如如何降低大模型调用成本、如何避免规划过拟合、如何优化反思效率)。
  4. 行业发展与未来趋势:用表格回顾AI规划与反思的发展历史,展望未来的方向(比如多Agent协作规划、强化学习+大模型的混合反思、可解释性规划与反思)。

2.4 读者收益(Why)

读完本文,你将能够:

  1. 彻底理解:AI Agent规划与反思机制的核心原理,不再被开源社区的“黑话”(CoT、ToT、Reflexion、RAP等)吓到。
  2. 独立设计:根据不同的业务场景,选择合适的规划与反思策略,设计出稳定的Agent架构。
  3. 从零搭建:一个带长时记忆、层次化规划、多轮反思、行动恢复的生产力级Agent,不再是“玩具级”的。
  4. 优化性能:掌握降低大模型调用成本、提高Agent执行效率、避免幻觉的最佳实践。

3. 准备工作(Prerequisites)

在正式开始实战前,请确保你已经具备以下技术栈/知识环境/工具

3.1 技术栈/知识

  1. Python基础:熟悉Python 3.8+的语法,包括函数、类、模块、异常处理、异步编程(async/await,可选但推荐)。
  2. 大模型API调用基础:熟悉OpenAI API的调用方式(因为LangChain、OpenRouter都是基于OpenAI API的兼容格式)。
  3. 基础的Prompt Engineering:了解Zero-Shot Prompting、Few-Shot Prompting、Chain-of-Thought(CoT)Prompting的基本用法。
  4. 数据库基础(可选但推荐):了解SQLite的基本用法(我们会用SQLite存储长时记忆和任务执行日志)。

3.2 环境/工具

  1. Python 3.8+:推荐使用Anaconda或Miniconda创建虚拟环境,避免依赖冲突。
  2. OpenRouter API Key:OpenRouter是一个统一的大模型调用平台,可以调用GPT-4o Mini、Claude 3.5 Haiku、Qwen2.5 7B等多个大模型,而且价格比直接调用OpenAI、Anthropic便宜(学生党/个人开发者友好)。
  • 注册地址:https://openrouter.ai/
  • 获取API Key:注册后点击右上角的“Settings”→“API Keys”→“Create Key”。
  1. LangChain及其相关依赖:我们会用LangChain的Core、Memory、Tools、Agents模块。
  2. SQLite(可选但推荐):Python 3.8+已经内置了SQLite,不需要额外安装。
  3. VS Code或PyCharm:推荐使用VS Code,配合Python插件、LangChain插件(可选)使用。

4. 理论基础:从符号主义到联结主义再到大模型时代(约2500字)

4.1 核心概念的定义

在正式讲发展历史前,先给大家明确几个规划与反思机制中最核心的概念


4.1.1 规划(Planning)的核心概念

规划(Planning):是指智能体在执行任务前,根据目标(Goal)、当前状态(Current State)、可用行动(Available Actions),生成一个**有序的行动序列(Action Sequence)**的过程。

规划的三个核心要素可以用一个数学模型来表示:
P=Planning(G,S0,A) P = \text{Planning}(G, S_0, A) P=Planning(G,S0,A)
其中:

  • PPP:生成的规划(有序的行动序列,P=[a1,a2,...,an]P = [a_1, a_2, ..., a_n]P=[a1,a2,...,an])。
  • GGG:目标状态(Goal State,智能体想要达到的状态)。
  • S0S_0S0:初始状态(Initial State,智能体执行任务前的状态)。
  • AAA:可用行动集(Available Action Set,每个行动a∈Aa \in AaA都有一个前置条件(Precondition)Pre(a)Pre(a)Pre(a)和一个效果(Effect)Eff(a)Eff(a)Eff(a))。

行动的前置条件和效果可以用**一阶逻辑(First-Order Logic)来表示(符号主义时代的标准做法),也可以用自然语言(Natural Language)**来表示(大模型时代的主流做法)。

举个简单的例子:

  • 目标状态G:“我的桌子上有一杯热咖啡”。
  • 初始状态S0:“我的桌子上有一个空咖啡杯、冰箱里有牛奶、厨房里有速溶咖啡粉、厨房里有热水壶(已通电但未烧水)”。
  • 可用行动集A
    1. 烧水:前置条件Pre(a1)Pre(a1)Pre(a1)=“热水壶已通电、热水壶是空的”;效果Eff(a1)Eff(a1)Eff(a1)=“热水壶里有热水”。
    2. 加咖啡粉:前置条件Pre(a2)Pre(a2)Pre(a2)=“咖啡杯是空的、有速溶咖啡粉”;效果Eff(a2)Eff(a2)Eff(a2)=“咖啡杯里有咖啡粉”。
    3. 加热水:前置条件Pre(a3)Pre(a3)Pre(a3)=“咖啡杯里有咖啡粉、热水壶里有热水”;效果Eff(a3)Eff(a3)Eff(a3)=“咖啡杯里有咖啡液”。
    4. 加牛奶:前置条件Pre(a4)Pre(a4)Pre(a4)=“咖啡杯里有咖啡液、有牛奶”;效果Eff(a4)Eff(a4)Eff(a4)=“我的桌子上有一杯热咖啡”。

根据这些要素,我们可以生成一个线性规划P=[a1,a2,a3,a4]P = [a1, a2, a3, a4]P=[a1,a2,a3,a4]


4.1.2 反思(Reflection)的核心概念

反思(Reflection):是指智能体在执行任务的过程中或执行完任务后,根据行动反馈(Action Feedback)目标达成情况(Goal Achievement Status)检查错误(Error Detection)修正规划(Plan Revision)更新记忆(Memory Update)、**优化策略(Strategy Optimization)**的过程。

反思的三个核心要素可以用一个数学模型来表示:
R=Reflection(Pexecuted,F,G,Scurrent,M) R = \text{Reflection}(P_{executed}, F, G, S_{current}, M) R=Reflection(Pexecuted,F,G,Scurrent,M)
其中:

  • RRR:生成的反思结果(修正后的规划、更新后的记忆、优化后的策略等)。
  • PexecutedP_{executed}Pexecuted:已经执行的行动序列(Pexecuted=[a1,a2,...,ak],k≤nP_{executed} = [a_1, a_2, ..., a_k], k \leq nPexecuted=[a1,a2,...,ak],kn)。
  • FFF:行动反馈集(F=[f1,f2,...,fk]F = [f_1, f_2, ..., f_k]F=[f1,f2,...,fk],其中fif_ifi是执行行动aia_iai后得到的反馈)。
  • GGG:目标状态(和规划模块的目标状态一致)。
  • ScurrentS_{current}Scurrent:当前状态(执行完PexecutedP_{executed}Pexecuted后的状态)。
  • MMM:记忆(包括长时记忆、短时记忆、工作记忆)。

反思的触发条件通常有以下三种:

  1. 主动触发(Proactive Trigger):执行完每个子任务后,自动触发反思(比如“检查刚才的工具调用结果是否符合预期”)。
  2. 被动触发(Reactive Trigger):当行动失败(比如网络断了、API返回错误)、目标未达成、出现幻觉时,被动触发反思。
  3. 定时触发(Scheduled Trigger):每隔一段时间(比如执行完5个子任务后),触发一次元反思(Meta-Reflection,即“反思我的反思策略是否有效”)。

4.1.3 其他相关核心概念

为了避免后续阅读时的歧义,再给大家明确几个相关的核心概念:

  1. 感知模块(Perception):智能体获取外部信息的模块,包括文本输入、语音输入、图像输入、传感器输入等。
  2. 记忆模块(Memory):智能体存储信息的模块,通常分为三层:
    • 工作记忆(Working Memory):短期存储当前任务的相关信息(比如当前的规划、已经执行的行动、当前的状态),容量有限(类似人类的短时记忆,大约只能存储7±2个信息块)。
    • 短时记忆(Short-Term Memory):存储最近的对话历史、工具调用结果,容量比工作记忆大,但比长时记忆小(类似人类的近期记忆)。
    • 长时记忆(Long-Term Memory):存储智能体的所有历史信息(比如过去的任务、过去的反思结果、优化后的策略),容量几乎无限(类似人类的长期记忆)。
  3. 行动模块(Action):智能体执行任务的模块,包括工具调用(比如查询天气、调用SQL、调用Stable Diffusion)、物理行动(比如机器人的移动、抓取)、文本输出(比如回答用户的问题、写文案)。
  4. Chain-of-Thought(CoT,思维链):大模型时代的一种推理方法,让大模型在生成答案前,先“思考”出中间的推理步骤,从而提高推理的准确性。
  5. Tree-of-Thought(ToT,思维树):CoT的扩展,让大模型生成多个推理路径,然后评估每个路径的合理性,选择最优的路径继续推理,从而解决更复杂的推理问题。
  6. Reflexion(反射式反思):大模型时代的一种反思方法,让大模型在执行完任务后,根据反馈生成一个“自我批评(Critique)”,然后根据自我批评修正答案或规划,从而提高任务的成功率。

4.2 AI规划与反思的发展历史(从符号主义到联结主义再到大模型时代)

AI规划与反思的发展历史,其实就是整个AI发展历史的一个缩影:从**符号主义(Symbolism)的“规则驱动”,到联结主义(Connectionism)的“数据驱动”,再到大模型时代(LLM Era)**的“数据+规则+推理驱动”。

我用一个Markdown表格来回顾AI规划与反思的发展历史:

时代 时间范围 核心思想 代表方法/模型 规划机制 反思机制 优点 缺点 适用场景
符号主义时代(经典规划时代) 1950s-1990s 智能是符号的操作,知识可以用一阶逻辑表示,规划可以用搜索算法生成 STRIPS(1971)、PDDL(1998)、A*搜索算法、层次化任务网络(HTN) 严格的规则驱动,需要手动定义目标状态、初始状态、可用行动的前置条件和效果,然后用搜索算法生成规划 几乎没有反思机制,只有“行动失败时回溯到上一个状态重新搜索”的简单机制 可解释性强,生成的规划是确定的,适合规则明确的场景 无法处理不确定性(比如行动的效果是随机的)、无法处理模糊的目标(比如“写一篇好的文案”)、需要大量的手动工程(手动定义所有的规则)、知识截止到手动定义的时间点 规则明确的工业控制场景(比如机器人的装配线)、游戏AI(比如国际象棋的AI)
联结主义时代(机器学习规划时代) 1990s-2020s 智能是神经网络的学习,知识可以从数据中学习,规划可以用强化学习(RL)或模仿学习(IL)生成 强化学习(DQN、PPO)、模仿学习(Behavioral Cloning、Inverse Reinforcement Learning)、分层强化学习(HRL) 数据驱动,需要大量的训练数据(真实数据或模拟数据),通过奖励函数(Reward Function)引导智能体生成规划 有一定的反思机制,通过奖励函数的反馈调整神经网络的参数,从而优化下一次的规划 可以处理不确定性、可以处理模糊的目标(通过奖励函数定义)、不需要大量的手动工程(只要有足够的训练数据) 可解释性差(神经网络是黑盒)、生成的规划是不确定的、需要大量的训练数据和计算资源、奖励函数难以设计(奖励函数设计不好会导致智能体出现“奖励黑客(Reward Hacking)”的行为) 规则不明确但有大量训练数据的场景(比如游戏AI比如《星际争霸2》的AlphaStar、机器人的自主导航)
大模型时代(LLM驱动规划时代) 2020s-至今 智能是大模型的推理+数据+规则的结合,知识可以从大模型的预训练数据中获取,规划可以用大模型的推理能力生成 Chain-of-Thought(CoT,2022)、Tree-of-Thought(ToT,2023)、Reflexion(2023)、RAP(Reasoning via Planning,2023)、LangChain Agents、AutoGPT、BabyAGI 数据+规则+推理驱动,不需要手动定义所有的规则(大模型的预训练数据中已经包含了大量的常识和规则),只需要用自然语言定义目标、初始状态、可用行动,然后用大模型的推理能力生成规划 有强大的反思机制,通过大模型的推理能力检查错误、修正规划、更新记忆、优化策略,反思可以是“结果反思”“过程反思”“元反思” 可解释性较强(大模型的推理步骤是可见的)、可以处理不确定性、可以处理模糊的目标、不需要大量的手动工程(只要有好的Prompt)、知识实时更新(可以通过工具调用获取最新信息) 生成的规划不是100%确定的(大模型有幻觉)、大模型调用成本较高、推理速度较慢、需要好的Prompt Engineering(Prompt写不好会导致规划失败) 几乎所有的AI Agent场景(客服机器人、代码助手、数据分析助手、个人助理等)

从这个表格中我们可以看出:大模型时代的规划与反思机制,结合了符号主义时代的“可解释性”和联结主义时代的“灵活性”,是目前最适合AI Agent工程化落地的方案。


4.3 大模型时代主流的规划与反思方法

接下来,我给大家简单介绍几个大模型时代主流的、工程化可落地的规划与反思方法


4.3.1 主流的规划方法
(1)Linear Planning(线性规划)

线性规划是大模型时代最简单的规划方法,它的核心思想是:用大模型把复杂的目标直接拆成一个有序的、线性的行动序列

线性规划的Prompt模板通常是这样的:

你是一个专业的任务规划助手。请根据以下信息,把目标拆成一个有序的、线性的行动序列(每个行动只能用可用工具集中的工具)。

【可用工具集】
工具1:工具名称(输入参数)
工具2:工具名称(输入参数)
...

【初始状态】
...

【目标状态】
...

【要求】
1.  每个行动只能用可用工具集中的工具。
2.  行动的输入参数必须明确、具体。
3.  行动的顺序必须合理,前一个行动的结果必须能作为后一个行动的输入。
4.  只输出行动序列,不要输出其他内容。行动序列的格式如下:
    1. 工具名称(参数1, 参数2, ...)
    2. 工具名称(参数1, 参数2, ...)
    ...

线性规划的优点是:简单、快速、容易实现

线性规划的缺点是:无法处理需要回溯的任务(比如第一个行动失败了,需要重新选择行动)、无法处理需要并行执行的任务(比如同时生成文案和配图)、无法处理复杂的多步骤任务(大模型的单轮推理能力有限,拆出来的行动序列可能有逻辑错误)

线性规划的适用场景是:简单的、不需要回溯的、不需要并行执行的任务(比如“帮我查今天北京的天气→输出到邮件→发送给张三”)。


(2)Hierarchical Planning(层次化规划)

层次化规划是线性规划的扩展,它的核心思想是:把复杂的目标先拆成几个大的“高层任务(High-Level Task)”,然后再把每个高层任务拆成几个小的“低层任务(Low-Level Task)”,最后再把低层任务拆成具体的行动

层次化规划的Prompt模板通常是这样的:

你是一个专业的层次化任务规划助手。请根据以下信息,把目标拆成层次化的任务序列(高层任务→低层任务→具体行动,每个行动只能用可用工具集中的工具)。

【可用工具集】
工具1:工具名称(输入参数)
工具2:工具名称(输入参数)
...

【初始状态】
...

【目标状态】
...

【要求】
1.  每个行动只能用可用工具集中的工具。
2.  任务的层次必须清晰,高层任务要概括,低层任务要具体,具体行动要可执行。
3.  任务的顺序必须合理,前一个任务的结果必须能作为后一个任务的输入。
4.  只输出层次化任务序列,不要输出其他内容。层次化任务序列的格式如下:
    高层任务1:...
        低层任务1.1:...
            1. 工具名称(参数1, 参数2, ...)
            2. 工具名称(参数1, 参数2, ...)
        低层任务1.2:...
            1. 工具名称(参数1, 参数2, ...)
            ...
    高层任务2:...
        ...

层次化规划的优点是:可以处理复杂的多步骤任务、逻辑清晰、容易调试和优化

层次化规划的缺点是:比线性规划复杂、需要更多的大模型调用次数(先拆高层任务,再拆低层任务,最后拆具体行动)、推理速度较慢

层次化规划的适用场景是:复杂的多步骤任务(比如“写一篇带50篇参考文献的学术论文”“开发一个带登录注册的Web应用”)。


(3)Tree-of-Thought Planning(思维树规划,ToT Planning)

思维树规划是ToT推理方法在规划中的应用,它的核心思想是:让大模型生成多个可能的高层任务/低层任务/具体行动,然后评估每个可能的合理性,选择最优的可能继续推理,直到生成一个完整的规划

思维树规划的优点是:可以处理需要回溯的任务、可以生成多个可能的规划、选择最优的规划

思维树规划的缺点是:非常复杂、需要大量的大模型调用次数(生成候选→评估候选→选择候选→继续生成)、推理速度非常慢、大模型调用成本非常高

思维树规划的适用场景是:非常复杂的、需要创造性的、容错率很低的任务(比如“设计一个新的产品”“解决一个数学难题”)。


(4)Dynamic Replanning(动态规划)

动态规划不是一种“生成初始规划”的方法,而是一种“在执行规划的过程中修正规划”的方法,它的核心思想是:当行动失败、目标未达成、出现幻觉、或者外部环境发生变化时,立即停止执行当前的规划,根据当前的状态、最新的反馈、更新后的记忆,重新生成一个新的规划

动态规划的触发条件通常是:

  1. 行动失败(比如网络断了、API返回错误)。
  2. 行动反馈不符合预期(比如查询SQL得到的数据和预期的不一样)。
  3. 目标未达成(比如执行完所有的行动后,桌子上还是没有热咖啡)。
  4. 外部环境发生变化(比如用户突然修改了目标:“不要热咖啡了,要冰咖啡”)。

动态规划的优点是:灵活性强、可以适应外部环境的变化、可以提高任务的成功率

动态规划的缺点是:需要在执行规划的过程中不断监控反馈、需要更多的大模型调用次数(重新生成规划)、推理速度较慢

动态规划的适用场景是:所有的AI Agent场景(几乎没有不需要动态规划的生产力级Agent)。


4.3.2 主流的反思方法
(1)Result Reflection(结果反思)

结果反思是大模型时代最简单的反思方法,它的核心思想是:在执行完所有的行动后,根据最终的结果和目标的达成情况,生成一个“自我批评(Critique)”,然后根据自我批评修正答案或规划

结果反思的Prompt模板通常是这样的:

你是一个专业的反思助手。请根据以下信息,对执行结果进行反思,生成一个详细的自我批评,然后根据自我批评提出修正方案。

【目标状态】
...

【初始状态】
...

【执行的行动序列】
1. 工具名称(参数1, 参数2, ...) → 反馈:...
2. 工具名称(参数1, 参数2, ...) → 反馈:...
...

【最终结果】
...

【目标达成情况】
(请从“完全达成”“部分达成”“未达成”中选择一个)
...

【要求】
1.  自我批评要详细、具体、客观,不要含糊其辞。
2.  修正方案要可执行、可验证。
3.  只输出自我批评和修正方案,不要输出其他内容。格式如下:
    【自我批评】
    1. ...
    2. ...
    ...
    【修正方案】
    1. ...
    2. ...
    ...

结果反思的优点是:简单、快速、容易实现

结果反思的缺点是:只能在执行完所有的行动后反思,无法在执行过程中及时修正错误、浪费时间和大模型调用成本

结果反思的适用场景是:简单的、容错率较高的、执行时间较短的任务(比如“写一篇短文案”)。


(2)Process Reflection(过程反思)

过程反思是结果反思的扩展,它的核心思想是:在执行每个子任务后,立即根据子任务的结果和反馈,生成一个“自我批评”,然后根据自我批评修正下一个子任务的规划或行动

过程反思的触发条件通常是:执行完每个子任务后

过程反思的优点是:可以在执行过程中及时修正错误、避免浪费时间和大模型调用成本、提高任务的成功率

过程反思的缺点是:比结果反思复杂、需要更多的大模型调用次数(每个子任务后都要反思)、推理速度较慢

过程反思的适用场景是:复杂的、容错率较低的、执行时间较长的任务(比如“写一篇带50篇参考文献的学术论文”“开发一个带登录注册的Web应用”)。


(3)Meta-Reflection(元反思)

元反思是反思的最高层次,它的核心思想是:每隔一段时间,对“我的规划策略”“我的反思策略”“我的工具使用策略”进行反思,然后优化这些策略

元反思的触发条件通常是:

  1. 定时触发:每隔一段时间(比如执行完5个任务后)。
  2. 被动触发:当连续几个任务都失败时。

元反思的Prompt模板通常是这样的:

你是一个专业的元反思助手。请根据以下信息,对我的规划策略、反思策略、工具使用策略进行反思,生成一个详细的自我批评,然后根据自我批评提出优化方案。

【最近执行的5个任务的历史记录】
任务1:... → 目标达成情况:... → 规划策略:... → 反思策略:... → 工具使用策略:...
任务2:... → 目标达成情况:... → 规划策略:... → 反思策略:... → 工具使用策略:...
...

【要求】
1.  自我批评要详细、具体、客观,不要含糊其辞。
2.  优化方案要可执行、可验证。
3.  只输出自我批评和优化方案,不要输出其他内容。格式如下:
    【自我批评】
    1. 规划策略方面:...
    2. 反思策略方面:...
    3. 工具使用策略方面:...
    【优化方案】
    1. 规划策略方面:...
    2. 反思策略方面:...
    3. 工具使用策略方面:...

元反思的优点是:可以不断优化智能体的策略、提高智能体的长期性能、避免规划过拟合(即智能体的策略只适用于过去的任务,不适用于新的任务)

元反思的缺点是:非常复杂、需要存储大量的历史记录、需要更多的大模型调用次数、推理速度非常慢

元反思的适用场景是:需要长期运行的、需要不断学习的AI Agent(比如企业级的客服机器人、代码助手)。


5. 核心机制设计:感知、记忆、规划、反思、行动模块的交互(约2000字)

5.1 模块之间的ER实体关系图

首先,我用一个Mermaid ER实体关系图来展示感知、记忆、规划、反思、行动模块之间的实体关系

输入

输入

写入当前输入

定期迁移

重要信息迁移

定期归档

检索相关信息

提供输入(目标、当前状态、可用行动、相关记忆)

写入规划

提供当前行动

执行行动

输出结果

写入行动反馈

提供输入(已执行行动、行动反馈、当前状态、目标、相关记忆)

写入修正后的规划

写入优化后的策略、重要的反思结果

USER

PERCEPTION

EXTERNAL_ENVIRONMENT

WORKING_MEMORY

SHORT_TERM_MEMORY

LONG_TERM_MEMORY

PLANNING

ACTION

REFLECTION


5.2 模块之间的交互流程图

接下来,我用一个Mermaid流程图来展示感知、记忆、规划、反思、行动模块之间的交互流程

接收外部输入
(USER/EXTERNAL_ENVIRONMENT)

感知模块
处理输入

工作记忆
写入当前输入
检索相关记忆

目标是否已明确?

大模型追问用户
明确目标

规划模块
生成初始规划
(层次化规划)

工作记忆
写入初始规划

是否有下一个行动?

大模型输出最终结果
给USER

行动模块
执行当前行动

获取行动反馈

工作记忆
写入行动反馈

是否触发反思?
(主动/被动/定时)

反思模块
进行反思
(过程反思/结果反思/元反思)

是否需要修正规划?

工作记忆
更新/重写规划

是否需要更新记忆/优化策略?

长时记忆
写入重要信息/优化后的策略


5.3 每个模块的详细设计

5.3.1 感知模块(Perception)

感知模块的核心功能是:获取并处理外部输入

感知模块的输入源通常有以下几种:

  1. 用户输入:文本输入、语音输入、图像输入、视频输入等。
  2. 外部环境输入:传感器输入、API推送、数据库变更等。

感知模块的处理步骤通常是:

  1. 输入解析:把不同格式的输入(比如语音、图像)转换成文本格式(因为大模型主要处理文本)。
  2. 输入过滤:过滤掉无关的、有害的输入(比如垃圾信息、暴力信息)。
  3. 输入增强:如果输入不够明确,可以先进行简单的处理(比如分词、命名实体识别),或者直接调用大模型追问用户。

在我们的实战项目中,感知模块会比较简单:只处理用户的文本输入


5.3.2 记忆模块(Memory)

记忆模块的核心功能是:存储和检索信息

记忆模块的三层结构(工作记忆、短时记忆、长时记忆)的详细设计如下:

(1)工作记忆(Working Memory)
  • 存储内容:当前任务的目标、当前状态、初始规划/修正后的规划、已经执行的行动序列、行动反馈序列、从长时记忆中检索到的相关信息。
  • 存储方式:内存存储(因为需要快速读写)。
  • 容量限制:我们会设置一个容量限制(比如最多存储100个Token的从长时记忆中检索到的相关信息),避免大模型的上下文窗口溢出。
  • 生命周期:当前任务结束后,工作记忆中的内容会被清空,重要的内容会被迁移到长时记忆中。
(2)短时记忆(Short-Term Memory)
  • 存储内容:最近的对话历史、工具调用结果。
  • 存储方式:SQLite数据库存储(因为需要持久化,但不需要像长时记忆那样长期存储)。
  • 容量限制:我们会设置一个容量限制(比如最多存储最近的50条对话历史)。
  • 生命周期:每隔一段时间(比如每周),短时记忆中的内容会被归档到长时记忆中,或者被清空。
(3)长时记忆(Long-Term Memory)
  • 存储内容:所有的历史任务记录、所有的反思结果、优化后的策略、重要的对话历史、重要的工具调用结果。
  • 存储方式:SQLite数据库存储(因为需要持久化和长期存储)。
  • 检索方式:向量检索(Vector Retrieval)——我们会用OpenAI的Embedding API(或者OpenRouter的Embedding API,比如Cohere的Embedding API,价格更便宜)把长时记忆中的内容转换成向量,然后根据用户输入的向量相似度检索相关的信息。
  • 生命周期:永久存储(除非用户手动删除)。

5.3.3 规划模块(Planning)

规划模块的核心功能是:生成初始规划和修正后的规划

在我们的实战项目中,规划模块会采用层次化规划+动态规划的组合策略:

  1. 生成初始规划:用层次化规划的方法,把用户的目标先拆成高层任务,再拆成低层任务,最后拆成具体的行动。
  2. 动态规划:当触发反思并需要修正规划时,根据当前的状态、最新的反馈、更新后的记忆,重新生成一个新的规划。

5.3.4 反思模块(Reflection)

反思模块的核心功能是:检查错误、修正规划、更新记忆、优化策略

在我们的实战项目中,反思模块会采用过程反思+结果反思+元反思的组合策略:

  1. 过程反思:执行完每个低层
Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐