AI Research Skill:会自我纠错的 AI 科研助手
一个 SKILL.md 带 AI 走完 ML 科研全流程:假设 → 文献 → 复现基线 → 无泄漏实验 → 诚实分析 → 写论文。最特别的是它会把自己犯过的错记成规则,越用越靠谱。高中生可读,细节拉满。
↗ 打开 GitHub 仓库原链一、它解决什么问题
一句话定位:一个让 AI 真正「做科研」而不是「编科研」的 Skill。它把 AI/ML 研究的全流程(提假设、读文献、复现基线、设计实验、跑实验、诚实分析、写论文)变成 AI 可执行的纪律,并且自带纠错进化能力:犯过的错会被记成规则,下次不再犯。
普通 AI 帮你做科研,像一个很自信但有点浮夸的实习生:论文引用张口就来(可能是编的),实验结果好得离谱(可能是数据泄漏),还从不承认。这个 Skill 要做的,就是给这个实习生配三样东西:① 一本《实验员守则》(8 条铁律,什么能做、什么打死不能做);② 一个随身监理(leakage audit,专门抓"好得不像真的"的结果);③ 一本《错题本》(LESSONS.md,犯过的错记下来,下次自动避开)。守则 + 监理 + 错题本 = 可信研究。
它要消灭的 4 种「科研事故」
README 开篇就点名了 AI 做科研最贵、最常见的四种翻车——注意,每一种都「听起来很厉害,实际全是坑」:
- 事故一:引用的论文不存在。AI 自信满满地引用某篇论文,结果一查——作者、arXiv 号全是编的。
- 事故二:Baseline 是「抄」来的。论文里对比的 baseline 数字是从别人表格里抄的,根本没在自己机器上跑过——环境一变,结论全塌。
- 事故三:指标好是因为「泄漏」。准确率 99% 不是因为模型牛,是因为测试数据偷偷混进了训练集(label leakage)。
- 事故四:「涨点」只是运气好。换个随机种子就不涨了——一次幸运的运行被当成了「重大发现」。
这个 Skill 的 8 条铁律 + leakage 审计 + 多种子验证,就是专门为这四种事故准备的「安检门」。
二、仓库结构导览
仓库很小(10 个文件),但每个文件都有明确分工:
ai-research-skill/ ← 仓库根(git clone 下来就是 Skill 包本身)
├── SKILL.md ← ★ 技能本体:7 步循环 + 8 条铁律 + 自改进机制
├── AGENTS.md ← 给 Codex / OpenClaw 的"薄指针",指向 SKILL.md
├── LESSONS.md ← ★ 错题本:犯过的错 → 规则(递归自改进的核心)
├── LICENSE ← MIT 开源协议
├── scripts/
│ ├── log_lesson.py ← ★ 记错题本的工具:去重、计数、满 3 次提示"转正"
│ └── new_experiment.py ← ★ 实验脚手架:一键生成可复现的实验目录(含配置)
└── references/ ← 分阶段 playbook(用哪阶段读哪份)
├── literature-review.md ← 文献综述:快速找前人工作、建对比矩阵
├── experiment-design.md ← 实验设计:复现、种子、leakage 审计、消融
└── paper-writing.md ← 论文写作:claim→证据 discipline + 可复现清单
包含四大部分:
- Step 0:先读错题本。任何科研任务开始前,先读
LESSONS.md——看看以前的自己(和以前的用户)踩过什么坑。 - 七步研究循环:FRAME → REVIEW → REPRODUCE → DESIGN → RUN → ANALYZE → WRITE(详见第三节)。
- Operating Principles:8 条不可谈判的铁律(详见第四节)。
- 自改进循环机制:什么时候记 lesson、怎么记、seen×3 转正、150 行上限修剪、以及一条安全护栏(lesson 绝不能教 AI 造假)。
输入:你的科研任务("帮我复现这篇论文的 baseline""我的 F1 怎么这么高,帮我查查")。输出:按流程推进的研究动作 + 诚实的结果分析。
这是全仓库最有意思的设计。LESSONS.md 一开始可能是空的,但每当 AI 在任务中犯错并纠正,就会运行:
python scripts/log_lesson.py \
--trigger "reported a gain from one training run" \
--mistake "claimed 'beats baseline' from a single seed" \
--fix "re-ran 3 seeds; gain was inside the noise band" \
--rule "no comparison claim without mean ± std over >=3 seeds" \
--tags "seeds,reproducibility"脚本会自动:去重(相似的规则合并)、计数(这条规则出现几次)、满 3 次提醒「转正」(把规则升级进 SKILL.md 的铁律)、超 150 行提醒修剪(删掉过时低频的)。你用得越久,这个 Skill 越懂你常犯的错。(机制详解见第六节)
只有几行,告诉 Codex / OpenClaw 这类读 AGENTS.md 的 Agent:「真正的指令在 SKILL.md,去读它」。一份 Skill,Claude、Codex、OpenClaw 三处通用。
literature-review.md:怎么快速找到真正重要的 5-15 篇论文、提炼每篇的 claim/方法/baseline/缺口、建对比矩阵。experiment-design.md:复现、设种子、leakage 审计清单、对照与消融设计(可信机制的核心,详见第五节)。paper-writing.md:claim→证据 discipline、可复现性清单。
SKILL.md 明确要求:按需加载,别一次全读——在哪个阶段就读哪份。
三、七步研究循环:科研不是直线,是环
SKILL.md 开宗明义:Research is a loop, not a line.(科研是环,不是直线。)先判断用户处在哪个阶段,从「下一个真实步骤」开始——别让人家都做到第 4 步了,你非要从第 1 步重来。
图 1:七步研究循环(据 SKILL.md "The research loop" 重绘)
每一步在干什么(一句话版 + 高中生例子)
- 1. FRAME(框定):把模糊的想法变成一句话:「我们声称 X 在数据集 Z 上把指标 Y 提升了,相比基线 B。」填不满这句话 = 还没想清楚,先别跑实验。
例子:「我们声称新方法 FastSR 在 Urban100 上把 PSNR 提高了 0.5dB,相比 RealESRGAN。」 - 2. REVIEW(文献):找出真正重要的 5-15 篇论文(不是 100 篇),每篇提炼:它声称什么、一句话方法、打败了哪个 baseline、留下什么缺口。建一张小对比表。
例子:发现 RealESRGAN 就是你必须打败的「最强 baseline」。 - 3. REPRODUCE(复现):在你自己的机器、你的数据、你的评测代码上,把最强 baseline 完整跑一遍,对上它论文里的数字。没有尺子,就别量布。
- 4. DESIGN(设计):先定好数据划分再看测试集;设好随机种子并记录;做对照;显式地做一遍泄漏审计(见第五节)。
- 5. RUN(运行):用
new_experiment.py生成实验目录,配置 + 代码版本 + 种子自动存档。「这个数是怎么跑出来的?」必须永远有答案。 - 6. ANALYZE(分析):跟你自己跑过的 baseline 比,报 均值 ± 标准差(≥3 个种子)。警惕「好得离谱」的信号。
- 7. WRITE(写作):摘要里每个 claim,表格里都要有数字撑着;附可复现清单(数据、代码、种子、算力、超参数)。
四、八条铁律:分清「真成果」和「假繁荣」
SKILL.md 的 Operating Principles 是「不可谈判」的——赶时间的时候更要遵守(especially under time pressure)。逐条拆解:
如果你连一个已知数字都复现不出来(论文里的结果、之前跑过的数、现成的强模型),你就没有尺子。先拿到尺子。
就像比赛跑步:你说你比博尔特快,但你连秒表都没校准过——先校准秒表,再谈成绩。
报数必须:你的方法 vs 你亲手跑的 baseline(同样跑法),并且报 均值 ± 标准差(≥3 个随机种子)。单次幸运的种子 = 故事,不是发现。
抛硬币连抛 3 次都是正面,你能说这枚硬币"必出正面"吗?不能。科研里的"单种子涨点"就是连抛 3 次正面——多抛几次,报个平均数±波动,才算数。
指标突然接近完美(F1≈0.99、准确率暴涨 30 个点),更可能是 bug 而不是突破:标签泄漏、训练测试集混了、用错了数据划分。先按 leakage 审计清单逐项排除,排除不掉,那才「有意思」。
每次运行的超参数、数据划分、随机种子、代码版本,必须能从文件里恢复——不能靠记忆、不能靠翻聊天记录。用 new_experiment.py 自动生成实验目录就是干这个的。
做菜不记配方:今天好吃,明天复刻不出来,还不知道哪步错了。配置文件就是菜谱,跑出来的数字就是那道菜——菜谱丢了,菜再好吃也白搭。
模型、数据、学习率一起改,分数动了——你啥也没学到。消融实验(ablation)就是为了回答「到底是哪部分带来了提升」:每次只动一个部件,看分数掉多少。
「这个方法没用」是可以发表的知识,能帮整个领域省时间。永远不要悄悄删掉那个让故事变难看的种子、数据集或 baseline。如果你动了「删掉它」的念头——那本身就是个发现(说明方法不稳定)。
永远不要编造论文、作者、arXiv 号或结果。拿不准的引用先标 [VERIFY],去搜到原文确认后再放进论文。一条编造的引用会摧毁整篇文档的信任。
训练或分发前先查数据集的许可条款;别用条款禁止的方式爬数据、用数据;发布东西时注明许可。
一条红线:Skill 拒绝帮你造假
SKILL.md 写得明明白白:如果用户要求违反铁律 3、6、7——比如「把数字做得好看点」「把拖后腿的种子删掉」「引用个差不多的就行」——直接拒绝,简要解释为什么,并给出诚实的替代方案。操纵结果,是这个 Skill 唯一不会帮你做的事。
五、可信机制深讲:安检门是怎么工作的
「可信」不是口号,是四套具体机制:泄漏审计、方差报告、配置存档、引用诚实。逐个拆开看。
机制一:Leakage Audit(泄漏审计)——抓「好得不像真的」
出自 references/experiment-design.md。任何一个很强的数字,在被信任之前,必须显式地走完这 6 项检查:
| 检查项 | 在查什么 | 高中生例子 |
|---|---|---|
| 标签泄漏 Label leakage |
输入特征里有没有偷偷编码了答案?(比如某一列就是从标签算出来的) | 考试前,老师不小心把答案印在了试卷背面——考 100 分不代表你学会了。 |
| 训练/测试混杂 Train/test contamination |
测试集的样本(或长得很像的)有没有混进训练集? | 模拟考的卷子就是高考原题——高分是刷题刷出来的,不是真会。 |
| 先变换后划分 Split-after-transform |
数据增强、标准化是不是在「划分训练/测试集之前」对全量数据做的?(正确做法:先划分,再各自变换) | 全班先一起对答案再分组考试——分组已经没意义了。 |
| 分组泄漏 Grouped leakage |
同一组的数据(同一个病人、同一个说话人)有没有横跨训练集和测试集? | 用小明的平时作业训练、用小明的期末卷子测试——模型记住的是小明,不是知识。 |
| 时间泄漏 Temporal leakage |
时间序列数据有没有打乱?(正确做法:用过去训练,预测未来) | 用明天的彩票号码训练、预测昨天的开奖——穿越作弊。 |
| 在测试集上调参 Tuning on test |
超参数/早停是不是看着测试集分数调的?(测试集要留到最后,调参用验证集) | 考试前先偷看卷子再复习——考的是记忆力,不是理解力。 |
机制二:方差报告——用数字给「运气」定价
- 所有随机种子(数据打乱、模型初始化、框架随机性)都要设定并记录进配置文件。
- 任何对比结论需要 ≥3 个种子,报告 均值 ± 标准差。
- 如果「提升」落在合并噪声带里——那不叫提升,叫运气。
- 方差本身也是发现:方差很大,说明方法或 baseline 不稳定,照实报告。
机制三:配置存档——每个数字都有「出生证明」
scripts/new_experiment.py 一键生成实验目录骨架,把「这次运行的所有配置」自动存档。规则是:只看存档的配置,任何人(包括未来的你)都能复现这个数字。如果「这个数怎么来的」的答案是「我记得好像是上周二那次运行」——这个结果还不配被信任。
机制四:引用诚实——[VERIFY] 标记制度
- 只引用真正看过的文献;
- 拿不准的引用,先标
[VERIFY],去搜到原文、核对作者/年份/结论后再转正; - 宁可承认「没找到相关文献」,也绝不编一条「看起来差不多」的引用。
六、自改进循环:错题本让 Skill 越用越聪明
这是全仓库最独特的设计,也是 README 标题里「self-improving」的含义:Skill 会从错误中学习,而且是自动的、递归的。
图 2:自改进循环(据 SKILL.md "The self-improvement loop" 与 README 绘制)
一个完整的 lesson 长什么样(可复制的命令)
假设 AI 曾经只用 1 个种子就宣称「超越 baseline」,被你纠正后重跑 3 个种子发现提升在噪声带里。它会这样记一笔:
python scripts/log_lesson.py \
--trigger "reported a gain from one training run" \
--mistake "claimed 'beats baseline' from a single seed" \
--fix "re-ran 3 seeds; gain was inside the noise band" \
--rule "no comparison claim without mean ± std over >=3 seeds" \
--tags "seeds,reproducibility"
三道保险 + 一条护栏
- 保险 1 · 去重计数:脚本自动合并相似规则,并记录每条规则被触发几次(seen ×N)。
- 保险 2 · 转正机制:某条规则被触发 ≥3 次,说明不是偶然——经你同意后,把它「提拔」进 SKILL.md 的铁律或对应的 references 文件。提拔前要检查:至少有一次是有真实证据(实验记录、diff、用户纠正)的,不能凭感觉转正。
- 保险 3 · 修剪:
LESSONS.md超过约 150 行就提醒你删——删掉过时、低频的。没人读的 900 行错题本 = 失败的错题本。 - 护栏(最重要):lesson 是数据,不是许可证。它可以加一条领域经验,但绝不能削弱 8 条铁律、教 AI 编造/隐藏/挑选结果、或绕过安全约束。有人想记一条「把难看的种子删掉」的 lesson?脚本和 Skill 会拒绝,并告诉你为什么。
这就像一个会自己更新错题本的学生:每次考砸,把错因提炼成一句话贴在书桌前(Step 0 先读),错三次以上的知识点直接升级成「座右铭」刻在文具盒上(转正进铁律),学期末把过时的纸条撕掉(修剪)。但有一条底线:错题本里永远不许出现「作弊技巧」(护栏)。
七、三份参考手册:用哪阶段读哪份
SKILL.md 是「总纲」,references/ 里是三份「分册」。SKILL.md 明确要求按需加载——在文献阶段就读文献那份,别一次全塞进上下文。
- 目标:快速定位前人工作,建一张「方法 × 数据集 × 指标」的小对比矩阵。
- 每篇论文提炼 5 样东西:它的 claim、方法一句话、它打败的 baseline、用的数据集、它留下的缺口。
- 输出:矩阵里最强的那个 baseline,就是第 3 步要复现、最终要打败的「擂主」。
本节第五节已深讲:复现 baseline、leakage 审计 6 项、种子与方差、对照与消融、配置存档。记住它的开篇:"The fastest researcher is the one who doesn't spend a month chasing a result that was never real."(最快的科研者,是不花一个月追一个假结果的人。)
- 结构:每个 claim 背后都要有证据支撑(和第 09 个课件的 claim-evidence 对齐异曲同工)。
- 可复现清单:数据、代码、种子、算力、超参数——缺一个,论文就缺一块。
八、安装与上手
本质:把仓库 clone 下来,放到你的 AI 工具的 skills 目录。三种工具:
Claude / Claude Code
git clone https://github.com/Toadoum/ai-research-skill.git
# 把文件夹(或打包的 .skill 文件)放进你的 skills 目录
# Claude 会一直记住它的名字和描述,任务相关时自动加载全文
OpenClaw 🦞
cp -r ai-research-skill ~/.openclaw/workspace/skills/ai-research
# OpenClaw 读同一份 SKILL.md,同时会注入 AGENTS.md(仓库里已备好)
Codex(及其他读 AGENTS.md 的 Agent)
# 把 AGENTS.md 放在你的仓库根目录(仓库里自带,是指向 SKILL.md 的薄指针)
# Codex 读到 AGENTS.md,就会去 follow SKILL.md作者提醒:安装前先检查 Skill 内容——把社区 Skill 当成「陌生人的 npm 包」对待,别闭眼装。
然后这样用(可复制的提示词)
"help me reproduce this paper's baseline"
(帮我复现这篇论文的 baseline → 自动进入第 3 步)
"why is my F1 suspiciously high?"
(我的 F1 高得离谱,帮我查查 → 自动触发 leakage 审计)
"help me plan an ablation study for my new module"
(帮我给新模块设计消融实验 → 进入第 4 步)
# 中文也行,直接说事,Skill 会自己判断你处在循环的哪一步
九、三个适用场景小故事
研二的小陈跑了个文本分类模型,F1 直接 0.99,兴奋地发朋友圈。导师让他先问一句 AI:「why is my F1 suspiciously high?」Skill 按铁律 3 启动 leakage 审计,逐项排查——最后发现:他在划分训练/测试集之前,对全量数据做了数据增强(split-after-transform),测试集里全是训练样本的「双胞胎」。重做划分后,F1 回到 0.87。小陈删了朋友圈,但保住了一篇论文。
小周的新方法比 baseline 高 1.2%,正准备写进论文。Skill 按铁律 2 要求补跑 3 个种子:结果分别是 +1.2%、-0.3%、+0.4%——均值 ± 标准差一算,提升完全落在噪声带里。小周把「重大发现」改成了「诚实报告」:方法在这个任务上效果不稳定,附上了方差分析。审稿人反而因为这份诚实给了高分——「没涨」也是一种知识。这次教训被记进了 LESSONS.md:no comparison claim without mean ± std over ≥3 seeds。
老赵用这个 Skill 做了三个月实验,LESSONS.md 从空文件长到了 40 多条:有「某数据集必须用分组划分」的坑,有「某框架的随机种子要设三处」的坑,有「baseline X 在新版 CUDA 下复现对不上」的坑。第四个月开新课题,Step 0 读错题本,三个历史大坑全部自动避开。他说:「这 Skill 第一个月只是个守则,第三个月已经像个带过我的师兄。」
十、总结与延伸思考
一句话总结
这是一个「科研纪律 Skill 化」的仓库:7 步研究循环管流程、8 条铁律管底线、leakage 审计管「好得离谱」、LESSONS.md 管进化——目标是让 AI 产出经得起复现、经得起审稿的研究,而不是听起来漂亮的幻觉。
它的 3 个最大特点
- 先证伪再庆祝:对「好结果」的第一反应永远是怀疑——leakage 审计 6 项逐项排除。
- 诚实是硬约束:单种子不算数、负结果也要报、引用不编造;让你造假的要求直接拒绝。
- 会进化的 Skill:错题本 + 转正 + 修剪三件套,用得越久越懂你的坑。
延伸思考
- LESSONS.md 的「转正」要你点头——如果 AI 自动把规则写进铁律而不需要你确认,会有什么风险?(提示:想想护栏那条「lesson 绝不能削弱铁律」。)
- 这个 Skill 管的是「实验可信」。那「文献可信」呢?AI 读论文、做调研时怎么保证引用不编造、证据可追踪?这正是本系列第 11 个课件(claude-deep-research-skill)要解决的问题。
- 试着把 8 条铁律套用到你的学习/工作中:哪一条对你最有触动?(比如「一次只改一个东西」——复习时同时换资料又换方法,提分了也不知道为啥。)
术语翻卡:点击卡片看高中生版解释
自测:单选,点击选项即判对错
点一个选项,绿色=答对,红色=答错,解析会自动展开。