很多研究生第一次用大模型辅助写论文引言,栽得最惨的不是逻辑结构,而是参考文献表。AI 能在几分钟内写出一段像样的研究背景,还会配上“Smith (2024) 指出……”“Li et al. (2023) 提出了……”这样的引文。但当你把条目一条条放进数据库检索,问题立刻暴露:DOI 无法解析、作者查无此人、期刊名看着熟悉但年份页码对不上。这不是某个模型特别差,而是生成式 AI 的工作方式决定的——它不是在查库,而是在预测“最像参考文献的字符串”。
这篇文章要讨论的,不是“能不能用 AI 写论文引言”,而是“怎么让 AI 在写引言时不产生假文献”。我会给出一个完整工作流,核心是四件事:本地 Markdown 写作环境、Zotero 文献库 + MCP 接入、学科化引言指令、逐条引用核验。按这套流程,你可以把“AI 编文献”的风险从源头压到最低,而不是等写完全文再逐条返工。
全文会按“假文献为什么必然出现”“核心工作流设计”“环境准备”“四步操作”“5套学科指令”“核验与排错”的顺序展开。文章偏实践,建议边看边搭环境,文末的指令模板可以直接复制到你的 AI 工具里用。
1. 为什么 AI 写论文引言,总是绕不开“假文献”
1.1 假文献是怎么产生的
大语言模型的文本生成本质是逐 token 的概率预测。它读到上文,然后预测最合理的下一个词、下一句话。当你在提示词里要求“引用相关文献”,模型并不是去某个数据库里检索真实记录,而是根据训练语料中见过的海量参考文献格式,生成一段“在统计意义上很像参考文献”的文本。
问题就出在这里:模型的知识有时间截止点,也有覆盖盲区。新发表的高质量论文、冷门学科的小众期刊、非英文文献,模型往往只记得一个模糊印象,甚至完全没有印象。遇到这种情况,它不会诚实地回答“我不了解”,而是会利用见过的真实引文片段,拼接出一条格式完整、语义合理但实际不存在的条目。
换句话说,AI 生成假文献不是“偶尔犯错的 bug”,而是生成机制本身的结构性副作用。
1.2 假文献的三种典型形态
根据常见的论文反馈,假文献主要有三种形态,危害程度也不一样:
第一种是完全虚构。条目里的作者、标题、期刊、年份看起来都正常,但 DOI 在 Crossref 里查不到,标题在任何数据库都搜不到。这种条目最危险,因为外行很难分辨。
第二种是张冠李戴。标题是真实论文,但作者写错、年份写错,或者引用的卷期页码对不上。这种常在“模型把两篇主题相近的论文信息拼在了一条里”的场景出现。
第三种是语义叠加。AI 把 A 论文的问题背景、B 论文的方法、C 论文的结论揉进一句话,然后给出三个看似相关的引用。每条引用可能真实存在,但引言里的论断与文献实际内容并不对应。
第三种最难发现,因为除非你逐条阅读原文,否则根本不知道 AI 有没有歪曲作者观点。
1.3 结论:问题不在 AI,在“生成流程”
很多人试图用提示词解决假文献问题,比如“请只引用真实文献”“不要编造参考文献”。坦白说,这些约束有一定效果,但本质上不可靠。因为模型对“真实文献”的认知来自训练语料,它无法区分哪些是“确定见过”的,哪些只是“猜测”。
更稳妥的做法是把“记忆”换成“检索”:不让 AI 凭印象生成引用,而是让 AI 只从你提供的本地真实文献库里挑选条目。这就是本文四步工作流的底层逻辑。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心工作流:本地 Markdown、Zotero MCP 与引用核验
2.1 一个思路转变
过去我们让 AI 直接写引言,等于让 AI 从“它的记忆”里找文献;现在我们要做的,是让 AI 从“我的 Zotero 文献库”里选文献。这个转变,从技术上等价于给 AI 装上一个只读的本地文献数据库接口。
这样产生的好处很直接:
- AI 能引用的范围被限定在你亲手筛选过的文献集合内;
- 每条引用的源头可控、可解释;
- 生成之后的核验成本大幅降低,因为不再需要在全网范围内“大海捞针”。
2.2 Zotero:真实文献库的底座
Zotero 是开源文献管理工具,支持 Windows、macOS、Linux。它适合作为这个工作流的底座,原因有三个。
第一,Zotero 的文献条目是结构化数据。标题、作者、年份、期刊/会议名、卷期页码、DOI 都有独立字段,AI 通过 MCP 读取这些字段时,不会拿到一坨难以解析的纯文本。
第二,Zotero 支持本地存储和同步。你可以把文献库看作一个“本地可信数据源”,不依赖某个在线平台的接口和配额。
第三,Zotero 能导出标准引文格式。最后插入正文时,可以直接用期刊模板统一格式化,避免手写引文导致格式不一致。
2.3 MCP:给 AI 一个“访问文献库”的通用接口
MCP,即 Model Context Protocol,模型上下文协议。它定义了一套标准接口,让 AI 应用或编程工具能够接入外部数据源、文件和工具。
一个容易理解的类比是“USB 接口”:过去不同外设要用不同的线——鼠标、键盘、U 盘、打印机各插各的;MCP 想做的是统一接口,让模型与工具之间建立一个通用插口。对本文场景来说,MCP 的价值是:让 AI 客户端能够直接读取 Zotero 本地库中的文献条目信息,并通过关键词、集合名称等方式检索文献。
配置好之后,你可以在 AI 对话框里直接说“在我的 Zotero 库中查找关于 XXX 的文献,列出标题、年份和 DOI”,AI 会通过 MCP 调用本地库完成检索,而不是凭空生成。
2.4 为什么用本地 Markdown 写作
论文正文写作推荐放在本地 Markdown 环境里,原因并不复杂。
Markdown 是纯文本,适合用 VS Code、Obsidian、Typora 等工具编辑;纯文本可以纳入 Git 版本管理,每次 AI 改写、人工修改都能留下 diff;纯文本也不依赖特定软件,方便后续用 Pandoc 转换为 Word 或 LaTeX。更重要的是,本地文件不存在在线文档的权限和网络问题,你可以在任何环境里继续写作。
这里要澄清一个边界:Markdown 负责“写作”,Zotero 负责“文献”,二者通过 MCP 在 AI 客户端里汇合。Markdown 本身不替代文献管理,Zotero 也不替代写作排版。
2.5 新旧方案对比
| 方案 | 假文献风险 | 核验成本 | 上手门槛 |
|---|---|---|---|
| 网页版对话框直接生成 | 高 | 高,需要逐条全网检索 | 低 |
| 提示词要求 AI 联网搜索 | 中高 | 中,仍需要人工复核来源 | 中 |
| Zotero MCP + 本地 Markdown + 核验脚本 | 低 | 低,集中在本地库和 DOI 核验 | 中 |
3. 环境准备与前置条件
开始操作前,先把环境清单列清楚。版本信息请以你实际使用的版本为准,本文重点演示通用思路。
| 项目 | 说明 |
|---|---|
| 操作系统 | Windows / macOS / Linux 均可 |
| Zotero | 建议使用较新版本,本文演示思路与具体版本关系不大 |
| Markdown 编辑器 | VS Code、Obsidian、Typora 任选一个即可 |
| MCP 客户端 | 支持 MCP 协议的 AI 客户端或支持 MCP 扩展的开发工具 |
| Python 3 | 用于运行引用核验脚本,脚本基于 requests 库 |
| 网络 | 访问 Zotero 账户设置页面、Crossref API |
3.1 Zotero 文献库准备要点
Zotero 的安装并不难,真正的功夫在于“文献库质量”。你需要关注以下几点:
第一,为当前论文建立一个独立 Collection(分类/集合),建议按选题命名。不要让 AI 面对一个包含上万条课题无关文献的大库,筛选范围越窄,AI 的引用越精准。
第二,导入文献时尽量使用带元数据的导入方式。从 Web of Science、PubMed、IEEE、CNKI 等数据库导出时,选择包含 DOI、作者、摘要的格式;也可以用 Zotero 浏览器插件直接保存页面。导入后务必检查 DOI 字段是否完整,这是后续核验的关键。
第三,中文文献需要特别留意。部分平台导出的条目可能缺失 DOI 或期刊名不规范,建议导入后手动补全,或者用中文数据库的官方检索结果交叉确认。
一个值得养成的习惯是:只把“自己已经读过或打算精读”的文献放进来。文献库不是收藏夹,而是推理依据。AI 从库里选文献,意味着你要对库里的每一条文献负责。
3.2 Markdown 编辑器与 MCP 客户端选择
Markdown 编辑器方面,如果你习惯写代码,VS Code 加 Markdown 插件就很顺手;如果你更想要一个“第二大脑”式的笔记环境,Obsidian 更合适;如果只求简单排版,Typora 也能满足。核心要求只有一个:能稳定编辑本地 Markdown 文件。
MCP 客户端的选择会影响配置方式。目前支持 MCP 的客户端和开发工具不少,配置入口通常都在“设置 → MCP / 工具服务器”区域。本文给出的配置示例是通用骨架,你需要把你选择的 Zotero MCP 服务的实际命令与入口路径替换进去。
4. 四步流程避开假文献
现在进入核心操作。整个流程可以概括为:入库、接入、生成、核验。四步做完,你得到的不只是一个“AI 写的引言”,而是一段引用真实、来源可溯、格式可导出的引言初稿。
4.1 第一步:在 Zotero 中建立选题文献库
这一步的目标是:准备一组面向当前论文选题的高质量文献条目。
具体操作如下:
- 在 Zotero 左侧新建一个 Collection,命名为“论文选题名+引言”;
- 用数据库检索当前选题的核心关键词,将筛选后的文献导入该 Collection;
- 逐条检查元数据:标题是否完整、作者是否准确、年份是否正确、期刊/会议名称是否规范、DOI 是否存在;
- 删除重复条目和与选题弱相关的条目;
- 如果某条重要文献缺少摘要,可以手动补录,方便后面 AI 理解文献内容。
完成后的判断标准很简单:库里的每一条文献,你都清楚它研究什么、结论是什么、与你的论文有什么关系。如果做不到,说明文献筛选还没有完成。
4.2 第二步:配置 Zotero MCP 连接
这一节给出 MCP 客户端的通用配置骨架。不同客户端的配置格式基本围绕 mcpServers 展开,只是入口不同。
json复制{
"mcpServers": {
"zotero": {
"command": "npx",
"args": ["-y", "你选用的zotero-mcp服务包名"],
"env": {
"ZOTERO_API_KEY": "在Zotero账户设置页面生成",
"ZOTERO_LIBRARY_ID": "你的Zotero用户ID"
}
}
}
}
这里的三个关键信息需要重点说明:
command和args:来自你选择的 Zotero MCP 实现。社区有多种实现,包名和启动参数不完全一样,以你选定的项目 README 为准。ZOTERO_API_KEY:在 Zotero 官网的账户设置页面生成,权限建议选择仅允许访问个人 library,不要给写权限。ZOTERO_LIBRARY_ID:同样在账户页面查看,是你的个人 library 编号。
配置完成后,重启 MCP 客户端,然后在对话框里问一句:
“我的 Zotero 库里有哪些与当前选题相关的文献?请列出标题、年份和 DOI。”
如果 AI 能返回你库中的真实条目,说明接入成功。这一步如果能跑通,后面的生成流程就稳了一大半。
4.3 第三步:用学科指令生成引言初稿
接入成功后,不要急着让 AI“写一段引言”。先给它立规矩。下面是一份通用指令模板,你可以把它作为起点,后面按学科替换细节:
text复制你是【学科领域】的学术写作助手。请根据我的 Zotero 文献库信息,撰写一段论文引言。
严格规则:
1. 只能引用我的 Zotero 库中实际存在的文献,不得新增、改写或编造任何参考文献。
2. 每处引用用“作者, 年份”标注,在文末列出所有引用条目及来源集合名称。
3. 如果库中缺少某个主题的文献,直接说明缺什么,不要自行补全。
4. 引言结构为:研究背景与问题 → 现有工作梳理 → 研究缺口 → 本文工作与贡献。
5. 目标字数:400-600字。
请注意规则中的第 3 条。很多 AI 写作失败,就是因为模型在“没有足够证据”时倾向于编造而非坦诚。把“承认缺文献”作为硬性要求,能有效减少假文献。
生成初稿后,先不要急于修改措辞。优先做第四步核验。
4.4 第四步:逐条核验引用
核验分两层。
第一层是库内对照。把 AI 输出的每条引用与 Zotero Collection 中的条目逐条比对,必须做到:标题一致、作者一致、年份一致。任何一条对不上,都直接判定为不合格,要求 AI 基于库内条目重写。
第二层是机器核验。对生物医学、自然科学、工程技术领域的英文文献,DOI 是最可靠的核验依据。你可以用下面的 Python 脚本,通过 Crossref API 批量验证 DOI 是否真实存在且可解析。
python复制import sys
import requests
# 文件路径:check_ref.py
# 用法:python3 check_ref.py references.txt
# references.txt 每行一个 DOI
def check_doi(doi):
url = f"https://api.crossref.org/works/{doi}"
try:
resp = requests.get(url, timeout=10)
if resp.status_code == 200:
data = resp.json()["message"]
title = data.get("title", [""])[0]
year = None
for k in ["published-print", "published-online", "issued"]:
if k in data:
year = data[k]["date-parts"][0][0]
break
return True, title, year
return False, "", None
except Exception:
return False, "", None
if __name__ == "__main__":
if len(sys.argv) < 2:
print("请指定包含 DOI 的文件路径")
sys.exit(1)
with open(sys.argv[1], encoding="utf-8") as f:
for line in f:
doi = line.strip()
if not doi:
continue
ok, title, year = check_doi(doi)
print(f"[{'OK' if ok else 'FAIL'}] {doi:40} {title[:60]} ({year})")
运行前先安装依赖:
bash复制pip install requests
然后准备一个 references.txt,把 AI 输出中的所有 DOI 逐行放进去,运行:
bash复制python3 check_ref.py references.txt
输出中带有 [FAIL] 的条目,就是高危疑似假文献。此时回到 Zotero 库核对正确条目,不要尝试手动“修复” AI 生成的版本。
5. 五套学科引言指令模板
不同学科的引言有完全不同的论证惯例和文献偏好,一套通用指令无法通吃。下面给出五套可直接复制的指令模板,每套都针对该学科的写作习惯做了调整。复制到你的 AI 工具中,替换掉方括号里的选题即可。
5.1 计算机与人工智能
text复制你是计算机科学领域的学术写作助手。请根据我的 Zotero 文献库,撰写论文引言。
学科要求:
- 优先引用本领域高质量会议和期刊论文,按“问题→方法→局限”的逻辑组织现有工作。
- 重点讲清楚研究背景中的真实应用需求,以及现有方法在效果、效率、泛化性上的不足。
- 引用用“作者(年份)”格式标注,最后列出对应 Zotero 条目。
严格规则:
1. 只引用 Zotero 库中真实存在的文献。
2. 缺少某类文献时直接说明,不自行补全。
3. 引言结构:应用背景 → 现有方法分类与局限 → 研究缺口 → 本文方案与贡献。
4. 目标字数:500 字左右。
核心差异点:计算机学科重“最新进展 + 性能对比”,引入引用时偏向近 3-5 年的会议论文,并且习惯把方法按技术路线分类讲解。
5.2 医学与生命科学
text复制你是医学领域的学术写作助手。请根据我的 Zotero 文献库,撰写论文引言。
学科要求:
- 优先引用近 5-10 年的原创研究、系统综述和 Meta 分析。
- 关注临床问题:研究对象、干预措施、对照设置、结局指标。
- 引用用“作者(年份)”格式标注,最后列出对应 Zotero 条目。
严格规则:
1. 只引用 Zotero 库中真实存在的文献。
2. 缺少某类文献时直接说明,不自行补全。
3. 引言结构:临床问题 → 现有证据 → 证据缺口 → 本研究目的与意义。
4. 目标字数:500 字左右。
核心差异点:医学引言讲究循证,文献需要能支撑“为什么做这个研究”的临床意义。AI 生成的内容要特别警惕“疗效夸大”和“对文献结论的过度解读”。
5.3 人文社会科学
text复制你是人文社会科学领域的学术写作助手。请根据我的 Zotero 文献库,撰写论文引言。
学科要求:
- 引用经典理论文献与近年高水平研究并重,注意梳理概念演变和学术争论。
- 使用学术书面语,表达严谨,避免口号式表述。
- 引用用“作者(年份)”格式标注,最后列出对应 Zotero 条目。
严格规则:
1. 只引用 Zotero 库中真实存在的文献。
2. 缺少某类文献时直接说明,不自行补全。
3. 引言结构:现实背景 → 概念界定 → 理论脉络与争论 → 研究缺口 → 本文视角。
4. 目标字数:600 字左右。
核心差异点:人文社科不追求“最新”,而追求“脉络完整”。AI 很容易把不同学派的观点混在一起,所以要在指令里明确“概念界定”和“理论脉络”两个环节。
5.4 工程技术
text复制你是工程科学领域的学术写作助手。请根据我的 Zotero 文献库,撰写论文引言。
学科要求:
- 引用期刊论文、会议论文、技术标准、专利和典型工程案例。
- 重点关注工程瓶颈、工艺参数、性能指标、成本与可靠性。
- 引用用“作者(年份)”格式标注,最后列出对应 Zotero 条目。
严格规则:
1. 只引用 Zotero 库中真实存在的文献。
2. 缺少某类文献时直接说明,不自行补全。
3. 引言结构:工程应用背景 → 关键技术瓶颈 → 现有方案与不足 → 本文方法 → 预期工程价值。
4. 目标字数:500 字左右。
核心差异点:工程学科强调“技术指标”和“可重复性”。AI 生成的引言容易写得像产品宣传,指令中要加入对具体参数和工程代价的描述约束。
5.5 数学与物理
text复制你是数学与物理领域的学术写作助手。请根据我的 Zotero 文献库,撰写论文引言。
学科要求:
- 引用经典理论文献、方法类论文和综述文献,注意模型或定理的演进脉络。
- 表述严密,不夸大结论适用性,不强行加入应用场景。
- 引用用“作者(年份)”格式标注,最后列出对应 Zotero 条目。
严格规则:
1. 只引用 Zotero 库中真实存在的文献。
2. 缺少某类文献时直接说明,不自行补全。
3. 引言结构:问题源起 → 已有模型与方法演进 → 关键困难 → 本文方法与主要结果。
4. 目标字数:400 字左右。
核心差异点:数理学科的引言非常强调逻辑链的连贯性,AI 容易“讲一堆背景却接不到自己的问题”。用“问题源起→关键困难→本文方法”的链条可以纠正这一点。
6. 完整示例与结果验证
下面用一个人文社科方向的简化场景,演示从“库内文献检索”到“核验通过”的完整闭环。
假设选题是“生成式 AI 对学术写作伦理的影响”。在 Zotero 中建立一个 Collection,导入了 6 篇相关文献,其中 3 篇是英文期刊论文,3 篇是中文期刊论文。
第一步,在 MCP 客户端输入:
text复制请在我的 Zotero 库中检索“生成式 AI 学术写作”相关文献,列出标题、作者、年份和 DOI。
AI 返回了库中 6 条真实条目。此时你就可以判断库内有没有足够支撑引言写作的文献。
第二步,使用 5.3 的“人文社会科学”指令,把选题补充进去,生成一段引言初稿。AI 输出的文本如果严格遵循了指令,引用的文献会集中在刚检索到的 6 条之内。
第三步,从 AI 输出中提取 DOI 或标题,做核验。英文文献的 DOI 放入 references.txt,运行 python3 check_ref.py references.txt。中文文献找不到 DOI 时,用中文数据库的标题检索逐条复核。核验中出现 [FAIL] 的条目,回到 Zotero 库查找正确文献,不允许自行“修正”。
那么,怎么判断整个流程成功?下面四条标准可以作为锚点:
- AI 输出中的所有引用,都能在 Zotero 指定 Collection 中找到一一对应的条目;
- 每一条引用都能解释“为什么选它”,而不是“AI 说它相关”;
- 有 DOI 的英文文献全部通过 Crossref 核验,中文文献通过权威数据库核验;
- 引言中的论断与文献摘要/原文观点一致,不存在语义歪曲。
如果 AI 在某次生成中引用了库里不存在的文献,不要手动删掉然后继续用。正确做法是让 AI 重新生成,并在提示词中补充“只引用上一轮你检索到的条目标题”,这样既可以观察到模型改进,也可以记录迭代过程。
7. 常见问题与排查思路
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| MCP 客户端无法连接 Zotero | API Key 无效;MCP server 配置命令写错;网络代理影响 | 查看 MCP 客户端日志;在 Zotero 账户设置中重新生成 Key | 按实际实现修正 command/args,重启客户端 |
| AI 仍然生成库外文献 | 提示词约束不足;库内相关文献太少 | 检查 Collection 内文献数量;观察 AI 是否检索到库内条目 | 补充文献到 Collection;强化“只允许引用已列出条目” |
| Crossref 核验大量失败 | 网络不通;条目本身没有 DOI | 单独访问一次 Crossref API 测试网络;检查 Zotero 条目 | 补录 DOI;或改用标题检索方式核验 |
| 中文文献无法用 Crossref 核验 | Crossref 收录中文期刊有限 | 用 CNKI、万方等中文数据库按标题检索 | 以官方检索结果为准,记录检索时间 |
| 引言缺少重点、像综述 | 指令中没有给出“研究缺口”的定位 | 人工先标注 2-3 篇核心文献,让 AI 围绕它们组织论证 | 在指令中增加“优先引用以下条目” |
| 投稿时引文格式不符合要求 | AI 生成的“作者年份”不符合目标期刊规范 | 最后用 Zotero 内置样式库导出引用 | 投稿前统一格式,不要在 AI 输出里手动改 |
| 库内文献太多导致 AI 选择困难 | Collection 范围过大 | 检查 Collection 是否包含跨主题文献 | 建立更精确的子 Collection,控制候选范围 |
8. 最佳实践与工程建议
工作流跑通之后,建议把它从“一次性操作”升级为一套可复用的写作流程。这里有几点工程层面的建议,实际项目中踩过坑,值得优先处理。
第一,文献库按论文项目隔离。一篇论文建一个 Collection,命名格式建议为“研究方向+论文名+日期”。不要把多年积累的所有文献都堆在一个库里。隔离之后,AI 的检索范围清晰,核验范围也随之缩小。
第二,提示词模板纳入版本管理。我建议把提示词模板存成 Markdown 文件,放在论文目录下,与正文一起用 Git 管理。每次提示词改动都留痕,方便回溯是哪一版提示词产生了错误引用。
第三,API Key 不要提交到仓库。MCP 配置文件中包含 API Key,建议把它放到本地环境变量或独立的本地配置文件中,再在配置骨架里引用。否则仓库一旦公开,文献库数据就有被读走的风险。
第四,把核验脚本做成固定步骤。不要每次都手动从 AI 输出里复制 DOI。可以把 AI 输出保存为 Markdown,提取参考文献段落中的 DOI 写个小脚本批量抽取,再调用核验脚本。这样流程可以复用,也不容易漏掉某一条。
第五,明确 AI 的使用边界。AI 负责生成初稿、梳理思路、提供表达方案;作者负责确定研究问题、筛选文献、核验引用、判断学术论点是否成立。期刊政策通常要求作者对引用的准确性负责,AI 生成内容也需要在正文或文档中按规范说明使用了生成式 AI 工具的哪些环节。
第六,投稿前统一格式。无论 AI 输出用什么引用格式,最终都以 Zotero 的标准样式库为准。Zotero 支持按目标期刊样式一键生成参考文献表,比自己手写可靠得多。
9. 总结与后续学习方向
这套工作流的本质,是把“AI 凭印象生成文献”替换为“AI 从本地可信文献库中检索并引用”,再辅以机器可核验的 DOI 查询。四步走完,假文献风险大幅下降,核验成本也集中在本地库内检索和 DOI 解析两个环节,相比逐条全网搜索要高效得多。
如果你正在用 AI 辅助写论文,我建议今天先做两件事:一是把 Zotero 里当前论文的 Collection 整理干净、补全 DOI;二是找一套学科指令跑一次完整闭环,亲自看一遍“AI 检索–生成–核验”的全过程。
后续可以继续深挖的方向包括:MCP 协议的实现原理与自定义工具开发、利用本地大模型离线完成写作与检索、把核验规则扩展到更多数据库源,以及将这套工作流嵌入 Obsidian 或 VS Code 形成更完整的科研写作环境。四步工作流不会让 AI 替你思考,但它至少能阻止 AI 替你“编造”。这条边界,值得每一个用 AI 写作的人守住。
