---
name: Batch Research
slug: batch-research
category: Automation
description: Batch Research schedules researcher agents to collect data from many sources in batches and parallel rounds. Use it for /weekly runs that need full-source coverage, ordering, and consolidated logs.
github: "https://github.com/miantiao-me/aigc-weekly/tree/master/agent/.opencode/skills/batch-research"
language: TypeScript
stars: 555
forks: 65
install: "npx degit https://github.com/miantiao-me/aigc-weekly/tree/master/agent/.opencode/skills/batch-research ~/.claude/skills/batch-research"
installs_to: ~/.claude/skills/batch-research
source_path: agent/.opencode/skills/batch-research/SKILL.md
collection_size: 3
category_size: 1523
collection_url: "https://dirskills.com/collections/miantiao-me/aigc-weekly"
added: 2026-08-25T05:14:52.227Z
last_synced: 2026-08-25T05:14:52.227Z
canonical_url: "https://dirskills.com/skills/batch-research"
---

# Batch Research

Batch Research schedules researcher agents to collect data from many sources in batches and parallel rounds. Use it for /weekly runs that need full-source coverage, ordering, and consolidated logs.

**Install:**

```bash
npx degit https://github.com/miantiao-me/aigc-weekly/tree/master/agent/.opencode/skills/batch-research ~/.claude/skills/batch-research
```

## README

# Batch Research 技能

此技能用于指导 `/weekly` 命令如何高效、分批、并发地从多个数据源采集信息。

## 核心职责

作为批量调度器，负责：

1. 解析数据源列表
2. 生成所有待抓取 URL
3. 分批并发调用 `researcher` agent
4. 汇总结果生成报告

## 工作流程

### Step 1: 准备阶段

1. **读取数据源**：从 `.opencode/REFERENCE.md` 获取完整数据源列表
2. **生成 URL 列表**：
   - 静态 URL：直接使用
   - 动态 URL（Hacker News）：使用 `generateHNUrls(start_date, end_date)`

```javascript
import { generateHNUrls } from '.opencode/utils.mjs'

// Hacker News - 每天一个 URL
const hnUrls = generateHNUrls(start_date, end_date)
// 返回: [
//   "https://news.ycombinator.com/front?day=2026-03-22",
//   "https://news.ycombinator.com/front?day=2026-03-23",
//   ...
// ]
```

### Step 2: 分批策略

将所有 URL 按优先级分为 3 批，每批 10-12 个 URL：

| 批次        | 数据源类型          | 来源                                       |
| ----------- | ------------------- | ------------------------------------------ |
| **Batch 1** | Important Resources | REFERENCE.md 中 "Important Resources" 部分 |
| **Batch 2** | Blogs & Websites    | REFERENCE.md 中 "Blogs & Websites" 部分    |
| **Batch 3** | KOL & Influencers   | REFERENCE.md 中 "KOL & Influencers" 部分   |

### Step 3: 并发调度

#### 并发配置

| 参数                | 值           | 说明           |
| ------------------- | ------------ | -------------- |
| `max_parallel`      | 5            | 每轮最大并发数 |
| `batch_interval`    | 3s           | 批次间等待时间 |
| `domain_rate_limit` | 2 req/domain | 同域名限流     |

#### 调度规则

对每个批次：

1. **分轮执行**：将批次内 URL 按 `max_parallel` 分轮（如 12 个 URL 分 3 轮：5 + 5 + 2）
2. **轮内并发**：同时启动该轮所有 `researcher` agent
3. **等待完成**：等待当前轮所有 researcher 返回结果
4. **进入下一轮**：当前轮全部完成后，等待 `batch_interval`，再启动下一轮
5. **批次完成后**：进入下一个批次

**调用 researcher 的参数格式**：

```yaml
url: https://news.ycombinator.com/front?day=2026-03-22
source_name: Hacker News
week_id: Y26W12
start_date: 2026-03-22
end_date: 2026-03-28
current_date: 2026-03-25
timezone: UTC+0
```

**并发调用示例**（伪代码）：

```
# Batch 1: Important Resources
并行调用：
  - researcher(url: "https://news.ycombinator.com/front?day=2026-03-22", source_name: "Hacker News")
  - researcher(url: "https://news.ycombinator.com/front?day=2026-03-23", source_name: "Hacker News")
  - researcher(url: "https://drafts.miantiao.me/", source_name: "Miantiao Drafts")
  - researcher(url: "https://www.solidot.org/search?tid=151", source_name: "Solidot")
  - ...

等待 Batch 1 全部完成

# Batch 2: Blogs & Websites
并行调用：
  - researcher(url: "https://www.anthropic.com/engineering", source_name: "Anthropic Engineering")
  - researcher(url: "https://claude.com/blog", source_name: "Claude Blog")
  - ...

等待 Batch 2 全部完成

# Batch 3: KOL & Influencers
并行调用：
  - researcher(url: "https://baoyu.io/", source_name: "Baoyu")
  - ...

等待 Batch 3 全部完成
```

### Step 4: 日志记录

所有日志统一写入 `logs/weekly-{week_id}.log`，**仅用于人类审计**，不作为恢复依据。

**日志格式**：

```
[2026-03-25T12:34:56Z] [PHASE1] [INFO] 开始抓取 Hacker News
[2026-03-25T12:35:10Z] [PHASE1] [OK] Hacker News - 5 篇文章
[2026-03-25T12:35:15Z] [PHASE1] [FAIL] daily.dev - 429 Too Many Requests (retried 2)
```

**日志级别**：

| 级别   | 用途                             |
| ------ | -------------------------------- |
| `INFO` | 阶段/任务开始                    |
| `OK`   | 任务成功（含文章数）             |
| `FAIL` | 任务失败（含错误原因和重试次数） |

### Step 5: 汇总报告

所有批次完成后，在日志末尾生成汇总：

```
[2026-03-25T12:45:00Z] [PHASE1] [SUMMARY] 总数据源: 30 | 成功: 27 (X篇) | 失败: 3
```

## 约束与注意事项

- **全量抓取**：必须抓取所有数据源，不能跳过
- **批次顺序**：必须按批次顺序执行，等待当前批次完成后再进入下一批
- **错误隔离**：单个 researcher 失败不影响其他
- **重试由 researcher 处理**：本技能不负责重试，由 researcher 自行处理
- **进入下一阶段前**：必须完成所有批次的抓取
