2. 智能体基础概念

智能体架构听起来很玄乎,说白了就是一套让机器「活过来」的流程。我做了这么多年AI系统,最深的感触是:没有架构的智能体,就像没有骨架的人——站不起来,更走不远。

这一章我们聊三个核心概念:感知-思考-行动循环、环境交互模型、内部状态管理。它们构成了所有智能体的底层逻辑。

2.1 感知-思考-行动循环:智能体的心跳

先看一个最经典的模型。任何智能体,不管多复杂,都逃不开这个循环:

感知(Perceive)→ 思考(Think)→ 行动(Act)→ 再感知

这就是智能体的「心跳」。一次循环就是一个决策周期。

我在项目中遇到过不少团队,一上来就堆大模型、堆工具链,结果智能体像个无头苍蝇。为什么?因为循环没闭环。你想想看,一个系统连「感知」和「行动」都没对齐,思考再强也是白搭。

具体拆开看:

  • 感知:从环境获取信息。可能是传感器数据、用户输入、API返回、数据库查询结果。
  • 思考:基于感知到的信息做推理、规划、决策。这里可以用规则引擎、状态机、大语言模型,或者混合方案。
  • 行动:执行决策结果。调用工具、发送消息、控制设备、更新状态。

嗯,这里要注意:行动之后,环境变了,智能体必须重新感知。这个闭环一旦断裂,智能体就「瞎」了。

2.2 环境与智能体的交互模型

智能体不是活在真空里的。它必须和环境打交道。我习惯把交互模型分成三类:

模型类型 特点 典型场景
完全可观测 智能体能获取环境的全部状态 棋类游戏、数据库查询
部分可观测 只能获取局部信息,需要推理 自动驾驶、客服对话
随机/对抗 环境行为不确定,有对手或随机因素 金融交易、多智能体博弈

我曾经踩过一个坑:做一个客服智能体,以为环境是完全可观测的,直接把所有用户历史塞进上下文。结果token爆炸,响应延迟飙到10秒。后来才意识到——部分可观测才是常态,你得学会「选择性感知」。

我的建议:设计交互接口时,先问三个问题——

  1. 智能体能获取哪些信息?
  2. 这些信息是否完整?
  3. 环境变化的速度有多快?

这三个问题决定了你的感知策略和思考频率。

2.3 智能体的内部状态管理

这是最容易翻车的地方。很多初学者把智能体当成「无状态函数」——每次调用都从头开始。但真正的智能体必须有记忆、有状态。

内部状态管理,我把它拆成三层:

  • 短期状态:当前循环内的临时数据。比如用户刚说的那句话、刚执行的工具返回结果。
  • 中期状态:跨循环的上下文。比如对话历史、任务进度、已探索的路径。
  • 长期状态:持久化知识。比如用户画像、领域规则、学习到的策略。

注意:状态管理不当会导致「状态污染」——上一个用户的残留数据影响下一个用户的决策。我曾经在早期项目里犯过这个错,排查了整整两天才发现是全局变量没清干净。

下面这张图展示了感知-思考-行动循环与状态管理的关系:

智能体核心架构:感知-思考-行动循环 环境 (Environment) 感知 (Perceive) 获取环境信息 思考 (Think) 推理与决策 行动 (Act) 执行决策结果 内部状态管理 短期 / 中期 / 长期 核心要点 循环必须闭环 | 状态管理贯穿始终 | 环境交互决定感知策略

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 本章小结

这一章我们拆解了智能体架构的三个基石:

  • 感知-思考-行动循环是智能体的基本运行单元,必须闭环
  • 环境交互模型决定了感知策略和决策方式
  • 内部状态管理是智能体「有记忆」的关键,分短期、中期、长期三层