
假设你是一台正在执行任务的移动机器人。面前有两条路一条需要爬上半米高的台阶另一条是平坦但绕远的路线。你的目标在台阶后面那扇门附近。你并不确定自己能不能爬上台阶。这时候你是先反复尝试爬台阶还是先去绕行路线探一圈如果按“信息量最大化”的思路爬台阶显然更值得实验——因为它结果最不确定。但问题是它真有那么重要吗绕行路线可能远十倍但它确定可行而爬台阶一旦成功会把到达成本拉低很多。这个看似简单的抉择正是很多智能体在真实环境中被“实验选择”卡住的本质。“Capability-Gated Planning”这个方向最近在规划和决策相关讨论里被越来越多人提起。它背后有一个反直觉的判断不要单纯把“不确定性最高”当作优先实验的理由。真正值得优先的是那些能降低“到目标成本cost-to-goal”的实验。它的对立面就是标题里的“短视实验选择myopic experiment selection”——只看眼前这一步能带来多少信息却不去想它对最终任务有没有帮助。这篇文章我想把这个概念拆开聊能力门控到底在规划里扮演什么角色为什么短视选择会失效把 cost-to-goal 放进实验选择之后又能怎样落地。最后我会给一个最小可行的实现思路以及几个真正容易被忽略的工程问题。1. 先理解“能力门控规划”到底在解决什么问题1.1 一个看似高效却跑偏的实验策略很多具身智能体在真实环境中会因为“不知道自己的能力边界”而失败。比如机器人不知道自己的爬坡极限机械臂不知道自己在某个姿态下的抓取成功率自动驾驶系统不确定自己能否通过某个复杂路口。为了获得这些信息智能体需要主动做实验。常见的做法是选择能最大程度减少当前模型不确定性的实验。这个思路在主动学习、贝叶斯优化里很常见逻辑上也没有毛病——如果一个能力我们一无所知那通过实验去了解它当然有价值。但问题出在“任务”两个字上。假设这个机器人要做的事情不是到达目标而是“尽量了解周围环境”。那么反复测试爬台阶确实没毛病。可一旦任务变成了“到达那扇门”实验选择的价值就要放在整个规划里去重估。一个我之前反复遇见的问题是系统会把大量实验预算消耗在“当前不确定性最高、但对任务成本没有影响的维度”上。比如反复测试跳过小水坑的能力却忽略了目标路径上真正需要的爬坡能力。原因是爬坡能力目前先验比较确定“可能不行”但恰恰因为不确定度低信息增益小反而被短视策略排在后面。这种策略看起来每一步都在“获取信息”但跑完整轮之后到达目标的成本几乎没有下降。它跑偏了。1.2 从“能力估计”到“可通行规划”要解决上面的问题需要把“能力”和“规划”放到同一个闭环里。能力门控capability gating的意思大致是这样的在规划阶段不是所有动作都无条件开放给智能体。某些动作比如爬上0.5米高的台阶只有当能力模型的估计值高于某个阈值时才会被放入规划器的动作空间。这里的关键不是简单把动作硬编码成“开/关”。相反门控是概率性的、随实验不断更新的。今天你认为自己爬不上台阶那么规划器搜索出的路径就会绕开台阶明天你用一次成功的实验更新了能力分布门控被打开规划器就可能重新发现一条更短但需要爬台阶的路线。那么“到目标成本”在这里扮演什么角色它是一个连接当前状态与最终任务目标的标尺。它不像“信息熵”那样只描述模型本身的不确定性而是把所有能力门控的结果、路径选择、执行风险、时间成本全部压缩成一个数字从当前状态到目标总共还要花多少代价。Capability-Gated Planning 之所以比传统的“先学一个能力模型、再规划”更连贯就是因为它在决定“下一个实验做什么”的时候已经开始用规划结果来反馈实验选择。实验不再是为了满足好奇心而是为了打开一条通往目标的可行通路。这看起来像是一个很学术的表述但如果落到工程里其实可以很具体先维护一个能力后验然后估算每一个候选实验对“到目标成本”的影响最后选择影响最大的那个。2. 为什么短视实验选择会失效三个关键原因2.1 它优化的是信息量而不是目标可达性第一个原因最直接短视实验选择把“信息量”当成了目标但任务的真正目标往往是“用可接受的成本完成任务”。信息量本身没有方向。能力模型里有很多不确定性有些不确定性对最终目标影响很大有些则完全可以忽略。如果只按信息量排序系统会公平对待每一个不确定维度。这就像一个人想学编程却花大量时间练习打字速度。打字速度确实有不确定性也确实可以通过训练提高但它对“写出一个能部署的Web服务”这个目标帮助非常有限。用规划的语言说短视策略是在能力空间上做贪心搜索而不是在“从当前状态到目标状态的成本空间”上做搜索。它没有回答一个关键问题这个实验做完之后我的计划成本能不能下降如果能下降多少2.2 它低估了能力门槛带来的组合效应第二个原因和“门控”密切相关。很多真实任务不是单一能力决定的而是多个能力同时达到阈值之后路径才能被打通。比如移动机器人要到目标点可能需要爬坡能力、跨越障碍能力、在湿滑地面上的稳定控制能力。单独提升其中一项不一定能降低总成本。能力门控带来的一个典型特征是某些能力是必要条件不是充分条件。缺少其中一个整条路径就不可行。短视实验选择因为只看单步信息收益很容易漏掉这种组合关系。一个很常见的失败模式是系统先花大量实验把“跨越障碍”能力的置信度从0.3提升到0.9但“爬坡”能力仍然不被允许进入规划于是整体路径依然不可行。整个过程做了很多实验成本却几乎没变。这就是没有考虑“能力门槛组合”的代价。从方法层面看解决这个问题的思路是实验选择不应该直接比较能力维度的信息收益而应该比较“如果把某个能力从一个状态更新到另一个状态规划结果会怎么变”。这个“规划结果的变化”就是要用 cost-to-goal 去刻画。2.3 它把“不确定性”和“重要性”混为一谈第三个原因更微妙不确定性不等于重要性。一个能力维度可能不确定性很高但在当前目标下完全不重要。另一个能力维度可能不确定性很低比如“机器人知道自己在平坦路面上100%能跑”但恰恰是这个能力决定了整个计划是否可行。短视策略会把优先级放在前者而后者因为没有不确定性甚至不会被选为实验对象。这里体现的是一个更深层的偏差信息增益型策略默认所有能力是对称的、相互独立的。但任务目标天然会给不同能力赋予不同权重。有些能力是“解锁项”有些能力只是“锦上添花”。用决策理论的话讲一个实验的价值应该等于“它带来的信息能否改变最终决策”。如果信息不能影响后续规划路径那它的信息量再大也只是一个统计学上的炫目光环。Cost-to-goal discovery 解决的正是这个问题它把实验选择的价值函数从“减少多少熵”改成了“降低多少到目标的预期成本”。3. 到目标成本把宏观目标变成实验选择的标尺3.1 用成本函数连接当前状态与最终目标把 cost-to-goal 作为标尺首先要定义清楚“成本”到底是什么。它可以是到达目标的时间可以是总能耗可以是失败风险也可以是这几项的加权组合。关键是它必须能体现出“不同路径之间的差距”。在能力门控规划里cost-to-goal 不是一个静态值。它依赖当前的能力后验。能力后验发生变化门控开放的动作集合就会变化规划器搜索出来的最优路径也会变化于是 cost-to-goal 跟着变化。这就形成了一个闭环当前能力后验 → 决定哪些动作门控开放门控开放的动作集合 → 决定规划器能搜索出什么路径搜索出的路径 → 决定当前 cost-to-goal候选实验 → 会改变能力后验 → 会改变路径 → 会改变 cost-to-goal。所以一个实验的长期价值可以近似表达为执行该实验并更新能力模型后新的 cost-to-goal 与当前 cost-to-goal 之间的差距再减去实验本身花费的代价。3.2 一个可操作的简化计算流程在实际工程里我们当然不可能精确计算“每个实验更新后的 cost-to-goal 分布”。但可以做一个简化的近似流程维护当前能力后验用规划器得到当前 cost-to-goal。对每一个候选实验采样几种可能观测结果。对每一种观测结果更新能力后验再重新跑一次轻量级规划得到新的 cost-to-goal。对这些结果取期望得到该实验的“预期成本改进”。用“预期成本改进”减去实验成本作为该实验的效用。最后选择效用最高的实验执行。这个过程不复杂但计算量不小。因为每一步都可能需要跑多次规划。在小规模任务里完全可行如果任务规模很大就需要用更廉价的代理模型或者对规划结果做缓存和近似。我想强调的是它和“选信息增益最大的实验”最核心的差异不是算法复杂度而是评估实验的坐标系变了。前者在用“模型状态”选择实验后者在用“任务状态”选择实验。3.3 门控阈值不是拍脑袋而是通过成本反推在 Capability-Gated Planning 里阈值是绕不开的话题。假设我们要求能力模型给出一个数字超过阈值才开放动作。这个阈值怎么定常见的做法是根据经验定一个0.8或0.9但这样很危险。因为不同能力对最终成本的影响不一样。有些能力即使只有0.5的置信度也值得被尝试因为一旦成功成本会大幅下降另一些能力则必须有0.95以上的置信度才敢用因为失败会导致极高代价。更合理的做法是把阈值当成一个“成本敏感”的决策参数。我们可以通过反向推演来设置在当前任务下如果某一能力被开放预计能降低多少成本如果失败预计会增加多少成本当两者平衡点对应的置信度就是阈值。换句话说阈值不是一个纯概率数字而是成本结构的表现。没有 cost-to-goal阈值就只能凭感觉拍。这也是为什么说“到目标成本发现”是能力门控规划里不可缺少的另一半门控需要成本来校准实验选择的优先级也需要成本来排序。4. 从短视到前瞻搭建一个最小可行实验选择框架4.1 第一步建立能力候选集与先验分布落地时不用一上来就做一个完整的大规模系统。我建议先建立一个小规模但结构完整的最小框架。首先划定要实验的能力维度。以机器人为例爬坡角度、跨越障碍高度、在湿滑地面的制动距离。给每个能力设定一个先验分布。如果没有历史数据可以用均匀分布或较保守的分布。在这个阶段最关键的是明确“实验观测模型”每做一次实验你会得到什么样的观测数据以及这个数据如何更新能力后验。一个常见错误是先验设置太自信。如果一开始就认为某个能力值很高系统会过早打开门控然后规划出一条本来不该选的路径。先验要允许“无知”存在能力模型必须有表达不确定性的能力。4.2 第二步用规划器评估每个候选实验的“全局价值”有了能力后验就可以写一个简单的规划器。对每个候选实验做模拟假设观察到一个可能结果更新能力后验重新估计门控并运行规划器记录新的 cost-to-goal。对多个可能观测取期望得到该实验的全局价值。这一步是整个框架的核心也是最耗计算的部分。为了减少开销可以对规划器设置一个较短的时间预算或者使用更粗粒度的状态表示。关键不是一次算得完美而是让“实验选择”的排序尽量接近真实任务目标。我通常会再加一个“零实验基准”的判断如果做了当前这个实验预期成本改进小于实验成本那就应该停止做实验直接执行当前计划。这个停止条件很重要因为很多系统会为了收集信息而无限做实验忘记真正任务是到达目标。4.3 第三步迭代更新能力模型并调整门控选择效用最高的实验执行拿到真实观测更新能力后验。然后重新计算门控和 cost-to-goal进入下一轮。这里有一个容易被忽略的动作每次更新能力模型后要重新对所有能力门控做一次检查。因为一次成功实验可能会把某个能力从不置信变成置信同理一次失败实验也可能关闭之前开放的动作。如果门控没有同步更新规划器可能还在使用已经失效的动作空间。整个循环的退出条件不应该是“做了多少个实验”而应该是“当前 cost-to-goal 已经低于可接受阈值”或者“任何候选实验都无法带来足够成本改进”。4.4 一个伪代码级的最小实现我写一个概念性的伪代码。这里不绑定具体技术栈只要规划器和能力模型能接上接口就能用起来。# 伪代码能力门控规划的最小实验选择循环 capability_model CapabilityModel(priors) planner Planner(domain) for step in range(max_steps): current_cost planner.compute_cost_to_goal(capability_model.gate()) best_exp None best_gain 0 for exp in candidate_experiments: expected_cost_after 0 for outcome in sample_outcomes(exp, capability_model): updated_model capability_model.posterior(exp, outcome) new_cost planner.compute_cost_to_goal(updated_model.gate()) expected_cost_after probability(outcome) * new_cost gain current_cost - expected_cost_after - exp.cost if gain best_gain: best_gain gain best_exp exp if best_exp is None or best_gain 0: break observation execute_experiment(best_exp) capability_model.update(best_exp, observation)这段伪代码最核心的一行是current_cost - expected_cost_after - exp.cost。它把所有实验选择都转化成了“对目标成本的净收益”。和“选最大信息增益”相比这里加入了两个任务相关信号当前规划成本以及实验成本。它只是一个骨架。真实系统里能力模型可能需要用高斯过程或深度贝叶斯模型规划器可能需要用采样方法或搜索策略。但这个骨架能帮你先验证你的问题是否真的适合用 cost-to-goal 做实验选择。5. 落地时最容易被忽略的四个工程问题5.1 成本函数的质量决定一切如果 cost-to-goal 是实验选择的标尺那标尺本身如果不准后续所有步骤都会跟着偏。我见过很多系统在实验选择环节做得非常复杂但成本函数非常粗糙。比如只统计路径长度忽略了执行失败的概率忽略了能耗忽略了安全风险。结果就是系统优先测试那些“减少路径长度”的能力但真实任务里更大的开销其实是“失败后回到起点重新规划”。因此落地前要先问自己我的成本函数真的能反映最终任务代价吗如果不能先花时间修正成本函数而不是急着上能力模型。一个简单的方法是做敏感性测试把某个能力门控打开或关闭观察 cost-to-goal 的变化是否合理。如果变化方向和直觉不符说明成本函数还有问题。5.2 实验代价不能只看时间还要看资源占用和风险很多人在伪代码里把exp.cost简单写成“跑一次实验需要多长时间”。但真实系统里实验代价往往比这复杂得多。做一次物理实验可能消耗电量、磨损机械结构、占用计算资源甚至带来安全风险。这些都应该量化进实验成本。一个实验即使能显著降低预期到目标成本如果它本身可能造成高风险也需要被打折。一个替代思路是将实验成本显式建模为多维代价不仅包括时间还包括资源、风险、机会成本。如果你发现系统总是倾向于尝试高风险实验那就检查一下实验成本里是不是漏掉了风险惩罚项。5.3 能力模型要能表达“不知道”能力门控规划对能力模型的核心要求不是“预测准”而是“知道自己哪里不知道”。如果能力模型过度自信比如用少量样本就拟合出一个高置信度分布门控会过度开放规划器会规划出基于错误假设的路径。一旦在执行中失败系统需要回退到更保守的策略整体成本反而上升。解决方法包括使用贝叶斯方法做后验推断用集成模型度量不确定性或者在决策时使用置信下界。关键是要让“能力分布的高分位数”和“低分位数”对应到不同的规划选择上而不是简单取一个均值。在实际工程里我建议至少保留能力模型的一个不确定性指标。如果当前某个能力门控状态“处于边界”比如置信度在0.5附近波动那优先做这个能力的实验往往比做那些高置信度或极低置信度的实验更有价值。5.4 不要过早关闭探索通道一个很容易踩的坑是因为门控机制某些能力置信度很低规划器直接不把相关动作放进搜索空间于是系统永远不会主动去做关于该能力的实验。这就是“能力陷阱”。比如机器人认为“爬坡”能力很低门控关闭规划器规划出的所有路径都避开坡。于是它永远不会尝试爬坡能力模型也永远得不到更新规划成本长期保持高位。如果有一个实验明明可能大幅降低到目标成本但因为它被门控排除在外系统甚至不会把它列为候选实验。解决这个问题需要把“规划时的动作门控”和“实验时的探索动作”解耦。规划器在做路径搜索时可以不开门控但在实验选择列表中要保留一批“探测性实验”专门用于更新低置信能力。最简单的做法是给候选实验列表加入一个强制探索项每次有一定概率选择当前门控关闭但成本下降潜力很大的能力进行实验。这个边界很重要门控是用在执行计划里的不是用来限制实验收集的。如果把门控放到了实验选择之前整个能力探索过程就会停止流动。6. 从算法概念到通用启示什么才是好的实验选择6.1 给主动学习、AutoML和机器人数据采集带来的共同启发我越来越觉得Capability-Gated Planning 的思想并不只属于机器人和规划搜索。它其实在主动学习、AutoML、数据采集策略里都能找到对应。在主动学习中最常见的先验策略是选择模型最不确定的样本让标注人员标注。但如果你有明确的最终任务指标比如“在验证集上的F1分数”就应该把实验选择改成“哪个样本标注后最可能提升验证集表现”。这和 cost-to-goal 是同一个逻辑不是选“最不认识的样本”而是选“最能降低最终任务成本的样本”。在AutoML里也有类似现象。如果只看当前超参组合的方差可能会在某个不重要的超参上做大量实验忽略了那些能解锁整个模型结构的超参比如网络深度、学习率调度方式。把“超参搜索”当成实验选择把“模型在目标任务上的损失”当成 cost-to-goal你会发现优先级排序会明显不同。这个转变的通用表述是从“我要知道更多”变成“我要以更低成本达成任务”。前者以模型为中心后者以任务为中心。能力门控规划只是后者在机器人规划问题里的一个具体体现。6.2 适用边界这个思路不适合哪些场景它不是一个万能框架。我同样踩过很多边也见过不适合它的场景。如果成本函数本身很难定义或者成本函数严重不可观测cost-to-goal 的作用就很有限。比如开放世界里的某些目标连“代价”都说不清楚那就不应该强行套这个框架。如果实验观测无法反馈到能力模型或者能力模型严重非平稳那么每一轮更新之后之前估计的 cost-to-goal 可能迅速过期。这种情况下需要在模型里加入时间衰减或者干脆缩短规划周期否则实验选择会被陈旧信息误导。如果整个任务只需要一两次实验就能完成那优化那一次实验的选择收益不大不如用随机策略或简单启发式。全局最优的收益只有在实验次数够多、规划依赖够深的时候才会显现。所以判断是否适合用 Capability-Gated Planning可以从三个条件入手能否定义 cost-to-goal能力模型能否从实验观测中更新实验次数是否足够多到值得做全局权衡。6.3 你的下一步先跑一个有成本反馈的小实验如果你想验证这套思路我建议不要一上来就复现完整论文或搭建机器人平台。先做一个极简的网格世界实验。设定一个二维网格包含几种地形平坦、沙地、坡道。机器人在平坦地形上肯定能走但有移动速度差异在坡道上只有在能力值高于阈值时才能通过。能力值是未知的需要通过实验来估计。每次实验就是尝试走一个坡道格并观察是否成功。规划器用最简单的A*或Dijkstra代价设为走过路径的总耗时。然后对比两种实验选择策略短视信息增益选择当前能力不确定性最大的坡道做实验。成本到目标选择“做完实验后当前 cost-to-goal 下降最多”的坡道做实验。这个实验不需要多少代码量但很快就能看到两种策略的区别。短视策略可能会在两个坡道上反复试因为它们的结果最不确定成本到目标策略则会优先测试那个在关键路径上能显著缩短总耗时的坡道。你会直观地看到信息量大的实验不一定能推动任务前进。跑通这个小实验之后再把它扩展到更真实的能力模型、更复杂的机器人和更精细的成本函数就会容易很多。毕竟这个方向的真正价值不是换一个实验选择公式而是把“任务可达成本”变成决策的核心坐标系。