巨型任务是非本原递归的——能力再强也破不了墙
巨型任务把递归逼出了本原递归的范围:分解要下探到多少层,事先并不知道。一个自然的反驳随之而来——执行者是一个有能力、能适应的 agent,不是一个写死的函数,那经典的可计算性边界或许根本不适用于它。这篇笔记要论证的是:墙仍然立着,只是游戏规则变了。
1. 为什么巨型任务是非本原的
本原递归指的是循环次数在进入循环之前就已知的那种循环。一个巨型任务的分解深度事先不可知——一次重构或一个证明要下探多少层,只有在做的过程中才会浮现出来。一个被限制在本原递归里的管理者,甚至表达不出这个计划("循环直到满足 spec 为止"根本没有一个先验的上界)。所以委派需要无界的(μ-)递归——随之而来的,是那个经典的危险:终止性不可判定(halting-problem)。
2. 反驳:agent 不是一个写死的函数
执行者有能力、能适应、带随机性、有状态,甚至能自我修改。这难道不该把它排除在那些关于固定递归函数的定理之外吗?
3. 墙仍然立着——能力被包在墙内
逐点看下去,agent 之所以为 agent 的每一样东西,仍然是一个可计算的过程(Church–Turing 论题不区分底层实现方式):
- 权重固定:一个 LLM 就是一个(巨大的)从上下文到下一个 token 分布的函数;
- 随机性:采样不会改变可计算性——一枚随机硬币判定不了halting-problem;
- 状态/学习:串起记忆和上下文中的适应,本质上只是更多的计算;
- 自我修改:一个改写自身源码的程序仍然是一个程序——这正是Kleene 递归定理的内容本身,也正是为什么 Gödel machine(self-reference-classics)只在证明之下改写自己,而不是逃出证明。
而halting-problem背后的对角化论证根本不检查判定器有多聪明:它靠自指来击败任何候选判定器。不可判定性不是能力的天花板;它是一堵逻辑上的墙。再强的智能也判定不了停机。
4. 能力真正改变的是什么:判定 ∀ 还是构造 ∃
经典的不可能性说的是 ∀-问题:给定一个任意的递归,判定它是否终止。harness 从不玩这个游戏。agent 是它自己那个递归的作者——它玩的是 ∃-游戏:构造一个自带终止证书的递归(一个映入良基序的严格递减度量,在各个 gate 处被检查——safe-recursion-theorem)。不可判定性说的是你无法在一般情形下识别出终止性;它并没有说你无法靠构造去保证终止性。这正是Lean的做法:它判定不了任意函数的终止性,但接受任何带着 termination_by 度量前来的函数。这正是能力真正起作用的地方:智能扩大了"证书能被找到"的那部分实例的范围——更聪明的 agent 能给更多递归开出证书。但它消除不了那些根本不存在证书的实例(busy beaver式的怪兽、Collatz 式的轨道)。
5. 永久的代价:不完全性(而且这笔交易是对的)
Theorem全函数不是递归可枚举的。如果 是全体全可计算函数的一个可计算枚举,那么 会是全的、可计算的,却又与每一个 都不同——矛盾。所以不存在任何有效的"安全语言"能覆盖全体终止的程序。
推论:任何保证终止性的宪法(root-protocol)都只能划出一个"全"的片段,而永远会存在一些策略,它们实际上会终止,却被这部宪法拒之门外。agent 的能力修不了这一点——受宪法约束的 agent 本身就是那个片段里的一个程序。这又是soundness那个不对称性:丢了可靠性(soundness)→ 得到垃圾;丢了完备性(completeness)→ 只是受限。安全性是用完备性换来的,而这笔交易是对的。
6. 唯一真正的逃生口:靠交互,不靠智能
当一个任务需要一个宪法认证不了的递归时,协议说的是大声失败——然后 root(一个人)可以选择扩展这个系统作为回应:更多预算、一个新的度量、一种新的证书形式。在失败之下做扩展,就是在添加公理,它的经典形态是图灵的序数逻辑(1939):沿着序数反复"添加一致性陈述"——系统永远在生长,在任何一个阶段都不完全,而这种生长本身也不可机械化。边界是被交互式地推动的,从来不是被自主地打破的。
一句话
智能扩大了你能认证的范围;它不能认证一切;交互让认证者本身成长;没有什么能打破这堵墙。