用 AI 写论文,是提效还是作弊?这个问题如果只给出“是”或“否”的答案,注定是错的。学术圈现在对 AI 的态度极其分裂:有人用 AI 三个小时整理出一版像样的综述框架,有人因为一段 AI 生成的文字被期刊直接打回,更多人则是既想用、又不敢用,最后在“用一点但藏着掖着”的状态里反复内耗。
这个分裂的根源在于,“AI 写论文”这个说法把两件性质完全不同的事混在了一起:一种是让 AI 处理文献、格式、语言这类体力活,另一种是让 AI 替你产生观点、结论、实验数据这类脑力活。前者是提效,后者是作弊——但绝大多数讨论都停留在“用没用到 AI”这个粗糙层面,所以永远吵不出结果。
这篇文章想用一条具体的技术链路把这件事讲透:Claude Code 配合 claude-scholar 这类面向学术研究的技能包(Skill),从文献检索、实验执行到论文写作,完整走一遍学术工作流。你会发现,AI 在论文里到底扮演什么角色,并不取决于工具本身,而取决于你在哪个环节把判断权交给了它。
读完你会得到三样东西:一套能在终端里跑通的学术研究流程方法;一套判断“哪些自动化是安全的、哪些是雷区”的边界清单;以及几个真实项目中一定会遇到的坑和排查思路。建议先收藏,再跟着环境准备一节动手跑一遍。
1. 先回答那个争论:提效还是作弊
先给结论:用 AI 写论文这个动作本身不构成作弊,真正构成作弊的是三件事——数据不是真的、观点不是你的、过程说不清楚。
这个判断标准可以落到非常具体的场景里。同样是让 AI 写了一整段“结果分析”,如果这段分析基于你真实跑出来的实验数据、经过你逐句核对、并且你能向审稿人解释每一个统计量怎么来的,那 AI 在这里的角色和 Grammarly 没有本质区别。反过来,如果这段分析是 AI 根据“常见论文套路”脑补出来的,表格里的数字没有一次真实实验支撑,那不管文笔多流畅,它都是学术不端。
更准确地说,判断边界有三个维度:
第一,数据与结果是否真实可复现。实验可以在 AI 帮助下设计、写代码、跑脚本,但最终进入论文的数字必须来自真实执行的过程,并且别人按你的方法能重复出来。AI 生成的“看起来合理”的数据,是这个链条上最危险的伪造。
第二,核心观点和学术判断是否由作者做出。AI 可以帮你把文献按主题分类,可以帮你找矛盾点,可以帮你润色论证语言,但“这个问题为什么重要”“这个结果说明了什么”“下一步该做什么实验”这类判断,必须是你自己得出的。否则论文发表后,你在学术共同体中的信用就没有对应的能力支撑。
第三,过程是否可解释、可辩护。答辩和审稿的本质是“让你的研究过程经得起追问”。如果论文里任何一段内容你都无法说明它为什么存在、依据是什么,那它就不应该出现在论文里。
下面的表把这个边界压缩成几个具体场景,方便对照:
| 环节 | 合理自动化(提效) | 越界行为(作弊) |
|---|---|---|
| 文献检索 | 批量提取信息、整理笔记、生成对比表 | 让 AI 替你判断文献重要性并决定读什么 |
| 实验分析 | AI 编写数据清洗和统计脚本,真实运行 | 直接生成“看起来合理”的实验结果表 |
| 引文管理 | 格式化 BibTeX、检查引用遗漏 | 让 AI 生成参考文献列表而完全不核对 |
| 论文写作 | 润色语言、统一术语、整理结构 | 让 AI 从零撰写核心论点与创新点 |
| 投稿合规 | 按模板排版、检查字数格式 | 隐瞒 AI 使用事实,违反期刊披露制度 |
所以,这篇文章后面所有实操都建立在一个前提上:AI 负责的是“做”,你负责的是“判断”。工具不会替你做决定,但它能把做决定的成本大幅降低。
2. Claude Code 与 claude-scholar 的技术定位
在进入实操前,先把两个概念讲清楚:Claude Code 是什么,claude-scholar 又是什么。
Claude Code 是 Anthropic 推出的 Agent 化编程工具,运行在终端里。它和网页版对话式 AI 最大的区别是:它不是一个“聊天框”,而是一个能直接操作你工作区的 Agent。它可以读取项目里的文件、修改代码、执行 bash 命令、运行脚本、查看运行结果,然后根据结果继续迭代。你给它一个任务,它能像一名坐在你电脑前的工程师一样,把文件打开、改掉、跑测试、再修,最后交付一个可运行的结果。
Claude Code 的机制里有几个关键概念,后面会反复用到:
- CLAUDE.md:项目的“记忆文件”。每次会话启动时,Claude Code 会自动读取这个文件,了解项目背景、目录结构和硬性规则。
- Skill(技能):放在
.claude/skills/目录下的一组指令文件,本质是一个 SKILL.md,包含技能名称、描述和执行步骤。当任务匹配技能描述时,Claude Code 会自动加载并使用它。 - 权限系统:Claude Code 的每次文件读写、命令执行都需要授权,你可以通过交互确认,也可以在
settings.json里预设允许和拒绝规则。
claude-scholar 就是建立在 Claude Code 这套机制之上的学术研究工作流。从命名和社区常见实践来看,它的核心思路是把“文献检索→实验→论文写作”这类学术任务,拆成一组可复用的 Skill、提示词和辅助脚本放进工作区,让 Claude Code 变成一名熟悉学术流程的研究助理。这里不打算逐条贴某个具体仓库的命令,因为社区项目迭代很快,照着旧命令抄很容易失效;更值得做的是把机制讲清楚,让你能自己组装一条适合自己课题的工作流。
为什么这种“工作区 Agent”比网页版对话更适合学术流程?可以用一个对比来说明:
| 维度 | 网页版对话大模型 | Claude Code 工作区 Agent |
|---|---|---|
| 上下文来源 | 依赖你手动粘贴内容 | 直接读取项目文件、PDF 文本、CSV |
| 操作能力 | 只能给建议 | 能改文件、跑脚本、查结果、反复迭代 |
| 流程复用 | 每次重新描述 | 用 SKILL.md 和 CLAUDE.md 固化流程 |
| 留痕能力 | 聊天记录分散 | 文件改动、命令记录都在工作区 |
| 适合场景 | 零散问答 | 多步骤、多文件的工程化任务 |
学术研究恰恰是多步骤、多文件、需要留痕的工程化任务:几十篇 PDF、多份实验数据、多个版本的草稿。Claude Code 真正改变的不是“生成文本”这一环,而是把 AI 嵌进了你的研究工作区,让它可以跨文件操作,也让每一步操作都留下可追溯的记录。这个“可追溯”对学术场景极其重要,因为它是你向导师、审稿人证明“过程清白”的基础。
3. 环境准备:安装 Claude Code 并建立研究项目
这一节的目标是搭好一个最小可用的研究环境。版本细节以官方文档为准,这里重点讲通用思路。
3.1 安装与登录
Claude Code 最常见的安装方式是 npm,前提是机器上有 Node.js 环境,Windows 用户建议在 WSL 或 Git Bash 等类 Unix 环境中使用,体验更完整。
# 全局安装 Claude Code npm install -g @anthropic-ai/claude-code # 查看版本,确认安装成功 claude --version安装完成后,在终端里运行claude启动首次配置。第一次启动会引导你登录,通常有两种方式:使用 Claude 账号登录,或者使用 Anthropic Console 的 API Key。登录完成后,Claude Code 会记住凭证,后续直接使用。
这里有两个容易踩的坑。第一,npm 安装失败多数是网络或权限问题,可以检查 Node.js 版本是否满足要求,也可以为 npm 配置镜像源后再试。第二,Claude Code 的模型调用在云端完成,使用会产生费用,或者消耗订阅额度。开始大规模跑任务前,先了解自己账号的计费方式,避免一个脚本把额度跑穿。
3.2 建立研究项目目录与项目记忆
学术项目建议从第一天就用清晰的目录结构,这不仅是给 AI 看的,也是给你自己看的。
mkdir -p scholar-project/{literature,data,experiments,scripts,paper} cd scholar-project然后在项目根目录创建CLAUDE.md,把项目背景和规则写进去。Claude Code 每次启动都会读这个文件,它是你约束 AI 行为最重要的工具:
# 研究项目:你的课题名称 ## 项目角色 - 本工作区用于学术研究:文献综述、实验分析、论文写作。 - AI 负责整理、代码实现、格式处理;研究结论由作者负责。 ## 目录约定 - literature/:PDF 原文与结构化笔记 - data/:实验原始数据,禁止修改 - experiments/:实验结果存放 - scripts/:实验与统计脚本 - paper/:论文草稿 ## 硬性规则 - 不得编造实验数据、引用文献。 - 引用必须标注来源文件。 - 修改原始数据前必须备份。 - 生成任何结论前,先给出依据。注意 CLAUDE.md 里的“硬性规则”不是装饰,它是 Claude Code 每次处理任务时都会被注入的约束。把“不得编造数据”“引用必须标注来源”写进去,比每次对话时临时叮嘱有效得多。
3.3 权限与模型选择
Claude Code 默认会对文件操作和命令执行逐项询问授权。在实验脚本跑批、批量读文献的场景下,逐项确认会很烦,可以在.claude/settings.json里预设权限规则:
{ "permissions": { "allow": [ "Bash(npm:*)", "Read(experiments/**)", "Write(paper/**)", "Write(literature/notes/**)" ], "deny": [ "Read(data/raw/private/**)" ] } }这里的原则是最小权限:只放开任务确实需要的目录,把敏感目录明确拒绝。数据没脱敏之前,不要把原始实验数据全局开放给 Agent。
模型选择方面,Claude Code 支持在会话中用/model命令切换模型,也可以设置环境变量指定默认模型。不同模型在复杂任务上的表现和成本差异明显:长文档综述类任务建议用能力更强的模型,简单格式化任务可以用更轻量的模型。具体模型列表以当前版本和你的账号权限为准。
4. 全流程一:文献检索与综述
先看最磨人的环节——文献。传统做法是:数据库检索、下载 PDF、新建无数个标签页、在 Word 里堆笔记、写综述时再翻回去找原文页码。问题在于,信息散落在十几个文件里,笔记和原文分离,写作时根本无法高效交叉引用。
Claude Code 的解法是把文献变成工作区里的结构化数据:让 AI 批量读取 PDF 提取的文本,按统一格式输出结构化笔记,再生成对比矩阵,供你人工筛选。
操作步骤一般是:
- 把下载好的 PDF 放入
literature/pdfs/,用工具批量提取文本为 txt 文件,放入literature/texts/。 - 在 Claude Code 中启动会话,要求它按固定模板逐篇提取信息。
- 人工抽查笔记质量,修正指令后再批量处理。
- 对筛选后的文献生成对比表,进入综述写作。
这里的关键不是让 AI 替你做综述,而是让 AI 把每篇文献的“基本信息”先提取出来,把机械劳动做掉。你可以创建一个针对文献综述的 Skill,让流程可复用。在.claude/skills/literature-review/SKILL.md中写入:
--- name: literature-review description: 批量提取文献信息、生成结构化文献笔记和对比表。当用户要求整理 PDF、标注引用、生成综述笔记时使用。 --- # Literature Review Skill ## 输入准备 - 确认 literature/texts/ 目录下有已提取的文本文件。 - 先询问用户:本轮综述要回答的具体问题是什么。 ## 执行步骤 1. 读取 literature/texts/ 下的文本文件。 2. 对每篇文献提取:研究问题、方法、样本、主要结论、局限。 3. 输出 markdown 笔记到 literature/notes/,每条记录必须带 source 字段,标明原文文件。 4. 当笔记数量超过 5 篇时,额外生成一份对比矩阵。 ## 红线 - 只提取原文中明确出现的信息,不推测作者意图。 - 不判断文献质量等级,只负责整理事实。 - 所有条目必须能在原文中找到依据。为什么要写“只提取、不判断”?因为 AI 对文献价值的判断是不可靠的。它可能因为某些论文在训练数据里出现频率高而更“喜欢”它们,这和你课题真正需要什么完全无关。文献筛选的标准必须由你定。
每次批量处理后,还要做一次反向验证:随机抽几篇笔记,打开原文对照,确认没有“顺理成章”地补充了原文没有的内容。这个验证动作不需要花很多时间,但它是文献阶段防止 AI 幻觉的唯一防线。另外,综述里每一条论断,都要回到笔记的 source 字段去核对,这比最后统一补参考文献靠谱得多。
5. 全流程二:实验执行与数据分析
如果说文献阶段最大的风险是幻觉,那实验阶段最大的风险就是“用 AI 造数据”。很多关于 AI 论文作弊的争议,本质都出在这一环:AI 生成了统计结果,作者没有真实跑过一次实验。
正确做法是把 AI 限制在“写代码、调脚本、读结果”的范围内,结果数据必须来自真实运行。比如你的实验产生了两组 CSV 数据,需要做描述性统计和 t 检验,可以让 Claude Code 生成下面的脚本:
# scripts/analyze.py """读取 experiments/data/ 下两组 CSV 数据,计算描述性统计并做 t 检验。""" import json import numpy as np import pandas as pd from scipy import stats group_a = pd.read_csv("experiments/data/group_a.csv")["metric"].to_numpy() group_b = pd.read_csv("experiments/data/group_b.csv")["metric"].to_numpy() t_stat, p_value = stats.ttest_ind(group_a, group_b) result = { "n": [int(group_a.size), int(group_b.size)], "mean": [float(np.mean(group_a)), float(np.mean(group_b))], "std": [float(np.std(group_a, ddof=1)), float(np.std(group_b, ddof=1))], "t_stat": float(t_stat), "p_value": float(p_value), } with open("experiments/results/analysis_result.json", "w", encoding="utf-8") as f: json.dump(result, f, ensure_ascii=False, indent=2) print(json.dumps(result, ensure_ascii=False, indent=2))注意脚本里没有手写任何“计算好的数字”,结果完全由输入 CSV 决定。让 Claude Code 执行脚本并检查结果:
cd scholar-project claude -p "读取 scripts/analyze.py,运行它。如果报错,分析错误原因并修复后重跑。运行成功后,读取 experiments/results/analysis_result.json 并总结结果。"在非交互模式下运行,需要提前在 settings.json 中为相关命令授权,否则会因为权限问题中断。整个过程中,AI 是在帮你写代码、调 bug、读输出,而不是在替你生成“论文里该填什么数字”。
实验阶段还有一个容易被忽略的工程问题:可复现性。如果实验脚本没有固定随机种子、没有记录依赖版本、没有保存运行日志,那即使数据是真实跑出来的,审稿人也无法重复验证。建议至少做到四条:固定随机种子;在 requirements.txt 里锁定关键依赖版本;每次实验输出都带上时间戳;原始数据文件只读、不改写。这些要求同样可以写进 CLAUDE.md,让 AI 在写脚本时自动遵守。
这里有一条铁律:任何 AI 直接生成的“最终结果表”,如果无法追溯到真实运行的脚本和原始数据,一律视为无效。宁可少一个看起来很漂亮的实验,也不要在论文里放一个无法解释来源的数字。
6. 全流程三:论文写作与格式整理
写作阶段是争议最大的地方,也是最需要纪律的环节。把 AI 定位成“编辑”而不是“作者”,问题会清晰很多。
论文写作可以拆成几个层次,AI 在不同层次的能力和风险完全不同:
第一层是提纲与逻辑结构,必须由人主导。AI 可以帮你检查章节之间是否有逻辑断层,可以列出“这段论证缺少一个反例”之类的提示,但研究问题、创新点、章节如何服务于你的核心论点,是你自己的学术判断。
第二层是数据与结果描述,必须源自真实结果。论文里所有表格、统计量、实验设置,都应该直接从第 5 节的实验结果文件复制,而不是让 AI 根据“论文风格”重新生成一遍。AI 在这里的角色是帮你把结果描述得准确、清晰,而不是帮你“优化”数字。
第三层是语言润色与格式整理,可以充分交给 AI。中英文表达、术语统一、段落衔接、LaTeX 或 Markdown 排版、参考文献格式,这些是 AI 最擅长也最安全的部分。
一个比较稳妥的写作流程是:你先写出每节的骨架和核心论断,把真实数据表格贴进去,然后让 AI 在骨架内做语言层面的加工。给 AI 的指令要明确它的边界,比如这样:
这是论文“结果”章节的骨架和真实数据表格。请你: 1. 用学术论文语言改写段落,不要增加数据之外的结论。 2. 保持“方法-结果-统计值”的表述顺序。 3. 输出 Markdown,并在每个论断后标注对应的表/图编号。 4. 如果数据不足以支撑某个论断,直接标注【待补充】,不要脑补。这个提示词的厉害之处在于第 4 条:它明确要求 AI 在数据不足时承认不足,而不是“圆”过去。你会惊讶地发现,只要明确提了这条,AI 就不再自作主张补充你没做过的实验了。
引用管理是另一个高频出错点。AI 生成“看起来真实但实际不存在”的参考文献,是论文写作中最常见的学术不端诱因。所以参考文献不允许直接采信 AI 的输出,必须回到文献笔记里核对。比如你可以用命令验证某个引用是否真的存在于笔记中:
# 检查引用是否能在文献笔记中找到支撑 grep -ri "zhang2024" literature/notes/*.md然后再让 AI 把确认过的条目统一格式化为 BibTeX 或目标期刊的引用格式。格式可以交给 AI,是否存在必须由你确认。
最后提醒一句:很多学校和期刊对 AI 使用有明确的披露要求。投稿或提交前,去查目标期刊的作者指南里关于生成式 AI 的条款,按它的要求如实声明。隐瞒 AI 使用一旦被发现,后果比不用 AI 严重得多。
7. 常见问题与排查方法
这里整理一套实际使用中容易遇到问题的排查思路,按“先看现象,再查原因,最后动手修”的顺序来。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 安装失败,npm 报错 | Node.js 版本过低或网络问题 | 运行node -v检查版本,查看 npm 错误日志 | 升级 Node.js,或配置 npm 镜像后重装 |
| 请求报错 529 | 服务端过载或触发限流 | 查看错误信息中的提示和当前请求频率 | 等待一段时间重试,降低并发任务数量 |
| 上下文超长,任务中断 | 文献文本过多,超出模型上下文窗口 | 查看 Claude Code 的上下文占用提示 | 把文献分批处理,优先处理摘要和关键章节 |
| 提示“is not a model this version of claude code recognizes” | 配置了当前版本不支持的模型名或第三方模型 | 检查 ANTHROPIC_MODEL 等环境变量和/model列表 | 使用当前版本支持的模型名,升级 Claude Code,或按官方文档配置兼容端点 |
| AI 生成的参考文献查无此文 | 模型幻觉,编造了不存在的文献 | 用文献数据库检索 DOI 和标题 | 所有引用必须回到文献笔记核对,禁止直接采信 |
| 权限被拒绝,无法读写文件 | settings.json 权限规则过严 | 查看拒绝日志和当前规则 | 按最小权限原则补充 allow 规则 |
| 实验脚本运行失败 | 依赖缺失或路径错误 | 查看脚本报错堆栈和文件路径 | 通过 Claude Code 分析报错并修复,确认依赖已安装 |
大部分问题都遵循同一个排查原则:先把错误信息完整拿到,再决定修什么。不要凭感觉重装环境,先看日志。
8. 学术诚信边界与工程合规建议
把前面的实操落回边界问题。真正稳固的 AI 学术工作流,应该在工程上就防止越界,而不是靠事后自觉。
三条红线必须写进项目规则:
第一条,数据真实性。所有进入论文的数据必须有真实来源、可追溯、可复现。AI 生成的数据等同于伪造。这条没有例外。
第二条,引用真实性。参考文献必须真实存在,且确实支撑了它所在的论断。AI 给出的任何文献都要先验证再使用。
第三条,贡献可解释。论文里的核心创新点和学术判断必须由你做出,并且你能在答辩和审稿中解释清楚。AI 可以帮你把话说得更漂亮,但不能替你决定说什么。
工程上,建议把“过程留痕”做成默认习惯。Claude Code 的每一次文件修改和命令执行都发生在工作区里,这本身就是一种天然留痕。在此基础上,建议定期提交 git,把文献笔记、实验脚本、论文各版本的演进记录都保存下来。当你需要向导师或机构说明“这个研究是怎么做的”时,这些记录就是你最有力的证明。
数据安全同样值得专门强调。不要把未脱敏的数据、未发表的基金申请材料、涉及保密协议的实验数据随意交给云端模型处理。在 settings.json 里明确拒绝敏感目录的读取,比我反复提醒你“注意别上传”可靠得多。
各学校和期刊对 AI 使用的政策差异很大,有的明确禁止生成文本,有的只要求披露,有的允许在报告后有限使用。不存在一个放之四海而皆准的合规答案。判断的通用原则是:宁可多披露,不要隐瞒;如果某项操作你不确定该不该让 AI 做,就先别做,查清楚再说。
9. 总结:用 AI 提效的前提,是你还在场
回到开头那个问题:AI 写论文是提效还是作弊?这篇文章给了一个更精确的回答:如果你让 AI 接管了数据真实性和学术判断,它就是作弊工具;如果你用 AI 压缩的是检索、整理、写码、排版这些体力活,同时保留验证、筛选、判断、解释这些作者职责,它就是近几年来最值得用的提效工具。
Claude Code 和 claude-scholar 这类学术工作流的价值,不在于让 AI 替你写一篇论文,而在于把“从文献到实验到成稿”的每一个环节,都变成可操作、可留痕、可核查的工程过程。这恰好是学术研究最需要的东西。
如果你今天想开始实践,建议只做三件事:按第 3 节搭好项目目录和 CLAUDE.md;把文献笔记做成带 source 的结构化文件;在提交论文前,对每一段 AI 参与过的内容做一次“可辩护性检查”——逐句问自己,这句话我能当着审稿人的面解释它的来源吗?
如果哪一句解释不了,就删掉或者重写。这个动作,比任何工具都能决定你的论文是提效的成果,还是翻车的证据。