Writer
身份
| 属性 | 值 |
|---|---|
| LLM | Claude Opus |
| 生命周期 | 按需调用 |
| 角色 | 学术论文写手 — 只写,不决策 |
Writer 是唯一对"干净上下文"有刚性需求的 Agent。它在独立的 session 中运行,不继承编排器可能已经很拥挤的 context。这个设计直接影响输出质量。
什么时候被调用
| 阶段 | 任务 |
|---|---|
| 写作 (Writing) | 按章节写论文正文 |
| 审稿修改 (Review) | 根据审稿意见修改论文 |
| 任意阶段 | 编排器需要一段高质量的学术文字(如 rebuttal) |
收到什么
编排器精心筛选后传递的信息:
- Research Contract — 研究目标和 claim
- 论文大纲 — Planner 产出的结构
- 实验结果精简版 — 关键数字和图表,不是完整的训练日志
- 写作指令 — 要写哪个章节、风格要求、长度要求
- 参考文献列表 — Scout 收集的相关论文
不收到什么
干净上下文原则
Writer 不收到以下信息(即使它们在编排器的 context 里):
- 代码 diff 和调试日志
- 训练的 loss 曲线原始数据
- 之前的对话历史
- 其他 Agent 的中间产出
- 编排器的决策推理过程
这不是信息限制,而是质量保证。LLM 的写作质量和 context 中无关信息的数量成反比。
输出什么
论文章节
每次调用通常写一个章节。输出直接写到 paper/sections/ 目录:
paper/sections/
├── abstract.tex
├── introduction.tex
├── related-work.tex
├── method.tex
├── experiments.tex
├── conclusion.tex
└── appendix.tex返回给编排器的
一行摘要,例如:
Writer: Introduction 完成(约 1200 词),重点突出了 fine-grained 领域的特征解耦问题。不做什么
Writer 的边界
- 不做实验分析 — 不解读数字意味着什么,只用编排器提供的结论来写
- 不参与研究决策 — 不决定做什么实验、用什么方法
- 不搜文献 — 只使用 Scout 提供的参考文献
- 不设计图表 — 只在文中描述图表、引用图表编号
- 不修改实验结果 — 如实呈现编排器提供的数据
写作流程
mermaid
sequenceDiagram
participant O as 编排器
participant W as Writer(干净 context)
participant D as 磁盘
O->>O: 准备精简写作包
Note over O: Contract + 大纲 + 关键结果 + 指令
O->>W: 传递写作包
W->>W: 在干净 context 中写作
W->>D: 写入 paper/sections/xxx.tex
W->>O: 一行摘要
O->>O: 决定是否需要修改特殊规则
干净 context 是硬要求
不是"最好有",而是"必须有"。如果编排器的 context 已经很满,必须开新 session 给 Writer,不能在当前 context 中让 Writer 写论文。
章节独立性
每个章节独立写作。Writer 写 Method 章节时不需要已完成的 Introduction 在 context 里 — 它只需要大纲和 Contract。如果需要引用前面章节的内容,从磁盘读取。
审稿修改模式
收到审稿意见后的修改流程有所不同:
mermaid
graph TB
R[审稿意见] --> O[编排器分析]
O --> P[Planner 分类意见]
P --> |逐条| W[Writer 修改]
W --> D[diff 格式输出]
D --> J[Judge 审查修改]修改时 Writer 收到的是:
- 原文
- 审稿意见(逐条)
- 编排器对每条意见的回应策略
Writer 以 diff 格式输出修改,方便追踪什么变了。