变更边界
文件与行数上限限制进化变更的规模。路径约束、验证命令和恢复策略分别控制“改哪里”“是否有效”和“失败后怎么办”,不能互相替代。
全局硬上限
| 配置 | 默认值 | 作用 |
|---|---|---|
EVOLVER_HARD_CAP_FILES | 60 | 单轮触及文件数的全局上限。 |
EVOLVER_HARD_CAP_LINES | 20000 | 单轮变更行数的全局上限。 |
环境变量接受正整数;缺失或无效值回退到默认值。无论有没有选中 Gene,全局硬上限都参与检查。Gene 的 max_files 和禁止路径在此基础上增加约束;全局上限不是日常任务的目标规模。
例如,小范围修复可以收紧为:
text
EVOLVER_HARD_CAP_FILES=12
EVOLVER_HARD_CAP_LINES=1200
同时在任务中明确允许文件、禁止目录和验证命令。12 个错误文件仍然是错误变更,数量合规不能证明路径和内容正确。
运行前保留基线
记录 Git HEAD、已跟踪差异、未跟踪文件和本次允许触碰的范围。在独立工作副本中执行,并明确生成物、依赖安装和格式化是否属于任务。验证命令也会执行代码,必须审查其文件与网络影响。
EVOLVER_ROLLBACK_MODE 在 v2 已失效。不能用旧的 hard、stash、none 值推断当前执行器的恢复行为,也不要用旧 EVOLVE_GIT_RESET 作为恢复保障。
区分恢复方式
普通执行按对应 worktree、快照与 recovery 策略处理。恢复前检查实际周期和文件状态,不把进程退出当作恢复完成。
autoexec --solo 是另一个显式选择:失败周期的恢复会使用 git reset --hard 与 git clean -fd,丢弃目标工作区的修改和未跟踪文件。只在干净、有备份且专门用于该任务的工作副本使用,不在共用或已有未提交工作的目录中使用。
超限或验证失败
- 停止继续执行,保存周期 ID、日志和 diff。
- 对照基线,分清已有工作、本轮变更与外部副作用。
- 检查是否发生部分执行、提交或远端写入。
- 只恢复本轮拥有的改动,独立处理远端补偿。
- 重新验证原问题和恢复后的状态,再决定是否重试。
频繁超限时拆分任务或修正选择策略,不通过提高上限掩盖范围失控。Git 恢复不能撤销已经发送的消息、发布或积分交易。