外壳是确定性的,核是概率性的

一句话

声明 desired state,观测 actual state,做 diff,收敛。失败不是异常路径,是这个循环里被自然吸收的一帧。

这句话在三代基础设施里原样成立:

desired state 形式 reconcile 对象 收敛保证
IaC / GitOps HCL / YAML,存在 Git 里 云资源 强——确定性 diff
Kubernetes spec 运行时状态 强——controller 持续 reconcile
AI Agent 自然语言意图 任意开放任务 概率性

三代不是三个不相关的技术,是同一个范式的三次落地。


为什么是现在

前两代对 desired state 有一个硬要求:必须机器可精确表达。HCL、YAML 都是这种表达。代价是适用域被锁死在"能被精确写成配置的东西"上——基础设施可以,任意工作不行。

LLM 第一次打破了这个要求。desired state 可以是模糊的自然语言,系统自己生成 diff、自己生成动作。reconcile 范式因此从"基础设施"扩张到"任意工作"。

这不是一个新范式,是同一个范式的第三次落地。


代价:收敛性退化为概率

自然语言没有等价性判定。你没法像 diff 两份 YAML 一样,diff 两句话哪句更接近目标。于是 idempotency 和收敛性,从前两代的数学保证,退化成"大概率收敛"。

这一点必须诚实点出,否则这篇会被锤成 hype:AI agent 不是变成了可靠的 K8s controller,它是被工程手段架在了一个可靠的外壳里。

一句话收束:

外壳是确定性的,核是概率性的。

K8s 把不可靠的容器嵌进可靠的 control plane;agent 工程把不可靠的 LLM 嵌进可靠的外壳。同一个套路,换了层。


五个工程杠杆(按性价比排序)

外壳具体是什么?五个杠杆,从最便宜到最贵。

1. 缩小 desired state 的歧义

加 schema、加 example、加 acceptance criteria。本质是把第三代往第二代拽——能写成 spec 的部分,就别留在自然语言里。这是为什么 structured output 和 eval set 是 agent 工程的地基。

2. 可验证的子目标

把开放任务切成有判定函数的小步,每步用确定性方法验证——编译过、测试过、grep 到关键字。LLM 只管生成动作,验证外包给传统系统。Claude Code、Cursor 这代 coding agent 真正的秘密不是模型变强,是把验证外包给了编译器和测试。

3. 多次采样 + 投票/裁判

同一个 desired state 跑 N 次,用另一个 LLM 或规则做 judge。成本换收敛率,性价比排在前两个杠杆之后。

4. 有界重试 + 人类断路器

reconcile loop 必须有 budget——步数、token、时间,超了就停下来问人。K8s 有 backoff,agent 也得有。最容易被忽视的一点:很多 agent 失败模式不是"不收敛",是"在错误方向上无限收敛"——它一直在动,但动错了方向。budget 拦的就是这个。

5. 可观测性 = 可干预性

每一步的 observation、reasoning、action 都要能看、能 diff、能回滚。这是为什么 agent 平台会不断向 K8s 的 events / audit log 形态靠拢。


这五个杠杆和 K8s 的对应不是巧合

它们分别对应 K8s 生态里已经跑了十年的机制:CRD schema、admission webhook 里的 validating rule、多副本 + leader election、backoff + circuit breaker、events / audit log。不是 AI agent 工程发明了新解法,是把 K8s 的解法在新的不确定性等级上重新实现了一遍。

区别只有一处,也是最根本的一处:K8s 的核心组件是确定性状态机,加固外壳是为了应对基础设施层面的偶然故障——网络分区、节点宕机。AI agent 的核心组件本身就不确定,外壳要应对的不是偶然故障,是核心默认不收敛。前者是给可靠的东西上保险,后者是给不可靠的东西造一个能用的容器。


这篇没有展开"从 Prompt 到 Harness"的演化阶梯——那条线单独成篇。这里只想把一件事钉死:三代基础设施在解同一个数学问题,第三代的新东西不是范式,是范式第一次要吞下一个不收敛的核。