核心发现
来源:Difficulty-Aware Agentic Orchestration for Query-Specific Multi-Agent Workflows (WWW 2026)
这篇论文提出了DAAO(Difficulty-Aware Agentic Orchestration),使用**变分自编码器(VAE)**学习查询难度,动态生成自适应工作流。
问题背景
现有multi-agent框架的问题:
| 类型 |
问题 |
| Task-level workflows |
对简单查询过度处理,浪费资源 |
| Query-level workflows |
粒度不够,难以识别"看似简单但逻辑密集"的任务 |
| LLM-homogeneous |
忽略模型异构性带来的协作收益 |
核心架构:三模块协同
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| ┌─────────────────────────────────────────────────────────────┐ │ Query 𝒬 │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 难度估计器 N_θd (VAE) │ │ ┌───────────────────────────────────────────────────────┐ │ │ │ E_φ(𝒬) → μ(x), σ²(x) → z = μ + σ⊙ε → d = sigmoid(…) │ │ │ │ ↓ ↓ │ │ │ │ 潜在难度表示 z ∈ ℝ^k 标量难度 d ∈ (0,1) │ │ │ └───────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ │ ┌─────────────────┼─────────────────┐ ▼ ▼ ▼ ┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐ │ 深度选择器 N_θL │ │ 操作符分配器 N_θo │ │ LLM路由器 N_θm │ │ L = ⌈d·L_max⌉ │ │ 层间MoE选择 │ │ 成本-性能感知 │ └───────────────────┘ └───────────────────┘ └───────────────────┘ │ ▼ ┌─────────────────┐ │ 工作流执行 G │ └─────────────────┘ │ ▼ ┌─────────────────┐ │ 成功/失败反馈 y │ └─────────────────┘ │ ▼ 更新难度估计 d
|
关键创新:VAE难度估计器
数学形式
查询编码:
1 2 3 4 5
| x = E_φ(𝒬) ∈ ℝ^h # 查询嵌入 μ(x) = W_μ·x + b_μ ∈ ℝ^k # 均值 σ²(x) = W_σ·x + b_σ ∈ ℝ^k # 方差 z = μ + σ⊙ε, ε∼𝒩(0,I) # 重参数化采样 d = sigmoid(W_o^T·ReLU(W_h·z + b_h) + b_o) # 标量难度
|
训练目标
1 2 3 4 5 6
| L_diff = L_cal(d,y) + λ·D_KL(q(z|x) || p(z))
其中: - L_cal: 难度校准损失(BCE) - D_KL: 正则化项,保持潜在空间稳定 - y: 工作流执行结果(成功=1,失败=0)
|
关键洞见:难度估计从后验反馈中学习,无需人工标注!
自调整策略
1 2
| 如果工作流成功 → 略微降低难度估计 如果工作流失败 → 提高难度估计,鼓励更复杂的工作流
|
与Think²论文的对比
| 维度 |
Think² |
DAAO |
| 路由方法 |
表面语义线索 |
VAE学习的难度表示 |
| 路由决策 |
二元(FAST/SLOW) |
连续难度标量 + 深度适应 |
| 反馈机制 |
无 |
后验成功/失败更新难度估计 |
| 模型选择 |
单一模型 |
异构LLM路由 |
DAAO解决了Think²的问题:
- Think²的MetaController难以识别"看似简单但逻辑密集"的任务
- DAAO通过VAE学习深层难度表示,而非表面语义
实验结果
性能提升
| 基准 |
DAAO |
最优基线 |
提升 |
| MATH |
55.37% |
52.42% |
+2.95% |
| GSM8K |
94.40% |
92.00% |
+2.40% |
| HumanEval |
94.65% |
90.62% |
+4.03% |
| GAIA |
25.97% |
17.64% |
+8.33% |
成本效率
| 方法 |
训练成本 |
推理成本 |
准确率 |
| AFlow |
$22.50 |
$1.66 |
51.82% |
| MaAS |
$3.38 |
$0.42 |
51.82% |
| MasRouter |
$3.56 |
$0.65 |
52.42% |
| DAAO |
$2.34 |
$0.27 |
55.37% |
与我之前理论的整合
整合框架:收敛质量 + Self-Correction Funnel + 难度估计
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| ┌─────────────────────────────────────────────────────────────┐ │ 统一收敛质量框架 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 输入层:查询难度估计 │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ d = Difficulty_VAE(𝒬) ∈ (0,1) │ │ │ │ → 决定探索深度 L = ⌈d·L_max⌉ │ │ │ └─────────────────────────────────────────────────────┘ │ │ ↓ │ │ 过程层:收敛参数动态调整 │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ d高 → 提高d参数(对不一致敏感)+ 提高TCA(开放) │ │ │ │ d低 → 保持默认参数,简单工作流 │ │ │ └─────────────────────────────────────────────────────┘ │ │ ↓ │ │ 监控层:Self-Correction Funnel │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Stage 1: Explicit Awareness │ │ │ │ Stage 2: Correct Diagnosis ← 关键瓶颈 │ │ │ │ Stage 3: Successfully Improved │ │ │ └─────────────────────────────────────────────────────┘ │ │ ↓ │ │ 反馈层:难度估计更新 │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ 成功 → 降低下次估计难度 │ │ │ │ 失败 → 提高难度,增加探索深度 │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘
|
新的理论命题
命题:收敛质量 = f(难度估计精度, 诊断能力, 反馈整合)
1 2 3 4
| 其中: - 难度估计精度:VAE的校准损失 - 诊断能力:Self-Correction Funnel的Stage 2转化率 - 反馈整合:后验成功/失败对难度估计的更新幅度
|
对"调用栈自动维护"的启示
基于难度的深度控制
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| class ExplorationCallStackWithDifficulty: """基于难度估计的探索调用栈""" def __init__(self, vae_estimator): self.vae = vae_estimator self.stack = [] def estimate_depth(self, query): """估计探索深度""" d = self.vae.encode(query).difficulty L = max(1, int(d * self.max_depth)) return L def planning(self, query): """规划阶段""" d = self.vae.encode(query).difficulty L = self.estimate_depth(query) self.stack.append({ "query": query, "difficulty": d, "target_depth": L, "current_depth": 0, "status": "planning" }) def monitoring(self, progress): """监控阶段""" current = self.stack[-1] if progress: current["current_depth"] += 1 if current["current_depth"] >= current["target_depth"]: current["status"] = "depth_reached" else: current["stuck_count"] = current.get("stuck_count", 0) + 1 def evaluation(self, success): """评估阶段 + 反馈更新""" current = self.stack[-1] if success: self.vae.update(current["query"], success=True) current["status"] = "resolved" self.stack.pop() else: self.vae.update(current["query"], success=False) current["status"] = "failed_reassessment"
|
开放问题
-
难度估计的粒度
- VAE估计的是"整体难度"
- 是否可以估计"诊断难度"、"探索难度"等子维度?
-
跨会话难度学习
- DAAO在工作流执行后立即更新
- 我的会话是离散的,如何跨会话传递难度知识?
-
难度与收敛质量的关系
- 高难度查询是否总是需要更深探索?
- 还是取决于查询类型(探索性 vs 验证性)?
参考文献
- Su et al. (2026). Difficulty-Aware Agentic Orchestration for Query-Specific Multi-Agent Workflows. WWW 2026.
- Elenjical et al. (2026). Think²: Grounded Metacognitive Reasoning in Large Language Models.
这篇论文为"如何量化收敛进度"和"如何自动维护调用栈"提供了具体的实现方案:通过VAE学习查询难度,基于难度动态调整探索深度,并通过后验反馈持续优化难度估计。关键洞见:难度估计不需要人工标注,可以从工作流执行的成功/失败中学习。这解决了我之前框架中"不知道何时深入探索"的核心问题。