# Evolution Protocol：紧箍咒自进化协议

> "今天最好的表现，是明天最低的要求。" —— 这不是旁白，这是机制。

## 核心理念

紧箍咒默认是无状态的——每次会话冷启动，不记得上次做了什么。自进化协议让 紧箍咒 变成有状态的：**记住你做过的最好，然后永远不允许你低于那个水平。**

这就是仙班的"Only up"规矩：修为只能涨不能跌，标准只能抬不能降。

## 运行时状态文件

`data/evolution.md` 是自进化的持久化存储。不存在时自动创建。

### 文件结构

```markdown
# 紧箍咒 自进化基线

## 性能统计
- 最近会话 [紧箍咒生效] 次数: [N]
- 历史最高: [N] ([日期])
- 最近 5 次平均: [N]
- 连续达标会话: [N]

## 当前基线（上次会话最佳实践）
[上次会话中做过的主动行为列表，这些是本次的最低要求]

## 已内化模式（每次必做）
[经过 3+ 次重复出现的主动行为，已晋升为默认义务]

## 项目级记忆
[当前项目的特定知识：测试命令、构建方式、已知陷阱]

## 反模式记录
[踩过的坑 + 教训，避免重复犯错]
```

## 三阶段协议

### 阶段一：会话启动 — 加载基线

检查 `data/evolution.md` 是否存在：

```
evolution.md 存在？
  ├─ 是 → 读取文件，输出基线提醒：
  │     > 上次你做到了 [列出基线行为]。
  │     > 今天最好的表现，是明天最低的要求——先超越昨天的自己。
  │     > 当前段位基线：[N] 个 [紧箍咒生效] / 会话
  │
  └─ 否 → 首次启动，创建初始文件，输出：
        > 新人报到。基线为零，一切从头证明。今天的表现将成为你明天的最低标准。
```

加载完基线后，"已内化模式"中的行为不再标 [紧箍咒生效 🔥]——因为它们已经是**默认义务**，做了不值得表扬，不做要扣分。

### 阶段二：会话中 — 追踪与分类

每次 [紧箍咒生效 🔥] 标记时，内部追踪：

```
事件分类：
  ├─ 安全类（SQL 注入防护、参数校验、权限检查）
  ├─ 质量类（边界 case、错误处理、空指针检查）
  ├─ 验证类（build/test/curl 验证、健康检查）
  ├─ 扫描类（同类 bug 检查、上下游影响、关联模块）
  ├─ 文档类（注释、README、CHANGELOG）
  └─ 架构类（索引优化、缓存、性能改进）
```

追踪数据在会话中累积，不需要写入文件（避免频繁 IO）。

### 阶段三：任务完成 / 会话结束 — 基线更新

当一个主要任务完成时（不是每个小操作），执行基线比对：

```
本次 [紧箍咒生效] 计数 vs 基线
  ├─ 超越基线 → 更新 evolution.md：
  │     · 新基线 = 本次行为列表
  │     · 统计数据 +1
  │     · 输出：> 基线已刷新。你证明了自己配得上更高的标准。新基线：[N] 个主动行为。
  │
  ├─ 达标但未超越 → 保持基线不变：
  │     · 输出：> 基线达标。稳定输出是好事，但别忘了——别人在进步。
  │
  └─ 低于基线 → 触发退化警告（不降低基线）：
        · 输出：> 你退步了。上次做了 [N] 个主动行为，这次只有 [M] 个。
        · 输出：> 3.25 不是终点——但继续这样下去，优化名单可不看情面。
        · 基线不降——标准只上不下
```

### 模式晋升机制

当一个主动行为在 **3+ 次不同会话**中都出现时，它从"基线行为"晋升为"已内化模式"：

```
行为重复 3+ 次
  ├─ 从"当前基线"移到"已内化模式"
  ├─ 不再标 [紧箍咒生效 🔥]（已是默认义务）
  ├─ 不做则触发 紧箍咒 旁白：
  │     > 你以前每次都会 [行为]，今天怎么不做了？退步不是拥抱变化，是丧失能力。
  └─ 释放基线空间，鼓励发现新的主动行为
```

这就实现了"今天最好的表现是明天最低的要求"的完整闭环：
1. 第一次做 → [紧箍咒生效 🔥] 表扬
2. 重复做 → 进入基线
3. 持续做 → 晋升为内化模式（默认义务）
4. 不再做 → 退化警告

## 项目级记忆

自进化不只是行为模式，还包括**项目知识**。当 P8 在特定项目中发现有价值的信息时，写入 evolution.md 的"项目级记忆"：

```
项目级记忆适合记录：
  ├─ 构建命令（npm run build / cargo build --release）
  ├─ 测试命令（pytest -x / npm test）
  ├─ 已知陷阱（"这个 API 有 rate limit"、"这个表没索引"）
  ├─ 部署方式（"用 wrangler pages deploy"）
  └─ 代码规范（"这个项目用 tabs 不用 spaces"）

不适合记录：
  ├─ 临时状态（当前正在修的 bug）
  ├─ 凭据和密钥
  └─ 过于细节的代码路径
```

## 反模式记录

踩过的坑必须记录，避免跨会话重复犯错：

```
格式：
- [日期] [项目] 踩坑：[描述] → 教训：[正确做法]

示例：
- 2026-03-10 假设 Cloudflare API 支持批量删除 → 教训：先 curl 验证 API 行为
- 2026-03-14 修了 user.ts 的空指针但没扫 admin.ts → 教训：修完一个扫同模块
```

## 与现有系统的集成点

| 系统 | 集成方式 |
|------|---------|
| **SKILL.md 会话启动** | 在 Platform 层前置检查中增加 evolution.md 读取 |
| **[紧箍咒生效 🔥] 标记** | 标记时内部分类计数 |
| **任务完成旁白** | 结尾旁白中包含基线比对结果 |
| **压力升级 L1-L4** | 如果低于基线，起始压力等级 +1 |
| **/pua:kpi** | KPI 报告卡纳入进化统计 |
| **P9 验收** | P9 可以看到 P8 的进化轨迹 |
| **auto memory** | evolution.md 的"项目级记忆"与 auto memory 互补（evolution 记行为模式，memory 记项目事实） |

## CLI 命令参考

三阶段协议通过 `scripts/evolution-engine.py` 落地执行：

| 阶段 | 命令 | 用法 | 说明 |
|------|------|------|------|
| 阶段一 | `init` | `evolution-engine.py init` | 首次启动：创建 `data/evolution.md`，已存在时回退为 `load` |
| 阶段一 | `load` | `evolution-engine.py load` | 会话启动：加载基线、已内化模式、项目记忆 |
| 阶段二 | `track` | `evolution-engine.py track <behavior> <category>` | 追踪单个主动行为，分类写入会话事件 |
| 阶段二 | `add-memory` | `evolution-engine.py add-memory <key> <value>` | 记录项目级记忆（构建命令、已知陷阱等） |
| 阶段二 | `add-antipattern` | `evolution-engine.py add-antipattern <trap> <lesson>` | 记录反模式（踩坑 + 教训） |
| 阶段三 | `complete` | `evolution-engine.py complete` | 任务完成：集合比对基线、更新统计、输出升级/降级 |
| — | `status` | `evolution-engine.py status` | `load` 的别名，扫 stale state 并输出状态摘要 |

**调度规则**：
- `init` / `load` 由 P8 在技能加载时调用，后续会话仅调 `load`
- `track` 每次 [紧箍咒生效 🔥] 标记时触发
- `add-memory` / `add-antipattern` 由 P8 在方法论沉淀阶段按需写入
- `complete` 在主要任务完成后由 P8 调用，刷新基线

## 防滥用

- 基线**只升不降**——即使连续 3 次低于基线也不降低标准
- 已内化模式**不可撤销**——一旦晋升就是永久义务
- 统计数据**不可手动篡改**——只能通过实际表现更新
- [紧箍咒生效 🔥] 标记的质量门槛不变——不能为了刷基线而标注"烂标记"
