变更边界
变更边界限制一轮 Evolver 能触碰的文件和行数,并决定失败时如何处理工作区。它们是最后一道硬限制,不应被当作日常目标值。
核心配置
| 配置 | 默认值 | 说明 |
|---|---|---|
EVOLVER_HARD_CAP_FILES | 60 | 单轮最多触及的文件数。 |
EVOLVER_HARD_CAP_LINES | 20000 | 单轮最多变更的行数。 |
EVOLVER_ROLLBACK_MODE | hard | hard、stash 或 none。 |
EVOLVE_ALLOW_SELF_MODIFY | false | 是否允许 Evolver 修改自身源码。 |
EVOLVE_GIT_RESET | false | cycle 失败后是否执行 Git reset。 |
默认上限适用于引擎的硬保护,不代表一次合理变更就应该接近 60 个文件或 20000 行。项目应按自身风险设置更小的范围。
选择回滚方式
hard:使用 Git 重置恢复,最明确,也最可能丢弃当前工作区里的未提交改动。stash:尝试把改动保存到 stash,再恢复基线;需要额外管理 stash 的归属和清理。none:不自动回滚,保留现场供人工检查;循环环境中可能让下一轮继承脏状态。
在有人工未提交改动的目录中,不应直接使用 hard。更稳妥的做法是在独立分支或工作副本中运行,并在开始前记录 HEAD、工作区状态和允许触碰的路径。
建议设置
bash
EVOLVER_HARD_CAP_FILES=12
EVOLVER_HARD_CAP_LINES=1200
EVOLVER_ROLLBACK_MODE=none
EVOLVE_ALLOW_SELF_MODIFY=false
数值只是示例,应根据仓库规模和任务重新决定。对共享配置、发布、数据库迁移和安全边界的修改,还应增加路径限制、人工审查和专门验证,不能只依赖总行数。
越界或失败后
- 停止循环,保留日志、diff 和当前 HEAD。
- 判断是否已经发生提交、发布、远端写入或部分回滚。
- 将工作区与开始前记录对比,不要只看退出码。
- 只有确认恢复完成后才重启下一轮。
- 若频繁触碰上限,应拆小任务或修正策略,不要直接提高上限。
验收
一次受控运行至少应证明:超出文件或行数上限时不会继续固化;验证失败后工作区状态与所选回滚模式一致;未授权路径、凭证和外部发布没有被纳入变更。
EvoX 文档 · 配置 · 进化行为