简介:本文从“业务逻辑坍塌”现象出发,系统定义AI Agent时代应用架构的重构方向。读者将理解为何传统应用层正退化为胶水代码、大模型不确定性的技术根源,以及如何围绕Agent重建业务逻辑。适合开发者、架构师与技术选型人员阅读。
“业务逻辑坍塌”并非一个已被标准化的学术术语,而是对一种正在发生的工程现象的概括性定义:
当应用层的核心价值——业务规则的编排、状态管理、决策路径与领域知识的表达——被逐步上移到大模型或Agent运行时中,传统应用层退化为仅负责输入输出拼接、协议适配与工具调用的“胶水代码”,这一过程即为业务逻辑的坍塌。
要理解这个定义,需要区分三个层次:
这一现象的本质问题是:当业务逻辑不再存在于代码中,它去了哪里?它是否仍然可控、可测试、可审计?
传统软件架构中,大模型通常被视为一个函数:输入文本,输出文本或结构化结果。应用层围绕这个函数构建完整的业务逻辑。
但在Agent架构中,模型不再只是函数,而是运行时本身。它负责:
这些决策在过去都是业务逻辑的一部分,现在被“委托”给了模型。
行业内普遍观察到:真正参与预训练的企业极少,多数参与者集中在应用层。这意味着:
当模型能力足够强时,开发者自然倾向于把更多逻辑交给模型,而不是用代码显式表达。这就是坍塌的驱动力。
用代码表达业务逻辑需要:需求分析、设计、编码、测试、部署、维护。用提示词或Agent配置表达业务逻辑,迭代周期可以缩短到分钟级。
这种效率差异导致一个现实结果:即使开发者知道应该用代码表达逻辑,也会选择更快的路径。 坍塌因此加速。
在Agent架构下,一个典型的应用系统可以拆解为以下模块:
负责推理、决策、生成。它接收上下文,输出动作或文本。模型运行时是Agent的“大脑”。
一组可被模型调用的函数或服务。每个工具通常包含:
工具层是Agent与外部世界交互的边界。
负责构建、裁剪、压缩传递给模型的上下文。包括:
上下文管理器决定了模型“看到什么”,从而间接决定了它的行为。
Agent需要跨轮次保持状态。状态可以存储在:
状态管理是业务逻辑的重要载体,但在Agent架构中往往被弱化。
决定Agent的调用流程:是单轮还是多轮?是否并行调用工具?失败后如何重试?何时交还控制权给用户?
编排层是业务逻辑最集中的地方,也是坍塌最严重的区域。
包括日志、追踪、评估、安全过滤、权限控制等。在Agent架构中,这些能力需要重新设计,因为执行路径不再是静态的。
以一个订单处理系统为例,传统代码可能是:
def process_order(order):if not validate_order(order):return error("invalid order")if order.amount > CREDIT_LIMIT:if not check_credit(order.user):return error("credit check failed")discount = calculate_discount(order)total = order.amount - discountif total < MIN_ORDER_AMOUNT:return error("below minimum")return create_payment(order, total)
这段代码显式表达了:校验规则、信用检查、折扣计算、最小金额限制、支付创建。这些是业务逻辑。
在Agent架构中,上述逻辑可能变成:
模型自行决定调用顺序、是否跳过某些步骤、如何处理异常。业务逻辑从代码变成了提示词与模型决策。
当以下条件同时满足时,坍塌变得不可逆:
此时,应用层只剩下:调用模型、传递上下文、执行工具、返回结果。这就是胶水代码。
这是理解Agent行为的关键问题。即使所有参数固定、Temperature设为0,固定输入仍可能产生不同输出。原因包括:
GPU并行计算中,浮点加法不满足结合律。不同的计算顺序会产生微小差异,这些差异在深层网络中可能被放大。
推理时,请求可能与其他请求一起批处理。批处理大小、顺序、内存布局的变化会影响计算结果。
Softmax、LayerNorm等操作对数值精度敏感。不同硬件、不同算子实现可能产生不同结果。
即使Temperature=0,某些实现仍可能使用Top-K或Top-P的变体,或在平局时随机选择。
如果上下文构建过程中有任何非确定性(如时间戳、随机ID、并发写入顺序),输入就会不同。
结论:LLM的不确定性不是单一原因造成的,而是浮点计算、并行调度、数值稳定性、采样策略与上下文构建共同作用的结果。 这意味着,即使你把业务逻辑全部交给模型,也无法保证相同输入产生相同输出。
过去:意图识别、槽位填充、对话状态机、业务规则引擎。
现在:系统提示词+工具调用+模型决策。
坍塌程度:高。对话流程不再显式编码。
过去:模板引擎、代码生成器、AST操作。
现在:模型直接生成代码,开发者审核。
坍塌程度:中高。生成逻辑不可解释。
过去:SQL模板、ETL流程、指标定义。
现在:自然语言转SQL,模型决定查询逻辑。
坍塌程度:中。查询正确性依赖模型能力。
过去:BPMN、状态机、规则引擎。
现在:Agent编排,模型决定下一步。
坍塌程度:高。流程不可静态验证。
过去:规则库、策略引擎、审计日志。
现在:模型判断+人工复核。
坍塌程度:中。但合规要求高的场景难以接受。
胶水代码不表达领域规则,只负责连接。业务逻辑表达“在什么条件下做什么”。坍塌的本质是业务逻辑被胶水代码替代。
工作流引擎的执行路径是预定义的、可静态分析的。Agent的执行路径是运行时生成的、不可完全预测的。Agent更灵活,但可验证性更差。
提示词工程用自然语言表达意图,传统编程用形式语言表达规则。前者迭代快、门槛低,但可测试性、可复用性、可组合性差。
模型不确定性来自浮点计算与采样。系统不确定性来自上下文构建、工具调用、外部状态。两者叠加,使Agent行为难以完全复现。
对于合规、资金、安全相关的逻辑,应保留显式代码表达。模型可以辅助决策,但不应成为唯一决策者。
记录每次调用的:输入上下文、模型输出、工具调用序列、最终结果。没有可观测性,就无法调试和优化。
将Agent行为拆解为可独立测试的单元:工具调用是否正确、上下文构建是否符合预期、异常处理是否合理。
上下文越长,不确定性越大,成本越高。需要设计裁剪、摘要、检索策略。
哪些决策由模型做,哪些由人做,哪些由代码做。边界清晰,系统才可控。
提示词和工具描述是业务逻辑的新载体,应像代码一样版本化、评审、回滚。
业务逻辑的坍塌不是灾难,而是一种架构演进。它把开发者从繁琐的规则编码中解放出来,但也带来了新的挑战:如何让隐式的业务逻辑仍然可控、可测、可审计。
在AI Agent时代,我们该构建的不是更多的胶水代码,而是:
回到高斯的比喻:工匠在建筑完成后拆除脚手架。但在Agent时代,脚手架可能永远不会被拆除——因为建筑本身在持续变化。我们能做的,是确保脚手架足够坚固、透明、可调整,让建筑在变化中仍然屹立。
业务逻辑没有消失,它只是换了一种存在形式。理解这一点,是构建下一代应用系统的起点。