任务分解(Task Decomposition):从做一顿饭到买菜、洗菜、切菜、炒菜

有一次我让 ChatGPT 帮我安排一个周末的行程:订机票、酒店、餐厅,还要兼顾预算和偏好。它直接甩给我一个“完美”行程表,但细看发现航班时间接不上酒店入住,餐厅还订在了周一公休。我有点恼火,但转念一想:它其实根本没在“安排”,它只是把一堆看起来相关的词拼在了一起。

AI technology illustration

真正的安排是什么?是在脑子里把大任务拆成子任务,然后每一步都核对约束条件。就像做一顿饭,你不会直接从“饿”跳到“饱”,而是要先想菜谱、买菜、洗菜、切菜、炒菜。如果少了这种分解,你就会站在厨房里发呆,或者把生米和生肉直接扔进锅里。

这就是任务分解(Task Decomposition)——一个我们人类觉得理所当然,但让大语言模型做到却费了九牛二虎之力的能力。我以前一直以为,只要把推理过程写进提示词,模型就能自动学会分解,后来发现根本不是这么回事。下面我就把踩过的坑讲清楚。

“一步步来”的魔法,和它的天花板

最早让我感到惊艳的,是 Chain-of-Thought(CoT)提示。你只要在提问时加一句“Let’s think step by step”,模型就能把正确率从 18% 拉到 79%(Wei et al., 2022)。这就像你问一个人“123×456 等于多少”,他说“我不会”,但你说“你列个竖式算一下”,他就算出来了。CoT 让模型把隐式的推理过程显式化,每一步只做一个简单的中间计算,错误率大幅下降。

但问题来了:CoT 是一根筋的线性链。它只能沿着一条路走到黑,不会回头检查,也不会比较不同路线。如果你让模型用 CoT 规划一个完整的项目,它可能会在第三步就选了一个次优方案,然后硬着头皮往下走,最后给你一个看起来合理但全局糟糕的计划。

我做过一个实验:让模型扮演一个需要做多步决策的角色,比如要在三个城市里选一个开咖啡店,考虑人口、租金、竞争。直接 CoT 它几乎每次都选第一步看起来最好的那个城市,哪怕后面几步会暴露出那个城市的致命缺陷。它不会说:“等等,我先看看后面的约束再决定。”而人类只要稍微有经验,就会先拉一个矩阵,把关键因素都列出来,再综合判断。

这就引出了核心矛盾:真正复杂的任务不是一条链,而是一棵树。 在每一步,你都有多个可能的选择,你需要前瞻、评估、回溯。

当任务变成一棵树,我们需要搜索

Tree of Thoughts(ToT)的论文(Yao et al., 2023)让我立刻想起了 AlphaGo 的蒙特卡洛树搜索。它的思路很简单:把问题求解看作在一个状态空间里搜索,每个状态是一个“思维”,模型在每个节点可以生成多个候选的下一步思维,然后用一个评估器给每个候选打分,保留最有希望的分支继续探索,甚至可以回溯。

用做饭来比喻:你决定“今晚做中餐”,但具体菜谱有宫保鸡丁、红烧肉、清蒸鱼三个候选。ToT 不是随便选一个往下走,而是会先评估每个菜谱的步骤难度、所需时间、有没有食材,然后选择最可行的那个,如果发现某个菜谱缺了关键食材,它就会回溯,换另一个菜谱。这和人类在厨房里看着冰箱做决策的过程简直一模一样。

我最早以为 ToT 只是 CoT 的升级版,多加几个分支而已。后来看了论文里的实验才想通,关键不是“有分支”,而是“有评估和回溯”。CoT 生成一个序列,质量好坏都不知道;ToT 在每一步都做一次价值判断,这需要模型能像裁判一样审视自己的思考。这其实是对模型能力的一种期望跃迁——它不仅要会生成,还要会自我批评。

下面这张表能帮你快速分清楚这两种分解方式:

Chain-of-Thought Tree of Thoughts
结构 线性链 树状,可回溯
状态空间 单一路径 多分支探索
候选生成 每次只生成一个下一步 每次生成多个候选
评估机制 无显式评估 需要评估每个候选的潜力
适用问题 算术、常识推理 数学证明、创意写作、规划
计算成本 高(多次调用 + 评估)

ToT 的代价很明显:调用次数暴增,每一步都要多次采样,成本直线上升。而且评估器本身也可能出错,如果模型自己的价值判断歪了,整个搜索就会跑偏。

只“想”不够,还要“做”

任务分解还有一个更贴近现实世界的变体:ReAct(Yao et al., 2022)。它把推理和行动交替进行:模型生成一个想法,然后执行一个动作(比如调用搜索 API),拿到观察结果,再生成下一步想法。这就像你做饭时,不是先在大脑里完整模拟一遍,而是边做边尝边调整。ReAct 让分解出来的子任务可以直接和外部世界交互,极大降低了幻觉。

我最早用 ReAct 跑一个需要查询数据库的任务时,发现模型会自己写 SQL、执行、看结果、发现不对再重写。那种感觉就像看到一只狗学会了自己开门——它真的在“做”事,而不仅仅是“说”事。

自动分解:让 AI 自己拆任务

上面讲的都还需要人类设计好分解的框架(比如给 ToT 定义好“思维”的粒度)。但 AutoGPT 这类项目(AutoGPT)想得更远:让模型自己递归地分解任务。你给它一个最终目标,它会先生成一系列子任务,每个子任务如果太大,继续拆,直到拆成原子动作。这就像你对一个人说“做一顿饭”,他自动生成:定菜谱、采购、备菜、烹饪、摆盘,然后对“采购”又生成:查冰箱、列清单、去超市、结账。

听起来很酷,但我在实际使用中经常碰到两个问题:一是子任务之间可能会有冲突,模型拆的时候没考虑全局约束;二是模型会生成一些永远无法完成的子任务,然后无限循环。比如让它“写一篇关于气候变化的经济影响报告”,它可能拆出“采访 10 位经济学家”——但 GPT 无法真正采访,它就会编造采访内容,然后继续执行。这本质上还是任务分解与真实世界之间的鸿沟。

为什么我们离“真正的分解”还很远

现在的 LLM 做任务分解,最大的软肋是评估不准状态维持。ToT 依赖模型自己打分,但模型经常分不清一个想法到底有多大希望,尤其是在需要长期全局规划的任务上。AutoGPT 那种递归分解,经常在第三步就忘了第一层的约束,陷入“局部最优的幻觉”。

另外,成本是一个硬伤。ToT 解决一个 24 点游戏,可能需要调用模型上百次,而人类可能十几步内就能在大脑里完成搜索。这背后的原因可能是:人类有一个高度压缩的“世界模型”,能快速剪枝;而 LLM 的搜索还是在语言空间里瞎撞,效率极低。

我现在的判断是:任务分解是让 LLM 从“语言引擎”走向“智能体”的必经之路,但当前的方法仍然只是把搜索和推理缝合在一起,离人类那种灵活、高效、鲁棒的分解能力还差得远。 如果你今天想让 AI 做复杂任务,最靠谱的不是指望它自动分解,而是你帮它设计好分解的框架,比如用流程模板或状态机,把关键决策点留给人类判断。至于完全自主的通用任务分解,那可能还需要一次根本性的架构突破。

原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/124.html

(0)
上一篇 2026年8月16日 上午12:06
下一篇 2026年8月16日 上午12:08

相关推荐