第2章:从模型到意图,软件工程的范式牵移

在传统软件工程领域,人们常常依赖"模式"来应对复杂性。然而,在当今的Agent时代,我们不得不重新审视这一观念:虽然规则依然重要,但意图才是更为关键的因素。模式仅能告诉我们"怎么做",而意图则能回答"为什么做"这一更为本质的问题。

函数与流

OOP

万物都是「对象」,把数据(属性)操作这些数据的行为(方法)绑死在同一个单元里,用真实业务的实体关系来映射代码结构。

它的根基是四个核心特性:封装(藏内部细节,只留对外接口) / 继承(复用共性逻辑) / 多态(同一接口不同实现) / 抽象(剥离无关细节)

复制代码

// 订单是个对象,自己的数据自己管 class Order { private List<Item> items; // 行为绑定在数据上 public double calcTotal() { double sum = 0; for (Item item : items) { sum += item.getPrice() * item.getQty(); } return sum; } }

FP

「函数」是第一等公民(可以像变量一样传参、返回值),拒绝可变状态、拒绝隐式副作用,所有逻辑本质都是「输入数据 → 纯计算 → 输出新数据」的管道,不会修改任何外部原有的东西。

复制代码

// 就是个纯计算过程,不绑在任何对象上,传什么数据进来只算结果,绝不改原items const calcTotal = (items) => items.reduce((sum, item) => sum + item.price * item.qty, 0);

LLM巨大的纯函数

LLM 本质上是一个巨大的、无状态的纯函数,可以用以下公式表示。

复制代码

输出 = f(权重,上下文)

权重(Weight):在推理阶段,模型的权重是冻结的。无论调用多少次,模型本身都不会发生任何改变。

上下文(Context): 这是唯一的变量。Agent 的 "记忆" 并非存储在模型内部(不像人类的海马体),而是每次以参数形式显式传入。

响应式的觉醒:从堵塞等待到异步实践

在传统的编程范式中,开发者的时间观是线性的:代码第1行执行完毕后,才会执行第2行。这种同步阻塞(Synchronous Blocking)的模型符合人类阅读清单的习惯,但在高延迟的数据时代,可能成为性能瓶颈,甚至引发系统性问题。

  • CPU 空转:主线程在 99% 的时间里干等着进度条,无法进行任何其他有用的工作。

  • 系统失聪:在这 10s 期间,如果用户试图取消任务或插入新指令,系统将完全无响应------因为它被牢牢地阻塞在那个漫长的 HTTP 请求上,对外界 "充耳不闻"。

数据流的哲学:世界不是快照

"快照思维"认为:真理是静态的,就存储在磁盘的某个扇区里。

然而,在 Agent 的世界观中,赫拉克利特是对的:世界并非一张静态的照片,而是一部不断演进的电影。

日志即真理

随着分布式系统(如 Kafka)和事件溯源(Event Sourcing)的兴起,软件工程界重新发现了一种"古老"的智慧:数据库只是日志的投影,日志才是真理本身。

  • 数据库:告诉我"现在是什么"(状态)。

  • 日志:告诉我"发生了什么"(事件)。

对 Agent 而言,"发生了什么"往往比"现在是什么"更重要。

为上下文工程铺路

静态视角:将知识库视为一个固定的书架,需要不断整理,把书摆放整齐。

流式视角:将上下文视为一条流动的河流------新的 Token 不断涌入,旧的 Token 则逐渐被冲刷到远处。

Agent 的核心能力,不再是对静态数据的增、删、改、查,而是在这条奔流不息的信息河流中,实时地捕捉(Capture)、过滤(Filter)和变换(Transform)有价值的信号。

微服务带来的API

API 的由来

2002 年,杰夫·贝索斯(Jeff Bezos)向亚马逊全体员工发出了一封著名的内部邮件,其大意是:"所有团队必须通过服务接口(Service Interface)对外公开数据和功能;禁止直接读取数据库;禁止使用后门访问。违者将被解雇。"

它确立了一项核心原则:功能必须解耦为服务,服务必须通过协议进行通信。

正是这场持续二十余年的"接口化"运动,将物理世界与数字世界封装成成千上万个标准化的 RESTful API 或远程过程调用(Remote Procedure Call,RPC)接口。

为机器准备的大餐

在 Agent 出现之前,API 主要是供开发者使用的工具。然而,随着 Agent 的出现,我们惊喜地发现:API 简直是为 LLM 量身定制的"触手"。

  • Swagger/OpenAPI 规范:最初旨在生成清晰的 API 文档,如今却直接成为 Agent 的 "工具说明书"。Agent 只需要读取一份 JSON 定义,便能理解如何调用该服务。

  • 无头服务(Headless Services):微服务倡导将用户界面与业务逻辑解耦。这意味着 Agent 可以绕过复杂的 HTML/CSS 渲染层,直接与后端业务逻辑交互。

相关推荐
202321336073 毛敏磊2 小时前
个人总结——网络安全与软件工程综合实践
安全·web安全·软件工程
guslegend2 小时前
AI驱动的缺陷全自动修复
人工智能·软件工程
明航咨询—张老师4 小时前
安全左移的利器:CISAW-SS安全软件认证如何重塑开发安全基因?
软件工程·安全架构·安全性测试
apcipot_rain3 天前
计科八股20260605——软件生命周期、文档、死锁、地址转换、I/O控制方式、堆、无向图、连通图、最小支配集、逆关系、永真式
数据结构·操作系统·软件工程·计算机组成原理·离散数学
05候补工程师3 天前
【期末/408冲刺】软件工程核心考点与大题通关秘籍(附图解与解题套路)
大数据·hadoop·经验分享·笔记·软件工程
lsyeei3 天前
UML建模在软件生命周期中的应用
软件工程·uml
nuo5342024 天前
软件工程 (Software Engineering) 期末复习资料
软件工程
搞科研的小刘选手4 天前
【高届数计算机方向会议】第七届计算机视觉与数据挖掘国际学术会议(ICCVDM 2026)
人工智能·算法·计算机·数据挖掘·软件工程·视觉·信息
sxdtzhp5 天前
定时任务避峰运行:远离整点,保障系统稳定运行
运维·软件工程·定时任务·crontab