Writer
The Writer is the paper-writing specialist. It operates in a clean, isolated session to maximize the context budget available for high-quality academic writing.
Identity
| Property | Value |
|---|---|
| LLM | Claude Opus |
| Invocation | Clean Claude Code session |
| Lifecycle | Per-section — fresh session for each major paper section |
| Context | Curated by Orchestrator — minimal, relevant only |
Clean Isolated Session
The Writer starts each major section in a fresh Claude Code session. This is not a limitation — it's a deliberate design choice.
Why fresh sessions?
Paper writing is context-hungry. A single section of a research paper — with its technical arguments, equation descriptions, related work references, and experimental details — can consume a significant portion of the context window. Starting fresh ensures the Writer has maximum context budget for the task at hand.
graph LR
O[Orchestrator] -->|"curated context"| W1[Writer Session 1<br/>Introduction]
O -->|"curated context"| W2[Writer Session 2<br/>Method]
O -->|"curated context"| W3[Writer Session 3<br/>Experiments]
O -->|"curated context"| W4[Writer Session 4<br/>Related Work]
W1 -->|"v1 draft"| D[papers/drafts/]
W2 -->|"v1 draft"| D
W3 -->|"v1 draft"| D
W4 -->|"v1 draft"| D
style O fill:#f9f0ff,stroke:#7c3aed
style W1 fill:#ede9fe,stroke:#7c3aed
style W2 fill:#ede9fe,stroke:#7c3aed
style W3 fill:#ede9fe,stroke:#7c3aed
style W4 fill:#ede9fe,stroke:#7c3aed
style D fill:#fef3c7,stroke:#d97706What It Receives
The Orchestrator curates a specific context package for each writing task:
| Input | Source | Purpose |
|---|---|---|
| Paper outline | papers/outline.md | Structure, target lengths, key claims |
| Section assignment | Orchestrator instruction | Which section to write |
| Experiment results | experiments/summary.yaml (relevant subset) | Numbers, comparisons, trends |
| Figure descriptions | papers/figures/descriptions.yaml | What each figure shows |
| Related work summaries | papers/related_work/summaries.yaml | Pre-digested by Scout |
| BibTeX entries | papers/related_work/papers.bib | Citation keys |
| Venue guidelines | Style requirements, page limits | Formatting constraints |
| Previous sections | Only if needed for coherence | Already-written sections |
The Orchestrator does the curation work
The Writer does not decide what information it needs. The Orchestrator assembles the context package based on the paper outline and the section being written. This keeps the Writer focused on writing.
What It Never Receives
| Excluded Information | Why |
|---|---|
| Raw training logs | Noise — the Writer needs results, not debugging history |
| Failed experiment details | Irrelevant unless needed for discussion section |
| Code implementation | The paper describes the method, not the code |
| Orchestrator decision history | Internal system state is not paper content |
| Other agents' reasoning | How agents arrived at results doesn't matter for the paper |
| Debugging transcripts | Never relevant to paper writing |
Contamination prevention
If the Writer receives debugging transcripts or failed experiment details, it may unconsciously frame the paper around implementation struggles rather than research contributions. Clean context produces clean writing.
Context Management
Single Session per Section
Each major section gets one fresh Writer session. If the section is large (e.g., a 4-page experiments section), it may be split into subsections across multiple sessions.
What Happens When Context Fills
If a Writer session's context fills during writing:
- The session ends naturally
- The partial draft is already on disk (
papers/drafts/) - The Orchestrator starts a new Writer session
- The new session receives the partial draft + remaining outline
- Writing continues from where it stopped
graph TD
A[Writer Session 1] -->|"context full"| B[Partial draft on disk]
B --> C[Orchestrator reads partial draft]
C --> D[Writer Session 2]
D -->|"completes section"| E[Full draft on disk]
style A fill:#fee2e2,stroke:#dc2626
style D fill:#dcfce7,stroke:#16a34a
style E fill:#fef3c7,stroke:#d97706Related Work: On-Demand Reading
The Related Work section is special because it requires detailed knowledge of many papers. The Writer handles this through a staged approach:
- Scout pre-digests papers into structured summaries (stored on disk)
- Writer receives summaries, not full papers
- If the Writer needs more detail on a specific paper, it flags this in its output
- Orchestrator dispatches Scout to fetch deeper details
- Writer receives the additional detail in a follow-up instruction
# papers/related_work/summaries.yaml (what Writer receives)
- key: "katharopoulos2020"
title: "Transformers are RNNs"
contribution: "Linear attention via kernel approximation"
relevance: "Direct baseline — our method improves on their efficiency"
venue: "ICML 2020"
- key: "sun2023retnet"
title: "Retentive Network"
contribution: "Recurrent formulation of attention with retention mechanism"
relevance: "Core inspiration — we extend their recurrence with flash attention"
venue: "arXiv 2023"Why not just give the Writer all papers?
Full papers are thousands of tokens each. A related work section may cite 30+ papers. Loading all of them would exhaust the context window before the Writer writes a single word. Pre-digested summaries are 50-100 tokens each — 30 summaries fit comfortably alongside the outline and other context.
Output
The Writer produces LaTeX files saved to papers/drafts/:
% papers/drafts/section_4_experiments.tex
\section{Experiments}
\subsection{Setup}
We evaluate our method on three standard language modeling benchmarks...
\subsection{Main Results}
Table~\ref{tab:main} summarizes our main results. Our method achieves...The Orchestrator receives a one-line summary:
"Section 4 (Experiments) draft complete. 2.5 pages, 3 tables, 2 figures referenced. Saved to papers/drafts/section_4_experiments.tex"Next
- Scout — who prepares the Writer's literature context
- Judge — who reviews the Writer's drafts
- Writing Stage — the pipeline stage where the Writer is most active