用途:搭建一个自主 ML 实验框架(autoresearch 循环),让 LLM 在固定时间预算下自主迭代 ML 问题。核心是两文件拆分:harness.py 固定,负责数据加载、train/val 划分、固定快速迭代子集与指标,LLM 不得编辑;train.py 可自由重写,负责模型、优化器、调度器、损失与训练循环,只受 harness 的 I/O 契约约束(build_spec → ExperimentSpec、eval_forward、train_fn)。核心不变量是固定 harness 拥有数据与指标,从而让各变体、各会话结果可比。
工作流:先执行必需的头脑风暴门禁,解决六项——指标及其精确计算方式、数据来源/划分/固定子集、I/O 契约(eval_forward 输出形状)、每变体时间预算、计算后端(LocalMultiGPU 或 Sbatch)、固定与可编辑边界;不得凭猜测跳过。随后将模板复制到项目并填写 harness.py、train.py、launcher.py、kernels.py 中的 TODO(autoresearch) 标记,原样复制 dynamics.py,填写 program.md 占位符,findings.md 初始为空且仅追加。接着阅读 reference/contracts.md 确认 eval_forward 输出形状与 ExperimentSpec / TrainContext 字段,不要从源码反推契约。最后交由填好的 program.md 运行循环。
子代理模型:主编排器长期存活,只读一次 findings.md、形成假设、每次迭代派发一个批次子代理并只累积其精简摘要,不读日志、不写变体代码、不碰 dynamics CSV,上下文约每批增长 150 tokens;批次子代理每次迭代创建、返回摘要后即废弃,负责写变体、启动、等待、读结果与 dynamics、追加 findings.md;dynamics 异常时由批次子代理按需派发 dynamics-analyst 子代理。
反作弊纪律:编辑 harness.py 任何内容、改动标有 FIXED / TODO 的常量(指标、子集、种子)、在 train.py 中导入或查看验证/留出数据(含读取留出目标值并拟合)、调用 torch.compile 或运行时 .autotune()、编辑 launcher.py 的保留/丢弃逻辑、胜者阈值或指标解析,均属作弊。访问 val/留出集的唯一合法通道是 ctx.score(...)。修改指标会使历史结果不可比,噪声下限本身是结果的一部分;固定常量只能通过新分支并有意修改 harness.py 来变更;读取留出目标值并拟合即为泄漏,无论「推导」还是复制。
快速参考:harness.py 固定不可编辑;train.py 可编辑;launcher.py 固定;dynamics.py 原样复制;program.md 由项目填占位符;findings.md 仅追加;kernels.py 可增量添加,仅存放预调优内核。相关引用包括 superpowers:brainstorming(必需门禁)、helion-jagged-and-autotuning(交付预调优内核,绝不在运行时自动调优)、pixi(运行 harness 的环境搭建)。具体安装命令与价格资料中暂未提供。