
科研人员用 Codex 写论文最容易犯的错误是一上来就让 AI 直接生成整篇稿件。真正值得复用的是流程文献检索怎么组织、统计代码怎么写、图表怎么出、Cover Letter 怎么改、审稿意见怎么逐条回应。Codex 的 skill 机制正好能把这类高频操作封装成可复用模板。这篇文章围绕 SCI 投稿前的一条完整工作流给出 9 个可以直接放进项目的 skill 文件并按顺序演示从数据文件到投稿材料的一次实操。整个过程强调合规使用AI 可以承担检索、编码、润色和排版检查但研究数据、结论判断和最终的学术责任必须由作者掌握。1. 为什么用 Codex skill 组织科研工作流1.1 Codex 是什么skill 解决什么问题Codex 是 OpenAI 提供的智能编码与任务代理工具常见的形态包括 CLI 和 IDE 扩展。它的特点是能够读取项目目录中的文件、执行命令、修改代码并按照用户给出的多步指令完成操作。与普通对话式 AI 相比Codex 的价值不在于“回答得更准”而在于它可以落到一个真实项目目录里干活建立文件夹、生成脚本、运行命令、把结果写回文件。skill 是 Codex 生态中用来固化指令和流程的机制。一个 skill 通常以目录形式存在目录里至少有一个SKILL.md文件。这个文件包含任务目标、输入条件、执行步骤、输出约束和检查标准。Codex 在遇到与 skill 描述匹配的任务时可以读取并执行这个指令文件。对科研写作来说用 skill 组织工作流有三个直接收益论文投稿前的很多操作是重复的比如文献检索、统计代码生成、摘要润色、回复审稿人。每次从空白提示词写起既不稳定也不可维护。同一个课题组有多个人使用时skill 可以统一格式和约束避免每个人调出的语言风格和文件结构不一致。skill 文件放在项目目录中可以被 Git 追踪随时回滚。配合AGENTS.md这类项目级指令整个项目的 AI 辅助过程更可审计。这里的“skill”指的是通用的技能文件约定。实际是否原生支持以及如何加载取决于你使用的 Codex 版本和模型能力。落地时要先读官方说明再用最小示例验证。1.2 9 个 skill 的整体设计与使用边界按照 SCI 论文投稿前的常见步骤可以设计 9 个可复用 skillSkill 名称输入输出典型场景literature-review研究主题、目标数据库检索式、筛选标准、文献矩阵写引言前整理研究背景research-design研究目标、可用数据实验方案、统计方法建议设计实验和统计分析计划>node -v npm -v确认环境后执行全局安装npm install -g openai/codex codex --version具体安装包名称和安装命令要以官方 README 为准这里展示的是通用安装思路。如果安装失败优先检查 Node.js 版本是否过低、npm 镜像是否正常、是否缺少系统编译工具。安装后需要认证。常见方式是准备一个合法的 API keyexport OPENAI_API_KEY你的合法密钥不要把这个 key 写进项目目录、不要提交到 Git。生产环境应该使用密钥管理服务或 CI 变量注入。如果你是组织用户需要按组织的访问方式配置认证。如果使用兼容 OpenAI SDK 的模型服务可以在 Codex 配置文件中为模型 provider 声明 base_url 和模型名。这类配置属于正常的模型接入方式但前提是你拥有合法访问权限。模型必须支持工具调用否则 skill 加载会不稳定。如果运行时出现the gpt-5.6-sol model is not supported一类提示通常是模型名称或 provider 配置与当前 Codex 版本不匹配需要回到配置中核对而不是继续执行任务。2.2 初始化科研 skill 工程目录推荐在论文项目根目录下建立如下结构paper-project/ ├── AGENTS.md ├── skills/ │ ├── literature-review/SKILL.md │ ├── research-design/SKILL.md │ ├──># 项目约定 - 本项目用于 SCI 论文投稿前的数据分析和稿件整理。 - 原始数据只允许读取 data/raw 目录不允许修改。 - 所有生成脚本写入 code 目录。 - 分析结果写入 results 目录。 - 生成稿件写入 manuscript 目录。 - 任何 AI 生成内容都需要人工复核后再进入 submission 目录。skills目录下每个 skill 一个子目录目录名就是 skill 名。SKILL.md是这个 skill 的指令文件。建议为每个 skill 再增加README.md记录设计原因和参数说明但这并不是必须的。2.3 编写第一个可加载 skill格式检查以format-check为例先写一个最小可用的SKILL.md--- name: format-check description: 检查 manuscript 目录中的稿件是否满足常见投稿格式要求。 version: 1.0.0 --- # format-check ## 输入 - 稿件路径manuscript/paper.md - 期刊要求文件target-journal.txt ## 检查项 1. 标题、摘要、关键词是否存在。 2. 正文是否包含引言、方法、结果、讨论四个部分。 3. 图表编号是否连续是否在正文中被引用。 4. 参考文献格式是否与目标期刊要求一致。 5. 缩写是否在首次出现时给出全称。 6. 是否缺少伦理声明、利益冲突、数据可用性声明。 7. 正文字数是否超过期刊限制。 ## 输出 - 生成 submission/format-check-report.md。 - 按严重程度列出问题严重问题标记为 blocking建议问题标记为 suggestion。 ## 约束 - 只检查文件不修改稿件内容。 - 涉及字数统计时需要排除参考文献、图表标题和声明部分。description字段非常关键。Codex 会根据 description 判断何时加载这个 skill。描述越具体越不容易误触发。代码块里的“输入”“输出”“约束”是给模型的执行规范内容越可验证越好。2.4 验证 skill 是否被正确加载在项目根目录运行cd paper-project codex 运行 format-check skill检查 manuscript/paper.md观察 Codex 是否提到读取了skills/format-check/SKILL.md。如果没有任何反应可以先用一条更直接的指令验证codex 这个项目里有哪些 skill逐个说明作用。如果列不出来优先检查三处skill 文件名和目录名是否一致SKILL.md的 frontmatter 是否完整当前 Codex 版本是否支持自定义 skill 加载。不要带着一个未验证的 skill 进入正式流程否则后面所有自动化假设都会失效。3. 9 个可复用 skill 的落地实现3.1 文献检索 skill把研究问题变成检索方案文献综述不是让 AI 直接写“某某领域已有大量研究”。更可靠的做法是让 AI 生成可执行的检索方案。literature-review的SKILL.md可以这样设计--- name: literature-review description: 根据研究主题生成 PubMed、Web of Science、Scopus 可用的检索式并输出文献筛选计划。 version: 1.0.0 --- # literature-review ## 输入 - 研究主题文件instructions/study-topic.md ## 任务 1. 把研究主题拆解为 PICOS 结构。 2. 为每个数据库生成检索式使用主题词和自由词组合。 3. 给出纳入和排除标准。 4. 输出去重和筛选流程。 ## 输出 - 生成 results/literature-search-plan.md。 - 检索式必须包含布尔逻辑、括号和字段标记。 ## 约束 - 不编造文献。如果模型记忆中的文献无法核对必须标记为“待人工核对”。 - 最终文献列表必须由人工在真实数据库中执行检索后填入。执行方式echo 研究主题某干预对某疾病结局的影响 instructions/study-topic.md codex 读取 instructions/study-topic.md运行 literature-review skill验证产出时重点看检索式是否能直接在 PubMed 中执行筛选标准是否可以被另一个学生重复判断。AI 在这里最有用的部分是生成布尔式组合和 PICOS 拆解而不是替你决定哪些文献重要。3.2 统计分析与图表 skill让数据产出可复现结果>import pandas as pd from scipy import stats df pd.read_csv(data/raw/exp.csv) desc df.groupby(group)[score].describe() desc.to_csv(results/analysis/descriptive_stats.csv) # 正态性检验决定后续使用参数检验还是非参数检验 stat, p stats.shapiro(df[score]) print(fShapiro-Wilk p {p:.4f}) group_a df.loc[df[group] A, score] group_b df.loc[df[group] B, score] # 如果两组正态且方差齐使用独立样本 t 检验否则使用 Mann-Whitney U 检验 t_stat, p_value stats.ttest_ind(group_a, group_b, equal_varTrue) print(ft {t_stat:.3f}, p {p_value:.4f})把这段代码放到code/analysis.py然后运行python code/analysis.py这个流程的关键是先检验数据分布再选择检验方法不能跳过正态性检验直接跑 t 检验。>import matplotlib.pyplot as plt import pandas as pd plt.rcParams.update({ font.size: 9, axes.titlesize: 10, figure.dpi: 300, }) df pd.read_csv(data/raw/exp.csv) fig, ax plt.subplots() df.boxplot(columnscore, bygroup, axax) ax.set_xlabel(Group) ax.set_ylabel(Score) fig.savefig(figures/score_by_group.pdf, bbox_inchestight)图片规范建议用表格记录检查项常见要求说明格式PDF、TIFF 或 EPS避免投稿后出现位图模糊分辨率300 dpi 以上印刷需要更高分辨率字体统一字体、7-10 pt图内文字不宜过大或过小配色考虑黑白打印不要只依赖颜色区分分组图注独立于图片投稿时图注通常单独提交3.3 论文写作与润色 skill从草稿到期刊语言paper-writing的设计重点是防幻觉。它不能凭空生成方法而是必须基于项目里的实验记录。一个推荐结构--- name: paper-writing description: 基于实验记录和结果文件生成 IMRaD 结构的稿件章节。 version: 1.0.0 --- # paper-writing ## 输入 - notes/experiment-notes.md - results/key-numbers.md - target-journal.txt ## 输出 - manuscript/methods.md - manuscript/results.md - manuscript/introduction.md - manuscript/discussion.md ## 约束 - methods 只能复述 notes 中已经出现的实验参数。 - results 中的数字必须与 results/key-numbers.md 一致。 - discussion 中区分“数据支持的解释”和“推测”推测部分必须明确标注。先准备两个输入文件notes/experiment-notes.md记录真实实验步骤results/key-numbers.md记录关键结果数字。然后执行codex 运行 paper-writing skill生成稿件章节到 manuscript 目录完成后人工检查方法部分是否有 notes 中不存在的参数。AI 很容易补上“室温静置 30 分钟”这类细节但如果实验记录里没有写就必须删除。abstract-polish聚焦摘要润色。它适合把已经写好的摘要压缩到目标期刊字数并检查 background、methods、results、conclusion 四要素是否齐全。示例输入可以是目标字数250 当前摘要...skill 的输出应该是修改后的摘要和修改说明。这里不要使用“AI 摘要看起来更高级就直接替换”的思路作者必须逐句对照原意是否改变。3.4 投稿材料 skillCover Letter 与审稿回复cover-letter的SKILL.md可以要求输出以下结构--- name: cover-letter description: 根据稿件亮点和目标期刊要求生成投稿 Cover Letter 草稿。 version: 1.0.0 --- # cover-letter ## 输入 - 稿件摘要manuscript/abstract.md - 目标期刊说明target-journal.txt - 通讯作者信息notes/author-info.md ## 输出 - 生成 submission/cover-letter.md ## 内容要求 1. 问候编辑使用期刊允许的称呼。 2. 一句话说明研究主题和创新点。 3. 说明为什么适合该期刊而不是泛泛说“影响力高”。 4. 声明稿件原创性、无利益冲突、所有作者已审阅。 5. 提供通讯作者联系方式。 ## 约束 - 不使用夸大措辞例如“首次”“重大突破”必须有证据支撑。reviewer-response用于返修阶段。它要求读取审稿意见输出逐条回复文档。一个可复用的表格结构如下| 审稿意见编号 | 问题摘要 | 修改位置 | 修改说明 | 是否完成 | | --- | --- | --- | --- | --- | | R1-1 | 样本量较小 | 方法、讨论 | 补充局限性分析 | 已完成 | | R1-2 | 缺少稳定性实验 | 待补充 | 需要补做实验 | 未完成计划 2 周内完成 |reviewer-response的最大价值是让回复结构清晰、逐条闭环。但它不能代替作者判断是否真的需要补实验。如果审稿人要求补充数据而实验室没有做AI 不能替你编造“我们补充了实验”。这一点必须写进 skill 的约束。3.5 参数说明与 skill 维护方式编写SKILL.md时常用字段可以做一张速查表字段作用写好建议nameskill 标识用小写连字符和目录名一致description决定何时加载写清输入条件和任务边界version版本管理修改规则后递增版本号输入前置条件写清文件路径和格式输出交付物写清目录和文件格式约束防幻觉和防误操作每条都可验证检查点执行后的自检方式给命令或文件内容示例不要每次使用都临时改SKILL.md。要改就记录变更原因放进 Git 提交信息。skill 是给团队复用的资产不是个人聊天记录。4. 全流程实操从数据到投稿前检查的一次完整运行4.1 阶段一用文献 skill 整理研究背景先建立instructions/study-topic.md写入研究主题和背景。然后执行codex 读取 instructions/study-topic.md运行 literature-review skill验证results/literature-search-plan.md中是否包含 PICOS 拆解、数据库检索式、纳入排除标准。人工拿到检索式后去 PubMed 或其他数据库执行把确认有效的文献整理到results/references-filtered.md。这一步常见的错误是示例中使用了模型记忆中的文献但作者没有核对导致参考文献不存在或卷期错误。所以literature-review的约束必须写明“最终文献列表以真实检索结果为准”。4.2 阶段二用数据分析 skill 生成统计结果准备好data/raw/exp.csv运行codex 运行>python code/analysis.py确认输出结果与 skill 生成时描述的一致。之后运行figure-plotskillcodex 运行 figure-plot skill基于 results/analysis/descriptive_stats.csv 生成图片人工检查图片分辨率、颜色、坐标轴单位和图注。这一阶段最容易出现的问题是数据清洗过程没有被记录。如果 AI 在分析时删除了缺失值或离群点必须在脚本中明确写入不能默默处理。4.3 阶段三用写作 skill 生成初稿并润色建立manuscript目录先准备好notes/experiment-notes.md和results/key-numbers.md。运行codex 运行 paper-writing skill生成稿件章节到 manuscript 目录生成后作者逐章阅读。尤其检查 methods 是否包含实验记录之外的参数results 里的数字是否与统计输出一致。然后运行abstract-polishcodex 运行 abstract-polish skill把 manuscript/abstract.md 压缩到目标期刊字数润色后对比原摘要确认没有改变核心结论。这里有一个建议不要让 AI 把“可能相关”改成“显著相关”语言润色不等于夸大结论。4.4 阶段四投稿前格式与合规检查运行format-checkcodex 运行 format-check skill检查 manuscript/paper.md读取submission/format-check-report.md逐项修复问题。随后用 Git 检查文件变更git status git diff --stat git diff data/raw/确认原始数据没有被 AI 修改。最后人工补全投稿声明作者贡献、利益冲突、数据可用性、AI 辅助工具使用声明。这些内容必须由作者填写不能交给 skill 自动生成后直接提交。5. 运行中的常见问题与排查路径5.1 skill 没有被 Codex 识别现象是运行codex 运行 xxx skill后Codex 表示不知道这个 skill或完全忽略指令直接回答。排查顺序当前目录是否在项目根目录是否正确使用绝对或相对路径。skills/xxx/SKILL.md文件是否存在目录名是否与 skill name 一致。frontmatter 是否完整description是否明确。使用的 Codex 版本是否支持自定义 skill 加载。模型是否支持工具调用。可以先执行codex 列出项目中的所有 skill 文件如果列不出来手动指定文件路径再试一次。不要为了绕过问题就改用无 skill 的长提示词这样会失去可复用性。5.2 模型返回格式错误或截断现象是生成的SKILL.md不完整或分析报告写到一半被截断代码块缺少结尾。可能原因上下文太长、输出 token 限制、输入文件过大、模型版本差异。解决方案把大文件拆成小段一次只处理一个章节。要求 Codex 把完整代码写入.py文件不要只在终端展示。在 skill 约束中明确“输出必须完整落盘若失败则说明原因”。预防方式是在AGENTS.md中写长文档写入文件回复中只给摘要和下一步计划。5.3 文件路径与权限问题现象是生成的脚本运行时报FileNotFoundError或权限不足。排查时先看路径基准。Codex 工作目录通常是项目根目录但有时候它可能会写出相对路径和脚本运行目录不一致。建议所有 skill 输出统一使用相对项目根目录的路径并在生成脚本时先判断os.path.existsfrom pathlib import Path data_path Path(data/raw/exp.csv) if not data_path.exists(): raise SystemExit(数据文件不存在请检查路径)权限方面确保当前用户对results、figures、submission目录有写权限。如果使用容器或远程服务还要检查挂载目录是否可写。5.4 输出质量不稳定时的降级策略同一个 skill 在不同模型、不同上下文下可能产生差异。要控制质量可以几种手段并行在SKILL.md中提供少量示例输出让 Codex 照格式执行。要求 Codex 先列出执行计划得到用户确认后再开始。把“必须基于文件事实”写进约束禁止它补造参数。对于高风险任务人工先写好模板结构只让 AI 填空。如果一次运行结果不理想不要反复重试生成而是先检查输入文件是否完整、约束是否清晰。质量不稳定很多时候是任务拆得太粗。6. 生产环境建议从个人草稿到团队科研流水线6.1 把 skill 变成团队共享模板个人使用 skill 是效率提升团队使用 skill 则是流程标准化。建议把skills/目录纳入 Git 仓库并让所有成员基于同一个模板开发。修改 skill 时走合并请求评审重点不是代码而是任务边界和防幻觉约束。每个 skill 目录中再放一个CHANGELOG.md记录版本变更。例如“v1.1.0增加期刊格式检查项”。这能避免成员之间出现“我用的是旧版 skill所以输出不一样”的问题。6.2 版本管理与可复现性论文可复现性不只包含数据和代码也包括 AI 辅助工具的版本、模型和 skill。建议在项目根目录维护submission/reproducibility.md记录数据文件来源和下载时间。分析脚本运行环境包括 Python 版本和依赖包版本。Codex 版本和模型名称。使用的 skill 版本。关键文件的 Git commit 哈希。命令执行时间也建议记录。比如运行完成后执行echo analysis completed $(date -Iseconds) results/analysis/run.log这工具化和流水线化的意义在于即使三个月后返修你仍然能回答“当时的统计结果是如何得出的”。6.3 投稿前人工复核清单无论 skill 写得多完整投稿前都必须由作者逐项确认检查项人工确认方式是否通过原始数据未被修改用 Git diff 检查 data/raw 目录统计方法与方法部分一致对比脚本和 manuscript 方法段落所有结果数字可溯源用结果文件反查脚本输出参考文献真实可查在数据库中抽查关键文献图片符合期刊要求检查分辨率、字体、图注审稿回复如实反映修改与修改稿逐条对照AI 使用已声明按目标期刊政策填写利益冲突和作者贡献已声由通讯作者确认这个清单可以直接放进submission/final-checklist.md作为仓库文件每项由负责人填写并签名。6.4 下一步扩展方向当 9 个 skill 在单个论文项目中跑通后可以继续扩展将format-check接入持续集成流程每次提交稿件都自动生成检查报告。为不同目标期刊建立不同 skill 变体例如format-check-nature-family、format-check-elsevier把期刊要求固化。把>