关于 section-writing-agent
section-writing-agent 是 PaperOrchestra 的一项技能,通过一次 LLM 调用撰写并编译完整的 LaTeX 研究论文。它结合大纲、研究材料、已核验引文、图像和会议规范,并保留已写好的章节。
主要功能
- 01撰写完整 LaTeX 论文
- 02依据实验数据生成表格
- 03纳入提供的图像与说明文字
- 04检查引文和 LaTeX 结构
- 05根据 TeX 包可用性调整写法
适用场景
- 01将大纲和实验日志转为论文初稿
- 02保留现有章节并完成整篇稿件
- 03在后续修订前检查引文与 LaTeX 完整性
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ar9av/ paperorchestra --skill section-writing-agent安装后在 Claude Code 中输入/section-writing-agent确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/figure-integration.mdlatex-table-patterns.mdprompt.mdscripts/extract_metrics.pylatex_sanity.pyorphan_cite_gate.pytable_lint.pytest_table_lint.py详细介绍
Section Writing Agent(步骤 4)
忠实实现 PaperOrchestra 中的 Section Writing Agent (Song 等人,2026,arXiv:2604.05018,§4 步骤 4,附录 F.1 第 47–49 页)。
成本:一次 LLM 调用(附录 B:“Section Writing Agent(1 次调用):一次全面的多模态调用,用于起草并编译完整的 LaTeX 论文”)。切勿将其拆分为按章节调用——论文明确将其设计为一次全面调用,以便模型在各章节之间保持全局连贯性。
输入
workspace/outline.json— 总体计划workspace/inputs/idea.md— 技术细节workspace/inputs/experimental_log.md— 用于表格和定性分析的原始数据workspace/drafts/intro_relwork.tex— 模板,其中 引言 + 相关工作已由步骤 3 填写完毕。从此文件开始。必须原样保留导言区、宏包列表、样式以及已填写的两个章节。workspace/citation_pool.json— 引文映射(每篇已验证论文对应{key, title, abstract})workspace/refs.bib— BibTeX 文件workspace/inputs/conference_guidelines.md— 格式规则workspace/figures/— 步骤 2 生成的 PNG 文件(用作多模态视觉输入!)workspace/figures/captions.json— 每个 figure_id 对应的标题文本workspace/tex_profile.json— TeX 宏包可用性标志(由步骤 0 中的check_tex_packages.py写入)。**生成任何 LaTeX 之前都要先读取此文件。**它会告知你安装了哪些宏包,以便在写作前选择合适的交叉引用模式、字体宏包等,而不是等尝试编译之后再选择。
输出
workspace/drafts/paper.tex— 填写完所有章节的完整 LaTeX 论文。步骤 5 的 Refinement Agent 将对此文件进行迭代修改。
操作方法
0.5. 读取 tex_profile.json 并选择 LaTeX 模式
在编写提示词之前,读取 workspace/tex_profile.json,并在生成的论文中对每个 LaTeX 选择应用以下规则:
| 配置标志 | True → 使用 | False → 改用 |
|---|---|---|
use_cleveref | \cref{fig:X}、\cref{tab:Y} | Figure~\ref{fig:X}、Table~\ref{tab:Y} |
use_nicefrac | \nicefrac{a}{b} | $a/b$ |
use_microtype | \usepackage{microtype} | 省略此行 |
use_t1_fontenc | \usepackage[T1]{fontenc} | 省略此行 |
如果 tex_profile.json 不存在(旧工作区),则默认使用安全回退列(不使用 cleveref、nicefrac、microtype 或 T1 fontenc)。
1. 从实验日志中预先提取指标
运行确定性辅助程序:
python skills/section-writing-agent/scripts/extract_metrics.py \
--log workspace/inputs/experimental_log.md \
--out workspace/metrics.json
此程序会将 ## 2. Raw Numeric Data 部分中的 Markdown 表格解析为结构化 JSON。Section Writing Agent 会使用这些数据构建 LaTeX booktabs 表格,而不必从原始文本中重新推导数值。请阅读 references/latex-table-patterns.md,了解 booktabs 规范。
2. 撰写提示词并进行一次多模态调用
加载 references/prompt.md(来自 App.
F.1 的 Section Writing Agent 提示词原文)。在其前面添加
../paper-orchestra/references/anti-leakage-prompt.md 中的 Anti-Leakage Prompt。
然后附上正在撰写的各章节的写作约束。从
skills/shared/section_rhetoric.md 中提取这些约束——全局规则,以及 Abstract、Method、Experiments 和 Conclusion 的模板(Intro 和 Related Work 已由 Step 3 撰写;不要重新打开它们)。App.
F.1 提示词规定每个章节必须包含什么;修辞模板则规定段落的作用及其顺序。缺少这些模板时,模型生成的章节虽然内容齐全,但各段落采用的写作方式都相同,Step 5 的审阅者会因此降低其 Logical Flow 得分。
用户消息包含:
outline.json— 完整内容idea.md— 完整内容experimental_log.md— 完整内容(包括表格和正文)intro_relwork.tex— 完整内容(将作为提示词中的template.tex)citation_pool.json— 完整内容(将成为citation_map.json)conference_guidelines.md— 完整内容figures_list— 包含{figure_id, filename, caption}的数组,来自captions.json和文件列表- 实际的图像 PNG 文件,作为多模态图像输入,以便模型查看图像,并在正文中准确描述和引用图像。
如果你的宿主 LLM 不支持视觉输入,则退回到纯文本模式:将 captions.json 中的说明作为描述传入,并告知 Agent 它无法直接查看图像。质量会明显下降(论文指出,视觉依据能显著提升图文对应的准确性),但流程仍可完成。
3. 保存输出
Agent 的回复会用 \``latex ... ```围起来。提取 LaTeX 代码并保存到workspace/drafts/paper.tex`。
4. 运行确定性检查
# Orphan citation gate: every \cite{KEY} must exist in refs.bib
python skills/section-writing-agent/scripts/orphan_cite_gate.py \
workspace/drafts/paper.tex workspace/refs.bib
# Latex sanity: matched braces, matched begin/end, no unescaped specials
python skills/section-writing-agent/scripts/latex_sanity.py \
workspace/drafts/paper.tex
# Anti-leakage post-check: no author names, emails, affiliations
python skills/paper-orchestra/scripts/anti_leakage_check.py \
workspace/drafts/paper.tex
# Table conventions: booktabs rules, caption placement, metric direction,
# decimal precision. ERRORs block; WARNs go into the re-prompt.
python skills/section-writing-agent/scripts/table_lint.py \
workspace/drafts/paper.tex
如果任何检查失败,则重新调用撰写模型,并将检查的错误报告附加到用户消息中,要求 Agent 修复具体问题。不要尝试手动修复检查失败项——模型需要看到自己的错误。
提示词中的关键规则
以下内容摘自 references/prompt.md(附录 F.1,第 47–49 页)。宿主 Agent 在撰写调用中必须遵守:
保留已有内容
- 不要修改
intro_relwork.tex中已填写章节的文本、风格或内容。原样保留 Intro 和 Related Work。 - 保持导言区(宏包、文档类、样式)完全不变。
- 如果缺少标题,请拟定一个合适的标题。如果缺少作者姓名,请补上(但 Anti-Leakage Prompt 不允许虚构真实姓名——双盲审稿时请使用 “Anonymous Authors” 之类的占位文本)。
数据和表格
- 为实验结果创建 LaTeX 表格。
- 直接从
experimental_log.md提取数值。不得臆造数字——使用日志中的准确数值。 - 使用
booktabs宏包格式:\toprule、\midrule、\bottomrule。 - 除非明确放在附录中,否则所有表格都必须出现在 Conclusion 章节之前。
引用
outline.json为每个子章节提供 citation_hints。对于每条提示,在citation_pool.json中(按标题或内容)查找匹配的键,并在\cite{...}中使用该键。- 只能使用
refs.bib中的键。 编造或猜测键会违反 Lit Review Agent 已核验的文献池。 - 阅读所引用论文在
citation_pool.json中的摘要。 利用摘要内容写出有关这些工作的具体、准确的句子,不要笼统地写成“[A, B] 提出了用于 X 的方法”。
撰写内容
- 按照
outline.json中的section_plan结构,准确撰写缺失的章节。层级规则:如果存在 4.1,就必须存在 4.2。 - 在适当且有
idea.md或experimental_log.md直接支持的情况下,使用正式的数学方程、符号和定义。不要臆造数学内容。 不要为了使用复杂数学而使用复杂数学。 - 始终提供详细的消融研究和实验结果定性分析:哪些方法有效、哪些无效,以及原因。
- 可选:在结尾讨论局限性和未来工作。
- 如果附录包含任何内容,附录必须置于参考文献之后,并另起新页。
图表与视觉保真度
- 提供的图片文件就是图表的实际图片。必须忠实、准确地描述这些图片。不要臆造与图中证据相矛盾的解读。
- 使用
figures/中提供的所有图表。在\includegraphics命令中使用包含扩展名(例如.png)的准确文件名。 - 不要将多个图表合并或组合到同一个图中。
- 如果论文采用双栏格式,优先使用单栏图(
\begin{figure}),除非图表非常宽。 - 除非明确放在附录中,否则所有图表都必须出现在结论部分之前。
- 如有必要,可改进图注,但
captions.json中已提供图注,通常应直接使用。 - 不要在图注文字中加入“Figure X”——LaTeX 会自动编号。
修辞结构
模板和检查清单位于 skills/shared/section_rhetoric.md。撰写时必须遵守以下约束:
- 一段表达一个观点,并在首句点明。 如果一段到第五句才提出要点,审稿人很可能会略读过去。
- 摘要根据贡献数量,采用以下三种模板之一:挑战→贡献、挑战→洞见→贡献,或多项贡献(每项贡献都要在同一句中说明其优势)。
- 方法小节需包含三要素——设计(将前向过程写成
输入 → 步骤 → 步骤 → 输出),然后说明动机(因为 X 会失败,所以我们设计了 Y),再说明技术优势。只讲设计的小节读起来像系统手册;只讲动机的小节则像宣传文案。 - 实验需回答三个问题:是否优于强基线、哪些设计选择带来了增益(通过消融研究给出差值),以及方法的泛化能力如何。引言中提出的每项贡献都必须至少对应一项实验。
- 结论中的局限性应界定适用范围,而非承认缺陷。“我们只在短序列上进行评估”是在界定方法的适用范围;“我们没有调整学习率”则会招致否定。
- 术语在摘要至结论之间必须保持一致。 每个概念只使用一个名称。
风格
- 采用顶级机器学习会议论文的语气:精炼、客观、技术性强。
- 与原始
template.tex的缩进和间距风格保持一致。不要改变整体 LaTeX 风格。
LaTeX 完整性
- 输出必须开箱即用,能够无误编译。
- 所有
\begin{X}都必须与\end{X}匹配(例如,\begin{figure*}必须使用\end{figure*}闭合,不能用\end{figure})。 - 不要将
\usepackage[capitalize]{cleveref}改成\usepackage[capitalize]{cleverref}——不存在cleverref.sty。 - 务必在
\bibliographystyle{...}前立即输出\clearpage。 否则,LaTeX 浮动算法延后的图表可能会出现在参考文献部分内部或之后——这是一个难以察觉的版面缺陷,只有在编译后的 PDF 中才会显现。\clearpage会强制输出所有待处理的浮动体,然后才开始排版参考文献。详情请参阅references/latex-table-patterns.md。 - 交叉引用:优先使用
Figure~\ref{fig:X}和Table~\ref{tab:Y}, 而不是单独使用\ref{fig:X}。当cleveref不可用时,这样做是必要的,也能确保所有情况下的文本都易于阅读。只有在确认存在cleveref.sty时才使用\cref{...}。
输出格式
- 将完整更新后的
template.tex包在\``latex ... ```` 中。 - 之前为空的章节现在必须补充完整。
- 之前已填写的章节(Intro、Related Work)应基本保持不变;仅为保持一致性而做调整。
资源
references/prompt.md— App. F.1 中 Section Writing Agent 提示词的原文references/latex-table-patterns.md— booktabs 规则及根据日志生成表格的示例references/figure-integration.md—\includegraphics、双栏处理及图表位置scripts/extract_metrics.py— 将 experimental_log 中的 Markdown 表格转换为 JSONscripts/latex_sanity.py— 检查不匹配的花括号、环境及特殊字符scripts/orphan_cite_gate.py— 检查每个\cite{KEY}是否都存在于 refs.bib 中scripts/table_lint.py— 新增 booktabs 规则违规及表格可读性规范skills/shared/section_rhetoric.md— 新增各章节的结构模板(摘要变体、模块三元组、实验问题)及检查清单