用途:实验循环(Experiment Loop)是一种系统化的迭代代码改进方法,每次只做一处针对性修改,用基线指标衡量,只有结果改善才保留,否则回退。灵感来自 karpathy/autoresearch,并被推广到任意可测量的代码质量指标。
核心流程:1 定义可测量指标与约束;2 测量当前基线;3 做一处针对性修改;4 重新测量;5 决定保留或回退;6 记录尝试与结果;7 重复,直到完成或进入平台期。
适用场景:减少 lint 警告或类型错误、提升模块测试覆盖率、减小包体积或构建时间、优化数据库查询性能(可用 EXPLAIN ANALYZE 测量)、提升无障碍评分(Lighthouse、axe)、降低圈复杂度。不适合:主观改进(可读性)、探索性工作、功能开发、安全修复等无法归结为单一数字的任务。
前提条件:需要可测量指标(命令输出数字且方向明确)、受控实验(每次只改一处并独立测量)、自动评估(保留/回退由指标机械决定,不做主观判断)。
内置指标示例:lint 警告用 eslint . --format json(越低越好);类型错误用 tsc --noEmit 2>&1 | grep error | wc -l(越低越好);测试覆盖率用 vitest --coverage --reporter=json(越高越好);包体积用 du -sk dist/(越低越好);构建时间用 time npm run build(越低越好);复杂度用 npx eslint . --rule 'complexity: error'(越低越好)。任何输出数字的命令都可作为自定义指标。
与框架命令的配合:/optimize <metric> 自动运行完整循环;/checkpoint 创建可回退的保存点;/build-fix 使用相同的回归防护模式;/tdd 结构类似(RED-GREEN-REFACTOR);/quality-gate 提供 lint、类型、测试等指标。
反模式:指标作弊(加 eslint-disable、把测试标为 skip、把代码移入 node_modules);过拟合(只对本代码库有效但普遍是坏实践);复杂度膨胀(为减少 2 条警告增加 50 行代码);无限循环(未设最大迭代数)。建议设最大迭代数(默认 10),连续 3 次无改善即停止。
结构化日志:每次迭代记录编号、时间戳、改动、改动前后数值、差值与保留/回退状态,便于分析哪些改动影响最大、识别有效模式、避免重复失败方案。
示例:/optimize lint-warnings --iterations 5 --scope src/,从基线 47 条警告经 5 次迭代降至 18 条(-62%),4 次保留、1 次回退。
限制:资料未提供具体安装命令、收费方式、平台支持范围及运行环境要求。