循环
/ar:loop — 自主实验循环
启动一个按用户选择的时间间隔定期运行的实验循环。
用法
/ar:loop engineering/api-speed # 启动循环(将提示选择间隔)
/ar:loop engineering/api-speed 10m # 每 10 分钟一次
/ar:loop engineering/api-speed 1h # 每小时一次
/ar:loop engineering/api-speed daily # 每日约 9am
/ar:loop engineering/api-speed weekly # 每周一约 9am
/ar:loop engineering/api-speed monthly # 每月 1 号约 9am
/ar:loop stop engineering/api-speed # 停止一个活跃的循环工作流程
第一步:解析实验
如果未指定实验,则列出所有实验供用户选择。
第二步:选择间隔
如果参数中未提供间隔,则显示以下选项:
请选择循环间隔:
1. 每 10 分钟 (快速 — 实时观察)
2. 每小时 (后台 — 稍后查看)
3. 每日约 9am (隔夜实验)
4. 每周一约 9am (长期运行实验)
5. 每月 1 号约 9am (慢速实验)映射至 Cron 表达式:
| 间隔 | Cron 表达式 | 简写 |
|----------|----------------|-----------|
| 10 分钟 | */10 * * * * | 10m |
| 1 小时 | 7 * * * * | 1h |
| 每日 | 57 8 * * * | daily |
| 每周 | 57 8 * * 1 | weekly |
| 每月 | 57 8 1 * * | monthly |
第三步:创建定期任务
使用 CronCreate 并配合以下提示词(填充实验详情):
你正在运行 autoresearch 实验 "{domain}/{name}"。
1. 读取 .autoresearch/{domain}/{name}/config.cfg 以获取:target, evaluate_cmd, metric, metric_direction
2. 读取 .autoresearch/{domain}/{name}/program.md 以获取策略和约束
3. 读取 .autoresearch/{domain}/{name}/results.tsv 以获取实验历史
4. 执行:git checkout autoresearch/{domain}/{name}
然后执行恰好一次迭代:
- 审查 results.tsv:哪些有效,哪些失败,哪些尚未尝试
- 对目标文件进行一次修改(根据运行次数进行策略升级)
- 提交:git add {target} && git commit -m "experiment: {description}"
- 评估:python {skill_path}/scripts/run_experiment.py --experiment {domain}/{name} --single
- 读取输出 (KEEP/DISCARD/CRASH)
规则:
- 每次实验仅限一次修改
- 绝不要修改评估器 (evaluator)
- 如果 results.tsv 中出现连续 5 次崩溃,删除此 cron 任务 (CronDelete) 并发出警报
- 每 10 次实验后,更新 program.md 的 Strategy 部分
当前最佳指标:{从 results.tsv 读取或 "尚无基准"}
目前总实验次数:{从 results.tsv 计数}
第四步:存储循环元数据
写入 .autoresearch/{domain}/{name}/loop.json:
{
"cron_id": "{来自 CronCreate 的 id}",
"interval": "{用户选择的间隔}",
"started": "{ISO 时间戳}",
"experiment": "{domain}/{name}"
}第五步:向用户确认
{domain}/{name} 的循环已启动
间隔:{间隔描述}
Cron ID:{id}
自动过期:3 天 (CronCreate 限制)
查看进度:/ar:status
停止循环:/ar:loop stop {domain}/{name}
注意:定期任务在 3 天后会自动过期。
过期后请重新运行 /ar:loop 以重启。
停止循环
当用户运行 /ar:loop stop {experiment} 时:
1. 读取 .autoresearch/{domain}/{name}/loop.json 以获取 cron ID
2. 调用 CronDelete 并传入该 ID
3. 删除 loop.json
4. 确认:“{experiment} 的循环已停止。共完成 {n} 个实验。”
重要限制
- 3 天自动过期:
CronCreate任务在 3 天后过期。对于更长时间的实验,用户必须重新运行/ar:loop来重启。结果会保留——新循环将从旧循环停止的地方继续。
- 每个实验仅限一个循环:不要为同一个实验启动多个循环。
- 并发实验:只有在不同的 git 分支上时,多个实验才能同时循环(默认情况下如此——每个实验都有独立的
autoresearch/{domain}/{name})。