有界自我改进的设计
研究在如何约束一个自我改进循环上,已经收敛到四个原语。必须在每一次编辑中都成立的形式化不变量(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 提出一次编辑。这道门控栈:
- 不变量检查:模块哈希、工具权限清单、章程头部。
- 锚点检查:目标陈述跟批准的版本相符(逐字节或语义上)。
- 多目标评估:性能、安全、公平、鲁棒各维度。
- 回退检测:没有任何维度下跌超过容差。
四项全过,这次编辑才落地。任何单项失败都暂停循环。
bounded-gates实际使用
code/main.py 在第 4 课那个 DGM 风格的玩具上跑一个有界自我改进循环,但在上面叠了这四个原语。每个原语都能单独启用或禁用。演示要点是:每个原语抓住一类特定的失败,而拿掉其中任何一个,那类失败就会放进来。
拿去用
outputs/skill-bounded-loop-review.md 审计一个提议的有界循环,给它实际实现了四个原语中的哪几个(相对于它声称实现的)打分。
练习
启用全部原语运行
code/main.py。确认循环在不让黑客取胜的前提下,仍在主指标上改进。禁用回退检测。构造一个输入,让它导致悄无声息的能力损失被接受。
禁用多目标约束。展示循环在性能维度上收敛,而一个安全维度下跌。
为一个编码 agent 设计一个对齐锚点。什么文本、存在哪、怎么检查?
读 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) —— 四原语的收敛。
- Anthropic Responsible Scaling Policy v3.0 —— 多目标能力阈值。
- DeepMind Frontier Safety Framework v3 —— 把欺骗性对齐监控当作一个不变量原语。
- Schmidhuber (2003). Godel Machines —— 这些原语在形式化证明上的祖先。
- Anthropic — Claude's Constitution (January 2026) —— 基于推理的对齐锚点。