news 2026/4/18 16:20:24

从代码复用到行为约束:在Agent系统中重新理解继承、封装、多态

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从代码复用到行为约束:在Agent系统中重新理解继承、封装、多态

进入智能体开发时代,特别是在最近一年,我才开始意识到一件事:我们并不是突然进入了一个“全新的编程时代”,而是开始频繁地遇到一些用旧范式已经解释不清、约束不住的问题。这些问题并不发生在 Demo 阶段,而几乎都出现在同一个时间点之后——当智能体开始长期运行、开始参与协作、开始在系统中承担连续责任的时候。也正是在这个阶段,我第一次认真地回头看自己用了二十年的那套东西:面向对象、模块划分、接口抽象、继承体系、状态封装。它们没有“失效”,但开始显得不够了。

一、Agent很聪明,但不确定性让我不安

在很多Agent项目早期,我们下意识会沿用非常熟悉的工程方式。

比如:

  • 把Agent当成一个 service

  • Prompt 当成构造参数

  • Tool 调用当成方法

  • Memory 当成内部状态

从代码结构上看,这一切非常自然,甚至可以说非常“优雅”。但问题往往出现在系统跑了一段时间之后。你会发现,很多你原本以为很清楚的边界,开始变得模糊:

  • 这个 Agent 的行为,到底是“实例状态”导致的,还是“上下文输入”导致的

  • 两个 Agent 看起来职责相同,但决策风格已经明显不同

  • 你很难回答:它现在的行为,是继承自哪一次设计,还是运行中“长出来”的

在传统面向对象系统里,这类问题很少出现,因为对象的行为边界是相对稳定的。

而 Agent 不是。

二、面向对象前提假设:行为是可预期的

如果我们冷静一点回看,面向对象编程真正解决的是什么问题?它试图用几个核心概念,帮我们控制复杂度:

  • 封装隔离内部实现

  • 继承复用稳定结构

  • 多态应对变化行为

但这一切都隐含了一个非常重要的前提:对象的行为,是由代码完全决定的。也就是说,只要类定义不变、输入一致、状态可控,那么对象的行为是可预测、可推理、可复现的。而这恰恰是智能体系统开始松动的地方。

三、当行为不再完全由代码决定时,“对象”这个抽象开始吃力

在 Agent 系统里,一个智能体的行为往往由多种因素共同决定:

  • 当前 Prompt 结构

  • 上下文中残留的信息

  • 工具调用历史

  • 模型版本

  • 环境反馈

  • 甚至是一些概率性选择

这些因素,有些是代码控制的,有些不是;有些是显式状态,有些是隐性条件;有些你能回溯,有些你只能推测。你会发现一个很微妙的变化:Agent 的行为,开始具有“运行期生成性”,而不是“定义期确定性”。在这种前提下,如果你还用“对象 = 行为载体”来理解Agent,就会开始感到不安。不是因为这个抽象错了,而是它假设的世界已经变了。

四、继承:从“复用代码”,变成“复用行为约束”

在传统 OOP 里,继承最核心的价值是代码复用和结构抽象。但在 Agent 系统里,如果你真的尝试用继承来组织智能体,你很快会遇到一个现实问题:你很少想继承“实现细节”,而更想继承“不允许做什么”。

比如两个Agent都处理客户请求:一个是客服 Agent,另一个是风控 Agent,它们使用的模型、工具甚至 Prompt 结构可能非常相似,但你真正关心的继承关系,往往不是“它们都能调用哪些工具”,而是:

  • 哪些决策边界是不能突破的

  • 哪些信息是绝对不能输出的

  • 哪些路径在任何情况下都要被禁止

这时候,继承更像是在传递一组行为约束与责任边界,而不是方法实现。如果你还试图用传统“基类 + 子类”的方式去理解它,就会发现结构越来越别扭。

五、封装:不再是隐藏实现,而是隔离不确定性

封装在 OOP 里的原始含义,是隐藏内部实现细节,只暴露稳定接口。但在 Agent 系统里,真正需要被“封装”的,往往不是实现,而是不确定性本身。你会越来越希望做到几件事:

  • 不让Agent的内部推理路径直接影响系统其他部分

  • 不让上下文污染跨越它本不该跨越的边界

  • 不让一次异常决策扩散成系统级行为漂移

封装的重点已经从“信息隐藏”转向了风险隔离与行为收敛你封装的不是代码,而是一个“可控的决策空间”。

六、多态:从“不同实现”变成“不同决策风格”

多态在传统编程里解决的是一个非常明确的问题:同一个接口,不同实现。但在 Agent 协作系统中,多态的真正价值发生了偏移。在Agent程序中,我们不关心到底使用哪个LLM大模型,底层调用的是哪个工具实现,而是关注在不确定信息,需求模糊,目标冲突的情况下,如果做出正确的决策。这些决策风格差异。而这类差异,往往并不适合被硬编码在方法里,而更像是系统层定义的一组策略参数。

七、“面向智能体编程”,并不是抛弃 OOP,而是上移一层抽象

我并不认为我们真的“从 OOP 进入了一个完全不同的范式”,更准确的说:OOP 解决的是“构件如何组织”,而 Agent 编程开始关心“行为如何被治理”。在我现在认可的架构里:对象仍然存在、模块仍然存在、接口仍然存在。但它们不再是系统的最高抽象层。在它们之上,多了一层以前并不存在东西:行为边界、决策责任、风格约束、反馈机制。这层东西才是“面向智能体编程”真正试图处理的对象。

OOP

智能体

继承

代码复用

责任与约束的传递

封装

实现隐藏

决策风险的隔离

多态

实现差异

可被治理的行为风格差异

它们并没有消失,只是被重新放到了一个更贴近真实系统风险的位置上。所以我并不认为“从 OOP 到 Agent 编程的革命”。它更像是一种工程反应:当系统开始承担更大不确定性时,我们本能地开始寻找新的约束结构。Agent 只是让这种不确定性显性化了。如果你真的上线过智能体系统,你会知道,Agent编程从来不是模型不够聪明,而是你不知道它明天会不会“换一种方式聪明”,工程的意义在于让聪明可控,让行为可解释,让系统在变化中仍然站得住。所以“面向智能体编程”,并不是对过去的否定,而是更加重视工程责任。相比OOP编程,我们要约束的,不再只是代码。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 10:08:26

8大中文聊天语料库:一站式智能对话数据集解决方案

在人工智能和自然语言处理快速发展的今天,中文聊天语料库作为训练智能对话系统的核心资源,其重要性日益凸显。Chinese Chatbot Corpus项目精心整合了8个高质量中文语料,为开发者提供了一站式语料解决方案,让您能够快速构建出色的聊…

作者头像 李华
网站建设 2026/4/18 8:05:05

OpenXR Toolkit完整指南:零代码实现VR应用性能翻倍

OpenXR Toolkit作为专为OpenXR应用程序设计的性能优化工具包,无需修改任何源代码就能显著提升VR体验。这款免费开源工具通过智能渲染技术和图像增强算法,为开发者和普通用户提供了即插即用的性能解决方案。 【免费下载链接】OpenXR-Toolkit A collection…

作者头像 李华
网站建设 2026/4/18 7:07:30

39、商业智能应用全解析:从报表到数据挖掘

商业智能应用全解析:从报表到数据挖掘 1. 商业智能门户概述 Portal 作为一种应用程序,充当着访问和管理商业智能报表、分析、数据挖掘、仪表盘应用以及警报订阅的网关。接下来,我们将详细探讨商业智能的六大类应用,包括它们是什么、为何使用(重要性)、优缺点,并给出具…

作者头像 李华
网站建设 2026/4/18 3:41:38

Elasticsearch 201状态码实战:索引文档成功返回说明

深入理解 Elasticsearch 的 201 Created:不只是“成功”,更是“首次落地” 你有没有遇到过这样的场景? 向 Elasticsearch 写入一条数据,返回 200 OK ,你以为写进去了——结果后来发现其实是 覆盖了旧数据 。而你真…

作者头像 李华
网站建设 2026/4/18 8:08:54

终极免费2D动画制作完整指南:Pencil2D新手快速上手

Pencil2D是一款完全免费的开源2D手绘动画软件,专为动画制作新手设计。无论您是想创作简单的动态表情包,还是制作完整的动画短片,这款工具都能让您的创意轻松实现。让我们一起探索这个神奇的动画世界吧! 【免费下载链接】pencil Pe…

作者头像 李华