循环

loop
分类通用
作者Alireza Rezvani
许可MIT
评分4.60/5
使用14.7K

/ar:loop — 自主实验循环

启动一个按用户选择的时间间隔定期运行的实验循环。

用法

code
/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        # 停止一个活跃的循环

工作流程

第一步:解析实验

如果未指定实验,则列出所有实验供用户选择。

第二步:选择间隔

如果参数中未提供间隔,则显示以下选项:

code
请选择循环间隔:
  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 并配合以下提示词(填充实验详情):

code
你正在运行 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

json
{
  "cron_id": "{来自 CronCreate 的 id}",
  "interval": "{用户选择的间隔}",
  "started": "{ISO 时间戳}",
  "experiment": "{domain}/{name}"
}

第五步:向用户确认

code
{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})。