Install any skill in seconds. Free to start, no credit card required.
Get Started Free →批量数据采集技能,负责分批并发调度 researcher agent 抓取所有数据源。
.claude/skills/miantiao-me-batch-research/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -16% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 26% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 42% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 4% | 0% |
此技能用于指导 /weekly 命令如何高效、分批、并发地从多个数据源采集信息。
作为批量调度器,负责:
researcher agent.opencode/REFERENCE.md 获取完整数据源列表generateHNUrls(start_date, end_date)javascriptimport { 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", // ... // ]
将所有 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" 部分 |
| 参数 | 值 | 说明 | | ------------------- | ------------ | -------------- | | max_parallel | 5 | 每轮最大并发数 | | batch_interval | 3s | 批次间等待时间 | | domain_rate_limit | 2 req/domain | 同域名限流 |
对每个批次:
max_parallel 分轮(如 12 个 URL 分 3 轮:5 + 5 + 2)researcher agentbatch_interval,再启动下一轮调用 researcher 的参数格式:
yamlurl: 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 全部完成所有日志统一写入 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 | 任务失败(含错误原因和重试次数) |
所有批次完成后,在日志末尾生成汇总:
[2026-03-25T12:45:00Z] [PHASE1] [SUMMARY] 总数据源: 30 | 成功: 27 (X篇) | 失败: 3| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 13,571 | 6,361 | -53% | 1 | 1 | 0% | 2,575 | 1,891 | -27% | 0 | 0 | — |
case-02 | fail→fail | 20,623 | 8,954 | -57% | 1 | 1 | 0% | 3,834 | 1,857 | -52% | 0 | 0 | — |
case-03 | fail→fail | 14,486 | 13,934 | -4% | 1 | 1 | 0% | 2,347 | 4,487 | +91% | 0 | 0 | — |
case-04 | fail→pass | 14,213 | 3,730 | -74% | 1 | 1 | 0% | 2,724 | 2,286 | -16% | 0 | 0 | — |
case-05 | fail→pass | 12,111 | 2,332 | -81% | 1 | 1 | 0% | 2,024 | 1,931 | -5% | 0 | 0 | — |
case-06 | fail→pass | 8,088 | 1,461 | -82% | 1 | 1 | 0% | 1,329 | 1,677 | +26% | 0 | 0 | — |
case-07 | fail→pass | 8,109 | 1,753 | -78% | 1 | 1 | 0% | 1,259 | 1,789 | +42% | 0 | 0 | — |
case-08 | fail→pass | 12,351 | 2,491 | -80% | 1 | 1 | 0% | 1,796 | 1,870 | +4% | 0 | 0 | — |
case-09 | fail→pass | 12,358 | 2,156 | -83% | 1 | 1 | 0% | 2,116 | 1,792 | -15% | 0 | 0 | — |
case-19 | fail→pass | 10,071 | 5,279 | -48% | 1 | 1 | 0% | 1,605 | 2,378 | +48% | 0 | 0 | — |
case-10 | fail→pass | 12,066 | 2,242 | -81% | 1 | 1 | 0% | 1,865 | 1,842 | -1% | 0 | 0 | — |
case-11 | fail→pass | 11,692 | 4,366 | -63% | 1 | 1 | 0% | 2,041 | 1,780 | -13% | 0 | 0 | — |
case-12 | fail→pass | 8,418 | 1,769 | -79% | 1 | 1 | 0% | 1,369 | 1,774 | +30% | 0 | 0 | — |
case-13 | fail→pass | 7,276 | 2,288 | -69% | 1 | 1 | 0% | 1,329 | 1,906 | +43% | 0 | 0 | — |
case-14 | fail→pass | 11,157 | 4,287 | -62% | 1 | 1 | 0% | 2,091 | 2,298 | +10% | 0 | 0 | — |
case-15 | fail→pass | 11,729 | 3,784 | -68% | 1 | 1 | 0% | 2,197 | 2,184 | -1% | 0 | 0 | — |
case-16 | fail→pass | 4,905 | 4,044 | -18% | 1 | 1 | 0% | 1,029 | 2,340 | +127% | 0 | 0 | — |
case-17 | pass→pass | 14,086 | 6,789 | -52% | 1 | 1 | 0% | 2,184 | 2,620 | +20% | 0 | 0 | — |
case-18 | pass→pass | 8,914 | 3,897 | -56% | 1 | 1 | 0% | 1,379 | 2,122 | +54% | 0 | 0 | — |
case-20 | pass→pass | 12,243 | 11,996 | -2% | 1 | 1 | 0% | 2,100 | 3,531 | +68% | 0 | 0 | — |
case-21 | pass→pass | 17,870 | 18,538 | +4% | 1 | 1 | 0% | 2,961 | 4,560 | +54% | 0 | 0 | — |
case-22 | pass→pass | 7,126 | 9,602 | +35% | 1 | 1 | 0% | 1,202 | 3,154 | +162% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +64 percentage points is the difference between those two pass rates over the 21 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.