# Pi Runner Benchmark Integration

## ✅ 已完成

成功将 Pi runner 集成到 Bunny Agent 的 GAIA benchmark 系统中。

### 修改的文件

1. **packages/benchmark/src/runners/pi.ts** (新建)
   - 实现 `PiRunner` 类，继承自 `BaseRunner`
   - 使用 `bunny-agent run --runner pi` 命令
   - 支持 stream-json 输出格式
   - 提取答案的逻辑与 bunny-agent runner 相同

2. **packages/benchmark/src/types.ts**
   - 添加 `"pi"` 到 `AgentRunner` 类型

3. **packages/benchmark/src/runners/index.ts**
   - 导入并注册 `piRunner`
   - 添加到 `runners` registry

4. **packages/benchmark/src/readme-updater.ts**
   - 添加 `pi: 6` 到 `RUNNER_COLUMNS` 映射

5. **packages/benchmark/src/cli.ts**
   - 更新帮助信息，添加 "pi" 到可用 runner 列表

## 测试集说明

Bunny Agent 使用 **GAIA benchmark** 作为测试集：

### GAIA Benchmark 简介

- **来源**: Hugging Face (gaia-benchmark/GAIA)
- **类型**: 通用 AI 助手评估基准
- **难度**: 3 个级别 (Level 1, 2, 3)
- **任务类型**: 
  - files - 文件操作
  - code - 代码执行
  - search - 网络搜索
  - browser - 浏览器操作
  - reasoning - 推理任务

### 支持的 Runner

| Runner | 命令 | 状态 |
|--------|------|------|
| bunny-agent | `bunny-agent run` | ✅ 生产 |
| pi | `bunny-agent run --runner pi` | ✅ 已集成 |
| gemini-cli | `gemini` | ✅ 支持 |
| claudecode | `claude` | ✅ 支持 |
| codex-cli | `codex` | ✅ 支持 |
| opencode | `opencode` | ✅ 支持 |

### 使用方法

```bash
# 1. 下载 GAIA 数据集
cd packages/benchmark
pnpm benchmark:download

# 2. 运行 Pi runner 测试 (Level 1, 1个任务)
pnpm benchmark:run -- --runner pi --level 1 --limit 1 --verbose

# 3. 运行完整 Level 1 测试
pnpm benchmark:run -- --runner pi --level 1

# 4. 比较所有 runner 的结果
pnpm benchmark:compare
```

### 命令选项

```bash
--runner <name>      # Runner 名称: bunny-agent, pi, gemini-cli, etc.
--level <1|2|3>      # 难度级别
--limit <n>          # 限制任务数量
--random             # 随机选择任务
--task-id <id>       # 运行特定任务
--verbose            # 详细输出
--resume             # 恢复中断的测试
--dataset <name>     # validation (默认) 或 test
```

### 输出格式

测试结果保存在：
```
packages/benchmark/results/
├── pi-validation-level1.json
├── pi-validation-level2.json
├── pi-validation-level3.json
└── ...
```

每个结果文件包含：
- 任务 ID
- 问题
- 正确答案
- Agent 答案
- 是否正确
- 执行时间
- 原始输出

### 比较报告

运行 `pnpm benchmark:compare` 生成：

1. **控制台表格** - 各 runner 的准确率对比
2. **JSON 报告** - `results/comparison.json`
3. **Markdown 报告** - `results/comparison.md`

示例输出：
```
┌─────────────┬───────────┬────────────┬─────────────┬────────────┬──────────┬────┐
│   Runner    │ Level 1   │  Level 2   │   Level 3   │   Total    │  Avg     │ Pi │
├─────────────┼───────────┼────────────┼─────────────┼────────────┼──────────┼────┤
│ bunny-agent   │ 85% (34)  │ 60% (24)   │ 40% (16)    │ 62% (74)   │ 61.7%    │    │
│ pi          │ 80% (32)  │ 55% (22)   │ 35% (14)    │ 57% (68)   │ 56.7%    │ ✓  │
│ gemini-cli  │ 75% (30)  │ 50% (20)   │ 30% (12)    │ 52% (62)   │ 51.7%    │    │
└─────────────┴───────────┴────────────┴─────────────┴────────────┴──────────┴────┘
```

## 当前限制

### 开发环境问题

Pi runner 在开发环境中无法被自动检测，因为：
1. `bunny-agent` 命令未安装到全局 PATH
2. Benchmark 使用 `which bunny-agent` 检测可用性
3. 需要通过 `npx bunny-agent` 或安装到全局才能使用

### 解决方案

**方案 1: 全局安装 (推荐用于测试)**
```bash
cd apps/runner-cli
npm link
# 现在 bunny-agent 命令在 PATH 中
```

**方案 2: 修改 Pi runner 检测逻辑**
```typescript
// packages/benchmark/src/runners/pi.ts
async setup(): Promise<boolean> {
  // 检查 npx bunny-agent 是否可用
  try {
    const result = await executeCommand("npx", ["bunny-agent", "--help"], { timeout: 5000 });
    return result.exitCode === 0;
  } catch {
    return false;
  }
}
```

**方案 3: 使用 npx (修改命令)**
```typescript
// packages/benchmark/src/runners/pi.ts
readonly defaults = {
  command: "npx",
  args: ["bunny-agent", "run", "--runner", "pi", "--output-format", "stream-json", "--"],
  timeout: 300000,
};
```

## 下一步

1. **全局安装测试**
   ```bash
   cd apps/runner-cli
   npm link
   cd ../../packages/benchmark
   pnpm benchmark:run -- --runner pi --level 1 --limit 1 --verbose
   ```

2. **完整测试**
   ```bash
   # Level 1 (简单任务)
   pnpm benchmark:run -- --runner pi --level 1
   
   # Level 2 (中等任务)
   pnpm benchmark:run -- --runner pi --level 2
   
   # Level 3 (困难任务)
   pnpm benchmark:run -- --runner pi --level 3
   ```

3. **性能对比**
   ```bash
   # 运行所有 runner
   pnpm benchmark:run -- --runner bunny-agent --level 1
   pnpm benchmark:run -- --runner pi --level 1
   
   # 比较结果
   pnpm benchmark:compare
   ```

## 总结

✅ Pi runner 已完全集成到 GAIA benchmark 系统  
✅ 支持所有 benchmark 功能（level, limit, random, resume）  
✅ 输出格式与其他 runner 一致  
⚠️ 需要全局安装 `bunny-agent` 命令才能运行测试  

Pi runner 现在可以与 Claude、Gemini、Codex 等其他 agent 进行公平对比！
