
短期内不存在通用 AI 工作流魔法——以及为什么每个人都应该自己实现和维护自己的 AI 自动化工作流一、问题的提出过去两年AI 自动化领域出现了一个被反复推销的命题存在或即将出现一种通用的 AI 工作流框架能够跨模型、跨平台、跨部署形态地编排提示词、工具调用、多代理协作、上下文管理与故障恢复。采用它就能“专注于业务逻辑”把工作流的复杂性交给框架。这个命题在商业上极具吸引力。本文要论证的是它在工程上是错误的而且不是“尚未成熟”意义上的错误是参考系不成立意义上的错误。本文的结论是每个认真使用 AI 自动化的人都应当自己实现并维护自己的工作流。这不是一种主张是一个在当前 LLM 底层性质下被推出的必然结果。论证从工程级工作流的定义开始逐层收紧最后落到可执行的判据。二、定义工程级工作流是半闭环控制器“AI 工作流”指代两种东西必须先分清。demo 级工作流是一个循环发消息收消息可能调用一两个工具。它可以通用因为它不承担工程责任。它不判断空转不判断完成不判断上下文是否接近崩溃不判断失败是瞬时还是结构性。它的通用性来自于它什么都没做。讨论它没有意义。工程级工作流对模型行为做实时判断与控制。它判断本次输出是否构成实质进展当前是否处于无进展循环上下文是否接近上限工具调用是否卡死子代理是否失联失败应当重试、换向还是暂停。每一项能力都针对具体被控对象的失效模式建立。本文讨论第二种。工程级工作流的本质是半闭环控制器。要看清这一点必须先看清严格闭环为什么不可能。严格闭环要求三件事同时成立被控对象连续可观测控制信号连续可作用反馈时延远小于系统时间常数。恒温器满足全部三条。LLM 三条全部不成立模型内部状态不可观测可观测的只有输出文本、工具调用、令牌计数、事件流——离散、稀疏、滞后。一次推理是原子调用无法在生成中途改变方向无法对第 50 个令牌施加修正控制是分轮的、离散的。一次调用时延是秒到分钟级工作流关心的状态变化也是秒到分钟级回路不比被控对象快实时纠偏不存在。采样机制进一步保证即使前两条成立也无法精确修正。能改变的只是下一次采样的分布不能确定采样落在哪里。控制对象是分布参数不是轨迹。因此在当前 LLM 上闭环控制不可行。唯一可行的是半闭环。半闭环的结构是在离散监督点上观测状态、调整控制律两个监督点之间按既定策略开环执行。执行段与监督点交替。它受三个硬约束违反任何一条半闭环就会退化为开环或震荡监督点必须覆盖所有状态可能已变的边界。漏掉任何一类边界那类失效只在恰好下一个监督点才被发现而那时可能已晚。监督点之间控制律不能依赖实时状态。执行段没有观测点。所有依赖状态的控制必须放在监督点上。执行段只允许纯提示词策略或纯工具协议。监督点频率与被控对象时间常数必须匹配。太稀则失效发现太晚太密则开销超过收益且因噪声频繁误判。匹配是实测标定不是推导。这三个约束是本文后续所有论证的基础。它们共同指向一个结论控制律必须针对被控对象标定。三、被控对象是三层的联合标定的对象是模型 × 宿主 × 部署。三层各自绑定然后交叉耦合。3.1 模型语义控制律的第一层绑定点是模型对语义的理解方式。不是能力强弱是模型在具体对齐、训练分布与推理机制下对同一提示做出什么行为。差异是结构性的不能靠调参抹平。一个实例某长期运行的自动化插件针对模型在“发送消息”与“中止运行”上的语用混淆必须在工具协议层把二者彻底分离——发送接口绝不隐式中止中止只能是独立显式动作。因为一旦发送附带中止语义模型会在“继续任务”时误杀正在执行的工具造成不可恢复的中断。这个约束不是从通用原则推导的。它是被咬过之后才知道的。同一工程实践还必须处理模型把“对端已受理”误读为“对端已处理完毕”而无限等待不存在的回执模型完成任务后只输出文本、不调用回复接口父任务永远收不到完成信号模型在新任务中复用旧会话 ID污染上下文模型用“待命”“静默 ping”类空转消息维持循环架空无进展暂停模型逐字转发子代理报告冒充自己的工作。每一条都是先发生、后防范。通用框架不可能在发生前防范因为不知道会发生发生之后也不知道防谁因为没见过这个具体模型在具体宿主上的具体失效。3.2 宿主运行时第二层绑定点是宿主的事件模型、工具调用协议、会话状态语义、并发模型、认证与发现机制。外行倾向认为“模型都一样宿主只是管道”。事实相反。同一件事在不同宿主上语义可能完全不同。同一真实插件在两个宿主版本上支持同一套功能两个版本之间是语义级差异宿主 A 推事件钩子宿主 B 是订阅式事件流插件必须自行实现流健康监视与重连否则用户中止信号静默失联而自动续推仍在跑宿主 A 有权威忙闲表宿主 B 没有插件必须自建事件表且与另一条独立路径同源否则出现“系统认为空闲、实际在跑”的分叉宿主 A 消息记录为嵌套结构宿主 B 为扁平记录必须完整翻译否则进度评估恒空、无进展刹车不触发、自动续推无限重发宿主 A 令牌口径按条宿主 B 按会话且必须区分“单条上下文”与“会话总用量”否则自动压缩过早触发然后永不收敛宿主 A 中止信号是特定错误类型宿主 B 是带原因字段的中断事件必须区分用户中止、宿主关机、被新任务取代、空闲超时把非用户中断误判为用户中止会静默暂停用户还在跑的任务。这些差异没有一个能靠“适配一下”跨过。它们改变的是控制律依赖的事实基础。对半闭环三个约束的作用是直接的监督点覆盖哪些边界取决于宿主暴露哪些事件执行段能依赖什么取决于宿主在何处可干预监督点频率取决于宿主并发模型下状态变化的时间常数。宿主一变三个约束全部重标。3.3 部署形态第三层是部署。同一套模型与宿主部署不同控制律仍需重标。多实例并行触发跨进程竞态哪些状态需跨进程协调、协调延迟代价、崩溃后回收方式取决于拓扑。本地与远程改变“如何判断一个调用是失败还是尚未返回”。并发度决定每个超时阈值的实际含义——一个看似温和的两分钟停滞阈值在十四路并发下批量杀死正常会话因为首字节到达时间分布在高并发下完全改变必须为“尚未产出任何内容”的状态单独设宽限期。计费与限额决定令牌统计口径、成本字段、压缩接口参数形态。3.4 不可分解三层不是独立维度是交叉耦合的。提示词策略是模型语用特性与宿主工具描述的联合函数超时阈值是模型时间分布与宿主并发模型的联合函数工具协议是模型对动词的语义理解与宿主工具 schema 的联合函数上下文策略是模型上下文退化特性与宿主令牌口径的联合函数。这不是“耦合很严重”的修辞。它有可检验的证明假设存在分层通用模型层、宿主层、部署层各自独立正确组合即可工作。则对任意两个组合应存在一个保语义映射把一组的控制律映射到另一组。但控制律每一项都是三者的联合函数。改模型会改变宿主下有效的提示词策略改宿主会改变模型的行为时间分布改部署会改变模型与宿主联合观察到的并发行为。不存在这样的保语义映射。因此分层通用不成立。半闭环的三个约束正是这一不可分解性的具体体现。监督点覆盖、执行段依赖、频率匹配每一个都是三层的函数。四、LLM 的两个底层性质三层耦合已经足以否定通用。LLM 的两个底层性质把它推到更强的结论。4.1 PRNG控制对象是分布LLM 推理不是确定函数。采样温度、top-p、专家路由、浮点非确定性全部依赖 PRNG。后果是控制对象是一条轨迹的分布不是一条轨迹。同模型、同提示词两次运行结果不同。无法完全复现一次运行。能做的是统计意义上的控制——保证大多数情况下不触发失效而不是绝不触发。所有阈值都是统计标定。“两分钟无事件即认定卡死”是分布经验值必然有误杀率与漏杀率。所有防护都是概率护栏。不能证明系统不会空转只能证明在测试分布上空转概率低于某值。需要加一个边界否则会误读为“PRNG 是问题”统计控制本身不是问题。工程上大量控制器本来就是统计的。问题在于分布本身在动时统计控制失去固定分布假设。控制论中针对固定分布的统计最优控制器在分布漂移下退化为比简单鲁棒控制器更差的控制器。PRNG 不是问题PRNG 加分布漂移才是问题。4.2 代际漂移参考系本身在动PRNG 只是让运行在分布内抖动。更严重的是模型代际更替改变的是分布本身不是分布的样本。每代新模型在架构、训练数据、对齐目标、推理机制上都变了。不是同一分布上的均值漂移是另一个分布。后果是上一代标定的所有阈值、提示词策略、工具协议在新一代上不再是同一参考系下的量。旧防护在新分布下可能过严、过松、或完全无效。新分布的失效模式不会提前知道——只能再次被咬。“通用于多代模型”在原理上不成立它要求跨代连续的参考系代际差异破坏了这个前提。4.3 两个性质叠加PRNG 让运行在分布内抖动。代际漂移让分布本身在动。三层耦合让控制律是模型 × 宿主 × 部署的函数。三个方向同时漂移。通用框架要求存在一个稳定的参考系——哪怕只是一个“模型行为空间”让抽象有意义。而三个方向的持续漂移保证了这个参考系不存在。五、抽象必然失败且更烂构造通用系统必须先假设模型与宿主之间在哪几个维度上会变。这个假设是设计时的训练分布。设计者没跑过所有组合分布是想象出来的。通用系统就是过拟合到想象分布上的系统。这是机器学习里的标准失效训练分布在真实分布上有偏移时过拟合系统比简单稳健基线更差。通用框架面对的偏移是三个方向的持续偏移运行内抖动、运行间变化、代际漂移。从压缩角度看更清楚抽象丢信息该丢的是噪音。但这里丢掉的——具体失效模式、具体阈值、具体时序——恰恰是让系统工作的信号。通用把信号当噪音压掉了。这不是“效果弱一点”是在真实部署里更烂。三个机制。补偿逻辑互相打架。每条防护针对一个具体失效模式。模型 A 需要严格约束模型 B 在同一约束下过度防御。通用系统只能同时装配两类防护对 A 太紧对 B 太松——比任何专用系统在各自地盘上都差。同一提示词对一个模型是救命绳对另一个是噪音。通用只能平均平均值在任何具体点上都不是最优。通用系统无法调试。真实部署里只有一部分代码路径被触发。其余路径是死代码还是坏代码不知道。专用系统每天在跑bug 可复现通用系统在特定组合上的 bug连复现都做不到。更糟的是通用系统把标定成本推迟到运行时并把它转成“看不懂的 bug”。自己标定的 bug 是“我知道我在防什么它没防住”框架的 bug 是“我不知道它在防什么也不知道为什么没防住”。评测集本身过拟合。评测用例是设计者想象中会发生的用例。真实失效不在里面。“通过评测”只说明通过了设计者的想象。再往下一层通用框架的评测往往是自评——作者在自己设计的任务上测自己的框架。结构上等价于训练集等于测试集。专用系统的评测来自真实运行中发生的失效——测试集是生产环境贡献的不是设计者贡献的。因此“评测通过”对通用框架而言结构上不可信。在 PRNG 与代际漂移下评测连稳定性都不成立同一模型两次跑分不同新一代不是旧一代的改进而是另一个分布。用基准分数论证“通用”等于用移动目标在某一刻的投影论证覆盖。六、那怎么办结论不是“每个人都必须从零写一个插件”。结论是必须拥有对工作流的控制权。拥有控制权有三种形态。它们不是“推荐做法”是根据你对控制的实际需要和承受成本的能力进行的选择。自己写。成本最高控制最完整。适合长期运行、承担实际责任的系统。自己组装可审计的组件。用开源、可读、可改的构件自己拼。成本中等控制中等但每一层都在自己的版本控制里。出问题能定位到具体一层能改能回滚。使用现成框架但保留退出权。如果确实要用现成框架最低要求是能冻结、能替换、能实测。冻结是能锁定它使用的模型版本、宿主版本、自身版本升级由自己决定。替换是每条防护、每个阈值都能被单独替换或关闭而不是全有或全无。实测是在自己的模型 × 宿主 × 部署组合上有可复现的实测数据不是只在作者的组合上有。三种形态的共同点保留“什么时候重做、要不要重做、按什么标准重做”的决定权。不能冻结、不能替换、不能实测的框架无论多流行都是不可接受的依赖。三个投资方向在具体组合上做深。提示词策略、阈值、工具协议、监督点设计、状态机做透。控制律显式化在代码库中可读、可改、可版本控制。每条防护有它防护的失效模式作依据每条阈值有实测作依据每个评测用例来自真实发生过的失效。冻结被控对象。锁定权重版本、容器化推理、固定宿主版本。把“什么时候重做”变成由自己决定的问题。冻结不是保守是把不可控漂移转化为可控计划。保留退出权。代码不可迁移经验可迁移。踩过的坑、建立的防护结构、标定阈值的方法论可复用代码针对具体组合别的组合用不了。因此每层依赖都必须可替换——不是将来会替换是现在就能替换。七、判据本文不针对任何具体产品。但有一条判据是通用的任何以“通用 AI 工作流”为核心卖点的方案无论叫框架、平台还是课程都应被要求出示它在你的模型 × 宿主 × 部署组合上的实测数据。出示不了就是没有。没有实测数据而声称通用只有两种可能只覆盖 demo 级工作流什么都不判断或在你的组合上必然失败。两种都不值得付费。更一般地凡是“买来即用”的承诺都应被要求出示失效模式清单与阈值实测来源。出示不了就是卖想象。判据不需要相信任何人只需要被使用它列出了哪些失效模式是它自己实测的还是抄来的它列出了哪些阈值实测环境是什么和我的环境差多少它在我的组合上有没有可复现的测试测试是谁写的是不是自评它能不能被我冻结、替换、关闭单项如果不能我退出时的代价是什么四个问题任何一个答不上来可信度已经确定。八、结语本文不否定 AI 自动化的价值。恰恰相反AI 自动化的价值是真实的只是不能被打包成通用框架。真正能工作的自动化系统必然深度定制到具体模型 × 宿主 × 部署组合的半闭环系统。它看起来不通用因为它本来就不通用。它的价值不在覆盖一切而在在一个具体组合上把系统行为驯服到可工程化。这件事没有人能替你完成。因为“完成”的定义是在你的具体组合上被咬得足够少——这个“你的”不可替代。