Install
openclaw skills install @yxdwind/widehiveWideHive — Wide Research orchestration for AutoClaw / OpenClaw agents: fan out 100+ context-isolated sub-agents over a large target list, merge programmatically with zero LLM calls, synthesize scenario-shaped reports (financial tables / academic reviews / tech matrices). Triggers: widehive, wide research, batch research, 批量调研, 大范围调研.
openclaw skills install @yxdwind/widehiveA hive of agents for wide questions. — 把一个问题,交给一整个蜂巢。
Large task → split into N independent subtasks → each subtask handled by one context-isolated sub-agent in parallel → merge with code (not LLM) → synthesize the final report with the main model.
Use this when a research task has ≥ 20 target objects (papers, companies, repos, products…). With fewer than ~10 objects, just do the task directly in the main session — the orchestration overhead is not worth it.
LLMs start "slacking off" once their output fills 20–50% of the context window: they skip sentences, compress, paraphrase. WideHive sidesteps this with divide-and-conquer: each sub-agent gets a tiny isolated context, so every output stays short and faithful; the merge step is pure code, so aggregation adds zero hallucination.
Credit: the strategy follows Manus Wide Research, and the divide-merge pattern
is validated by the open-source codex_wide_research experiment (53/53 blog
posts summarized with zero hallucinations, where single-context baselines
covered only 12–20 before stalling).
scripts/merge_results.py; zero LLM calls in the
merge stage.result/<slug>.json is the checkpoint — resume
only what is missing, never redo finished objects.widehive/<run_id>/ under the workspace (scratch/test runs may live in a
tmp directory instead):
plan.json — scenario, field template, batch_size, max_output_words, max_retries, output_form; watch runs add mode and a watch block (see Watch mode)targets.json — object list (slug, name, url/identifier, source hint)result/<slug>.json — one file per object, written by the workermerged.csv / merged.json — programmatic merge outputreport.* — final deliverablesfinancial / academic / tech / custom (infer from the
task; ask one question if unsure).plan.json: scenario, fields (default per scenario, see below),
batch_size (default 10), max_output_words (default 400), max_retries
(default 2), output_form.targets.json.result/ files → skip finished objects (checkpoint resume).batch_size, using your platform's sub-agent
spawning (AutoClaw / OpenClaw: sessions_spawn, isolated one-shot). Label:
WideHive·<scenario>·<NN>. Waiting is push-based — end the turn and
handle completion events; report progress briefly between waves.max_retries rounds; still-failing objects
are disclosed as skipped in the final report.Worker prompt template (dispatch in the user's language):
You are a Wide Research single-object worker. Handle ONLY this one object;
do not expand scope.
Object: <name> (<url or unique identifier>)
Task:
1. Fetch first-hand info about this object. Prefer official / authoritative
sources. Use the best web tool available on this platform (dedicated
web-open tools first, built-in web fetch as fallback). At most 3
searches/fetches.
2. Extract strictly per the field template. If a value cannot be verified,
write null — never guess:
<field list>
3. Write the result with the file-write tool to:
<absolute path>/result/<slug>.json (UTF-8), structure:
{"target":"<name>","fields":{...},"sources":[{"title":"...","url":"..."}],
"fetched_at":"<today's date>"}
4. If no file-write tool is available, return the same JSON verbatim as your
final output.
No long prose. Write the file and finish.
python <skill_dir>/scripts/merge_results.py --run-dir <run_dir>
result/*.json → merged.csv + merged.json; validates required
fields, URL format, and field length; prints a JSON verdict report
(total_targets / ok / defects / missing_files / verdict).verdict: NEEDS_RETRY → queue defective objects back to Stage 3.merged.json (do not re-read raw pages), spot-check 2–3 objects against
their sources.financial: CSV/Excel metric table first + compact comparison reportacademic: single-page clickable HTML review (taxonomy + per-object
traceable summaries with source links)tech: comparison table + analysis report (decision matrix + reasoning)custom: agree on the shape with the userresult/ directory alongside the report — per-object results
are never truncated, always verifiable.A one-shot run answers a question once. Watch mode turns a target list into a continuously monitored feed: on a schedule, diff against the previous run, re-fan-out only what changed, and emit a change report.
Enable it in plan.json:
{
"mode": "watch",
"watch": {
"baseline_run": "widehive/<previous_run_id>",
"compare_fields": ["revenue", "gross_margin", "latest_version"],
"schedule": "0 9 * * 1"
}
}
schedule is informational — the platform cron job owns timing; keep it
human-readable. The scheduled run flow, triggered by a cron job whose prompt is
"Run WideHive watch run <run_id>":
python <skill_dir>/scripts/diff_results.py --baseline <prev_run_dir> --current <cur_run_dir>result/*.json forward from the
baseline run so the merge covers the full list, then merge and produce a
change report: what changed, per field, with sources.Politeness: schedule no faster than the target sources actually update; add jitter; respect robots and ToS. A watch that hammers its sources gets blocked — and burns trust for the skill, the user, and the wider ecosystem.
An object is not always a web page. The fetch ladder extends to:
Worker prompts stay narrow: tell the worker which modality the object is and
which tool tier to try first, exactly as with fetching. If a modality cannot
be processed on the current platform, write the object with
"error":"unsupported_modality" instead of silently dropping it.
Every finished run is knowledge. Before answering any question about already-researched objects, query the corpus — do not re-fan-out and do not re-search.
Build / refresh (after every Stage 5 and every watch run):
python <skill_dir>/scripts/build_corpus.py --runs-root <workspace>/widehive --out <workspace>/widehive-corpus
Query rules for the main session:
corpus.jsonl / corpus-index.json; cite the run_id
and fetched_at of every figure.Optional Stage 5 add-on: turn merged.json into a self-contained interactive
dashboard — search, sort, per-object drill-down with sources, numeric bar
charts — no external dependencies, double-click to open:
python <skill_dir>/scripts/build_dashboard.py --merged <run_dir>/merged.json --out <run_dir>/dashboard.html
For non-technical initiators, targets and results can move through tables:
targets.json at Stage 1 and show
the parsed list for confirmation as usual.merged.csv rows back to the intake
table as new columns prefixed wh_ (or a companion sheet/table); never
overwrite user-owned columns.financial: name, ticker, revenue, net_profit, gross_margin, yoy, key_segments, risks, source_urlsacademic: title, authors, year, venue, research_question, method, findings, limitations, urltech: name, owner, positioning, latest_version, stars, license, activity, pros, cons, urlbatch_size=10; for 100+ objects ramp 5→10→15 first to probe how
many concurrent sub-agents the platform tolerates, then go full width.result/.Work the fallback ladder in order; stop at the first success and record which rung was used:
max_retries rounds.{"fields":{...},"error":"fetch_failed"} so the merge script accounts
for it.Track retry rounds in the run dir (retry-queue.json; optional but
recommended for large fan-outs). Stage 4 is done only when every object
converged or every skip is disclosed.
sessions_spawn or
equivalent) with file read/write tools for workers.../adapters/README.md
for per-harness mappings (OpenClaw, Claude Code, codex CLI).