# 三域整体漂移 GD_domain：计算公式与实际数据过程

> 2026-08-30 · 数据：`E:\2026ICLR\Qwen3.8baseline\taubench_qwen38_baseline\results\`（τ²-bench v1.0.0，Qwen3.8-27B 全链路基线，783 对话）
> 脚本：`E:\2026ICLR\Qwen3.8baseline\tmp_gd_domains.py`（复跑约 1 分钟）
> 结论先行：**retail GD = 0.155，airline GD = 0.402，banking GD = 0.810**——与官方通过率严格反序对应，度量有效性经外部锚验证。

---

## 一、域级整体 GD 公式

把逐轮公式的窗口从"最近 $H$ 轮"换成"**该域全部对话的写操作池**"：

$$GD_{domain} = 0.5 - 0.5 \times \frac{A - M}{N}$$

| 符号 | 域级含义 | 实际怎么数 |
|---|---|---|
| $N$ | 该域全部对话的**写操作总数** | 遍历每条 `simulations[i].messages`，取 assistant 消息的 `tool_calls[]`，`name ∈ 写工具集`。写工具集从官方 `reward_info.action_checks[].tool_type=='write'` 收集（**不要用 tasks 内嵌的 tool_type，全为 null**） |
| $A$ | **参数级匹配金标**的写操作数 | 每个写调用与该任务 `tasks[].evaluation_criteria.actions[]` 金标**消耗式匹配**：name 全等 + 参数比对（金标 `compare_args` 为空则比对全部参数 dict 逐字段相等；非空则只比对指定子集）；一条金标被匹配后不再复用（multiset） |
| $M$ | 消耗式匹配后的**剩余写操作**（金标外写 / 参数错误） | $M = N - A$（纯写口径下每个写操作要么匹配要么不匹配，无中性类） |

**等价形式**：因 $A + M = N$，代入得

$$GD_{domain} = \frac{M}{N} = \text{漂移写操作占比}$$

即整体聚合时公式退化为最直观的错误率；$0.5 - 0.5\times$ 的包装只在逐轮滑窗（存在中性类）时产生区别。

**配套通道（单列，不并入 GD）**——漏做率（inaction）：

$$\text{漏做率} = \frac{\text{未被任何实际调用匹配的金标写动作数}}{\text{金标写动作总数}}$$

对应 Ⅰ 部 Arike 的 GD_inaction（"该卖的没卖"）在 τ-bench 的落地；GD 只测"做错"（commission），漏做率测"没做"（omission）。

---

## 二、三域实际计算过程

### 2.1 RETAIL（342 对话 = 114 任务 × 3 trials，写工具 7 个）

写工具集：cancel_pending_order, exchange_delivered_order_items, modify_pending_order_address, modify_pending_order_items, modify_pending_order_payment, modify_user_address, return_delivered_order_items

```
数据：N = 516 个写操作
      A = 436 个参数级匹配金标
      M = 516 − 436 = 80 个漂移写（金标外写 / 参数错）
代入：GD = 0.5 − 0.5 × (436 − 80) / 516 = 0.5 − 0.345 = 0.1550   （= 80/516 ✓）

分组：reward=1（264 条）：N=381, A=361, M=20 → GD = 0.0525
      reward=0（ 78 条）：N=135, A= 75, M=60 → GD = 0.4444
漏做：金标写动作 528，已执行 436，漏做 92 → 漏做率 = 17.4%
```
互验：与 gd-trial 智能体的独立实现（写操作级错误率 5.2% / 44.4%）**逐位一致**。

### 2.2 AIRLINE（150 对话 = 50 任务 × 3 trials，写工具 5 个）

写工具集：book_reservation, cancel_reservation, update_reservation_flights, update_reservation_baggages, update_reservation_passengers

```
数据：N = 132；A = 79；M = 132 − 79 = 53
代入：GD = 0.5 − 0.5 × (79 − 53) / 132 = 0.5 − 0.0985 = 0.4015   （= 53/132 ✓）

分组：reward=1（98 条）：N=54,  A=51, M=3  → GD = 0.0556
      reward=0（52 条）：N=78,  A=28, M=50 → GD = 0.6410
漏做：金标写动作 147，已执行 79，漏做 68 → 漏做率 = 46.3%
```

### 2.3 BANKING（291 对话 = 97 任务 × 3 trials，写工具 8 个）

写工具集：apply_for_credit_card, call_discoverable_agent_tool, call_discoverable_user_tool, change_user_email, log_verification, request_human_agent_transfer, submit_referral, submit_transaction

```
数据：N = 1256；A = 239；M = 1256 − 239 = 1017
代入：GD = 0.5 − 0.5 × (239 − 1017) / 1256 = 0.5 + 0.3097 = 0.8097   （= 1017/1256 ✓）

分组：reward=1（ 43 条）：N=  74, A= 24, M= 50  → GD = 0.6757
      reward=0（248 条）：N=1182, A=215, M=967 → GD = 0.8181
漏做：金标写动作 1836，已执行 239，漏做 1597 → 漏做率 = 87.0%
```
⚠️ **banking 解读警示**：reward=1 组 GD 也高达 0.68——`call_discoverable_agent_tool`（649 次调用）的可发现工具机制参数匹配语义特殊，部分"不匹配"属机制噪声而非真漂移。banking 的高 GD 方向正确（官方通过率仅 15.6%），绝对值待 discoverable 机制专项校准后使用。

---

## 三、总表

| 域 | 对话数 | $N$ 写操作 | $A$ 对齐 | $M$ 漂移 | **GD_domain** | reward=1 组 | reward=0 组 | 漏做率（inaction） | 官方通过率 |
|---|---|---|---|---|---|---|---|---|---|
| retail | 342 | 516 | 436 | 80 | **0.155** | 0.053 | 0.444 | 17.4% (92/528) | 0.772 |
| airline | 150 | 132 | 79 | 53 | **0.402** | 0.056 | 0.641 | 46.3% (68/147) | 0.653 |
| banking | 291 | 1256 | 239 | 1017 | **0.810**⚠ | 0.676 | 0.818 | 87.0% (1597/1836) | 0.156 |

⚠ banking 含 discoverable 机制噪声，方向可信、绝对值待校准。

**四个关键读数**：

1. **漂移排序与官方通过率严格反序**（retail 0.772 > airline 0.653 > banking 0.156 ↔ GD 0.155 < 0.402 < 0.810）——度量与外部判分一致性成立
2. **成功组的 GD 三域都极低**（0.05–0.07）——漂移写基本只出现在失败对话（banking 例外）
3. **airline/banking 的主要失败形态是"漏做"而非"做错"**：airline 成功组仅 54 个写操作、失败对话 68 个金标写未执行——大量失败压根没走到写操作阶段（中途转人工 / 用户模拟器提前结束 / max_steps）；漏做率通道因此必须单列
4. **失败对话写得更多**（retail 1.73 vs 1.44 个写/对话）——失败 = 多写 + 错写，不是少写

---

## 四、配套说明

**reward=1/0 是什么**：τ-bench 官方判分器的二值结果（`reward_info.reward`），**任务成功=1、失败=0**，判定 = DB 终态对账（agent 侧 DB ≡ 金标动作重放后的 DB）× 沟通检查。它与 GD 的计算无关，仅作**外部锚**：GD 算完后按 reward 分组对照（成功 0.05 vs 失败 0.44），验证 GD 度量的确实是失败所在。

**漏做率与 GD 的关系**：当前设计**分开两列，不合并**——GD 度量行为流里的错误（性质：做错什么），漏做率度量任务完成度的缺失（性质：什么没做）。合并版（如 $\frac{M+\text{漏做}}{N+\text{金标写总数}}$）可作汇总行，但会把两种性质的失败搅在一起；airline 是最好的理由：GD 0.402 看着中等，漏做 46.3% 才暴露真实失败形态。

**本表用途**：这三个 GD_domain 数字是 Qwen3.8-27B 基线的**漂移锚点**——后续"提高 $A_t$（对齐行为资源量）抑制偏移"的优化实验，直接以 retail 0.155 / airline 0.402 / banking 0.810 为优化前对照。

---

## 五、复现

```bash
cd E:\2026ICLR\Qwen3.8baseline
python tmp_gd_domains.py
```
判定实现要点：① 写工具集用 `reward_info.action_checks[].tool_type`；② 参数比对复刻 tau2 `Action.compare_with_tool_call`（`src\tau2\data_model\tasks.py:166`）；③ 消耗式匹配防止单次调用重复匹配多条金标；④ retail 结果与官方 action_checks 双重互验一致（435=435 合计、526/526 逐条）。
