\documentclass[a4paper]{article}

% Basic packages
\usepackage[fontset=fandol]{ctex}
\usepackage{amsmath, amssymb}
\usepackage{graphicx}
\usepackage[margin=2.5cm]{geometry}
\usepackage[most]{tcolorbox}
\usepackage{etoolbox}
\usepackage{listings}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{subcaption}
\usepackage{float}

% Highlight boxes
\newtcolorbox{knowledgebox}[1]{
    enhanced, colback=blue!5!white, colframe=blue!75!black, colbacktitle=blue!75!black,
    coltitle=white, fonttitle=\bfseries, title=#1, attach boxed title to top left={yshift=-2mm, xshift=2mm},
    boxrule=1pt, sharp corners
}

\newtcolorbox{importantbox}[1]{
    enhanced, colback=yellow!10!white, colframe=yellow!80!black, colbacktitle=yellow!80!black,
    coltitle=black, fonttitle=\bfseries, title=#1, sharp corners
}

\newtcolorbox{warningbox}[1]{
    enhanced, colback=red!5!white, colframe=red!75!black, colbacktitle=red!75!black,
    coltitle=white, fonttitle=\bfseries, title=#1, sharp corners
}

% Listings
\lstset{
    language=Python,
    basicstyle=\ttfamily\small,
    keywordstyle=\color{blue},
    stringstyle=\color{red!60!black},
    commentstyle=\color{green!60!black},
    breaklines=true,
    frame=single,
    numbers=left,
    numberstyle=\tiny\color{gray},
    captionpos=b,
    extendedchars=false
}

% Front-page metadata
\newcommand{\notetitle}{Survey of LLM Agent Reasoning \& Planning, PDDL}
\newcommand{\noteauthors}{基于公开课程资料整理}
\newcommand{\notedate}{2025}
\newcommand{\videochannel}{五道口纳什}
\newcommand{\videopublishdate}{2025}
\newcommand{\videoduration}{约 32 分钟}
\newcommand{\videourl}{https://www.bilibili.com/video/BV1wjY5zyEki}
\newcommand{\videocoverpath}{cover.jpg}
\newcommand{\repourl}{https://github.com/hqhq1025/ai-course-notes}


% Footer with repo info
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[C]{\thepage}
\fancyfoot[R]{\footnotesize\color{gray}\href{\repourl}{AI Course Notes}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}

\begin{document}

\begin{titlepage}
\centering
{\Large 课程笔记\par}
\vspace{1.2cm}
{\huge\bfseries \notetitle\par}
\vspace{0.8cm}
{\large \noteauthors\par}
\vspace{0.3cm}
{\large \notedate\par}
\vspace{1.2cm}

\ifdefempty{\videocoverpath}{
{\small 请在生成笔记时填入视频封面图的本地路径。\par}
}{
\includegraphics[width=0.82\textwidth,height=0.45\textheight,keepaspectratio]{\videocoverpath}\par
}

\vfill
\begin{tcolorbox}[width=0.9\textwidth, colback=black!2!white, colframe=black!60, sharp corners]
\textbf{视频作者/频道}：\videochannel\par
\textbf{发布日期}：\videopublishdate\par
\textbf{视频时长}：\videoduration\par
\ifdefempty{\videourl}{}{
\textbf{视频链接}：\href{\videourl}{\nolinkurl{\videourl}}\par
}
\par
\textbf{项目主页}：\href{\repourl}{\nolinkurl{\repourl}}\par
\end{tcolorbox}
\end{titlepage}

\tableofcontents
\newpage

%% --- 正文内容开始 --- %%

\section{系列概述与课程导引}

本期是 Modern Agents 付费系列的第一期，从宏观视角串讲了整个系列未来将涉及的核心主题，并以 \textbf{Reasoning \& Planning} 作为切入点，对大语言模型（LLM）在规划领域的能力与不足进行了系统性的 survey。

\subsection{系列将覆盖的主题}

整个 Modern Agents 系列计划覆盖以下几大板块：

\begin{enumerate}
    \item \textbf{Reasoning and Planning}：语言模型的推理与规划能力，这是所有后续内容的基石。
    \item \textbf{经典 Workflow}：包括 Self-Critique（生成-评估-迭代循环）、Multi-Agent System（多智能体协作，核心在于 Separation of Concern）。
    \item \textbf{Context Engineering}：对语言模型相关技术的整体打包，重点关注 Memory 设计。
    \item \textbf{Self-Evolving}：以 AlphaEvolve、GPA 等为代表的自我进化技术。
    \item \textbf{框架实践}：LangChain / LangGraph 等框架的使用。
    \item \textbf{Graph-based 方法}：GraphRAG 等 Neuro-Symbolic 方案。
    \item \textbf{工具设计与封装}：为语言模型设计合适的 Tool / Server 以补足其短板。
    \item \textbf{Test-Time Computing}：并行思考（DeepConf）、Majority Voting 等推理时计算技术。
\end{enumerate}

\subsection{本章小结}

本系列的核心理念是：在不断的实践中掌握更多行之有效的 know-how，通过 Agent 的设计和开发来最大化语言模型的表现。


\section{Reasoning：语言模型智能的基石}

\subsection{什么是 Reasoning}

\begin{importantbox}{Reasoning 的核心定义}
Reasoning（推理）是一种"无中生有"的能力——从已知且有限的前提（Premise）出发，沿着推理链推导出更多、更丰富、更有深度的结论。
\end{importantbox}

经典的演绎推理三段论就是一个典型的例子：
\begin{itemize}
    \item 大前提：所有人都会死
    \item 小前提：苏格拉底是人
    \item 结论：苏格拉底也会死
\end{itemize}

模型真正的智能就是通过 Reasoning 来体现的。当我们对模型的回答感到 impressed 或 disappointed 时，本质上都是对其 Reasoning 能力的一种感知——超出预期令人惊叹，低于预期则令人失望。

\subsection{Reasoning 与 Agent 能力的关系}

\begin{knowledgebox}{Reasoning 是一切高级能力的基础}
如果模型没有 Reasoning 的能力：
\begin{itemize}
    \item 就没有 \textbf{Planning}：因为 Planning 需要分解任务、Think Ahead、想多步
    \item 就没有 \textbf{Reflection / Critique}：因为反思需要从已有前提产生大量新结论
    \item 就没有有效的 \textbf{Agentic} 行为：因为 Agent 需要基于推理来决策下一步动作
\end{itemize}
\end{knowledgebox}

\subsection{两类经典推理方式}

\begin{enumerate}
    \item \textbf{演绎推理（Deduction）}：前向推理，是确定性推理。从大前提和小前提出发推导出必然结论。
    \item \textbf{归纳推理（Induction）}：是或然性推理。从有限的观察中归纳出一般性结论，前提越多结论越自信，但不能保证绝对正确（如"天鹅都是白色的"）。
\end{enumerate}

\subsection{Reasoning Model：隐式的 Long Reasoning}

当前的 Reasoning Model（如 DeepSeek R1、OpenAI O 系列）追求的是一种\textbf{隐式的 Long Reasoning}：
\begin{itemize}
    \item 复杂问题 $\rightarrow$ 模型自发产生长的思考过程
    \item 简单问题 $\rightarrow$ 产生短的思考过程
    \item 这是在训练阶段让模型自发学会的能力
\end{itemize}

\subsection{本章小结}

Reasoning 是语言模型一切高级能力的基石。无论是 Planning、Reflection 还是 Agent 行为，都依赖于模型从有限前提中推导出新结论的能力。现代 Reasoning Model 正在通过 RL 训练来增强这种隐式的长链推理能力。


\section{Planning：LLM Agent 的核心挑战}

\subsection{什么是 Planning}

\begin{importantbox}{Planning 的核心含义}
Planning 是对任务的分解——不管是隐式还是显式的，都要：
\begin{enumerate}
    \item 识别用户的目标
    \item 分解任务为可执行的子步骤
    \item Think Ahead：提前想多步
    \item Think Multiple Stages：考虑多个阶段
\end{enumerate}
\end{importantbox}

引入 Planning 的原因在于：语言模型在解决复杂的、长周期的、Multi-Hop 的问题时存在明显缺陷。通过显式或隐式的 Planning 机制，可以 Leverage 模型能力，最大化其在复杂任务上的 Performance。

\subsection{Planning 方法分类 Survey}

根据 2024 年初的一篇经典 Survey（关于 LLM 做 Planning 的综述），可以将方法分为以下几大类：

\subsubsection{分解（Decomposition）}

\begin{itemize}
    \item \textbf{CoT（Chain of Thought）}：``Let's think step by step''，让模型一步步求解问题，内部涉及对问题的自由分解。
    \item \textbf{ReAct}：不断和环境交互——Thought $\rightarrow$ Action $\rightarrow$ Observation 循环，在交互过程中完成任务分解。
    \item \textbf{Plan-and-Solve}：显式地形成一个 Plan，然后沿着 Plan 去 Solve。
    \item \textbf{PoT（Program of Thought）}：将思考过程转化为可执行的程序。
\end{itemize}

\subsubsection{选择（Selection）}

\begin{itemize}
    \item \textbf{ToT（Tree of Thoughts）}：用树结构管理搜索过程，从一个节点出发扩展多个候选方案，基于评分选择最有潜力的节点进一步探索。
    \item \textbf{MCTS（Monte Carlo Tree Search）}：基于 UCB 值综合考虑探索和利用，选择节点进行拓展。关键在于 \textbf{Simulation}（对节点进行打分）和 \textbf{Selection}（选择最优节点）。
\end{itemize}

\begin{warningbox}{状态爆炸问题}
在 ToT 和 MCTS 中，从每个节点出发语言模型可以产生 multiple 的 proposal，这会导致指数级的状态爆炸。因此必须引入有效的评分机制（Score），对节点做剪枝（Prune），只对有潜力的节点进一步探索。
\end{warningbox}

\subsubsection{外部求解器（External Solver）}

如 PDDL Planner，用于 Robotics 等场景中的 Planning 任务。语言模型直接产生 Plan 时往往不 work，引入外部符号求解器可以大幅提升可靠性。

\subsubsection{反思（Reflection \& Critique）}

通过 Self-Refine 机制，模型对自身输出进行反思和改进，在记忆（Memory）层面也可以引入 Reflection 来形成更高层次的结论。

\begin{knowledgebox}{Generative Agents 中的 Memory Reflection}
在 Generative Agents 中，如果只记录浅层事实（"他在读论文"），价值有限。通过触发 Reflection——综合多次观察，可以形成更高层结论（"这是一个对科研非常有热情的人"），这才是有深度的记忆。
\end{knowledgebox}

\subsection{Planning 方法的个人分类}

作者按自己的维度将 Planning 方法分为五类：

\begin{table}[H]
\centering
\begin{tabular}{ll}
\toprule
\textbf{类别} & \textbf{代表方法} \\
\midrule
Reasoning Model（隐式） & DeepSeek R1, OpenAI O 系列 \\
Plan-based（显式） & ReAct, Plan-and-Solve \\
Search-based & ToT, LLM + MCTS \\
Test-Time Scaling & Majority Voting, DeepConf \\
Neuro-Symbolic & LM+P, Alpha Geometry, PDDL \\
\bottomrule
\end{tabular}
\caption{Planning 方法分类}
\end{table}

\subsection{本章小结}

LLM 在面对复杂长周期问题时，直接生成 Plan 容易出错。可以通过分解（CoT/ReAct）、搜索（ToT/MCTS）、外部求解器（PDDL）、反思（Self-Critique）等多种策略来提升 Planning 质量。


\section{经典案例深度解析}

\subsection{Alpha Geometry：Neuro-Symbolic 方案}

\subsubsection{Alpha Geometry 第一代}

第一代 Alpha Geometry 的核心思路：
\begin{enumerate}
    \item 将原始几何问题翻译成\textbf{符号语言}
    \item 让\textbf{符号引擎}尝试直接求解
    \item 如果无法求解，交给\textbf{语言模型}提出构造（如添加辅助线）
    \item 符号引擎基于新构造推导出新的 facts
    \item 循环直到形成完整的解决方案
\end{enumerate}

例如：已知 $AB = AC$（等腰三角形），要证明两个角相等。仅凭 $AB = AC$ 符号引擎无法直接推导；但语言模型建议在 $BC$ 中点加一个 $D$ 点并连接 $AD$，就可以通过相似三角形、对角相等等性质完成证明。

\subsubsection{Alpha Geometry 第二代}

第二代引入了\textbf{多路并行搜索}：
\begin{itemize}
    \item 不止一个语言模型提 proposal，而是 multiple 的 neural model 并行搜索
    \item 各路搜索中间产生的新 facts 是\textbf{共享的}，可以形成新的前提（states），再交给不同 model 继续探索
    \item 这种并行思考策略启发了后续 Gemini Deep Think 版本的设计
\end{itemize}

\subsection{DeepConf：基于置信度的 Majority Voting}

DeepConf 的核心创新：
\begin{itemize}
    \item 引入 \textbf{Token Confidence} 概念
    \item 对每个 token 计算置信度，再 aggregate 得到整个 trace（完整解决方案）的置信度
    \item 基于置信度加权做 \textbf{Majority Voting}，而非简单的多数表决
\end{itemize}

\subsection{UCLA IMO 方案：Self-Critique Workflow}

\begin{importantbox}{Generate-Verify-Correct 循环}
UCLA 求解 IMO 的方案是一个典型的 Self-Critique workflow：
\begin{enumerate}
    \item Step 1-2：产生一个初始 proposal（solution）
    \item Step 3：交给 Critique 做 verification，给出具体的问题和意见
    \item Step 4：语言模型基于反馈做 correction
    \item 循环执行，直到连续 5 次通过验证（接受）或连续 10 次失败（拒绝）
\end{enumerate}
其关键词是 \textbf{capable}——模型本身有能力解决问题，只是需要合适的 workflow 来激发。
\end{importantbox}

\subsection{本章小结}

三个经典案例分别展示了 Neuro-Symbolic（Alpha Geometry）、Test-Time Scaling（DeepConf）和 Self-Critique（UCLA IMO）三种 Planning 策略，它们殊途同归——通过精心设计的 workflow 来最大化模型的推理潜力。


\section{从 ReAct 到 Plan-and-Solve}

\subsection{ReAct 的局限性}

ReAct 通过 Thought $\rightarrow$ Action $\rightarrow$ Observation 循环来处理复杂问题，但存在一个关键问题：

\begin{warningbox}{Context Issues}
当 ReAct 循环特别长时，会出现严重的上下文问题：
\begin{itemize}
    \item 语言模型会 \textbf{Lost in the Middle}——迷失在冗长的上下文中
    \item 忘记用户的原始任务是什么
    \item 忘记自己做过哪些事情、得到了什么结果
    \item 无法产生下一步合理的 Action
\end{itemize}
\end{warningbox}

\subsection{Plan-and-Solve Prompting}

Plan-and-Solve 是对经典 Zero-shot CoT 的改进。其 Prompting 方式为：

\begin{quote}
\textit{``Let's first understand the problem and devise a step-by-step plan to solve it. Then let's carry out the plan and solve the problem step by step.''}
\end{quote}

对比经典的 ``Let's think step by step''，Plan-and-Solve 显式地在 Prompting 中引入了 Plan 的概念，在复杂问题上大约有几个百分点的提升。

\subsection{Dynamic Plan-and-Solve}

社区对 Plan-and-Solve 做了进一步改进，引入了\textbf{动态性}：

\begin{importantbox}{刚中之脑 vs. 真实交互}
Plan 是在头脑中形成的（刚中之脑），没有和环境真实交互。当真实执行时会产生新的 feedback，这时需要 \textbf{Re-Plan}——将新的反馈引入到规划机制中进行动态修正。
\end{importantbox}

Dynamic Plan-and-Solve 的完整流程：
\begin{enumerate}
    \item \textbf{Plan}：Planner 自顶向下形成一个 plan（List of Steps / To-Do List）
    \item \textbf{Execute}：每个 step 交给一个 ReAct Agent 去执行
    \item \textbf{Re-Plan}：执行后基于新的 feedback，决定是直接结束还是重新规划
\end{enumerate}

Re-Plan 的输入包括：原始问题 + 原始 Plan + 过去执行的步骤及其结果。

\begin{knowledgebox}{经济性考量：强弱模型组合}
从经济角度，可以用\textbf{强模型}做 Planner 和 Re-Plan（因为规划决定了整体质量上限），用\textbf{弱模型}做具体的 ReAct 执行（因为具体执行步骤相对简单）。这样在成本和效果之间取得平衡。
\end{knowledgebox}

\subsection{本章小结}

从 ReAct 到 Plan-and-Solve 再到 Dynamic Plan-and-Solve，体现了一条清晰的演进线：从纯反应式交互，到显式引入规划，再到动态调整规划以弥合"刚中之脑"与真实交互之间的 gap。


\section{PDDL：Neuro-Symbolic Planning}

\subsection{语言模型直接规划的困境}

在 Blocked World 等经典 Planning 问题中（如积木世界），语言模型直接产生 Plan 时很容易出错。例如 GPT-4 在第四步就产生了错误——因为涉及状态约束（机械臂一次只能拿一个 block、block 必须在桌面或某一个位置上），语言模型很容易在内部产生明显的逻辑错误。

\subsection{LM+P：扬长避短的方案}

\begin{importantbox}{LM+P 的核心思想}
\begin{itemize}
    \item \textbf{语言模型不擅长的}：执行精确的 Reasoning 或解决 Planning 问题
    \item \textbf{语言模型擅长的}：翻译——将自然语言转换为符号语言
    \item \textbf{PDDL Solver 擅长的}：基于完整的 Domain 定义和 Goal State，产生可靠的执行序列
\end{itemize}
因此，让语言模型做翻译，让 PDDL Solver 做规划求解。
\end{importantbox}

具体流程：
\begin{enumerate}
    \item 有一个 Domain 的 PDDL 定义（描述环境中有哪些 action、precondition、effect）
    \item 用户给出自然语言指令（如"把苹果放在冰箱里"）
    \item 语言模型\textbf{翻译}为 Goal State（如 apple\_1 在 fridge\_1 中）
    \item PDDL Solver 基于 Domain 定义和 Goal State，\textbf{求解}出具体的 Plan
    \item 语言模型再把每个步骤\textbf{翻译}回自然语言
\end{enumerate}

\begin{warningbox}{语言模型不应被寄予过高期望}
即使是强如 Gemini 2.5 Pro，在解方程 $5.9 = x + 5.11$ 这样简单的问题时也会犯错。我们不应该预期语言模型可以 solve 所有问题——这时一个简单的计算器 tool 就够了。要做系统级的设计，在合适的环节使用合适的工具。
\end{warningbox}

\subsection{本章小结}

PDDL 代表了 Neuro-Symbolic 方案的精髓：让语言模型做它擅长的翻译，让专业的符号求解器做精确的规划。这种扬长避短的设计思路是构建可靠 Agent 的关键。


\section{总结与延伸}

\subsection{核心观点回顾}

\begin{enumerate}
    \item \textbf{显式或隐式的 Plan 是必要且有效的}：对于语言模型求解复杂的长周期问题，Plan 机制可以显著提升表现。
    \item \textbf{Top-Down 与 Bottom-Up 的结合}：Top-Down 做任务分解形成 Plan，Bottom-Up 通过真实交互的 feedback 进行 Re-Plan，弥合头脑规划与真实执行之间的 Gap。
    \item \textbf{感知模型的能力与特点，扬长避短}：设计合适的 Workflow 和 Tool 来激发模型能力，规避其短板。
    \item \textbf{系统级的设计}：语言模型 + Tools + Prompts 需要统筹考虑，形成稳定高效的解决方案。
\end{enumerate}

\subsection{延伸思考}

\begin{itemize}
    \item \textbf{Workflow 设计的重要性}：UCLA 的 IMO 方案证明，模型本身有能力（capable）解决问题，关键在于 workflow 的设计是否能最大化地激发模型潜力。
    \item \textbf{从 Agentic Workflow 到 Autonomous Agent}：目前大量 Coding Agent（Claude Code、Codex、Cursor）都采用预定义的 workflow 而非完全自主的 Agent，因为可控、可靠、可预测。完全自主的 Agent 是终极目标，但受限于当前模型能力。
    \item \textbf{Agent 的设计和开发可能与模型训练同等重要}：从实用角度来看，通过精心设计 Agent 来达到更好的 performance，可能比训练更强的模型更为经济高效。
\end{itemize}

%% --- 正文内容结束 --- %%

\end{document}
