docs: add retriever to the architecture diagram #13

Merged
schaefera merged 1 commit from docs/update-architecture-diagram into master 2026-08-19 15:54:58 +00:00

View file

@ -27,22 +27,27 @@ failure was fixed, not just papered over.
## Architecture ## Architecture
Four small agents, each with one job, coordinated by plain Rust control 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: flow — not a framework's agent graph, not an LLM deciding when to stop —
plus an optional retrieval step when `--doc` documents are supplied:
``` ```
┌─────────────┐ approve/reject ┌──────────┐ ┌────────────┐ excerpts ┌─────────────┐ approve/reject ┌──────────┐
│ researcher │ ───────────────► │ reviewer │ │ retriever │ ───────────► │ researcher │ ───────────────► │ reviewer │
│ (tool-using)│ ◄─────────────── │ │ │(--doc only)│ │ (tool-using)│ ◄─────────────── │ │
└──────┬──────┘ gaps/feedback └────┬─────┘ └────────────┘ └──────┬──────┘ gaps/feedback └────┬─────┘
│ turn budget exhausted │ approved, │ turn budget exhausted │ approved,
│ mid-investigation │ or out of rounds │ mid-investigation │ or out of rounds
▼ ▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ summarizer │──findings───►│ writer │──► report │ summarizer │──findings───►│ writer │──► report
│ (recovery) │ │ │ │ (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 - **researcher** — a tool-calling agent (`search_web`, `fetch_page`) that
gathers and cross-checks evidence, capped at a fixed model-call budget so gathers and cross-checks evidence, capped at a fixed model-call budget so
a confused model can't loop forever. a confused model can't loop forever.