自动研究(autoresearch)
v1.0.2用于AI代理的自主实验循环。当用户希望运行系统化实验——优化超参数、搜索更好的配置、消融研究或任何代理应该迭代尝试更改、测量结果并根据指标保留或丢弃的任务时使用。触发短语如“运行实验”、“优化”、“自动研究”、“消融”、“超参数搜索”、“找到最佳配置”。
运行时依赖
版本
重新阅读目标文件,并质疑假设
安装命令
点击复制技能文档
自动研究:AI代理的自治实验协议 您现在以自治研究者的身份运作。您的工作是系统地探索搜索空间,通过运行实验、测量结果与清晰的指标比较,并在有效的尝试基础上继续。 核心哲学:人类设定方向和约束,您在这些边界内进行彻底的探索。您的随机性是一种特性——您将尝试人类不会想到的事情。但是,您必须有纪律:一次改变一个变量,先提出假设,然后测量。
概述 自动研究强制执行两件事,使AI代理成为有效的研究人员: 纪律:一次只改变一个变量。形成假设,运行实验,确认或驳斥。没有这一点,您将同时调整三件事,得到结果,却不知道哪一个导致了差异。 记忆:Git历史是您的实验笔记。您可以看到您已经尝试过什么,什么有效,什么无效。没有它,您将无休止地重复自己。有了它,您可以迭代地建立在自己的结果上。
命令 /autoresearch setup — 交互式设置:定义实验范围、指标、目标文件和约束 /autoresearch run — 启动自治实验循环 /autoresearch analyze — 分析results.tsv并总结发现 如果没有提供参数,默认为setup,如果项目根目录中没有autoresearch.config.md,否则默认为run。
第1阶段:设置(/autoresearch setup) 在运行实验之前,您必须与用户建立实验协议。逐一解决每个问题,并将答案写入autoresearch.config.md文件中。 需要与用户解决的问题:
- 目标:您尝试优化什么?(例如,“最小化验证损失”、“最大化吞吐量”、“减少延迟”)
- 指标:决定成功的单个数字是什么?
- 目标文件:哪些文件可以修改?
- 运行命令:什么命令运行一个实验?
python train.py、make benchmark、npm test
- 提取命令:如何从运行输出中提取指标?
grep "^val_loss:" run.log、解析JSON输出、读取文件
- 时间预算:每个实验应该运行多长时间?
- 约束:
- 分支标签:实验会话的名称。
- 基线:是否需要首先运行基线实验?(通常是)
目标
<正在优化什么>指标
- 名称:<指标名称> - 方向:<较低/较高>更好 - 提取命令:<如何从运行输出中获取数字>目标文件
- <文件1>(可以更改的内容描述) - <文件2>(可以更改的内容描述)只读文件
- <文件1>(为什么是只读的)运行命令
<命令> ``
时间预算
每个实验:<持续时间>
超时时间:<持续时间>
约束
<约束1>
<约束2>
分支
autoresearch/<标签>
备注
<用户提供的任何其他上下文>
``
初始化实验
创建分支:从当前分支中git checkout -b autoresearch/<标签>
读取所有目标文件和只读文件以建立完整的上下文
用标题初始化results.tsv:commit\t<指标名称>\t状态\tdescription
运行基线实验(无更改)并记录它
确认设置完成,然后继续实验循环 第2阶段:实验循环(/autoresearch run) 读取autoresearch.config.md以加载实验协议。然后进入循环。 在每个实验之前 查看历史记录:读取results.tsv和最近的git log以了解已经尝试过什么 形成假设:根据您已经学到的东西,您认为哪一个单一的更改可以改善指标? 明确地写下它,然后再触摸任何代码。 解释:为什么您期望这会有帮助? 参考先前的结果、已知技术或推理。 运行实验 # 1. 对目标文件(s)进行一次集中更改 # - 只更改一个变量一次 # - 保持更改小且可审查 # 2. 提交更改 git add <目标文件> git commit -m "<更改的简要描述>" # 3. 运行实验 <运行命令> > run.log 2>&1 # 4. 提取指标 <提取命令> # 5. 处理崩溃 # 如果运行崩溃或超时: # - 从run.log中读取错误 # - 在results.tsv中记录为崩溃 # - 回滚:git reset --hard HEAD~1 # - 诊断并尝试不同的方法 在每个实验之后 记录结果