如何理解agent runtime
A
Admin
如果你已经理解了:
- LLM
- System Prompt
- Tool Calling
- ReAct
那么 Agent Runtime 可以理解为:
围绕 LLM 构建的一套“操作系统”或者“执行引擎”。
很多人刚开始做 Agent 时,会认为:
LLM
+
Tools
=
Agent
实际上真正复杂的部分往往是:
Agent Runtime
一个最简单的例子
假设你有:
query_db(sql)
用户:
最近30天收入趋势
模型返回:
{
"tool": "query_db",
"sql": "..."
}
执行后得到结果。
再送给模型。
这只是:
LLM
↔ Tool
还不能算完整 Runtime。
Runtime 是什么
想象浏览器。
网页代码:
alert("hello")
真正执行的是:
Chrome Runtime
负责:
- 内存
- 网络
- 权限
- 文件
- 进程
Agent 也一样。
模型只负责:
决策
Runtime 负责:
执行
Agent Runtime 典型组成
┌─────────────────┐
│ User │
└────────┬────────┘
│
┌────────▼────────┐
│ Agent Runtime │
├─────────────────┤
│ Context Manager │
│ Tool Registry │
│ Planner │
│ Memory │
│ Permission │
│ Loop Controller │
│ Sandbox │
└────────┬────────┘
│
┌────────▼────────┐
│ LLM │
└─────────────────┘
1 Context Manager
负责维护上下文。
例如:
用户:
分析销售数据
Agent:
查询订单表
Agent:
查询用户表
Agent:
生成图表
Runtime 决定:
哪些历史保留
哪些丢弃
哪些摘要
否则上下文会爆炸。
2 Tool Registry
工具注册中心。
例如:
tools = [
query_db,
draw_chart,
send_email
]
Runtime 负责:
告诉模型有哪些工具
验证参数
执行工具
返回结果
3 Loop Controller
这是 ReAct 的核心。
while True:
response = llm()
if tool_call:
execute_tool()
else:
break
这个循环本身就是 Runtime 的一部分。
4 Permission System
为什么 Codex 不会直接:
rm -rf /
因为 Runtime 会拦。
例如:
允许:
read
允许:
git diff
禁止:
sudo
Runtime 在执行前检查权限。
5 Sandbox
Codex 里面很重要。
例如:
Shell
实际上运行在:
Sandbox
而不是你的真实机器。
Runtime 管理:
- 文件系统
- 网络
- CPU
- 进程
6 Memory
例如用户:
分析昨天订单
十分钟后:
跟上周比较
Runtime 可以记住:
昨天查询过订单数据
而不是重新查。
为什么 Codex 看起来很复杂
很多人打开源码:
几十万行
然后以为:
复杂推理算法
实际上很多代码在处理:
Session
Tool
Sandbox
Permission
Memory
真正调用模型的代码可能只占很小一部分。
核心循环经常类似:
while not done:
response = model()
if tool_call:
run_tool()
else:
return answer
如果你做数据分析 Agent
Runtime 可以非常简单:
Data Agent Runtime
├── query_db
├── draw_chart
├── memory
├── context
└── agent loop
用户:
最近30天新增用户趋势
Runtime:
调用模型
↓
生成SQL
↓
执行SQL
↓
返回结果
↓
生成图表
↓
返回答案
模型只是负责决定:
下一步做什么
一句话理解
如果把 Agent 比作人:
LLM
=
大脑
Tool
=
手脚
Agent Runtime
=
神经系统 + 操作系统
或者从软件架构角度:
Agent Runtime
=
负责管理 Agent 生命周期的一切基础设施
而 Codex、Claude Code、OpenHands 这些产品之间最大的差异,往往不在模型本身,而在它们各自 Runtime 的设计。