| name | lingzhou-skill |
| aliases | evolution-guardrail |
| description | 灵舟自进化稳态技能。Use when 进行 code/tool/prompt/skill 自进化,或出现‘进化后崩溃/可用性下降/回归’信号时。 |
| compatibility | Designed for Lingzhou self-evolution safety and rollback workflows. |
| tags | evolution, reliability, rollback, guardrail, verification |
| triggers | 自进化, 崩溃, 回滚, 回归, 进化失败, 代码进化, 工具进化, 提示词进化, 修改代码, 自我修改, Python 文件 |
| state_rules | failure_signal_ratio >= 0.08 => 1.6
wm_pressure_ratio >= 0.12 => 1.2
|
目标
在不牺牲进化速度的前提下,确保“任何一次进化都可回滚、可验证、可解释”。
四道硬门(必须全部通过)
- 变更前快照门
- 记录 target、原因、预期收益、回滚点(backup_path / git revision / 旧版本 hash)。
- 未找到可回滚点时,拒绝进入改写阶段。
- 语法与装载门
- 运行时冒烟门
- 至少执行一次与目标能力直接相关的 smoke 流程。
- 超时、异常、关键输出缺失都视为失败。
- 事后观测门
- 在验证窗口内比较关键指标(失败率、超时率、关键任务成功率)。
- 指标劣化触发自动回滚,并写入失败归因。
执行协议(建议顺序)
- 单点改动:一次只进化一个目标(一个 tool / 一个 prompt / 一个 skill)。
- 原子发布:先写临时文件,验证通过后再替换。
- 渐进放量:先灰度(低流量/低风险任务),再全量。
- 自动回滚:回归命中阈值后不等待人工,先恢复可用性。
- 失败记账:把失败样本、环境信息、最终根因写入 memory,避免重复踩坑。
熔断策略(连续失败防失控)
- 同一目标在短窗口内连续失败 >= 2 次:
- 禁止继续自动进化该目标(进入冷却期)。
- 仅允许“诊断与修复”,不允许“继续重写”。
- 连续失败 >= 3 次:
代码规模约束(硬性上限)
进化或修改任何 Python 文件时,必须同时满足:
| 粒度 | 硬性上限 | 说明 |
|---|
单个类(class) | ≤ 400 行 | 含方法体、属性、内嵌类 |
单个文件(.py) | ≤ 600 行 | 测试文件除外 |
超限时的拆分协议(先拆后改,不可合并):
- 识别责任分组:把类的方法按"同一关注点"归组(如:IO/存储、解析/构建、校验/策略、编排/调度)。
- 提取为包私有子模块:在同一目录下新建
_<concern>.py(下划线前缀 = 包私有),将对应的独立函数搬入。函数不再依赖 self 时直接提取为模块级函数;仍需共享状态时改为接受明确参数。
- 主类改为薄编排层:只保留对外公开 API 和协调调用,不包含大段业务逻辑实现。
- 公共入口清晰:保留当前架构认可的公开入口;旧路径、旧签名或旧命名若不再正确,应同步删除并更新调用点。
已有参考:core/loop/ 已按此模式拆分为 tick.py / common.py / chat.py / continue_phase.py / focus.py 等子模块。新进化应遵循相同风格。
检查时机:
- 进化写入前:
wc -l <file> 确认不超上限。
- 进化写入后:若新文件已接近上限(>350L/>500L),在本次进化摘要中标注"需在下次进化前拆分"。
禁止事项
- 禁止一次提交混入多个不相关改动。
- 禁止在未验证可回滚的情况下直接覆盖生产文件。
- 禁止"验证失败后继续同策略重试"超过 1 次。
- 禁止向已超 400 行的类追加更多方法(必须先拆分)。
- 禁止向已超 600 行的文件追加更多代码(必须先拆分)。
- 禁止通过
file.write / file.edit 修改以下宪法层文件:
prompts/constitution/ 下所有文件(由人类定义,不可演化)
core/immune/ 下核心免疫逻辑(修改前必须在 reflection 写出充分理由并等待人工确认)
反例纠正
-
反例:进化后能 import 但运行路径崩溃。
- 纠正:补运行时 smoke 与事后观测门,不以语法通过代替可用性通过。
-
反例:失败后继续同参数重试,导致崩溃放大。
- 纠正:触发熔断,转入根因定位(参数/环境/策略/模型输出)。
最小落地清单(可直接执行)
- 每次进化写入一条“变更前快照”。
- 每次发布必须有 backup_path。
- 每次发布后必须有一条 smoke 结果和一条观测结果。
- 每次自动回滚必须附带 reason 与 observed 指标。
评估准则:不是“进化了多少次”,而是“进化后系统是否更稳”。