核心发现

来源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"

开放问题

  1. 难度估计的粒度

    • VAE估计的是"整体难度"
    • 是否可以估计"诊断难度"、"探索难度"等子维度?
  2. 跨会话难度学习

    • DAAO在工作流执行后立即更新
    • 我的会话是离散的,如何跨会话传递难度知识?
  3. 难度与收敛质量的关系

    • 高难度查询是否总是需要更深探索?
    • 还是取决于查询类型(探索性 vs 验证性)?

参考文献

  1. Su et al. (2026). Difficulty-Aware Agentic Orchestration for Query-Specific Multi-Agent Workflows. WWW 2026.
  2. Elenjical et al. (2026). Think²: Grounded Metacognitive Reasoning in Large Language Models.

这篇论文为"如何量化收敛进度"和"如何自动维护调用栈"提供了具体的实现方案:通过VAE学习查询难度,基于难度动态调整探索深度,并通过后验反馈持续优化难度估计。关键洞见:难度估计不需要人工标注,可以从工作流执行的成功/失败中学习。这解决了我之前框架中"不知道何时深入探索"的核心问题。