2. 智能体基础概念
智能体架构听起来很玄乎,说白了就是一套让机器「活过来」的流程。我做了这么多年AI系统,最深的感触是:没有架构的智能体,就像没有骨架的人——站不起来,更走不远。
这一章我们聊三个核心概念:感知-思考-行动循环、环境交互模型、内部状态管理。它们构成了所有智能体的底层逻辑。
2.1 感知-思考-行动循环:智能体的心跳
先看一个最经典的模型。任何智能体,不管多复杂,都逃不开这个循环:
感知(Perceive)→ 思考(Think)→ 行动(Act)→ 再感知
这就是智能体的「心跳」。一次循环就是一个决策周期。
我在项目中遇到过不少团队,一上来就堆大模型、堆工具链,结果智能体像个无头苍蝇。为什么?因为循环没闭环。你想想看,一个系统连「感知」和「行动」都没对齐,思考再强也是白搭。
具体拆开看:
- 感知:从环境获取信息。可能是传感器数据、用户输入、API返回、数据库查询结果。
- 思考:基于感知到的信息做推理、规划、决策。这里可以用规则引擎、状态机、大语言模型,或者混合方案。
- 行动:执行决策结果。调用工具、发送消息、控制设备、更新状态。
嗯,这里要注意:行动之后,环境变了,智能体必须重新感知。这个闭环一旦断裂,智能体就「瞎」了。
2.2 环境与智能体的交互模型
智能体不是活在真空里的。它必须和环境打交道。我习惯把交互模型分成三类:
| 模型类型 | 特点 | 典型场景 |
|---|---|---|
| 完全可观测 | 智能体能获取环境的全部状态 | 棋类游戏、数据库查询 |
| 部分可观测 | 只能获取局部信息,需要推理 | 自动驾驶、客服对话 |
| 随机/对抗 | 环境行为不确定,有对手或随机因素 | 金融交易、多智能体博弈 |
我曾经踩过一个坑:做一个客服智能体,以为环境是完全可观测的,直接把所有用户历史塞进上下文。结果token爆炸,响应延迟飙到10秒。后来才意识到——部分可观测才是常态,你得学会「选择性感知」。
我的建议:设计交互接口时,先问三个问题——
- 智能体能获取哪些信息?
- 这些信息是否完整?
- 环境变化的速度有多快?
这三个问题决定了你的感知策略和思考频率。
2.3 智能体的内部状态管理
这是最容易翻车的地方。很多初学者把智能体当成「无状态函数」——每次调用都从头开始。但真正的智能体必须有记忆、有状态。
内部状态管理,我把它拆成三层:
- 短期状态:当前循环内的临时数据。比如用户刚说的那句话、刚执行的工具返回结果。
- 中期状态:跨循环的上下文。比如对话历史、任务进度、已探索的路径。
- 长期状态:持久化知识。比如用户画像、领域规则、学习到的策略。
注意:状态管理不当会导致「状态污染」——上一个用户的残留数据影响下一个用户的决策。我曾经在早期项目里犯过这个错,排查了整整两天才发现是全局变量没清干净。
下面这张图展示了感知-思考-行动循环与状态管理的关系:
2.4 实战:一个最小化智能体循环
光说不练假把式。我们写一个极简的智能体循环,用Python伪代码展示:
class SimpleAgent:
def __init__(self):
self.short_term = {} # 短期状态
self.mid_term = [] # 中期状态(对话历史)
self.long_term = {} # 长期状态(知识库)
def perceive(self, input_data):
"""感知阶段:接收环境输入"""
self.short_term['current_input'] = input_data
return input_data
def think(self, perception):
"""思考阶段:基于状态做决策"""
# 结合短期和中期状态
context = self.mid_term[-5:] # 只看最近5轮
decision = self.llm_reason(perception, context)
return decision
def act(self, decision):
"""行动阶段:执行并更新状态"""
result = execute_action(decision)
# 更新中期状态
self.mid_term.append({
'input': self.short_term['current_input'],
'decision': decision,
'result': result
})
return result
def step(self, environment_input):
"""一次完整的感知-思考-行动循环"""
p = self.perceive(environment_input)
d = self.think(p)
r = self.act(d)
return r
避坑指南:我曾经在中期状态里存了全部历史,结果上下文越来越长,推理越来越慢。后来加了滑动窗口——只保留最近N轮。效果立竿见影。
2.5 三种循环模式的对比
实际项目中,循环模式不是一成不变的。我总结了三类:
| 模式 | 触发方式 | 适用场景 | 状态管理复杂度 |
|---|---|---|---|
| 同步循环 | 每次请求触发一次循环 | 问答机器人、单次任务 | 低 |
| 异步循环 | 事件驱动,持续运行 | 监控系统、自动化流程 | 中 |
| 分层循环 | 不同层级不同频率 | 机器人控制、游戏AI | 高 |
嗯,这里要特别说一下分层循环。我做过一个仓储机器人项目,底层循环每100ms一次(避障),中层循环每1秒一次(路径规划),高层循环每10秒一次(任务调度)。不同频率的循环共享状态,但互不阻塞——这才是工程级的做法。
注意:分层循环最怕「状态竞争」。两个循环同时读写同一个变量,数据就乱了。我的经验是:给每层分配独立的状态空间,通过消息队列传递需要共享的信息。
2.6 本章小结
这一章我们拆解了智能体架构的三个基石:
- 感知-思考-行动循环是智能体的基本运行单元,必须闭环
- 环境交互模型决定了感知策略和决策方式
- 内部状态管理是智能体「有记忆」的关键,分短期、中期、长期三层