符号规划处理计划可证明正确的情形。进化代码搜索处理适应度函数可机器检查的情形。ChatHTN(2025)和 AlphaEvolve(2025)展示了二者与 LLM 结合时各自解锁了什么。
学习目标
- 解释分层任务网络:任务、方法、算子、前置条件、效果。
- 描述 ChatHTN 的混合循环——符号搜索加 LLM 回退分解。
- 解释 AlphaEvolve 的进化循环,以及它为什么只在有程序化评估器时有效。
- 用标准库实现一个玩具 HTN 规划器和一个玩具进化搜索。
问题
ReWOO(第 02 课)、Plan-and-Execute 和 ReAct 覆盖了多数 Agent 规划。有两种情况它们覆盖得不好:
- 需要可证明正确性的计划。 调度、飞行路径、合规工作流——计划必须在构造上就是可靠的。一个流利的 LLM 计划偶尔幻觉出一个步骤,是不可接受的。
- 具有机器可检查适应度函数的优化。 矩阵乘法、调度启发式、编译器 pass——目标不是「一个正确的计划」,而是「最好的计划」。
HTN 规划和 AlphaEvolve 解决这两个不同的问题。两者都把 LLM 当作放大器,而不是替代品。
概念
分层任务网络
一个 HTN 包含:
- 任务 —— 复合任务(待分解)和原语任务(可直接执行)。
- 方法 —— 把复合任务分解为子任务的方式,带前置条件。
- 算子 —— 带前置条件和效果的原语动作。
- 状态 —— 一组事实。
规划:给定一个目标任务和一个初始状态,找到一个分解,使其中的原语算子按顺序满足各自的前置条件。
HTN 比 LLM 更古老,至今仍是可证明正确计划的参考。
ChatHTN(Gopalakrishnan 等,2025)
ChatHTN(arXiv:2505.11814)把符号 HTN 与 LLM 查询交错起来:
- 尝试用已有方法分解当前的复合任务。
- 如果没有方法适用,问 LLM:「在状态
s下,你会如何分解task?」 - 把 LLM 的回应翻译成候选子任务。
- 对照算子 schema 做校验;拒绝非法分解。
- 递归。
论文的核心主张:产出的每个计划都可证明可靠,因为 LLM 建议只作为候选分解进入,从不直接编辑计划。符号层负责正确性;LLM 扩展方法库。
在线方法学习(OpenReview gwYEDY9j2x,2025 年后续工作)增加了一个学习器,通过回归泛化 LLM 产生的分解——把 LLM 查询频率最多降低 75%。
AlphaEvolve(Novikov 等,2025)
AlphaEvolve(arXiv:2506.13131,DeepMind,2025 年 6 月)是另一类东西:由 Gemini 2.0 Flash/Pro 集成编排的进化代码搜索。
循环:
- 从种子程序 + 程序化评估器开始(返回适应度分数)。
- LLM 集成提出变异。
- 让变异通过评估器。
- 保留最好的;再次变异。
已公布的成绩:
- 56 年来首次改进 4x4 复数矩阵乘法的 Strassen 算法(48 次标量乘法)。
- 通过 Borg 调度启发式回收了 0.7% 的 Google 算力。
- 在前沿负载上实现 32% 的 FlashAttention 加速。
硬约束:适应度函数必须可机器检查。对散文答案做进化搜索不会收敛。
何时用哪个
| 问题类别 | 使用 | 原因 |
|---|---|---|
| 带硬约束的调度 | HTN + ChatHTN | 可证明的可靠性 |
| 编译器优化 | AlphaEvolve | 适应度可机器检查 |
| 多步任务执行 | ReAct / ReWOO | LLM 在环,无形式化保证 |
| 带测试的代码改进 | AlphaEvolve | 测试就是评估器 |
| 策略约束的自动化 | HTN | 前置条件编码策略 |
这个模式会在哪里出错
- 没有算子的 HTN。 没有前置条件/效果 schema,可靠性主张就会崩塌。ChatHTN 的「LLM 建议分解」要求 schema 能拒绝非法动作。
- 没有真实评估器的 AlphaEvolve。 「问 LLM 代码是不是更好」不是适应度函数。评估器必须是确定性的且快速。
- 过度工程。 多数 Agent 任务两者都不需要。先考虑 ReAct 或 ReWOO。
构建它
code/main.py 实现了两个玩具:
- 一个标准库 HTN 规划器,带算子、方法、前置条件、效果,以及当没有方法匹配复合任务时启用的
LLMFallback。「LLM」是一个脚本化分解器,因此规划器可离线运行。 - 一个标准库进化搜索,作用于算术程序:生长表达式,使其输出在测试集上最小化
|f(x) - target|。评估器是确定性的。
运行它:
python3 code/main.py运行轨迹展示 HTN 规划器分解一个复合任务(中途有一次 LLM 回退),以及进化循环收敛到一个目标表达式。
使用它
- HTN 规划器 ——
pyhop、SHOP3,或为领域特定的策略执行自建一个。 - ChatHTN —— 研究代码;该模式(符号 + LLM 回退)可以干净地移植到任何 HTN 规划器。
- AlphaEvolve —— DeepMind 论文;该模式(集成 + 评估器)可复现。OpenEvolve 及类似开源分支正在出现。
- Agent 框架 —— 尚无框架内置 HTN 或 AlphaEvolve。把它作为子 Agent 或后台 worker 来构建。
交付它
outputs/skill-hybrid-planner.md 生成混合规划器脚手架(HTN 或进化),并明确界定 LLM 的角色。
练习
- 给 HTN 规划器增加回溯:当某个算子的后置条件在运行时失败,回滚并尝试下一个方法。
- 给 ChatHTN 增加 LLM 方法缓存:当 LLM 在状态模式
P下分解任务T时,存储结果。下次调用时先重新检查方法库。 - 把进化搜索的评估器换成真实测试套件。进化一个能通过 20 个测试用例的排序函数;报告收敛所需的代数。
- 阅读 AlphaEvolve 的评估器设计说明。为你关心的领域设计一个评估器(SQL 查询优化、测试套件最小化、部署 YAML)。
- 组合:用 HTN 把复合任务分解为子任务,再对每个子任务的原语算子做进化搜索。它在哪里出彩,在哪里过度工程?
关键术语
| 术语 | 人们怎么说 | 实际含义 |
|---|---|---|
| HTN | 「分层规划器」 | 用算子、前置条件、效果做任务分解 |
| 方法(Method) | 「分解规则」 | 把复合任务拆成子任务的方式 |
| 算子(Operator) | 「原语动作」 | 带前置条件和效果的具体步骤 |
| ChatHTN | 「LLM + HTN」 | 没有方法匹配时,符号规划器询问 LLM |
| AlphaEvolve | 「进化代码搜索」 | LLM 集成变异代码;确定性评估器选择 |
| 适应度函数 | 「评估器」 | 对输出做确定性、可机器检查的评分 |
| 在线方法学习 | 「缓存的 LLM 分解」 | 存储并泛化 LLM 计划以降低查询成本 |
延伸阅读
- Gopalakrishnan 等,ChatHTN(arXiv:2505.11814) —— 符号 + LLM 混合规划器
- Novikov 等,AlphaEvolve(arXiv:2506.13131) —— 用 LLM 变异做进化代码搜索
- Anthropic, Building Effective Agents —— 何时该用规划器,何时用简单循环