Deep-research subagents bottleneck on prefill — how my scraper fixes it
On a local GPU, a deep-research subagent’s first token waits on prefill — and prefill grows with every token of context it inherits. Measured below on a self-hosted Qwen3.8-27B; the fix is open source: robertziel/scrape-skill.
The before
Prefill is the wait
The prefix cache helps — when it hits
What a Hermes turn actually prefills
Inherit vs lean
How the scraper fixes it
/scrape 6 # 6 parallel workers, continuous: epochs until you type `finalise`
/scrape 6 50 # 6 workers, stop after 50 targets
Workers get a 401 B brief and the same model; records go to raw/*.jsonl, pages stay in the fetch cache, and a seen-set stops any epoch re-reading a page. Skill, install notes and MIT licence: github.com/robertziel/scrape-skill.
TL;DR: Cold prefill on a local 27B costs 22.4 s at 58.5K and 39.5 s at 87.7K tokens, and throughput falls 32% as context grows — so subagents that inherit a lead’s ~59K context spend ~22 s each just re-reading it (179 s for 8). A lean worker on a cached 18.1K prefix prefills ~1.3K fresh tokens (≈0.6 s, ~37× less); a measured lead + worker round was 96.7% cache hits. Cache hits aren’t guaranteed (1 of 2 warm 58.5K calls missed: 21.0 s), so the scraper keeps what each worker reads small and writes results to disk instead of back into the lead. → scrape-skill