Compare commits

..

No commits in common. "master" and "worktree-deep-research-max-turns-report" have entirely different histories.

View file

@ -27,27 +27,22 @@ failure was fixed, not just papered over.
## Architecture
Four small agents, each with one job, coordinated by plain Rust control
flow — not a framework's agent graph, not an LLM deciding when to stop —
plus an optional retrieval step when `--doc` documents are supplied:
flow — not a framework's agent graph, not an LLM deciding when to stop:
```
┌────────────┐ excerpts ┌─────────────┐ approve/reject ┌──────────┐
│ retriever │ ───────────► │ researcher │ ───────────────► │ reviewer │
│(--doc only)│ │ (tool-using)│ ◄─────────────── │ │
└────────────┘ └──────┬──────┘ gaps/feedback └────┬─────┘
│ turn budget exhausted │ approved,
│ mid-investigation │ or out of rounds
▼ ▼
┌──────────────┐ ┌──────────────┐
│ summarizer │──findings───►│ writer │──► report
│ (recovery) │ │ │
└──────────────┘ └──────────────┘
┌─────────────┐ approve/reject ┌──────────┐
│ researcher │ ───────────────► │ reviewer │
│ (tool-using)│ ◄─────────────── │ │
└──────┬──────┘ gaps/feedback └────┬─────┘
│ turn budget exhausted │ approved,
│ mid-investigation │ or out of rounds
▼ ▼
┌──────────────┐ ┌──────────────┐
│ summarizer │──findings───►│ writer │──► report
│ (recovery) │ │ │
└──────────────┘ └──────────────┘
```
- **retriever** (only when `--doc` paths are given) — chunks and embeds
user-supplied documents with a dedicated embedding model, then retrieves
the excerpts most relevant to the topic once up front and folds them into
the researcher's task, cited with the same footnote scheme as web sources.
- **researcher** — a tool-calling agent (`search_web`, `fetch_page`) that
gathers and cross-checks evidence, capped at a fixed model-call budget so
a confused model can't loop forever.