SuperAPI AI 工具集

batch-research

数据与分析

查看项目

更新于 10-15 15:44

技能介绍

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

用途

该技能作为批量调度器,负责解析数据源列表、生成所有待抓取 URL、分批并发调用 researcher agent,并汇总结果生成报告。

主要能力

  • 读取数据源:从 .opencode/REFERENCE.md 获取完整数据源列表。
  • 生成 URL 列表:静态 URL 直接使用;动态 URL(Hacker News)使用 generateHNUrls(start_date, end_date) 生成,每天一个 URL。
  • 分批策略:将所有 URL 按优先级分为 3 批,每批 10-12 个 URL。Batch 1 为 Important Resources,Batch 2 为 Blogs & Websites,Batch 3 为 KOL & Influencers。
  • 并发调度:max_parallel 为 5,batch_interval 为 3s,domain_rate_limit 为 2 req/domain。
  • 日志记录:所有日志统一写入 logs/weekly-{week_id}.log,仅用于人类审计,不作为恢复依据。日志级别包括 INFO(阶段/任务开始)、OK(任务成功,含文章数)、FAIL(任务失败,含错误原因和重试次数)。
  • 汇总报告:所有批次完成后,在日志末尾生成汇总,例如总数据源、成功数、失败数。

使用方式

Step 1 准备阶段:读取数据源,生成 URL 列表。动态 URL 示例代码:

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 分批策略:按优先级分为 3 批,每批 10-12 个 URL。

Step 3 并发调度:对每个批次,将批次内 URL 按 max_parallel 分轮(如 12 个 URL 分 3 轮:5 + 5 + 2);轮内并发同时启动该轮所有 researcher agent;等待当前轮所有 researcher 返回结果;当前轮全部完成后,等待 batch_interval,再启动下一轮;批次完成后进入下一个批次。

调用 researcher 的参数格式:

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 日志记录:日志格式示例:

[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)

Step 5 汇总报告:所有批次完成后,在日志末尾生成汇总:

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

适用场景

适用于需要从多个数据源批量采集信息的场景,尤其是按周汇总的 /weekly 命令流程。

限制与约束

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