第36回 规划与自省——从分解任务到反思循环

先画路线再赶路,赶到半程要回顾。
若能错处及时改,一步省下百步苦。

前五回(31–35)我们忙的是“结构化证据”:图、嵌入、GNN、GraphRAG、图提示。
从这一回起,第四篇换一口气——讲“行动与协作”。

行动的第一课不是跑得快,而是:

先把大任务拆成小任务,再按步骤执行;失败了,要能复盘再来。

这就是规划(Planning)与自省(Reflection)循环。


一、为什么要规划:不规划就会“计划幻觉”

很多人以为大模型不会规划,其实它会——
只是容易出现一种新幻觉:计划幻觉

典型症状:

  • 步骤写得很漂亮,但执行时才发现根本做不到
  • 忽略约束(权限、格式、工具能力),计划与现实脱节
  • 走到一半撞墙,却不肯回头改路

FlowBench 这类工作把“工作流知识”引入智能体规划评测,并指出:即便强模型也会在复杂工作流上出现明显失败,规划仍是硬骨头。1

所以规划不是装饰,是工程上的“保命绳”。


二、规划的三种颗粒度:从一句话到流程图

规划可以粗也可以细:

  1. 目标级:一句话说我要什么
  2. 步骤级:列出 5–10 个可执行步骤
  3. 工作流级:像流程图/状态机那样,包含分支、回滚、重试

你会发现:
越靠近生产,越需要“工作流级”。
这也是为什么后面第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

  1. 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

  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