周五下午四点半,办公室的气氛已经松动。老李端着保温杯路过小王工位,看他正对着一篇技术文章两眼放光。
“看什么呢这么兴奋?”
“AI Agent!老李你看,现在可以让 GPT 自己调用 API,自己规划任务——”小王话音未落,老李就摆了摆手。
“不就套个壳吗?让 ChatGPT 去调个接口,就叫 Agent 了?我十年前写的 cron job,每天早上自动拉取日志、分析异常、发邮件报表——那不也是 Agent?你们年轻人,总喜欢给旧概念起新名字。”老李打开保温杯,枸杞的香气飘出来,像是在宣告经验的胜利。
小王也不急,把椅子往后一靠:“老李,你列出你今天一天做了哪些事?”
老李想了想:“看邮件,判断哪个紧急哪个能搁着;给老赵打电话聊供应链的问题;拍板把周三的上线推迟两天;然后写了两小时代码。怎么了?”
“你那个 cron job 会‘判断哪个邮件紧急’吗?会‘拍板推迟上线’吗?老李你想啊,你做的事,不是‘定时执行预定任务’,而是在不断地感知情况、做出选择、采取行动。你的脚本,只会按剧本念台词;而你本人,是个能即兴发挥的演员。这个区别,就是 Agent 和自动化的分界线。”
老李的保温杯停在了半空。
实习生小王的比喻
“我换个说法,”小王站起来在白板上画了一个小人,“假设你招了个实习生,叫小王。他刚来的时候,你给他一本标准操作手册——‘每天早上九点,去数据库拉昨天的销售数据,做成 Excel 发给我’。这就是你的 cron job,照着指令做,一步不错,一步不多。”
“但他干了一个月,开始有了自己的想法。看到数据异常,他会在邮件里标注一下;发现某个客户连续三天下滑,他会主动去查客服记录,然后跟你说‘老李,这个客户可能要流失了,要不要我约个回访?’这时候,他就从一个执行器,变成了一个有判断力的协作者。”
“Agent 就是那个有判断力的实习生。LLM 是他的大脑,你给的系统提示词是他的操作手册,他能够使用的那些 API——查数据库、发邮件、搜索文档——是他桌上的工具。而他最核心的能力,是在不确定的环境里,自己决定下一步该干什么。”
老李若有所思:“所以 Agent = LLM + 工具 + 决策循环?”
“精准。而且这个循环不是跑一次就停,是持续运行的。就像你这一天的工作——看完邮件去打电话,打完电话去拍板,拍完板去写代码。Agent 也这样,执行完一个动作,观察结果,再决定下一个动作,直到目标达成。”
图:Agent 的核心循环——感知、推理、执行、再感知
为什么说 cron job 不是 Agent
老李放下保温杯,抱起胳膊:“你说的‘决策能力’,到底是个什么技术门槛?我那个 cron job,如果加几个 if-else,不也能根据异常程度决定是否发告警吗?”
“if-else 是规则,不是推理。”小王摇头,“你的脚本能处理‘如果 CPU 超过 90% 就告警’。但它能处理‘如果 CPU 突然升高,但持续时间不到两分钟,同时上游没有发布新版本,可能是临时流量尖峰,先观察五分钟再决定告警’吗?”
老李一愣。
“规则只能穷举你事先想到的情况。Agent 能处理你没想到的情况。因为它不是匹配规则,而是用语言模型去理解上下文、做权衡判断。就像一个实习生面对一本厚厚的手册,他可以查手册,但如果手册里没写,他会根据常识去推断。if-else 是一本死手册,Agent 是会翻手册也会动脑子的人。”
老李沉默片刻:“那如果 AI 判断错了呢?”
“当然会错,就像实习生也会犯错。所以 Agent 的设计里通常会有安全边界——关键操作需要人工确认,敏感数据只读不写,每次决策都留下日志方便回溯。但这不影响它最本质的特征:能在信息不完整的情况下做出合理的选择。这是自动化脚本永远做不到的。”
四种层次的 Agent
“Agent 也分层级。”小王在玻璃上画了一个阶梯。
第一层:反射型 Agent。 “就像自动门——感应到人,就打开。它没有记忆,没有计划,只对当前输入做出反应。你的 cron job 差不多就是这个级别。”
第二层:状态型 Agent。 “有了记忆。它会记住之前发生过什么,根据历史调整行为。比如一个客服 Agent,能记住用户五分钟前说过‘我换了新手机’,后面就不会再让他验证旧设备。”
第三层:目标型 Agent。 “知道自己要达成什么目标,会自己规划步骤。比如你告诉它‘帮我把这周的技术博客写了’,它会自己去搜索资料、整理大纲、写完初稿、提醒你审阅。它不再需要你一步步告诉它怎么做。”
第四层:学习型 Agent。 “能从自己的行为结果中学习,越用越聪明。你纠正它一次‘不要把架构图叫成流程图’,它就记住了,下次不会犯同样的错。这是目前最前沿的方向。”
老李仰头看着那个阶梯,慢慢地说:“所以咱们现在用的 ChatGPT,顶多算个反射型——你问一句它答一句,没有记忆,没有主动性。”
“对。但你给它配上工具、目标和记忆,它就能爬上去。”
一个最小的 Agent:不只是调用 API
“光说不练假把式,”老李敲敲桌子,“你写一个 Agent 出来我看看。别太复杂,但要让我看出它和脚本的区别。”
小王打开笔记本,写了一个天气查询 Agent。它有一个工具:查询某个城市的天气。它能根据用户的自然语言意图,决定是直接回答还是调用工具。
import json
from openai import OpenAI
client = OpenAI()
# 定义 Agent 可以使用的工具
def get_weather(city: str) -> str:
"""查询某城市的实时天气(模拟)"""
weather_data = {"北京": "晴 25°C", "上海": "小雨 22°C", "杭州": "多云 18°C"}
return weather_data.get(city, "未知城市")
# 工具描述,让 LLM 知道怎么用
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "查询指定城市的天气",
"parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]}
}
}]
def agent_run(user_message: str) -> str:
"""Agent 主循环:推理 → 决策 → 执行工具 → 返回结果"""
messages = [{"role": "user", "content": user_message}]
# 第一次推理:LLM 决定是否需要调用工具
response = client.chat.completions.create(
model="gpt-4o", messages=messages, tools=tools, tool_choice="auto"
)
msg = response.choices[0].message
# 如果 LLM 决定调用工具
if msg.tool_calls:
tool_call = msg.tool_calls[0]
city = json.loads(tool_call.function.arguments)["city"]
weather = get_weather(city) # 执行工具
# 把工具结果发给 LLM,让它生成最终回答
messages.append(msg)
messages.append({"role": "tool", "tool_call_id": tool_call.id, "content": weather})
final_response = client.chat.completions.create(model="gpt-4o", messages=messages)
return final_response.choices[0].message.content
return msg.content # 不需要工具,直接回答
# 测试
print(agent_run("北京今天天气怎么样?"))
print(agent_run("你好,你能做什么?"))老李仔细看着这段代码,慢慢点了点头:“它自己决定了是否调用工具,而且用的是自然语言去理解用户的意图——不是正则匹配关键词。这确实和脚本不同。”
“而且你可以不断给它加工具——查日历、发邮件、搜知识库。它会在推理阶段自己判断该用哪个,按什么顺序用。这是脚本做不到的。”
原来那个脚本就是 Agent
老李把保温杯放在桌上,沉默了一会儿,突然笑了:“照你这个标准,我前年写的一个自动化运维脚本,其实就是一个简单的 Agent。”
“哦?”小王来了兴趣。
“那个脚本每天检查服务器日志,如果发现连续三次同样的报错,会自动去 Jira 建一个工单,并且@对应的负责人。它不是定时执行固定操作——它会判断报错模式、决定是否需要人工介入、然后采取行动。这不就是感知-推理-执行?”
小王一拍桌子:“老李,你那个脚本就是 Agent!它虽然没有用 LLM,但它有一套规则引擎做推理。Agent 的核心不是 LLM,而是决策闭环。LLM 只是让这个闭环能处理更复杂、更模糊的输入。”
老李看着小王屏幕上那个天气 Agent 的代码,又看看自己保温杯里沉浮的枸杞,像是在看两个不同时代的自己。
“这么说,”他缓缓开口,“你那个实习生小王的比喻,也可以用在我那个脚本上——它就是个只会看日志的实习生。而你现在要做的,是给实习生装一个能听懂人话的脑子。”
“精准。”
老李站起来,拍拍小王的肩膀:“有点意思。下周你带我把那个天气 Agent 改改,接上咱们的知识库——让实习生也能回答技术问题了。”
他走到门口,又折回来:“那什么,你刚才说的第四层——学习型 Agent,它怎么做到从错误中学习的?是不是得存经验数据?你给我找篇论文,下周分享。”
小王咧嘴笑了。老李的保温杯在夕阳下泛着光,枸杞晃晃悠悠,像是那些刚被赋予了决策能力的小程序,开始有了自己的生命。

