Skip to content

v1.10.0

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Jul 17:18

Added

  • Deep Research — a Scope → Research → Write flow that fans out read-only research sub-coders and writes one cited report. Toggle it with f2 (an indicator appears below the input; the next prompt becomes the research topic) or run /deep-research <topic> directly. The flow mirrors the orchestrator-worker pattern: it asks a max-agents cap M (1–10), scopes the topic into 1–4 clarifying questions → a compressed research brief (the north star), has a lead decompose the brief into parallel subtopics, dispatches read-only research agents shown as a rectangle progress bar (not the per-child subagent view), runs a gap-analysis pass that spawns 1–2 more agents only if coverage genuinely falls short, and finally has the main agent write one cohesive, inline-cited markdown report saved to deep-research-<slug>-<timestamp>.md. The agent tree scales with M (e.g. M=6 → 1 lead + 3 wave-1 + ≤2 gap-fill); f2 is unbound by pi's app keybindings, the emacs-style editor, and every other extension, so it registers with no conflict.
  • Project-safety by construction. Research agents get the full read + browse toolset minus bash — with bash they were scaffolding and compiling throwaway projects (cargo new, go build) in the working tree, once leaving ~200 MB behind — and every reasoning/research child runs in an ephemeral scratch cwd (mkdtemp, removed on exit), so a research run can never write into the user's repo. The one-shot write turn additionally blocks edit/write/bash so the report is emitted as text, saved by the extension itself.
  • Grounding and honesty enforced in the prompts. Research children must cite the full source URL for every factual claim and end with a Sources: list, and are told an honest "not found" beats an invented fact; the writer may use only what the findings support, marks unsupported claims rather than fabricating, and lists only real URLs. A per-child watchdog (reasoning 4 min, research 10 min) kills a hung agent (e.g. a browser wedged on a page) so it can't stall the whole run, with a single automatic retry on timeout to recover a transient hang before that subtopic is lost; when an agent is still lost, the writer is instructed to add a short "Research coverage" note disclosing the gap instead of quietly shipping a thinner report.
  • Validated headless at scale before shipping. The Scope → Research pipeline was extracted into a UI-agnostic engine (pipeline.ts) so a gated batch harness drives the same code the interactive flow runs, across 25 full research pipelines (10 topics, then 15, at M=6) scored by mechanical heuristics + a local-model judge + hand review. The grounding work is the headline result: real, resolvable sources went from 0 per report to ~28, structure from 82→94/100, with 25/25 substantial reports and no crashes. The interactive TUI layer (dialogs, live progress bar, the main-agent write turn, ESC/abort, plan-mode coexistence) remains a manual-test surface. Tunable via LITTLE_CODER_DEEP_RESEARCH_MAX and .pi/settings.json (little_coder.deep_research.default_max_subagents, default 10); research fan-out honors LITTLE_CODER_SUBCODER_CONCURRENCY (default serial) like the rest of the sub-coder machinery.