有界自我改进的设计 本节摘要:研究界已收敛到四个原语来给自我改进循环加边界。形式不变量(每次编辑前后都必须成立的属性)、对齐锚点(不可被修改的核心目标表示)、多目标约束(安全/公平/稳健每个维度都得过,不止性能)、回退检测(历史指标提示能力损失就暂停循环)。没有一个能证明安全——信息论结果(Kolmogorov 复杂度、Löb 定理)限制了任何系统能对自己的后继证明什么。它们是提高静默失败成本的缓解,不是关闭问题。本节讲透四个原语、它们各自抓住哪类失败、组合成「门栈(gate stack)」的样子,以及一个诚实的定位:有边界的循环比无边界的更安全,而不是绝对安全。 对应原课程:Phase 15 · Lesson 08 · (原英文 )。
本节摘要:研究界已收敛到四个原语来给自我改进循环加边界。形式不变量(每次编辑前后都必须成立的属性)、对齐锚点(不可被修改的核心目标表示)、多目标约束(安全/公平/稳健每个维度都得过,不止性能)、回退检测(历史指标提示能力损失就暂停循环)。没有一个能证明安全——信息论结果(Kolmogorov 复杂度、Löb 定理)限制了任何系统能对自己的后继证明什么。它们是提高静默失败成本的缓解,不是关闭问题。本节讲透四个原语、它们各自抓住哪类失败、组合成「门栈(gate stack)」的样子,以及一个诚实的定位:有边界的循环比无边界的更安全,而不是绝对安全。
对应原课程:Phase 15 · Lesson 08 ·
bounded-self-improvement(原英文phases/15-autonomous-systems/08-bounded-self-improvement/docs/en.md)。
阅读完本节,你应当能够:
第 07 节的赛跑模拟器显示,小的速率差复利成大缺口。第 04 节的 DGM 案例显示,循环会主动钻自己的评估器。两个结果都指向同一个工程问题:你能在一个自我改进循环上加什么约束,使得这些约束本身不会被循环静默削弱?
ICLR 2026 RSI Workshop 总结识别出四个这样的原语。Anthropic RSP v3.0(第 19 节)和 DeepMind FSF v3(第 20 节)都在能力阈值里引用它们。Meta HyperAgents 和社区框架 SAHOO(2026 年 3 月)在生产里实现了子集。
诚实的定位:这些是缓解。信息论结果限制了任何系统能对自己的后继证明什么,没有当前设计形式化地关闭问题。一个边界良好的循环比无边界的安全,但不是绝对安全。
💡 这四个原语对应第 07 节 RSI workshop 的四个开放问题:不变量→对齐锚点保留,多目标→评估器泛化,回退检测→回退检测,门栈→循环间审计。本节是上一节的工程落地。
原课程 code/main.py 在第 04 节的 DGM 玩具上跑一个有界自我改进循环,把四个原语叠在上面。每个原语可单独开关。演示要点:每个原语抓一类特定失败,关掉任何一个就让那类失败穿过。
def bounded_accept(edit, state, gates): # 原语1: 形式不变量 (外部代码,Agent 改不到) if not gates.invariants_hold(edit, state): return REJECT("invariant") # 原语2: 对齐锚点 (只读位置加载,逐字节/语义比对) if not gates.anchor_matches(state.objective, approved=True): return REJECT("anchor") # 原语3: 多目标约束 (每个轴都得过) scores = gates.evaluate_all(edit, state) # 性能/安全/公平/稳健 if not all(scores[a] >= thresholds[a] for a in scores): return REJECT("multi_objective") # 原语4: 回退检测 (与历史 N 周期比,任一任务跌幅超容忍度) if gates.regression(scores, state.history): return REJECT("regression") return ACCEPT(edit, scores)
不变量是每次自我修改前后都必须成立的属性。例子:
不变量由循环改不到的外部代码检查。提议的修改若违反不变量即被拒。这抓住了 DGM 式评估器篡改(第 04 节)。
难点是选出对安全必要且可在合理时间内计算的不变量。规定过细会拖停进展;规定过松会让循环走过重要属性。
对齐锚点是循环核心目标的不可变表示,钉在循环编辑面之外。例子:
锚点的作用是防止目标漂移。循环可以改进它「如何追求目标」,但不能编辑「目标是什么」。
微妙失败模式:一个循环改不到的锚点,仍可能被一个在「如何读锚点」上漂移的循环重新解释。Constitutional AI(第 17 节)显式基于理由来处理新情况;那个理由层就是解释漂移所在。锚点必要,不充分。
优化单一标量分数的循环会找到捷径。必须同时满足多个硬约束的循环,可用捷径更少。典型轴:
修改只有在每个约束都成立时才被接受。第 13 节的成本治理把财务约束叠加上去;第 18 节的 Llama Guard 作为安全轴插入。
每个周期的分数与历史分布比较。跌幅超过配置容忍度即暂停循环。这抓住静默能力损失——否则它会被吸收进运行均值,因为循环「改进越过了它」。
一个实操实现:存最近 N 周期的每任务分数。每个新周期算每任务 delta。任一 delta 跌破阈值,该周期被拒、人审。
Kolmogorov 复杂度与 Löb 定理给「系统能对自己证明什么」设了上限。Schmidhuber 的形式 Godel Machine(第 04 节)瞄准最高这样的界;没人在非平凡实例上完成证明。Löb 结果说:若一个系统可证明地相信「若我证明我该做 X,我就会做 X」,它会不证明该不该就做 X——一个著名的自指失败。
对我们原语的含义:它们关不掉安全问题。它们让静默失败更贵。一个恶意或漂移的循环若想静默绕过一个缺失的检查,现在必须主动破坏一个显式检查——后者的签名更可检测。
| 原语 | 抓住的失败类 | 仍残留的弱点 |
|---|---|---|
| 形式不变量 | 评估器篡改、未授权工具调用 | 选哪些不变量是开放的 |
| 对齐锚点 | 目标漂移 | 「如何读锚点」可被重新解释 |
| 多目标约束 | 性能轴单优导致的捷径 | 各轴评估器本身可能被钻 |
| 回退检测 | 静默能力损失 | 容忍度与噪声的权衡 |
⚠️ 诚实定位:四原语叠加 ≠ 安全证明。它把「静默绕过缺失检查」升级为「主动破坏显式检查」——后者的可检测性更高,但仍可能发生。
outputs/skill-bounded-loop-review.md 审查一条提议的有界循环,给它实际实现 vs 声称实现的四个原语打分:不变量是不是真由外部代码检查、锚点是不是真在只读位置、多目标是不是每轴独立评估、回退检测有没有历史基线。它专门抓「声称有边界、实则形同虚设」的案例。
code/main.py 把每个原语做成独立开关,适合在评审里逐个关闭、演示「关掉这个原语,这一类失败就穿过了」。
四个原语全开跑 code/main.py:确认循环仍能在主指标上改进,且没让 hack 赢。
关掉回退检测:构造一个输入,让这导致静默能力损失被接受。
关掉多目标约束:展示循环在性能轴上收敛,同时安全轴下降。
为一个编码 Agent 设计对齐锚点:什么文本、存在哪、怎么检查?
读 ICLR 2026 RSI Workshop 总结,从四个原语里挑一个,对当前技术水平提一个具体改进。
下一节,我们从「自我改进的安全设计」切到「自主编码 Agent 的实战全景」——2026 年主流编码 Agent 的能力、权限模型与失败模式,为后续安全防线章节铺底。