第二章:Agent核心三要素——感知、决策、行动
大家好,我是你们的老朋友。今天我们来聊聊Agent最核心的东西——它的骨架。
很多人刚开始学Agent,总喜欢盯着各种框架、API、工具链。但我个人习惯,先看骨架。骨架对了,后面填肉就顺了。
Agent的骨架,说白了就三个东西:感知(Perception)、决策(Decision)、行动(Action)。你想想看,任何一个智能体,不管多复杂,拆到最底层,都逃不出这个圈。
核心观点: 感知是眼睛,决策是大脑,行动是手脚。三者缺一不可,顺序也不能乱。
1. 感知——Agent的「眼睛」
感知是什么?就是Agent怎么「看」世界。
在传统程序里,输入就是参数,结构固定。但Agent的感知不一样。它要处理的是非结构化、多模态、带噪声的信息。
举个例子。我做过一个客服Agent项目。用户发来一段语音,里面夹杂着背景噪音、口音、甚至半句话。传统程序直接崩了。但Agent的感知层,得先做语音识别、情感分析、意图提取,才能把原始信号变成「可理解的信息」。
我的经验: 感知层最容易踩的坑是「过度解析」。我曾经让一个Agent去读PDF,结果它把页眉页脚、水印全当正文处理了。后来我加了一个「信息过滤器」,只保留正文区域。记住:感知不是越多越好,是越准越好。
感知层通常包含这几个步骤:
- 数据采集:从传感器、API、文件、用户输入等渠道获取原始数据
- 数据清洗:去噪、标准化、格式转换
- 特征提取:把原始数据变成有意义的特征向量
- 语义理解:用LLM或传统NLP解析意图、实体、关系
你可能会问:「这不就是数据处理吗?」嗯,有点像,但有个关键区别——Agent的感知是主动的。它会根据当前状态,决定「我现在需要感知什么」。而不是被动地等数据喂到嘴边。
2. 决策——Agent的「大脑」
感知完了,信息进来了。然后呢?
决策层要回答三个问题:
- 现在是什么情况?(状态评估)
- 我有哪些选择?(动作空间)
- 选哪个最好?(策略选择)
传统程序做决策,靠的是if-else或者规则引擎。但Agent的决策,我习惯把它分成三个层次:
| 决策层次 | 典型方法 | 适用场景 |
|---|---|---|
| 规则驱动 | 决策树、专家系统、有限状态机 | 简单、确定性的任务(如:温度过高就关阀门) |
| 模型驱动 | 强化学习、规划算法、优化求解 | 复杂、动态的环境(如:机器人路径规划) |
| LLM驱动 | ReAct、Chain-of-Thought、Function Calling | 开放、语义化的任务(如:客服对话、代码生成) |
我个人最常用的是「混合决策」。举个例子,我在做一个自动化运维Agent时,遇到服务器告警。规则层先判断:是不是已知故障?如果是,直接执行修复脚本。如果不是,交给LLM层去分析日志、查知识库、生成新的修复方案。这样既快又灵活。
注意: 决策层最怕「犹豫不决」。我曾经见过一个Agent,在两种方案之间反复权衡,最后超时了。记住:在有限时间内做出足够好的决策,比追求完美决策更重要。给决策加一个「时间预算」,超时就选当前最优解。
3. 行动——Agent的「手脚」
决策做完了,得干活了。
行动层就是把决策转化成具体的、可执行的指令。它可以是:
- 调用一个API
- 执行一段代码
- 发送一条消息
- 控制一个硬件设备
- 甚至只是更新自己的内部状态
这里有个容易被忽略的点——行动的「副作用」管理。
我踩过这个坑。有一次,我的Agent调用了一个删除文件的API。决策层说「删除临时文件」,但行动层没检查路径,结果把用户的重要数据删了。从那以后,我养成了一个习惯:所有对外部系统有影响的行动,都要加一层「安全校验」。
行动层的关键设计原则:
- 原子性:每个行动应该是一个不可分割的最小操作
- 可回滚:如果行动失败,要有办法恢复到之前的状态
- 可观测:行动的执行结果要能被感知层捕获,形成闭环
核心公式: Agent = 感知(输入)→ 决策(处理)→ 行动(输出)→ 反馈(循环)
4. 三要素的协同——一个完整例子
光讲理论太干。我拿一个实际项目来拆解。
之前我帮一家电商公司做了一个「智能客服Agent」。它的工作流程是这样的:
# 伪代码示例:智能客服Agent的核心循环
while True:
# 1. 感知层
user_input = listen_to_user() # 接收用户语音
text = speech_to_text(user_input) # 语音转文字
intent = extract_intent(text) # 提取意图(退货?咨询?投诉?)
sentiment = analyze_sentiment(text) # 情感分析(愤怒?平静?)
# 2. 决策层
if intent == "退货" and sentiment == "愤怒":
strategy = "优先安抚 + 快速处理"
action_plan = generate_plan(strategy, user_info)
elif intent == "咨询":
action_plan = search_knowledge_base(text)
else:
action_plan = escalate_to_human(text)
# 3. 行动层
result = execute_action(action_plan) # 执行具体操作
speak_to_user(result) # 回复用户
# 4. 反馈循环
feedback = measure_user_satisfaction(result)
update_model(feedback) # 根据反馈优化决策
你看,这个循环一直在转。感知→决策→行动→再感知。每一次循环,Agent都在学习、在优化。
避坑指南: 我曾经把感知和决策混在一起写,结果代码一团糟。后来我强制自己:每个模块只做一件事。感知层只负责「把原始信息变成结构化数据」,决策层只负责「选策略」,行动层只负责「执行」。这样调试起来特别爽。
5. 三要素的「黄金比例」
你可能要问:这三个要素,哪个最重要?
我的答案是:看场景。
- 感知密集型:比如自动驾驶,感知占了80%的工作量。决策反而简单——看到红灯就停。
- 决策密集型:比如下棋AI,感知很简单(棋盘状态),但决策极其复杂。
- 行动密集型:比如机器人装配,感知和决策都相对固定,但行动需要极高的精度和协调性。
但不管哪种场景,反馈循环都是灵魂。没有反馈,Agent就是个死循环。有了反馈,它才能进化。
好了,这一章的核心骨架就这些。记住三个词:感知、决策、行动。下次你看到一个Agent,试着用这个框架去拆解它。你会发现,再复杂的系统,底层逻辑都逃不出这个圈。