第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 渲染层,直接与后端业务逻辑交互。

相关推荐
嘿黑嘿呦12 天前
chap 8排序
算法·蓝桥杯·排序算法·软件工程
旧曲重听113 天前
2026前端技术从「夯」到「拉」
前端·程序人生·职场和发展·软件工程
承渊政道13 天前
飞算JavaAI 智能引导背后的多 Agent 协作机制解析:从老旧 Java 后台升级到可运行工程
java·开发语言·spring boot·安全·intellij-idea·软件工程·ai编程
apcipot_rain13 天前
计科八股20260616(1)——堆存中位数、链表判环、黑白测试、敏捷开发与瀑布模型、配置管理、持续集成、池化
数据结构·算法·软件工程
lisw0513 天前
【计算机科学技术】路由器(route):概念、历史、内容与战略!
机器学习·智能路由器·软件工程
培培说证13 天前
大数据、人工智能、计算机、软件工程,到底怎么选?
大数据·人工智能·软件工程
文艺倾年14 天前
【强化学习】MDP、贝尔曼方程与CartPole 编程,20W字总结(二)
人工智能·软件工程·强化学习
郝学胜-神的一滴14 天前
CMake 017:彩色日志输出实战
linux·c语言·开发语言·c++·软件工程·软件构建·cmake
小程故事多_8014 天前
AI软件工程范式革命,终结五十年的“手工伪工程”时代
人工智能·软件工程
精益数智小屋15 天前
项目管理看板如何拆解任务进度?项目管理看板解决跨部门协作难题
大数据·人工智能·数据分析·云计算·软件工程