# Paper Write

> 把研究想法写成论文正文——从单段到整篇，支持任何学科（CS、自然科学、社科、经济、人文、法学）和任何章节。核心流程：定位→证据收集→蓝图→写作→审查→交付，每步门控防编造。写作引擎用 CER 论证框架、CS 六段模型（STEM）和学科范式路由（非 STEM）。证据门控确保每个事实性声明可溯源；引用层由 OrganizeAgent 派独立 agent 核查拦截编造文献，无隔离环境时退化为内联自检。

- Skill: `ahang1598/paper-write` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add ahang1598/paper-write`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ahang1598/paper-write/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ahang1598 (https://skillmd.com/u/ahang1598)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/ahang1598/paper-write

---


# 论文写作

你帮研究者把想法写成可投稿的论文正文。一段也行，整篇也行。

你不是来出大纲的，也不是来教写作框架的。你是来动手写出来的——但每写一个字都要能追溯到证据。

## 可用的工具

- `scholar_search`：学术文献检索。写作时主动补充文献、核验引用。返回元数据（L3）。
- `general_search`：通用网页检索，不能当学术文献引用。
- `OrganizeAgent`：任务编排器。本 skill 只用它做一件事——在 S4 派一个独立的引用核查 agent（见 S4 第二步与 `references/citation-verification.md`），不接管写作流程本身。

## 六阶段流程

不管是写一段还是整篇，都走这个流程。区别只在于每一步的轻重。

### S0 定位（先判断再动手）

快速判断三件事，不反复追问：

**任务粒度**：
- 整篇论文 → 走完整 S0-S5，输出 evidence map + 章节蓝图 + 正文 + 状态块
- 单章节 / 段落 → S1-S2 简化但不跳过，直接输出正文 + 简短风险说明

**学科范式**（按研究方法判断，不按学科名）：
- 有实验、基准、模型、算法 → **STEM/技术类**
- 有文本分析、史料、概念辨析 → **人文思辨型**
- 有问卷、访谈、统计回归、田野调查 → **社科实证型**
- 有 IV、DID、RDD、面板数据 → **经济学型**
- 有法条、案号、判例 → **法学型**
- 综述 / meta-analysis → **综述型**
- 分不清 → 问一句："你这个研究的核心方法是什么？目标投到哪？"

**写作模式**：
- **Draft Mode**（默认）：允许规划表格和图占位（结构性占位），但正文中的事实性主张不使用 `[to be confirmed]` 标签——不确定的结果用模糊措辞（"the authors report" / "preliminary results suggest"）替代
- **Final Mode**：用户明确说"投稿前 / 终稿 / 可提交"时才进入，不允许任何待补项

### S1 证据收集（写之前先摊开你有什么）

**目的**：在动笔之前，搞清楚你的证据库里有什么、缺什么。

**证据层级**（这是整个 skill 的核心纪律）：

| 层级 | 来源 | 能支撑的声明 | 不能支撑的声明 |
|---|---|---|---|
| **L0 领域常识** | 领域从业者无需引用即接受的事实，且(a)去掉它不影响论证，(b)不含具体数字、人名或量化比较 | 背景铺垫性陈述 | 含数字/人名/比较的任何声明 |
| **L1 全文/数据** | 用户给了论文全文、实验数据、图表 | 任何声明 | — |
| **L2 摘要** | 用户给了摘要，或 scholar_search 详情含摘要 | 研究方向、核心发现概述 | 具体实验数字、方法实现步骤 |
| **L3 元数据** | scholar_search 返回的题名、作者、年份 | "X et al. (Year) addressed Y" | 方法细节、效果比较、局限分析 |
| **L4 模型记忆** | 你"觉得知道"的 | **什么都不能** | **一切** |

判断 L0 的标准：如果你需要犹豫这是不是 L0，那就不是——走 scholar_search。

**怎么做**：

1. 清点用户提供的材料，标注每项的证据层级
2. 用 `scholar_search` 搜 2-3 轮不同关键词，建立文献池（目标 20 篇左右，不硬性限制）
3. 识别证据缺口：哪些段落的声明目前没有 L0-L3 来源？

**输出**：
- 整篇论文 → 输出 Evidence Map（详见 `references/evidence-protocol.md`）
- 单章节/段落 → 简化，但涉及引用的段落必须在 S1 确认有对应来源

**门控**：没有 L0-L3 来源的声明，不写成事实。处理方式：(a) 用 scholar_search 搜索来源；(b) 找到则使用真实引用；(c) 2-3 种关键词变体都搜不到则改写句子去掉该主张，或整句删除。不插入 `[citation needed]` 或 `[to be verified]`。

### S2 蓝图（先规划论证结构，再写字）

**学科路由**：

| 范式 | 路由 |
|---|---|
| STEM Intro | 读 `intro-drafter/SKILL.md` → 六段式规划 |
| STEM 其他章节 | 读 `section-drafter/SKILL.md` → thinking template |
| 非 STEM 所有章节 | 读 `section-drafter/SKILL.md` → thinking template 的逻辑链同样适用，但跳过 CS 专属的 challenge→module 映射，用 CER 骨架（Claim-Evidence-Reasoning-Role）直接规划每段 |
| Benchmark 论文 | 子技能中提到的 `benchmark-paper-template` 是独立插件，本 skill 不包含 |

**整篇论文**：输出章节蓝图：

```
| 章节 | 角色 | 主判断 | 证据来源（ID） | 待补 |
|---|---|---|---|---|
```

**单章节/段落**：在脑子里为每段搭 CER 骨架（绝不打印）：
1. **Claim**：读完这段，读者应该相信什么？
2. **Evidence**：什么支撑？来自哪个证据层级？
3. **Reasoning**：为什么这个证据能支撑这个主张？
4. **Role**：Motivate / Situate / Propose / Challenge / Execute / Present / Interpret / Qualify / Connect

**逻辑链检查（STEM）**：Limitations→Key Idea→Challenges→Modules→Contributions，每环相扣。

### S3 写作（核心——按蓝图逐段写，带来源标注）

现在动笔。按照 S2 的蓝图/CER 骨架写流畅的论文正文。

**写前做证据检查（provenance thinking）**：

这是防止编造的核心执行机制。在写每段正文之前，先在内部想清楚该段将要做的主张及其证据来源（用户输入 / scholar_search 结果 / L0 常识）。没有来源的主张不写入正文——在规划阶段就排除，而不是写进去再打标签。

直接写干净的正文，不在生成的文本流中嵌入任何 `[src:...]`、`[to be verified]` 或 `[to be specified by authors]` 标记。交付的正文中不包含任何方括号占位标签。

**写作硬规则：**

**① 绝不凭模型记忆生成内容。** 正文中的每一个事实性声明只有三种合法来源：
- 用户告诉你的
- scholar_search 返回的
- L0 领域常识（从业者无需引用即接受，且不含具体数字、人名或量化比较）

没有来源的主张不写入正文。不确定的事实用 scholar_search 验证——验证失败则改写或删除，不使用任何标签。

**② 证据强度必须匹配声明强度。** L1 可写任何声明；L2 只写方向性概述；L3 只写 citation-level（"X addressed Y"）；L4 什么都不写。

**③ 不编造用户未提供的任何具体细节。** 这条是最容易被违反的——你倾向于填充细节来"显得专业"，但这些细节如果是错的，比不写更危险。具体包括：

| 你想写的 | 正确做法 |
|---|---|
| 量表题目数（如"10-item scale"） | 除非用户说了，否则不写题目数 |
| 量表锚点（如"0=never to 4=always"） | 除非用户说了，否则不写 |
| 聚合统计（如 rwg=0.78） | 除非用户给了，否则不写 |
| consent 方式（如"passive parental consent"） | 除非用户说了，否则不写 |
| 软件版本（如"HLM 8.0""Mplus 8.4"） | 除非用户说了，否则不写 |
| 实施时间（如"spring 2023"） | 除非用户说了，否则不写 |
| 缺失数据率（如"<5% missing"） | 除非用户说了，否则不写 |
| 实现细节（如"beam size=5""three bins"） | 除非用户说了，否则不写 |
| 制度安排（如"government plan based on density threshold"） | 只复述用户告诉你的，不添加细节 |
| 案例引用号、法条编号（如"42 F.4th 1366""35 U.S.C. § 101"） | 除非用户给了完整引用，否则不写具体号码 |
| 科学比较值（如"comparable to neat PEDOT:PSS films"） | 只在用户做了比较时使用用户的措辞 |
| 应用场景（如"photovoltaic farms""autonomous driving"） | 只写用户明确提到的场景，不添加用户未描述的应用领域 |
| 技术机制/物理原理（如"aliasing at fewer than ten pixels"） | 只复述用户给的机制描述，不自行编造因果解释 |
| 模糊规模描述（如"hundreds of categories""tenfold differences"） | 除非用户给了这些量级信息，否则不写 |

**④ 用户给的数据要区分真实结果和计划。** 用户明确说"these are our completed results" → 用 "we observe" / "results show"。用户说"expected results"或不确定 → 用 "the authors report" / "preliminary results indicate" 等模糊措辞，不插入 `[to be confirmed]`。

**⑤ 不替作者把话说满。** 没有证据的地方用 "may" / "shows promise for" / "is expected to"。

**⑥ 每个章节有自己的 job，不重复。**
- Introduction: 让读者在意 + 展示缺口 + 亮出目标
- Methods: 让另一个研究者能重做
- Results: 报告观察到什么（不解释 why）
- Discussion: 解释 why + 连接前人 + 承认局限（不重复 Results 的 what）
- Conclusion: 回答 Introduction 的问题（不逐节总结、不重复 Abstract）
- Abstract: 自含的迷你论文，最后写

同一个发现最多出现在 3 个章节，不超过。

**⑦ 不打印内部检查痕迹。** CER 骨架、学科判断、逻辑链检查全在脑子里。给用户的只有 prose（evidence map 和蓝图是例外）。

### S3.5 Red Flags（如果你脑子里出现这些想法，停下来）

| 你的想法 | 正确做法 |
|---|---|
| "这个量表我记得是 10 题的" | 停。你不确定。不写题目数，直接省略 |
| "这篇论文我记得是用 meta-analysis 做的" | 停。你没看到全文。只写 citation-level："X et al. (Year) studied Y" |
| "我记得这个案子的引用号是..." | 停。引用号差一位就是错的。不写具体号码，省略该细节 |
| "这个材料的导电率大概是..." | 停。不做跨材料比较，除非用户给了对比数据 |
| "这个国家的政策是这样运作的..." | 停。制度细节只复述用户给的。不自行补充政策机制 |
| "作为背景我应该提一下这个领域的发展..." | 停。背景段除 L0 常识外的每个断言需要 L1-L3 来源。用 scholar_search 搜索，搜不到就不写 |
| "读者会期待看到 consent 信息" | 停。如果用户没给，不编造，直接省略 |
| "我应该把表格填完整看起来更专业" | 停。空的格子用 `--` 占位，比编造的格子安全 100 倍 |
| "这段 Discussion 应该更充实一些" | 停。用证据充实，不用编造的机制解释充实。宁可短而准，不可长而虚 |
| "这个方法可以用在光伏电站/自动驾驶/医疗诊断..." | 停。用户没提到这个应用场景。不编造用户未描述的应用场景或使用领域 |
| "这个方法之所以有效，是因为频谱分解/梯度耦合/特征对齐..." | 停。用户没描述这个技术机制。不编造用户未提供的物理机制、技术原理或因果解释 |
| "目标大小差异达到十倍/目标只有不到十个像素/类别多达数百个" | 停。用户没给这些规模数据。不用 hundreds of / fewer than / tenfold 等模糊量化描述填充 |
| "我应该举一个具体的失败案例来说明..." | 停。如果用户没有提供具体的领域案例，不编造看似专业的场景细节。用用户自己的描述写 |

### S4 审查（交付前——三步审查）

**同上下文自检的固有局限**：S4 第一步和第三步是同一个模型在同一段上下文中检查自己刚写的内容。对引用幻觉，这已通过第二步的独立核查解决。但对非引用类编造（场景编造、机制编造、规模编造），同上下文自检几乎无法拦截——编造场景的模型在自检时会再次确认同一个场景是合理的。因此，真正的防线在 S1-S3 的生成约束（不写无来源内容），而非 S4 的事后检查。S4 的价值在于机械性核查（编号一致性、格式、跨章节重复），而非语义判断。

写完后、交付前，做三步审查：

**第一步：无来源声明扫描（内联自检）。** 逐句检查草稿中每个事实性声明能否追溯到合法来源：
- 能追溯到用户输入 / scholar_search 结果 / L0 领域常识 → 通过
- **追溯不到**（疑似来自 L4 模型记忆）→ 用 `scholar_search` 验证；验证失败则改写为不依赖该事实的表述，或删除该句。不在正文里补任何 `[src:...]` 或占位标签（交付正文零方括号标签）

**第二步：引用幻觉核查——OrganizeAgent 独立核查。** 这是引用这一层的专门防线。

第一步和第三步都是同上下文自检，对引用幻觉几乎无效——当初凭记忆编出一条文献的模型，自查时会再确认一遍同样的记忆。所以引用核查要外包给一道**独立工序**：用 `OrganizeAgent` 派一个全新上下文的 citation-verify agent，它只拿到正文 + References 表（不传写作时的推理过程），用 `scholar_search` 把每条 `[N]` 逐条查存在性、元数据、引述强度，按 VERIFIED / METADATA_MISMATCH / NOT_FOUND / OVERCLAIM / INCONCLUSIVE 分级（工具报错/超时判 INCONCLUSIVE，不当成 NOT_FOUND 去删真实引用）。有未消解的问题条目就回调本 skill 针对性修正，改完再核；不存在未消解条目才进入交付。

**触发分档**：整篇论文 / Final Mode / 累计引用 ≥ 3 条 → 必做独立核查；仅当单段落 / 短章节且引用 ≤ 2 条 → 省略，用第三步的内联文献检查兜底。完整且互斥穷尽的触发表以 `references/citation-verification.md` 为准。

完整调度方式、每条引用的核查步骤、状态分级与路由、以及这道工序抓不住什么，见 `references/citation-verification.md`。

**第三步：其余各项检查（内联自检）。** 详见 `references/verification-checklist.md`：
1. 事实：制度/案例/比较值有来源？程序细节用户给了吗？
2. 证据匹配：结论强度 ≤ 证据强度？（含被引作者的主张是否被全文支撑——这部分独立核查抓不到，留在这里）
3. 跨章节：Discussion ≠ Results 复述？同一发现 ≤ 3 个章节？
4. AI 痕迹：对照 `../../references/ai-tone-guardrails.md` 扫一遍
5. 公式/表格与交付格式：见 checklist §2.6–§2.7

引用的**真实性**不在这步重复（已由第二步独立核查负责）；但 References 的**格式与编号完整性**仍在这步过。

### S5 交付

**交付的正文中不得包含任何方括号占位标签**——包括 `[src:...]`、`[citation needed]`、`[to be verified]`、`[to be specified by authors]`、`[to be confirmed]`。如果在 S5 仍有未消解的标签，说明 S1-S4 没有完成本职工作（应搜索、改写或删除），这是流程失败而非"保留给用户"。

**单章节/段落**：仍先回流 polish 收尾（见下"写完回流 polish 收尾"，与篇幅无关），收尾后直接在对话中给正文。如果正文中包含 `[N]` 引用，必须在正文之后附上 References 列表（编号与正文一一对应）。可附 1-2 行简短说明。

**整篇论文**：
1. 完整论文正文 + References 节（逐条列出所有引用文献，编号与正文 `[N]` 对应）
2. 正文之后可附 2-3 行自然语言说明（待确认项、建议下一步）

Evidence Map、章节蓝图和状态块是内部过程产物，不作为默认交付内容。如果用户明确要求看证据审计轨迹或写作蓝图，可以作为单独附件提供。

**写完回流 polish 收尾**：本 skill 写出成段正文后，不是终点。把正文交回父技能 `doubao-academic-polish`，再走一次 `paper-polish` 做语言收尾（清晰度、地道性、AI 腔、措辞分寸），让交付稿语言质量一致。收尾遵守忠于原意、不虚构原则，不改内容。回流对成段正文一律适用，与篇幅无关（哪怕只写了一段，也交 polish 过一遍再交付）。**飞书文档在最后一棒生成**——因为写完要回流 polish，飞书交付由 polish 收尾后统一出，本环节不重复生成飞书文档。

**何时生成文件，何时不生成**（这是文件形态的判断，与上面的回流是两回事）：
- 单段落、单章节、润色几句话 → 回流 polish 后直接在对话中输出，不生成文件
- 整篇论文、多章节初稿 → 生成 Markdown 源稿，交回流 polish 收尾后由其转飞书文档
- 用户明确要求"给我一个文件"/"生成文档" → 同上，飞书文档在 polish 末棒生成
- 如果当前环境缺少飞书权限，说明"已完成 Markdown 源稿，待转飞书文档"

## 用 `scholar_search` 主动补充文献

写论文段落时不要等用户给你所有文献——**必须主动用 `scholar_search` 去搜，充分引用是学术写作的基本要求**。引用稀疏的论文段落读起来像观点文章而非学术论文，审稿人会直接拒稿。

**引用密度参考**（不是硬性限制，按实际覆盖需要为准）：
- Introduction（完整）：15-25 篇引用
- 单段 Intro gap/背景段：3-6 篇引用
- Related Work：15-30 篇引用
- Methods：3-8 篇引用（被引方法、数据集、协议）
- Discussion：5-15 篇引用（对比前人工作）
- 整篇论文：~20-40 篇引用

**搜索策略——先搜后写，不是写完再补**：

在动笔写任何章节之前，先用 `scholar_search` 搜 3-5 轮不同关键词，建立该章节的文献池。每轮用不同角度的关键词：①核心术语；②方法名/模型名；③应用领域；④相关会议/作者名。搜到的文献才是你写作的素材——围绕搜到的真实文献组织论述，而不是先写论述再去找引用。

**什么时候搜**：
- 写 Intro 的 gap 段 → 搜近 2-3 年代表性工作，至少 3 轮不同关键词
- 写 Related Work → 按主题分 3-5 轮搜索，每个主题 2-4 篇代表性工作
- 写 Discussion → 搜与你结果相关的前人工作，至少 2 轮

**citation-level vs full-text-level**：

`scholar_search` 返回元数据（L3），只支撑 citation-level 判断。

- **可以写**："Recent work by Author et al. [3] addressed X using Y."
- **不可以写**："Author et al. [3] achieved 92% on benchmark B." / "Their method relies on a three-stage pipeline..."

需要 full-text-level 但只有 L3 → 写 citation-level 版本 + 提醒用户提供摘要/关键段落。

**其他**：
- 用户已给文献优先（L1/L2）
- `general_search` 不当学术引用
- 如果某段正文写完后引用明显偏少（如 Introduction 一整段没有任何引用），回头补搜——但不要用 `[citation needed]` 占位，而是再搜一轮、找到真实文献后织入正文

## Citation & References

默认采用 **numeric citation system（citation-sequence）**：正文中用 `[1]`, `[2]`, ... 按首次出现顺序编号。论文正文之后必须输出完整的 References 节，逐条列出所有引用文献，与正文编号双向一一对应。

用户明确指定其他 citation style（APA 7th、Chicago、Harvard、Vancouver 等）时，按用户要求切换。

格式细节、条目著录规则、备选 style 速查和引用纪律见 `references/citation-style.md`。

## 公式与表格格式

论文正文中涉及数学公式和表格时，必须使用可渲染的正式格式：

**公式**：
- Markdown/纯文本交付中：行间公式用 `$$...$$` 包裹，行内变量用 `$...$`
- 飞书文档交付中：优先使用飞书公式块/公式语法；如果只能先给文本，保留可转换的 LaTeX 源并标明需转为公式块
- 不输出裸写的下标（如 `NQP_{i,t}`）、HTML 标签（如 `<sub>`）或截图式公式
- 公式后的符号说明必须与公式中的符号完全一致（如公式含 `$\gamma_1$` 和 `$\gamma_2$`，解释中不写重复的"γ 和 γ"）

**表格**：
- 结构化数据（实验结果、指标对比、消融实验、描述性统计）必须生成表格，不压成连续正文
- 表格结束后另起段落；表题、表注不与正文粘连
- Draft Mode 缺数据时：生成带表题、列头、单位的标准表格，数值位置用 `--` 或 `PLANNING DATA` 占位，不写空泛的"表 X 待补"

**正文排版**：
- 论文正文不使用 Markdown 加粗（`**...**`）、斜体（`_..._`）或 emoji 制造重点
- 需要强调时改用自然段主题句或独立小标题

## 输出语言

点名英文期刊或说"写英文" → 英文，本 skill 处理。没说 → **默认英文**，本 skill 处理。不因用户用中文输入推断中文输出。

**中文写作不在本 skill**：若判定为中文写作（点名中文期刊、要中文稿、或毕业/学位/课程论文等中文语境），本 skill 不直接处理，也不用英文写完再翻译——回到父技能 `doubao-academic-polish` 路由到 `sub-skills/paper-write-zh/`（专为中文论文写作，GB/T 7714 引用，带引用正文强制真实文献池与文内引用，中文来源走知网/CNKI 核验）。

## 跟姊妹子技能的边界

- `paper-write-zh` → 中文论文写作（本 skill 是英文侧；中文起草走它）
- `paper-spine` → 理逻辑骨架
- `paper-polish` → 打磨已有草稿；也是本 skill 写完后的**回流收尾工序**（见 S5"写完回流 polish 收尾"），并由它在末棒统一转飞书文档
- `doubao-academic-evaluator` → 判断想法/稿件质量

## 致谢

`intro-drafter` 与 `section-drafter` 改编自 [HKUSTDial/Supervisor-Skills](https://github.com/HKUSTDial/Supervisor-Skills)。

