解读 · 符号 AI · 科学与数学

什么是符号流?

面向 AI 的确定性流水线:符号流是什么、由哪些更早的思想构成、为什么一串模型调用不算符号流、重放与误差累积背后的数学,以及语言模型可以坐在哪个位置。

符号流(symbolic flow)是这样一种流水线:其中每一步都是取自封闭词汇表的、明确且有类型的操作,因此从输入到输出的路径可以被精确重放、逐步审视,并对照不变式加以检验。没有哪一步会去猜:当某一步无法给出可检验的结果时,整条流会拒绝,并说明原因。

Perslis Research 的术语。“符号流”是我们为这套方法所起的名字,上面的定义也出自我们。其中的要素并不新;§2 列出了它们各自的来源。

一段话说清

今天的大多数 AI 流水线是一串模型调用。每一次调用大多数时候都对,整条链却在相当大比例的运行中出错,而且没有任何东西标出哪些运行是错的。符号流反其道而行之:它的步骤取自一套固定的、有类型的操作词汇表;每一步都是确定性的;每个输出都带着来源并经过检验;一步若无法被检验,就带着理由拒绝,而不是返回一个看似合理的值。语言模型可以用这套词汇提议一条流,但它永远不会执行一个猜测。换来的是可以证明、而不必寄望的性质:精确重放;因为每一步都成立、所以对整条流都成立的不变式;以及以拒绝而非错误答案的形式浮现的错误。

1. 什么是符号流?

同一个想法有时也被称为符号流水线(symbolic pipeline)、确定性 AI 流水线或可验证的 AI 工作流;我们使用符号流这个说法。一条流水线要算作符号流,其中每一步都必须满足四件事:

  1. 它有名字。它是一个操作,取自在写这条流之前就已固定的封闭词汇表。不存在“运行这段代码”的步骤,也不存在自由文本的步骤。
  2. 它有类型。它声明自己接受什么、返回什么;类型对不上的流根本不会运行。
  3. 它是确定性的。相同的输入,每次都返回相同的输出。没有任何采样。
  4. 它被检验,并且可以拒绝。它的输出要对照一个明确写出的条件加以检验;若条件无法满足,它就返回一个说明理由的拒绝,这个拒绝会代替答案一直传到流的末端。

由此得出用户真正关心的三项性质:一次运行可以被精确重放、可以被逐步审视(由具名操作组成的轨迹本身就是解释),也可以对照不变式检验,而不变式只需对每一步证明一次(§5)。

这个术语是谁提出的。Perslis Research 把“符号流”作为这套方法的定义性术语来使用。据我们所知,它在 AI 工程中此前没有公认的含义;在数学里,这个短语出现在符号动力学中,含义与此无关。这里的“符号”与符号 AI 中的用法相同:各步骤操作的是明确的、人能读懂、有确定含义的符号,而不是习得的权重。

2. 它建立在什么之上

每一个要素都有很长的历史。这个术语添加的是组合本身——把它们用在 AI 系统上,并把拒绝当作一等结果。按大致的时间顺序,我们欠下的债如下:

这些都不是为这样一种流水线设计的:它最有能力的组件——语言模型——同时也是最不可预测的组件。符号流要应对的正是这种局面。

3. 为什么需要符号流:智能体链的问题

构建多步 AI 系统的常见方式是提示链:每一步交给语言模型,每个输出喂给下一个提示。Wu、Terry 与 Cai 以 AI Chains 为名研究了这种模式,发现它提升了用户感受到的透明度与可控性 [10]。LLM 智能体走得更远:在 ReAct 这类循环中,模型把推理与行动交织在一起,并自己选择下一步 [11]。

相比单个提示,链式调用是真正的进步。但它仍留下三个问题,单步质量再高也消除不了:

更深层的问题在于性质存在于哪里。我们的预印本 《编排缺口》 [12] 论证:对每个模型证明的性质(例如拒绝有害请求),并不能组合成一个可以挑选并编排这些模型的系统的性质——权力在编排链上。链级不变式需要一个位于所有模型之外的层:确定性的、与模型无关的、感知来源的、可审视的。符号流让链条本身以一种可以陈述并证明这类不变式的方式构建。

4. 符号流的构成

六个部分,每一个都是你可以通过阅读这条流来核查、而不必信任其作者的性质。

  1. 封闭的操作词汇表。一个步骤能做的事是固定且有限的,在任何流被写出之前就已写好。一条流把带固定参数的词汇项组合起来,例如 filter(approved) 或 sum(amount);需要词汇表之外东西的问题会被报告为不可映射,而不是被近似。
  2. 有类型的输入与输出。每个操作都声明其输入和输出类型,流在运行前先做类型检查。
  3. 确定性。每个操作都是数学意义上的函数:没有采样,没有隐藏的时钟,步骤中途也不读网络。外部值以固定下来的输入进入,而不是在运行中发起调用。
  4. 每个输出都带来源。一个输出说明自己来自哪些输入、经过了哪些步骤。Perslis 地板的答案带着它的推导,而这正是工具被准入之前受检的那同一条字符串(§6)。
  5. 每一步都检验不变式。每一步对其输出都有一个明确写出的条件,在该步运行时检验;不满足条件的输出不会被传下去。
  6. 以拒绝代替猜测。拒绝是一种有类型的结果,不是异常,也不是空字符串。它会说明理由,例如无证据、不可映射或不变式失败,并原样穿过其余步骤,因此一条流的结局要么是一个经过检验的答案,要么是它停下的位置与理由。
智能体链与符号流的对比 上排:四次依次进行的模型调用,每次正确率 95%,最终输出约有 81% 的时候正确,且没有任何迹象表明哪些运行是错的。下排:四个有类型的操作,每个后面都跟着一次检验;检验失败就离开这一排,成为带理由的拒绝,因此流的结局要么是带轨迹的已检验答案,要么是一次拒绝。 智能体链 模型调用 模型调用 模型调用 模型调用 0.95 0.95 0.95 0.95 答案 正确 ≈ 81% 错误:无标记 符号流 op₁ : A→B op₂ : B→C op₃ : C→D op₄ : D→E 答案 + 轨迹 每项检验都通过 拒绝,注明步骤与理由

图 1. 错误去了哪里。在链中,出错的一步把一个看似合理的值传下去(0.95 的四次方 ≈ 0.81)。在流中,每个操作都有类型、每个输出都受检验;检验失败即以具名拒绝的形式离开这条流。

5. 数学

这里的数学没有一样是新的。重点是说明哪一项保证来自哪一个假设,这样你就知道去掉某个假设时会失去什么。

5.1 设定

定义 1(符号流)。 设 Σ 为一个有限的操作词汇表,R 为拒绝的集合,每个拒绝带有一个理由。长度为 n 的流是一个操作序列 f1,…,fn,其中每个都是 Σ 中某个元素带固定参数的实例,并具有声明的类型 fi:Ti−1→Ti⊎R,且各类型首尾相接。对输入 x∈T0,运行过程为
x0=x, xi= { fi(xi−1)若 xi−1∉R xi−1若 xi−1∈R(拒绝原样传递)

流的输出与轨迹为

F=fn∘⋯∘f2∘f1, F(x)=xn, τ(x)=(x0,x1,…,xn)

其中拒绝原样传递。当每个 fi 都是函数时,即对每个输入恰有一个值(一个结果或一个拒绝),称这条流是确定性的。

5.2 重放

定理 1(重放)。 若一条流是确定性的,则对每个输入 x,其输出 F(x) 与整条轨迹 τ(x) 都由这条流与 x 唯一确定。对同一输入的两次运行,产生相同的输出与相同的轨迹,一步不差。
证明。 对 i 归纳。x0=x 是固定的。若 xi−1 被唯一确定,则 xi 也是:它要么等于拒绝 xi−1,要么等于 fi(xi−1),而函数在每一点恰有一个值。∎

证明是平凡的;内容全在假设里。只要有任何一步做了采样,定理就不再适用:温度不为零的模型调用、读取时钟或网络、遍历无序集合。重放是审计得以可能的前提:要核查一个过去的决策,就再运行一次。正如 Perslis 国防运行时所说,一个非确定性的安全层无法回放,而无法回放的层无法被认证(defense/runtime)。

5.3 可组合的不变式

定义 2(步骤契约)。 对步骤输入类型上的谓词 P 与输出类型上的谓词 Q,记
{P}f{Q} ⟺ ∀x.P(x)⇒ f(x)∈R∨Q(f(x))

这是一个霍尔三元组 [1],其中拒绝总是可接受的结果:一步可以拒绝,但它返回的任何东西都满足 Q。

定理 2(不变式保持)。 设 I0,…,In 是 T0,…,Tn 上的谓词。若对每个 i 都有 {Ii−1}fi{Ii},则 {I0}F{In}。特别地,若每一步都满足 {I}fi{I},则 {I}F{I}。
证明。 对 k 归纳,证明 I0(x) 蕴含 xk∈R∨Ik(xk)。k=0 时这就是假设。归纳步:若 xk−1∈R,则 xk 是同一个拒绝;否则 Ik−1(xk−1) 成立,由 fk 的契约得 xk∈R∨Ik(xk)。取 k=n 即得结论。∎

这就是把霍尔的复合规则应用 n−1 次,与 CompCert 的论证同形:对每一步证明一次的性质,对整条流水线成立 [7]。各步骤可以逐个验证,并在任何类型与不变式对得上的流中复用。

推论 1(运行时检验就足够)。 给任意操作 g 包上一层对 Q 的运行时检验:若 g(x)∈R 或 Q(g(x)),令 g^(x)=g(x),否则返回一个指明 Q 的拒绝。那么无论 g 做什么,对任意 P 都有 {P}g^{Q}。

这就是“每一步都检验不变式”的形式含义:要得到定理 2,你不必证明某个操作是正确的,只需要一个可判定的不变式,以及愿意拒绝。保证的强度只取决于 Q 说了什么(§10)。

5.4 未经检验的链中的误差累积

现在去掉确定性与检验。把一条链建模为 k 个随机步骤,令 Si 表示第 i 步产生正确输出这一事件。

命题 3(累积)。 假设没有哪一步会修复先前步骤的错误,因此最终输出正确当且仅当每一步都正确。令 qi=Pr[Si∣S1∩⋯∩Si−1],则
Pr[最终输出正确]= ∏i=1kqi ≤qk 当每个 qi≤q
证明。 最终输出正确当且仅当 S1∩⋯∩Sk 发生,而概率的链式法则把这个交集的概率写成各条件概率 qi 的乘积。∎

这里没有假设独立性:每个 qi 都以之前的步骤为条件。对十个各自有 95% 正确率的步骤,

0.9510=0.59873693923837890625≈0.599

也就是十次运行中有四次是错的,而且没有标记告诉你是哪四次。

命题 3 下的端到端正确率,由公式计算。这是算术,不是对任何系统的测量。
单步正确率 q步数 kq 的 k 次方解读
0.99100.904大约十次中错一次。
0.95100.599十次中错四次。
0.95200.358多数运行是错的。
0.99500.605长链抵消了非常好的单步。
0.991000.366由好步骤组成的长链通常会失败。

“不修复”这一假设是模型,而非定律:若后面的某一步能发现错误,这个乘积就是下界。但修复步骤本身就是一次检验,这正是下一个结果。

5.5 可靠的检验把错误变成拒绝

保留随机步骤,但在每一步之后放一个校验器 Vi。它看到该步的输入与输出,接受或拒绝;拒绝即成为一次拒绝结果。若在输入正确时,该步输出错误且 Vi 接受它的概率至多为 εi,称 Vi 是 εi-可靠的。

定理 4(错误变成拒绝)。 若流从正确的输入开始,且每个 Vi 都是 εi-可靠的,则
Pr[流返回错误答案]≤ ∑i=1kεi

而在校验器精确(每个 εi=0)时,每次运行的结局要么是正确答案,要么是拒绝。

证明。 若流返回了错误答案,令 i 为第一个输出错误的步骤。它的输入是正确的,输出是错误的,而且 Vi 接受了它,否则这次运行就会以拒绝告终。记这一事件为 Ei;由可靠性,Pr[Ei]≤εi。错误答案蕴含某个 Ei 发生,由并集上界即得求和。∎

这个结果很容易被夸大。校验器并不会让链变得更有能力:若校验器同时接受每一个正确输出,流给出答案的概率仍是 ∏qi,因此十个 0.95 的步骤只有 59.9% 的时候给出答案,40.1% 的时候拒绝。改变的是这 40.1% 的去向:不再是看起来正确的错误答案,而是注明步骤与理由的拒绝。若各次尝试相互独立,重试被拒绝的步骤会有帮助:在 q=0.95 时,两次尝试使单步达到 1−0.052=0.9975,端到端为 0.997510≈0.975。这个数字是乐观的,因为对同一提示重新采样的模型往往会重复自己的错误;安全性来自可靠性,而不是重试。

我们在内部测量过这一效应:在一项激酶识别任务中(什么是失效安全模型?),让模型的猜测当作事实计入,会把正确识别率从 1.000 降到 0.753;只准入经过核验的事实,则保持在 1.000 [14]。

6. 模型在流中的位置

符号流并不排斥语言模型,而是固定它的角色。模型可以提议一条流;它永远不会执行一个猜测。提议用封闭词汇表写成,因此可以在任何东西运行之前被检验;一旦被准入,这条流在没有模型的情况下运行。

Perslis 符号地板(问一次,答案归你。)[13] 是公开的例子。编写一个工具这件事本身就是一条流,模型恰好只占其中一步:

描述 → 提议规格 → 准入或拒绝 → 保留工具

  1. 描述。你用自然语言把问题描述一次(“已批准发票的总金额”)。工具会打印一段提示,其中带着你的列名和封闭的原语词汇表。
  2. 提议。模型组合出一份规格。它不是代码,而是一条流水线,例如 rows → filter(approved) → sum(amount)。模型只能在词汇表内组合,没有通往 Python 的逃生口。
  3. 准入或拒绝。地板通过一组固定的检查(按公开页面所述,共七项)决定这份规格是否可准入。模型写出的任何东西,在被准入之前都不会运行。
  4. 保留。被准入的规格经签名、晋升,并从你自己的机器上通过 MCP 提供服务,model_calls: 0。

该页面列出了三种拒绝,每一种都是 §4 的实例:它不会猜(返回 NO_EVIDENCE,而不是一个看起来合理的数字);它不会运行未经准入的工具(手工改动过的规格会被拒绝并被指名);它不会凭空造出一个领域(地板无法核验的问题会被报告为不可映射)。页面还说明了准入门为什么不在下载包里:一份绕过它的错误规格会自信地、离线地、无限期地作答,而再没有模型能发现它。这就是定理 1 的另一面:确定性让一条流可以重放,但不让它正确。

另外两种放置方式也符合这条规则。模型可以在流已经算出的集合内部排序,却无法往集合里添加东西。模型的输出也可以作为数据进入:记录一次并标明来源之后,它就成为流可以重放的输入。记录一个猜测让它可复现,而不是让它为真,所以它不会进入任何准入事实的步骤。

7. Perslis 中的符号流

三个公开的例子,描述到它们各自页面所描述的程度为止;它们都是研究原型。

7.1 地板工具的答案流

一个被晋升的地板工具是最简单的符号流:rows → filter(approved) → sum(amount)。它公开的答案带有状态(DERIVED)、数值(1290.49)、model_calls: 0,以及一条推导——它是答案的依据,而不是一行日志。词汇表很小:rows、filter 和七个归约器,作用于朴素的 JSON 行。执行器是 303 行仅依赖标准库的 Python,不含任何网络代码,可供下载,任何人都能读完(research/floor)。

7.2 VDSG 的决策流

VDSG,即军用 Peel,是驾驶 id Software 的《DOOM》与《德军总部 3D》的地板,它经由一条固定的链运行,公开在其演示页面上:

引擎状态 → 态势报告 → 规则 → 指令 → 证据 → 执行器

运行时页面把通用契约表述为事实 → 可容许集合 → 目标 → 投影 → 记忆 → 动作,外加一次能指名自身证据的拒绝;只有第一阶段与领域相关。有一点对重放很重要:证据记忆是状态,所以一个决策是当时的报告、指令和记忆的函数,重放也需要记忆快照。演示页面正是这样逐面板地回放一段录制的运行。它如实报告的结果是:在 Hurt Me Plenty 难度下通关 E1M1,在 Nightmare 下没有,并且尚未通关 E1M2。

7.3 Peel 的失效安全回路

Peel 的学习回路公开在什么是失效安全模型?中,它是一条作用于失败记录的符号流:

失败 → 观察 → 解释 → 建立规则 → 核验 → 重试

每个阶段都是一个有明确输出的具名操作:一条被记录的失败;决策时刻的事实;这次失败被记到的那个决策;一条引用挣得它的失败、且只有在其危害相对基准率在统计上清晰时才形成的规则;一次确认该规则只在可容许集合内生效的核验;以及一次去掉了被判定选项的重试。学习是可读的计数,做决定的回路中没有神经网络。模型可以提议;只有地板能接纳一条事实。

8. 符号流、智能体链与工作流引擎的比较

各方法的典型形态;具体系统各有不同。工作流引擎可以运行符号流:区别在于一个步骤被允许是什么。
LLM 智能体链工作流引擎 / ETL符号流
一个步骤是一次模型调用;在智能体循环中,模型还会选择下一步图中的一个任务,通常是任意代码封闭、有类型词汇表中的一个操作
确定性没有保证取决于每个任务的代码每一步都必须满足
重放只能靠记录每一个输出重新运行,前提是任务幂等且输入固定精确:相同输出、相同轨迹(定理 1)
审计记录文本对话记录运行日志与任务状态具名步骤的轨迹本身就是依据
错误去向以看似合理的值向前传递任务失败与重试;错误但“成功”的任务会悄无声息地通过注明步骤与理由的拒绝
谁掌握权力模型,以及调度它的编排器编写任务代码的人词汇表与检验;模型只能提议

这就是“AI 工作流与智能体链有何不同”的实际答案。它不是在否定工作流引擎——它们擅长调度与重试;也不是在否定语言模型——它们擅长封闭词汇表做不到的事:阅读开放式文本并提出结构。我们的主张更窄:当一个步骤的输出将被当作事实,或将引发一个动作时,这个步骤应当是符号化的。

9. 符号流与失效安全模型

失效安全模型在证据缺失时关闭;它的学习只能收窄、永远不能扩大它被授权做的事;而每一次拒绝都引用证据。每一项都是符号流的性质:

用这里的话说,失效安全模型就是一个以符号流构建、并把学习者限制在其中一步的决策回路。Perslis Research 的 Peel 据我们所知是第一个失效安全模型;确切的主张与最接近的更早工作见什么是失效安全模型?。它是研究原型,并非经过认证的安全系统。

10. 符号流做不到的事

这些是符号 AI 的经典局限,我们把它们说得和保证一样直白。

因此,实际的系统会是混合的:用习得组件做感知与提议,用符号流处理任何将被准入为事实或转化为动作的东西。神经符号 AI 更全面地讨论了这一设计空间,符号系统则讨论了各步骤所操作的表示。

11. 常见问题

什么是符号流?
符号流是这样一种流水线:其中每一步都是取自封闭词汇表的、明确且有类型的操作,因此从输入到输出的路径可以被精确重放、逐步审视,并对照不变式加以检验。没有哪一步会去猜:当某一步无法给出可检验的结果时,整条流会拒绝,并说明原因。
“符号流”这个术语是谁提出的?
Perslis Research 把“符号流”作为定义性术语来使用,这个定义出自我们。据我们所知,它在 AI 工程中此前没有公认的含义。其要素则更早:数据流编程、Unix 管道、编译器遍、证明助手与霍尔逻辑。
符号流和 AI 智能体工作流是一回事吗?
不是。在智能体工作流或提示链中,每一步都是一次模型调用,而且往往还由模型选择下一步,因此运行不可复现,错误的中间值会看似正确地向前传递。在符号流中,每一步都是取自固定词汇表的确定性操作,每次运行都能精确重放,而无法被检验的步骤会拒绝,而不是返回一个值。
LLM 可以成为符号流的一部分吗?
可以,但角色是固定的。语言模型可以用封闭词汇表提议一条流,在流已经算出的集合内部排序,或提供一个被记录下来的输入。它永远不会执行一个猜测:提议在任何东西运行之前就被准入或拒绝,而被准入的流在没有模型的情况下运行。
为什么确定性很重要?
因为无法复现的决策就无法审计。步骤是确定性的,相同输入就总是给出相同的输出和轨迹,因此任何过去的结果都可以通过再运行一次来核查。确定性不会让一条流正确,它让一条流可以被检验。
符号流和工作流引擎或 ETL 流水线是一回事吗?
不完全是。工作流引擎或 ETL 工具调度的是一张任务图,任务通常是任意代码。符号流限制了一个步骤可以是什么:封闭词汇表中一个有类型、确定性、经过检验的操作,并以拒绝作为定义明确的结果。符号流可以运行在工作流引擎之上。
符号流无法作答时会怎样?
它会拒绝,并指明它停在哪一步以及理由,例如没有证据、问题超出词汇表,或某个不变式失败。它从不以一个看似合理的值代替经过检验的值。
确定性的流能保证答案正确吗?
不能。确定性保证相同输入得到相同输出;一条错误的流每一次都会错。正确性来自检验:每一步的不变式、在存在时使用的可靠校验器,以及一个拒绝它无法检验的流的准入步骤。

12. 参考文献

  1. C. A. R. Hoare. An Axiomatic Basis for Computer Programming. Communications of the ACM 12(10):576–580, 1969. doi:10.1145/363235.363259.
  2. R. W. Floyd. Assigning Meanings to Programs. In Mathematical Aspects of Computer Science, Proceedings of Symposia in Applied Mathematics 19:19–32, American Mathematical Society, 1967.
  3. J. B. Dennis. First Version of a Data Flow Procedure Language. In Programming Symposium, Lecture Notes in Computer Science 19:362–376, Springer, 1974. doi:10.1007/3-540-06859-7_145.
  4. W. M. Johnston, J. R. P. Hanna, R. J. Millar. Advances in Dataflow Programming Languages. ACM Computing Surveys 36(1):1–34, 2004. doi:10.1145/1013208.1013209.
  5. M. D. McIlroy, E. N. Pinson, B. A. Tague. UNIX Time-Sharing System: Foreword. Bell System Technical Journal 57(6):1899–1904, 1978. doi:10.1002/j.1538-7305.1978.tb02135.x.
  6. W. M. P. van der Aalst, A. H. M. ter Hofstede, B. Kiepuszewski, A. P. Barros. Workflow Patterns. Distributed and Parallel Databases 14(1):5–51, 2003. doi:10.1023/A:1022883727209.
  7. X. Leroy. Formal Verification of a Realistic Compiler. Communications of the ACM 52(7):107–115, 2009. doi:10.1145/1538788.1538814.
  8. A. Pnueli, M. Siegel, E. Singerman. Translation Validation. In TACAS 1998, Lecture Notes in Computer Science 1384:151–166, Springer, 1998. doi:10.1007/BFb0054170.
  9. M. J. C. Gordon, R. Milner, C. P. Wadsworth. Edinburgh LCF: A Mechanised Logic of Computation. Lecture Notes in Computer Science 78, Springer, 1979. doi:10.1007/3-540-09724-4.
  10. T. Wu, M. Terry, C. J. Cai. AI Chains: Transparent and Controllable Human-AI Interaction by Chaining Large Language Model Prompts. CHI 2022. doi:10.1145/3491102.3517582. arXiv:2110.01691.
  11. S. Yao, J. Zhao, D. Yu, N. Du, I. Shafran, K. Narasimhan, Y. Cao. ReAct: Synergizing Reasoning and Acting in Language Models. ICLR 2023. arXiv:2210.03629.
  12. Perslis Research. The Orchestration Gap: why model-level alignment cannot survive multi-model runtimes. 预印本,2026。research.perslis.com/orchestration-gap
  13. Perslis Research. 《问一次,答案归你》,符号地板,运行时 1.0.0,2026。research/floor
  14. Perslis Research. Inference Placement: where learned inference earns authority in a provenance-constrained symbolic system. 2026. research.perslis.com/inference-placement