从 STRIPS 到 Code as Policies:计划表示的谱系与安全账
同一道积木规划题,STRIPS 可以逐条机械判定计划合法,语言计划只能靠执行去发现错误,程序计划居中——可运行、可检查。本篇沿 slides L5 的表示谱系走一遍:从 1971 年的谓词规划,经 SayCan 的语言计划接地,到 Code as Policies 的策略即代码,最后落在 L5 p.32 的安全论点——表示选择同时是安全设计。
把计划写下来,用什么写?agent 圈长期只有一个默认答案:自然语言步骤列表。slides L5 p.13-15 却用三页讲了一条表示谱系:一端是 1971 年的形式规划 STRIPS,另一端是 2023 年让代码模型直接写策略代码的程序路线,语言计划夹在中间。
计划用什么表示,决定了它能否被机器校验、能否充当安全边界。这两件事在 LLM 时代都变贵了。
一、STRIPS:计划第一次成为可判定对象
经典规划的范式由 STRIPS 奠定,Fikes 与 Nilsson 1971 年发表于 AI 期刊(slides L5 p.13)。它的世界干净得近乎奢侈:状态就是一个谓词集合,on-table(x)、on(x,y)、clear(x)、holding(x)、hand-empty;动作则由前置条件与效果两部分定义:
动作 pick-up(x):
前置条件: on-table(x) ∧ clear(x) ∧ hand-empty
效果: holding(x) ∧ ¬on-table(x) ∧ ¬hand-empty
课程用的教学例(L5 p.13):初始状态 on(blue,orange),蓝块摞在橙块上;目标 on(orange,blue),反过来。合法计划是四步:
unstack(blue,orange) → put-down(blue) → pick-up(orange) → stack(orange,blue)
这张图里有个容易被滑过去的教学点。想达成橙在蓝上,第一步却是先挪开蓝块 —— 它恰好压在要拿的目标上,pick-up(orange) 的前置条件 clear(orange) 在初始状态不成立。
合法动作序列须满足每个动作的前置条件,这个性质后来有了名字:可适用性(applicability)。规划因此是搜索问题,在状态空间里找一条每步都适用的路径。
STRIPS 真正的遗产不是效率,而是可判定性。状态与动作都有了形式语义,一个计划对不对,就能逐条机械检查,不必执行、不必人读。
五十年后它成了 PlanBench(Valmeekam et al., NeurIPS 2023 Datasets & Benchmarks 赛道)的地基,LLM 规划能力的经典试金石(slides L5 p.13)。考法是让模型产计划,再用形式语义判对错。形式世界不生产智能,它生产裁判。
二、难点变了:从「找计划」到「检查世界」
到了 LLM 时代,STRIPS 的哪部分过时了?slides L5 p.14 的答案:难点换了,过时的不是表示。一切都隐式化了,世界模型藏在模型参数里,计划用自然语言随手就能写。
于是,写出一个像样的计划变得容易,判断自己的世界模型是否正确变得困难。同一个模型可以流畅地产出四步积木计划,问到第一步之后 hand-empty 还成不成立这类问题,就含糊其辞。
所以 agent 设计的重心从深度搜索挪向检查世界:观察、验证、从错误恢复。但 p.14 同时强调了两个仍然有效的老概念:搜索,与动作可适用性。
哪怕计划用自然语言写,执行前最值得问的还是那一句:下一步的前提现在成立吗。它给世界漂移提供了一个廉价的断路器:
注意这里计划本身仍是语言级的。可适用性检查不需要 STRIPS 的全套本体,只需要在每步执行前对一下账:这步依赖什么,世界现在是什么样。p.14 的结论:概念存活,仪式退场。
三、谱系三档:形式可校验,语言通用,程序居中
slides L5 p.15 把整条谱系收成三档,每一档买到一种能力,付出一种代价:
| 档位 | 表示 | 买到 | 付出 |
|---|---|---|---|
| 形式计划 | 谓词 + 动作演算 | 可机械校验 | 世界建模成本高,覆盖面窄 |
| 语言计划 | 自然语言步骤 | 通用、零建模成本 | 没有通用校验器(L5 p.47) |
| 程序计划 | 代码 | 可运行、可检查 | 受限于 API 与程序结构 |
约 2023 年起,一条工作线把谱系的中间档做实:用 code LLM 写调用感知 / 控制 API 的代码。代表工作是 Code as Policies(Liang et al., ICRA 2023)、ProgPrompt(Singh et al., ICRA 2023)与 Binder(Cheng et al., ICLR 2023)。
按官方 reading 的细节,Code as Policies 让代码补全模型直接写出机器人策略代码,含循环、感知 API、第三方库;层次化代码生成让下层生成的函数被上层生成代码调用,像搭积木一样组合出复杂行为。
受限于 API 与程序结构,这条短处反过来是个优点:API 内部可以再调 LLM 或神经模型。感知这类没法谓词化的能力被下沉进 API,程序档并没有退回形式世界的僵硬。课堂对这条谱系的现状判断:机器人域里它已被可直接训练的端到端 VLA 系统盖过,但同一思路在编码 Agent 上仍然好用,课堂口述的判断。
谱系之外,slides L5 p.22 把 SayCan(Do As I Can, Not As I Say,Ahn et al., CoRL 2022)引为语言计划接地的对照路线,Google Robotics 一个 45 人团队的工作,论文 Fig.3 画出了完整的重打分流程。
它为每个机器人技能学一个价值函数,预测完成概率,与 LLM 给出该子任务的概率相乘,用技能的可供性给语言计划重打分。
同页另引的 Zero-Shot Planners(Huang et al., ICML 2022)则代表不接地、纯语言生成计划的早期尝试。两条路线的差别放在下面一栏对比:
LLM 输出自然语言子任务序列;每个技能配 value function,回答「这具身体做得成吗」;语言概率 × 完成概率重排子任务,选出既合语义又合物理的序列。表示仍是语言,校验交给打分器。
LLM 输出的直接是代码 —— 循环、感知 API、第三方库都写在程序里;接地发生在代码调用 API 的那一刻。表示升为程序,校验交给运行。
四、表示即安全设计:程序当注入的防火墙
这条谱系在 slides L5 p.32 还有第二个辩论点:计划作为安全边界。ReAct 式 agent 的每个动作都由包含全部观察的上下文决定。这意味着,agent 浏览过的每个页面都能影响下一个动作,提示注入由此获得了一条现成通路。
程序路线给出结构性反制(Piet et al., 2026, Fig.1):程序可以从页面取值,不从页面接受新动作。数据流可以进,控制流不能进。表示选择同时是安全设计。
产业侧的例子是 Cursor Plan Mode。它是语言计划表示的产品化:计划是含文件路径与代码引用、可内联编辑的 Markdown,用户拿到一份可审阅、可改写的中间产物,计划从内部状态变成了交互对象。
而 p.47 的开放问题 Checking 给全谱系留了一个未解问题。形式计划有裁判,程序有运行,语言计划与子目标图至今没有通用校验器。
与本讲的连接
本篇下钻的是伴读笔记第七节「计划该长什么样」。笔记把规划概括为把目标拆成带依赖的子任务 DAG,讲分解的篇目负责拆多细、何时重拆,本篇回答的则是拆完写成什么。讲次页官方 readings 三篇正好各落一档:
- Cursor Plan Mode:语言档,资料卡 m3-cursor-plan-mode
- Code as Policies:程序档,资料卡 m3-code-as-policies
- SayCan:接地对照路线,资料卡 m3-saycan
quiz 若考三档表示各自靠什么校验,那张三行表就是答案骨架。从 1971 年的 STRIPS 到 2023 年的程序路线,这条谱系走了五十年。
本节论文与规范
本节资料
- Code as Policies: Language Model Programs for Embodied Control 论文2209.07753进阶官方指定
官方指定 reading、L5 p.15 表示谱系主线论文(ICRA 2023)。让代码补全 LLM 直接写机器人策略代码(含循环、感知 API、第三方库),层次化代码生成可组合复杂行为。与 SayCan 构成「选动作 vs 写程序」两条具身规划路线的对照。
- Introducing Plan Mode 博客入门官方指定
官方指定 reading(2025-10-07)、L5 p.4/p.33 引用。给 agent 加计划工具与可内联编辑的交互计划,产出含文件路径与代码引用的 Markdown 计划;官方称「先计划后施工显著改善生成代码质量」并支持更长 agent 运行。Shift+Tab 进入,复杂任务自动建议。
- Do As I Can, Not As I Say: Grounding Language in Robotic Affordances 论文2204.01691进阶官方指定
官方指定 reading、L5 p.22 主线论文(CoRL 2022)。LLM 提供任务语义、机器人技能价值函数提供可行性打分,二者相乘选出「既合理又能做」的动作序列——语言规划必须被物理可行性接地,「计划是假说、世界说了算」的具身版。
AI 生成 · 仅供参考,与课程方无关。选中正文里的任何一段也能直接问我(解释一下 / 举个例子)。
本详解以 CMU 11-768 AI Agents (Fall 2026) 课程大纲为参考框架独立撰写,AI 辅助起草、人工抽审。 涉及的官方课件、论文与课程材料版权归原所有方,讲义为站内镜像、其余外链原文出处; 观点与文字(除标注引用外)为作者原创。