关于 autoresearch
autoresearch 是用于 karpathy/autoresearch 工作流中开展有限时长 ML 训练实验的技能,涵盖环境准备、实验规划、循环运行和结果复核,并保持评估器固定,以较低的 `val_bpb` 决定保留结果。
主要功能
- 01指导环境准备与硬件检查
- 02编写 `program.md` 实验计划
- 03运行有界的 `train.py` 搜索循环
- 04依据 `val_bpb` 保留或回退改动
- 05在 `results.tsv` 记录并复核实验
- 06保持评估框架固定
适用场景
- 01准备训练仓库以开展实验
- 02在运行前规划搜索环节
- 03运行有界的过夜训练循环
- 04复核结果并选择后续实验
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ akillness/ jeo-skills --skill autoresearch安装后在 Claude Code 中输入/autoresearch确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
SKILL.toonevals/evals.jsonreferences/architecture.mdhardware-config.mdoperating-modes-and-route-outs.mdprogram-md-guide.mdscripts/check-hardware.shrun-experiment.shrun-loop.shsetup.shshow-results.sh详细介绍
autoresearch
Autoresearch 是一个闭环 ML 实验工作流:
- 人类编写
program.md - Agent 修改
train.py prepare.py保持不变- 每次运行都有相同的 300 秒预算
val_bpb越低越好- 回退退化的更改
此技能应作为一个路由优先的入口,而不是一份冗长教程。先判断用户的模式,严格遵守不可变的评估框架规则,然后引导用户使用最精简且有用的脚本或参考资料。
何时使用此技能
- 在真实的 GPU 机器上设置
karpathy/autoresearch - 在会话开始前编写或完善
program.md - 运行有时限的
train.py隔夜搜索循环 - 在会话结束后解读
results.tsv - 在不使比较失效的前提下,调整工作流以适应更严格的 VRAM 限制
- 解释
autoresearch与相关评估工具之间针对 ML 的边界
何时不使用此技能
- 用户希望在冻结提示词/评估的条件下优化
SKILL.md、提示词或仓库内工作流——使用skill-autoresearch - 用户需要应用级追踪、基于数据集的大模型评估、反馈审查或可观测性——使用 LangSmith、Braintrust、Weave、Promptfoo 或类似工具
- 任务不涉及真实训练仓库、
program.md、train.py、固定运行时预算以及依据val_bpb决定保留或回退的逐步优化 - 用户实际想要的是论文综述、通用基准扫描或文献回顾,并无意运行训练循环
核心边界
| 关注点 | autoresearch 负责 | 转至其他工具 |
|---|---|---|
| 可变目标 | 真实训练仓库中的 train.py | 提示词、应用配置、SKILL.md、产品行为 |
| 固定评估器 | prepare.py、验证分片、TIME_BUDGET=300、本次会话选定的 MAX_SEQ_LEN / EVAL_TOKENS | 提示词/评估数据集、应用评分卡、可观测性仪表板 |
| 接受规则 | 仅保留更低的 val_bpb;平局或退化时回退 | 人工审查队列、应用级发布门槛 |
| 主要产物 | program.md、results.tsv、保留/丢弃的提交 | 提示词套件、追踪记录、反馈数据集 |
如果不符合这一边界,不要勉强使用此技能。
必需的前置信息
开始操作前,确认:
- 模式——设置、
program.md、运行循环、结果解读或受限硬件 - 仓库状态——是否已克隆、是否已安装依赖
- 硬件状态——GPU / VRAM / CUDA / MLX / Windows 路径
- 会话状态——首次基线、正在运行的循环或已完成的运行
- 约束状态——目标 VRAM 上限、
prepare.py是否已为本次会话冻结
指令
步骤 1:只选择一种运行模式
选择能满足请求的最精简模式:
-
设置就绪
- 安装
uv - 克隆仓库
- 同步依赖
- 使用
scripts/check-hardware.sh验证 GPU/CUDA/uv - 运行首次基线实验
- 安装
-
编写
program.md- 编写或完善人工研究章程
- 记录当前基线
val_bpb - 确定假设的优先级
- 列出已尝试的内容
- 在循环开始前冻结约束
-
有界运行循环
- 确认评估器已固定
- 仅将
train.py用作可变搜索对象 - 遵循保留/回退纪律运行循环
- 将每次实验记录到
results.tsv
-
结果解读
- 总结最佳保留运行
- 找出重复失败或崩溃模式
- 提取应写入下一版
program.md的内容 - 区分真正的提升与偶发异常
-
受限硬件调整
- 在会话开始前设置
MAX_SEQ_LEN和EVAL_TOKENS - 会话开始后保持不变
- 调整模型/搜索策略,不要在运行过程中作弊修改评估器
- CUDA 假设不成立时,转向社区分支
- 在会话开始前设置
除非用户明确要求完整的端到端讲解,否则不要一次性回答全部五种模式。
步骤 2:重申不可变的测试框架
每种模式都必须遵守以下规则:
program.md由人工编写,会话期间只读train.py是主要的可变搜索对象- 会话开始后,
prepare.py只读 TIME_BUDGET=300保持固定val_bpb是主要的保留/回退指标results.tsv仅追加pyproject.toml中的依赖集保持锁定
如果用户想更改评估器,请开启一条新的对比轨道,而不是在当前会话中更改。
步骤 3:执行选定的模式
模式 A — 环境就绪
当仓库尚不可运行时,使用此路径。
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/karpathy/autoresearch
cd autoresearch
uv sync
bash scripts/check-hardware.sh
uv run prepare.py
uv run train.py > run.log 2>&1
grep "^val_bpb:\|^peak_vram_mb:" run.log
成功条件:一次基线运行成功完成,并输出 val_bpb 和 peak_vram_mb。
模式 B — 编写 program.md
当循环已存在但方向不明确时,使用此路径。
最低限度的章节:
- 与降低
val_bpb相关的目标 - 当前基线
val_bpb - 按优先级排列的探索方向
- 已尝试过的内容
- 约束:
TIME_BUDGET=300、不得修改prepare.py、不得添加新包、VRAM 上限、每次实验只做一项有意义的更改
如需更完整的模板和更新模式,请参阅 references/program-md-guide.md。
模式 C — 有界运行循环
仅在环境和 program.md 均准备就绪后使用此路径。
循环约定:
- 阅读
program.md和当前的train.py - 提出一个假设
- 编辑
train.py - 提交更改
- 运行一次 300 秒的实验
- 提取
val_bpb - 如果有所改善则保留,否则运行
git reset HEAD~1 - 将结果追加到
results.tsv
常用命令:
bash scripts/run-experiment.sh
bash scripts/run-loop.sh --max 20 --desc "session-1"
不要鼓励一次性进行多项更改的“大改写”。干净的消融实验比炫目的修改更重要。
模式 D — 解读结果
在运行或检查点完成后,使用此路径。
实用命令:
bash scripts/show-results.sh --top 10
awk -F'\t' '$4=="keep"' results.tsv | sort -t$'\t' -k2 -n
awk -F'\t' '{print $4}' results.tsv | sort | uniq -c
只总结四项内容:最佳提升、反复失败之处、应移入 What Has Been Tried 的内容,以及下一个范围较窄的实验系列。
模式 E — 适配受限硬件
当 VRAM、平台或运行时间约束占主导时,使用此路径。
规则:
- 在会话开始前选择
MAX_SEQ_LEN和EVAL_TOKENS - 会话期间不得更改它们
- 在修改评估器之前,先降低模型和搜索目标
- 对于 Apple Silicon / 非 CUDA 路径,优先转介至社区分支
如需具体取值和故障排除,请参阅 references/hardware-config.md。
步骤 4:遇到相邻需求时积极转介
以下情况应转介:
- 用户想优化指令、提示词或仓库本地技能 →
skill-autoresearch - 用户想要应用级跟踪、反馈审查、可观测性或线上/线下评估仪表板 → LangSmith / Braintrust / Weave / Promptfoo
- 用户需要的是通用文献综述,而非可运行的 ML 循环 → 研究或综述工具
步骤 5:将繁杂细节放在支持文件中
使用支持文件,避免在正文中重复解释所有内容:
references/operating-modes-and-route-outs.md— 快速转介表、最简回复格式和交接逻辑references/architecture.md— 不可变约定、文件映射、指标选择依据references/program-md-guide.md— 模板和更新规则references/hardware-config.md— VRAM 表格和平台故障排除scripts/*.sh— 可运行的环境设置 / 循环 / 报告辅助脚本
可用脚本
在 autoresearch 仓库目录内运行:
| 脚本 | 用途 | 用法 |
|---|---|---|
setup.sh | 一次性环境设置 | bash scripts/setup.sh [--seq-len 512] |
run-experiment.sh | 单次 5 分钟实验并提取指标 | bash scripts/run-experiment.sh |
run-loop.sh | 自主循环:运行 → 保留/回退 → 重复 | bash scripts/run-loop.sh [--max 20] |
show-results.sh | 以人类可读的形式报告 results.tsv | bash scripts/show-results.sh [--top 10] |
check-hardware.sh | GPU/CUDA/uv 就绪状态检查(JSON 输出) | bash scripts/check-hardware.sh |
参考资料
references/ 中的详细文档:
| 文件 | 内容 |
|---|---|
references/operating-modes-and-route-outs.md | 模式选择器、相邻任务边界和最简输出约定 |
references/architecture.md | 系统设计、不可变性约定、Git 阶梯式改进、指标依据 |
references/program-md-guide.md | 如何编写和更新有效的 program.md 指令 |
references/hardware-config.md | 不同 GPU 的 VRAM 设置、内存优化、平台故障排查 |
示例
示例 1:首次使用 40GB GPU
请求:“帮我在 40GB GPU 上运行 Karpathy autoresearch。”
预期行为:
- 首先选择 环境就绪检查
- 检查硬件和依赖项
- 运行一次基线实验
- 仅在基线结果生成后,才转到
program.md编写
示例 2:用户想改为优化技能
请求:“autoresearch 能帮我用二元评估改进这个 SKILL.md 吗?”
预期行为:
- 立即转到
skill-autoresearch - 说明此技能用于在
train.py上进行真实的 ML 训练搜索
最佳实践
- 从适用的最小模式开始 — 环境准备、编写指令、运行循环、结果解读或硬件适配
- 先做基线,再谈雄心 — 在讨论通宵循环前,先确认成功运行一次
- 在会话开始前固定评估器 —
prepare.py、TIME_BUDGET、MAX_SEQ_LEN和EVAL_TOKENS必须保持可比 - 一次只做一项有意义的实验 — 消融实验胜过来历不明的实验组合
- 让
results.tsv只追加内容 — 被舍弃的运行结果仍是证据 - 将深入细节放入参考资料和脚本 — 主入口应负责分类和引导,而不是重复每张表格
- 尽早将相邻任务引导到其他方向 — 提示词/应用评估与
SKILL.md优化是不同的方向