第36回 规划与自省——从分解任务到反思循环
先画路线再赶路,赶到半程要回顾。
若能错处及时改,一步省下百步苦。
前五回(31–35)我们忙的是“结构化证据”:图、嵌入、GNN、GraphRAG、图提示。
从这一回起,第四篇换一口气——讲“行动与协作”。
行动的第一课不是跑得快,而是:
先把大任务拆成小任务,再按步骤执行;失败了,要能复盘再来。
这就是规划(Planning)与自省(Reflection)循环。
一、为什么要规划:不规划就会“计划幻觉”
很多人以为大模型不会规划,其实它会——
只是容易出现一种新幻觉:计划幻觉。
典型症状:
- 步骤写得很漂亮,但执行时才发现根本做不到
- 忽略约束(权限、格式、工具能力),计划与现实脱节
- 走到一半撞墙,却不肯回头改路
FlowBench 这类工作把“工作流知识”引入智能体规划评测,并指出:即便强模型也会在复杂工作流上出现明显失败,规划仍是硬骨头。1
所以规划不是装饰,是工程上的“保命绳”。
二、规划的三种颗粒度:从一句话到流程图
规划可以粗也可以细:
- 目标级:一句话说我要什么
- 步骤级:列出 5–10 个可执行步骤
- 工作流级:像流程图/状态机那样,包含分支、回滚、重试
你会发现:
越靠近生产,越需要“工作流级”。
这也是为什么后面第38回要专讲状态机工作流。
三、自省的核心:不更新参数,也能变聪明
传统强化学习是“改参数学经验”。
而在语言智能体里,出现了另一条路:
不改参数,用语言做反馈,用记忆做改进。
Reflexion 框架的直觉是:
- 你做一次尝试(trial)
- 环境给你反馈(成功/失败、错误信息)
- 你用语言写一段“反思”
- 把反思存进记忆,下次尝试时带上它
这被称为“语言形式的强化”(verbal reinforcement),用自我反思的文字记忆来提升后续决策。2
看官可以把它当成:
不让徒弟背答案,让徒弟写错题本。
四、极简可跑代码:一个“计划-执行-反思-再试”的玩具循环
下面代码不调用任何模型,只演示“反思循环”的结构:
- 目标:把一个数字变成 24(允许 +1 或 ×2)
- 计划:先猜一条路线
- 执行:按计划走
- 失败:写反思,改计划再试
def step(x, act):
if act == "+1":
return x + 1
if act == "*2":
return x * 2
raise ValueError(act)
def run_plan(x0, acts, target=24):
x = x0
for a in acts:
x = step(x, a)
if x == target:
return True, x
if x > target:
return False, x
return (x == target), x
def reflect(x0, acts, last_x, target=24):
if last_x > target:
return "超了:少用*2,多用+1 或减少步数"
if last_x < target:
return "没到:可能需要更多*2 或延长步数"
return "刚好"
if __name__ == "__main__":
x0 = 3
memory = []
plans = [
["*2", "*2", "*2"], # 3->6->12->24
["*2", "+1", "*2", "*2"], # 备用方案
]
for attempt, acts in enumerate(plans, 1):
ok, last_x = run_plan(x0, acts)
if ok:
print("SUCCESS", attempt, acts, "->", last_x)
break
note = reflect(x0, acts, last_x)
memory.append(note)
print("FAIL", attempt, acts, "->", last_x, "REFLECT:", note)
这段玩具代码刻意简单,但它把结构立住了:
- 规划不是一次性的
- 反思要“可复用”(写进记忆)
- 下一次尝试要“读错题本”
真实智能体不过是把:
- 计划写得更像流程
- 执行交给工具与环境
- 反思从一句话变成可操作的约束
五、小结:行动的关键不是“会说计划”,而是“会改计划”
你现在应当记住两句工地真话:
- 计划必须能落到执行
- 反思必须能改变下一次行动
下一回(第37回)我们把“反思写进记忆”讲得更系统:
长期记忆与个性化——智能体怎样记住你,怎样忘掉该忘的,怎样不越界。
欲知后事如何,且听下回分解。
幻觉核查
- Reflexion 的核心机制(语言反思 + 记忆提升后续试错):可核对论文摘要与方法部分描述。2
- FlowBench 对“工作流引导规划”的问题设置与结论:可核对论文摘要与主要实验结论。1
- 本回代码为结构演示,真实智能体的反馈信号更复杂,且需要与工具执行、错误类型、权限等结合。
逻辑审计
- 与第35回衔接:第35回讲“翻译与验证”,本回讲“把翻译与验证串成循环”,形成可重复执行的工作流。
- 与导读一致:导读强调“慢思考=多试几步+自我校验”,本回把自校验外化成反思记忆。
- 为第37回铺路:自省若不入库就会丢;长期记忆是让“错题本”跨会话生效的关键。
引用与溯源
Footnotes
-
Xiao, R., et al. FlowBench: Revisiting and Benchmarking Workflow-Guided Planning for LLM-based Agents arXiv:2406.14884 (2024-06-21) https://arxiv.org/abs/2406.14884 ↩ ↩2
-
Shinn, N., et al. Reflexion: Language Agents with Verbal Reinforcement Learning arXiv:2303.11366 (v4: 2023-10-10) https://arxiv.org/abs/2303.11366 ↩ ↩2