为什么智能体需要运行时:从 Class 到 Execution Domain 的转变
智能体的本质是行为系统,而非代码片段。只有将其从 class 提升为 workload,才能实现企业级的调度、治理与协作。
智能体(Agent)并不是一个“更聪明的函数”,也不是一个“带状态的类”。它本质上是一种持续运行的行为系统。如果仅用 class、函数调用或框架编排来承载这种系统,往往会在工程实践中遇到瓶颈。
运行时(Agentic Runtime)的出现,并非架构设计的超前选择,而是复杂智能体系统在现实工程条件下的自然演进。
Agent 不等于 class
当前主流的 Agent 开发方式,通常将智能体实现为一个 class:
- 封装 prompt、memory、tools
- 由框架在 Python 进程中直接调用
这种方式在 Demo 阶段是可行的,但它隐含了一个前提:Agent 是一次性的、同步的、无状态的执行体。
而真实的智能体具备以下特征:
- 明确的生命周期(启动、规划、执行、反思、终止)
- 持续推进的内部状态
- 多轮推理与多工具协作
- 多智能体并行与协作
- 随时可能被中断、回滚或接管
class 是静态结构;Agent 是动态行为系统。
当系统的本质是“行为”而非“代码结构”时,仅靠 class 或函数调用难以完整表达和治理。
Agent 需要的不是调用,而是调度
传统函数调用模型假设:
- 输入确定
- 执行路径有限
- 输出一次性返回
而智能体的执行模式则是:
- 推理 → 行动 → 反馈 → 再推理
- 任务动态拆分
- 多角色并行协作
- 上下文持续累积
在这种模式下,“执行”本身需要被调度。
调度的对象不仅仅是 CPU 或线程,还包括:
- 推理步骤
- 工具调用
- 状态推进
- 并行任务之间的依赖关系
没有调度器,就难以实现可扩展的智能体系统。
Agent 执行是任务图,而不是一次调用
以“生成一份市场分析报告”为例,真实的执行过程通常包括多个智能体协作。下面的列表展示了典型的任务分解流程:
- Planner 拆解任务
- Research Agent 搜集资料
- Analyst Agent 生成分析
- Evaluator 校验质量
- Router 决定是否重试或切换模型
这实际上构成了一个动态生成、可回放、可中断的任务图(Execution Graph)。
这种执行语义:
- 难以用同步函数表达
- 难以靠框架内部变量维护
- 难以通过 try/except 恢复
因此,必须由运行时来持有和推进。
工程现实:环境碎片化的挑战
在实际工程中,环境碎片化是智能体系统面临的重要挑战。下方列表总结了碎片化环境带来的典型问题:
- 状态需要在多个沙箱之间搬运
- 中间产物通过对象存储或临时文件传递
- 延迟不可控
- 失败点增多
- 调试和回放难度提升
这并非简单的实现问题,而是执行语义被拆散后带来的必然结果。
因此,智能体系统需要的不是“更多工具”,而是一个统一的执行域(Execution Domain)。
Agent 需要状态,而状态必须属于运行时
智能体的核心并非 Prompt,而是状态推进。
一个可运行的智能体,至少需要以下状态语义:
- Session State:长期上下文
- Task State:当前任务进度
- Intermediate State:推理中间态
- Tool Trace:工具调用轨迹
这些状态应具备:
- 可持久化
- 可回放
- 可审计
- 可恢复
如果仅将这些状态存放在内存变量、数据库或日志系统中,容易导致一致性和治理难题。
状态不仅是存储问题,更是运行时语义问题。
Agent 需要治理,而治理不能仅靠代码实现
当智能体进入企业级场景时,治理问题变得尤为重要。下方列表总结了常见的治理需求:
- 工具调用权限
- 数据访问范围
- 资源上限控制
- 决策过程审计
- 成本约束
这些问题的共同特征是:
它们属于“执行时问题”,而非“编写代码时问题”。
因此,治理能力需要由运行时统一承载。
框架与运行时的分工边界
框架(Framework)关注如何组织逻辑,而运行时(Runtime)关注如何让逻辑可靠地发生。
下表对比了二者的分工:
| 维度 | 框架 | Agentic Runtime |
|---|---|---|
| 控制对象 | 代码流程 | 执行生命周期 |
| 状态 | 变量与对象 | Session / Task / Trace |
| 并发 | 进程/线程 | 执行图级并发 |
| 工具执行 | 函数调用 | 隔离执行域 |
| 恢复 | 有限 | 中间态恢复 |
| 审计 | 基本无 | 全链路可追溯 |
二者并非替代关系,而是职责分离、协同配合。
行业趋势:从代码结构到治理实体
从多个方向可以观察到行业的收敛趋势:
- 智能体被当作 Workload
- 执行图成为一等语义
- Sandbox(受控执行域)成为运行时核心
- 人工接管能力被视为必需
这意味着:
智能体正从“代码结构”演进为“可治理的执行实体”。
总结
智能体之所以需要运行时,并不是因为它“更复杂”,而是因为:
- 它是持续运行的行为系统
- 它依赖统一的执行域
- 它必须被调度、治理和接管
从 class 到 workload,从代码到运行时,这是智能体系统走向工程化、规模化和可治理的关键路径。