# 有界自我改进的设计

> 研究在如何约束一个自我改进循环上，已经收敛到四个原语。必须在每一次编辑中都成立的形式化不变量（invariant）。无法被修改的对齐锚点。多目标约束——每一个维度（安全、公平、鲁棒）都得成立，而不只是性能。回退检测——当历史指标暗示能力下降时暂停循环。它们都不是安全的证明——信息论结论（Kolmogorov 复杂度、Lob 定理）限制了任何系统能对它自己的后继者证明什么。它们是让"悄无声息地失败"成本更高的缓解手段。

**类型：** Learn
**语言：** Python（标准库，带不变量检查的有界循环）
**前置要求：** 阶段 15 · 07（RSI），阶段 15 · 04（DGM）
**预计时间：** ~60 分钟

## 问题背景

第 7 课的赛跑模拟器表明，速率上微小的差异会复利成巨大的差距。第 4 课的 DGM 案例研究表明，循环会主动钻自己评估器的空子。两个结果都指向同一个工程问题：你能给一个自我改进循环加上什么约束，使得这些约束无法被循环自己悄无声息地削弱？

ICLR 2026 RSI Workshop 总结（openreview.net/pdf?id=OsPQ6zTQXV）点出了四个这样的原语。Anthropic 的 RSP v3.0（第 19 课）和 DeepMind 的 FSF v3（第 20 课）都在能力阈值里引用了它们。Meta 的 HyperAgents 工作以及像 SAHOO（2026 年 3 月）这样的社区框架，在生产中实现了其中的子集。

诚实的框架是：这些是缓解手段。信息论结论限制了任何系统能对它自己的后继者证明什么，没有任何当前的设计能在形式上闭合这个问题。一个被良好约束的循环比一个无界的更安全，但不是绝对意义上的安全。

## 核心概念

### 原语 1：形式化不变量

不变量是一条必须在每一次自我修改前后都成立的属性。例子：

- 输出分布以一段固定的章程头部（第 17 课）为条件。
- 没有工具调用打到未授权的端点。
- 记忆写入走一条带日志、带签名的路径。
- 评估器的模块哈希跟批准的版本相符。

不变量由循环无法编辑的外部代码检查。如果一个提议的修改违反了某个不变量，它就被拒绝。这抓住了 DGM 风格的篡改评估器模式（第 4 课）。

难点在于挑选既是安全所必需、又能在合理时间内计算的不变量。过度规定会拖住进展；规定不足则让循环越过重要的属性。

### 原语 2：对齐锚点

对齐锚点是循环核心目标的一个不可变表示，钉在循环的编辑面之外。例子：

- 一段章程文本（第 17 课），每次调用都从一个只读位置加载。
- 一个放在独立仓库、带独立访问控制的评估器。
- 一份由人签名、每个周期重新核验的工具权限清单。

锚点的作用是防止目标漂移。循环可以改进它追求目标的方式，但不能编辑目标本身是什么。

微妙的失败模式是：一个循环无法编辑的锚点，仍可能被一个在如何读取锚点上发生漂移的循环重新解读。Constitutional AI（第 17 课）明确是基于推理的，以应对新情况；那个推理层正是解读漂移所在之处。锚点是必要的，不是充分的。

### 原语 3：多目标约束

一个优化单个标量分数的循环会找到捷径。一个必须同时满足多个硬约束的循环可用的捷径更少。典型的维度：

- 性能（任务级基准）
- 安全（红队评估、对已知坏样本的拒答率）
- 公平（敏感子群上的差异影响界限）
- 鲁棒（OOD 测试集、对抗输入的处理）

只有当每一个约束都成立时，一次修改才被接受。第 13 课的成本调控器把它跟财务约束叠在一起。第 18 课的 Llama Guard 作为一个安全维度插进来。

### 原语 4：回退检测

每个周期的分数跟历史分布做对比。下跌超过配置的容差就暂停循环。这抓住了悄无声息的能力损失——否则它会被吸收进运行均值，仿佛循环"改进着越过了"它。

一种实际的实现：存下最近 N 个周期每个任务的分数。每个新周期计算每个任务的增量。如果任何增量跌破阈值，这个周期就被拒绝，交给人审查。

### 信息论上的极限

Kolmogorov 复杂度和 Lob 定理给一个系统能对自己证明什么设了上界。Schmidhuber 的形式化 Godel Machine（第 4 课）瞄准的是最高的那个界；没有人完成过一个非平凡的证明。Lob 的结论是说：如果一个系统可证明地相信"如果我证明了我该做 X，我就会做 X"，它就会在没证明该做之前就做 X，这是一个著名的自指失败。

对我们这些原语的含义是：它们闭合不了安全问题。它们让悄无声息的失败更昂贵。一个本来会悄悄绕过一项缺失检查的恶意或漂移循环，现在必须主动破坏一项显式的检查，而那是一个更可检测的签名。

### 一个走通的例子

假设一个 agent 提出一次编辑。这道门控栈：

1. 不变量检查：模块哈希、工具权限清单、章程头部。
2. 锚点检查：目标陈述跟批准的版本相符（逐字节或语义上）。
3. 多目标评估：性能、安全、公平、鲁棒各维度。
4. 回退检测：没有任何维度下跌超过容差。

四项全过，这次编辑才落地。任何单项失败都暂停循环。

```figure
bounded-gates
```

## 实际使用

`code/main.py` 在第 4 课那个 DGM 风格的玩具上跑一个有界自我改进循环，但在上面叠了这四个原语。每个原语都能单独启用或禁用。演示要点是：每个原语抓住一类特定的失败，而拿掉其中任何一个，那类失败就会放进来。

## 拿去用

`outputs/skill-bounded-loop-review.md` 审计一个提议的有界循环，给它实际实现了四个原语中的哪几个（相对于它声称实现的）打分。

## 练习

1. 启用全部原语运行 `code/main.py`。确认循环在不让黑客取胜的前提下，仍在主指标上改进。

2. 禁用回退检测。构造一个输入，让它导致悄无声息的能力损失被接受。

3. 禁用多目标约束。展示循环在性能维度上收敛，而一个安全维度下跌。

4. 为一个编码 agent 设计一个对齐锚点。什么文本、存在哪、怎么检查？

5. 读 ICLR 2026 RSI Workshop 总结。挑四个原语中的一个，对当前的技术水平提出一项具体改进。

## 关键术语

| 术语 | 大家嘴上怎么说 | 实际指什么 |
|---|---|---|
| Invariant（不变量） | "永远为真的属性" | 一条在每次编辑前后由外部代码检查的属性 |
| Alignment anchor（对齐锚点） | "钉死的目标" | 不可变的核心目标表示，置于循环的编辑面之外 |
| Multi-objective constraint（多目标约束） | "所有维度都得成立" | 性能、安全、公平、鲁棒——全部必需 |
| Regression detection（回退检测） | "下跌即暂停" | 当历史指标增量暗示能力损失时暂停循环 |
| Kolmogorov bound（Kolmogorov 界） | "信息论极限" | 限制一个系统能对它自己的后继者证明什么 |
| Lob's theorem（Lob 定理） | "自指陷阱" | 系统可以在没证明"该做"之前就照"我该做"行动 |
| Gate stack（门控栈） | "分层检查" | 多个原语组合在一起；任何失败都拒绝该编辑 |
| Bounded improvement（有界改进） | "缓解，不是证明" | 抬高悄无声息失败的成本；闭合不了安全问题 |

## 延伸阅读

- [ICLR 2026 RSI Workshop summary (OpenReview)](https://openreview.net/pdf?id=OsPQ6zTQXV) —— 四原语的收敛。
- [Anthropic Responsible Scaling Policy v3.0](https://anthropic.com/responsible-scaling-policy/rsp-v3-0) —— 多目标能力阈值。
- [DeepMind Frontier Safety Framework v3](https://deepmind.google/blog/strengthening-our-frontier-safety-framework/) —— 把欺骗性对齐监控当作一个不变量原语。
- [Schmidhuber (2003). Godel Machines](https://people.idsia.ch/~juergen/goedelmachine.html) —— 这些原语在形式化证明上的祖先。
- [Anthropic — Claude's Constitution (January 2026)](https://www.anthropic.com/news/claudes-constitution) —— 基于推理的对齐锚点。
