Day 33 / 共 68 天 · 阶段 6 Agent 核心
Agent 到底是什么
昨天(Day 32)你已经写出了"循环 + 工具 + 会看结果再想"的骨架——其实那就是 Agent 的心脏,只是还没给它起名。今天正式回答这个转行路上被问最多的问题:Agent 到底是什么?它和 ChatGPT 那种"一问一答"差在哪?我们用一个贯穿的类比讲透"主循环",拆开它的四大零件,还会去 Claude Code 源码里瞄一眼真实 Agent 的主循环。学完你能对面试官清楚说出 Agent 的定义;明天(Day 34)深入它最经典的思考套路 ReAct。
📍 你在阶段 6(Agent 核心 D33-38)的位置
D33 Agent 是什么→
D34 ReAct→
D35 规划→
D36 记忆→
D37 状态&断点→
D38 手写最小 Agent
💡 用一个类比兜住今天(今天全程沿用「雇了一位能干的助理」的世界观)
普通聊天机器人像问路人:你问一句,他答一句,答完转身就走,不帮你落地。Agent 像你雇的一位助理:给他一个目标("把这周报销整理好交上去"),他会自己想步骤、自己动手用工具(打开系统、填表)、看结果不对就返工、直到把事办成。今天的关键词都能挂到这位助理身上——主循环=他"想→做→看"的工作节奏;大脑=LLM;手脚=工具;记事本=记忆;老板给的岗位说明=系统提示。你今天要看清:Agent = 给大模型装上了手脚和一个"不达目的不罢休"的循环。
L01
一问一答的天花板:问路人帮不了你搬家
🤔 痛点你直接问 ChatGPT:"帮我把这个文件夹里所有 PDF 改成大写文件名。"它只会告诉你怎么做(给段代码/步骤),但它做不了——它看不到你的文件、按不了你的键盘。遇到多步、要动手、要看中间结果的任务,纯"一问一答"就撞了天花板。
💡 本质纯聊天模型有两条根本限制:①只会输出文字,不能动手(没有工具就够不着现实世界);②一次成型,不会看结果再修正(答完就结束,不会"咦不对我再改改")。问路人告诉你路线很在行,但没法替你把家搬过去。要办成事,得让它能动手 + 能循环。
📝 举个例子:同一个需求,两种反应
需求:"看看服务器还有多少磁盘,不够就清理日志。"
聊天机器人:"你可以运行
Agent:真的调工具跑
聊天机器人:"你可以运行
df -h 查看,再用 rm 删除旧日志……"(教你,但没做)。Agent:真的调工具跑
df -h → 看到只剩 3% → 判断不够 → 调工具删掉上月日志 → 再跑 df -h 确认变成 40% → 回复"已清理,当前 40% 可用"。一个给建议,一个交结果。L02
Agent 一句话定义
🤔 痛点"Agent"被讲得神乎其神,又是智能体又是自主体。到底能不能用一句人话说清?
💡 本质能。Agent = 一个大模型(大脑) + 一组工具(手脚) + 一个循环(想→动手→看结果→再想,直到目标达成)。核心区别只在两个字:循环。聊天是"一锤子",Agent 是"不达目的不罢休地转圈"。你昨天(Day 32)写的那个带上限的 while,配上工具,就已经是个最朴素的 Agent 了。
👶 那"智能体""自主体""AI Agent"是不同东西吗?基本是同一个东西的不同译名/说法,别被术语吓到。面试时你只要能说出上面那句定义(大脑+手脚+循环),再补一句"关键是它能自主决定下一步、并根据结果修正",就已经比很多人清楚了。概念不玄,玄的是名字。
🔗 想看工业级 Agent 的主循环怎么写?去《Claude Code 源码精讲》· Agent 主循环深潜 →
Claude Code 本身就是一个成熟的编程 Agent。它的主循环(怎么把用户消息、工具、结果一圈圈喂给模型,何时停)是本课"Agent 核心"最好的真实教材——今天先建立概念,想看真代码点进去,看完回来继续 Day 34。
L03
主循环:想 → 动手 → 看 → 再想
🤔 痛点"循环"具体循环个啥?每一圈里发生什么?
💡 本质一圈四拍,就是助理干活的节奏:想(Reason)——现在该干嘛?→ 动手(Act)——调一个工具→ 看(Observe)——工具返回了什么?→ 拿着新情况回到"想",开始下一圈。转到"想"这一步得出"目标已达成"时,就停下交付。这正是明天要展开的 ReAct(Reason+Act)。
图注:和 Day 32 的"工具调用循环"是同一个循环,只是这里强调每圈开头的"想"——Agent 的智能,就长在这个"看完再想"的反馈里。
L04
四大零件:大脑 / 手脚 / 记事本 / 岗位说明
🤔 痛点要"雇"一个 Agent 助理,得给它配齐哪些东西?少一样会怎样?
💡 本质四大零件,缺一不可,全能挂到"助理"身上:
| 零件 | 助理类比 | 作用 | 本课对应 |
|---|---|---|---|
| LLM(大脑) | 助理的脑子 | 理解、推理、决定下一步 | 阶段 2-3 |
| Tools(手脚) | 他会用的工具/系统 | 真正对现实世界动手 | 阶段 5(Day 29-32) |
| Memory(记事本) | 随身笔记本 | 记住聊过啥、查到啥,别转身就忘 | Day 36 |
| 系统提示(岗位说明) | 老板给的职责说明 | 定角色、目标、边界、可用工具 | 阶段 3(Day 16-20) |
📝 举个例子:缺零件会怎样
· 没手脚 → 退化成聊天机器人,只会说不会做(L01 的问路人)。
· 没记事本 → 每圈都"失忆",第 3 步忘了第 1 步查到啥,原地打转(Day 36 解决)。
· 没岗位说明 → 不知道自己该干嘛、能碰哪些工具,乱来。
四件配齐,才是一位靠谱助理。
· 没记事本 → 每圈都"失忆",第 3 步忘了第 1 步查到啥,原地打转(Day 36 解决)。
· 没岗位说明 → 不知道自己该干嘛、能碰哪些工具,乱来。
四件配齐,才是一位靠谱助理。
L05
workflow vs agent:剧本 vs 临场发挥
🤔 痛点Day 32 那种"先查库、再判断、可能发邮件"的多步流程,和"Agent"是一回事吗?界线在哪?
💡 本质看"下一步谁定":
• Workflow(工作流)=你把步骤和分支写死在代码里,模型只在固定卡点帮忙(如判断、生成文字)。像照剧本演出,可控、可预测。
• Agent=下一步由模型临场决定,路径不固定。像即兴发挥,灵活、能应对没预设过的情况,但也更难控。
两者没有高下,是光谱:能写死的尽量写死(稳),真正需要灵活判断处才交给 Agent 自主。
• Workflow(工作流)=你把步骤和分支写死在代码里,模型只在固定卡点帮忙(如判断、生成文字)。像照剧本演出,可控、可预测。
• Agent=下一步由模型临场决定,路径不固定。像即兴发挥,灵活、能应对没预设过的情况,但也更难控。
两者没有高下,是光谱:能写死的尽量写死(稳),真正需要灵活判断处才交给 Agent 自主。
👶 小白:那是不是越"Agent"越高级,我该всё都做成 Agent?
👨🏫 老师:恰恰相反!成熟工程师的信条是"能用 workflow 别用 agent,能少自主别多自主"。自主度越高,越难预测、越难测试、越容易翻车、越烧钱。真实产品大多是"骨架用 workflow 固定,少数关键环节放 Agent 自主"的混合体。面试时你敢说这句"克制使用自主性",反而显得懂行——这也是后面阶段 7 讲编排框架、阶段 9 讲评测反复强调的。
L06
真实主循环一瞥:去掉花哨就这几行
🤔 痛点工业级 Agent(像 Claude Code)看着很复杂,它的核心是不是也有一堆黑魔法?
💡 本质剥掉工具管理、权限、UI 这些外壳,最核心的主循环朴素得惊人——就是 Day 32 那个循环。看懂下面这十几行,你就看懂了绝大多数 Agent 的"心脏"(Day 38 会亲手把它写全、跑通)。
# Agent 主循环的"去花哨版"——真实框架也是在这上面加料
def run_agent(user_task, tools, system_prompt, max_steps=10):
# 对话历史 = 岗位说明(系统提示) + 用户任务
messages = [{"role": "system", "content": system_prompt},
{"role": "user", "content": user_task}]
for step in range(max_steps): # ← 循环 = Agent 的命脉,带硬上限(Day32)
reply = llm(messages, tools) # 【想】把历史+工具菜单交给大脑,让它决定
if reply.wants_tool: # 【动手】大脑说要调工具
result = run_tool(reply.tool, reply.args) # 真正执行
messages.append(reply) # 把"我要调xx"记进历史
messages.append({"role": "tool", # 【看】把工具结果回灌历史(Day32 核心)
"content": result})
# 不 return,继续下一圈 —— 让大脑看着新结果"再想"
else:
return reply.text # 大脑不再要工具 = 任务完成,交付答案
return "已达步数上限,返回目前的最好结果" # 兜底(Day32)
对照四大零件看:system_prompt=岗位说明,tools=手脚,messages=记事本(短期记忆),llm(...)=大脑,for 循环=主循环。Claude Code 的真实实现在这之上加了流式输出、权限确认、子任务、上下文压缩等,但骨架就是这个。
L07
今日小结 + 动手 10 分钟
🧠 今天你应该能回答
- 用一句话定义 Agent(大脑 + 手脚 + 循环)。它和"一问一答"的根本区别是什么?
- 主循环"想→动手→看→再想"每一拍在做什么?什么时候停?
- Agent 四大零件是什么?各缺一样会怎样?
- workflow 和 agent 的界线在哪(下一步谁定)?为什么要"克制使用自主性"?
- 为什么说"你 Day 32 写的带上限的循环 + 工具"已经是个 Agent 了?
✋ 动手 10 分钟:给三个需求判"聊天 / workflow / agent"
不写代码,练"分辨力"——这正是面试爱考的判断题。把下面每条归类,并说出理由(下一步谁定?要不要动手?要不要看结果再改?):
# 判断题(自己先答,再看参考)
# A. "帮我把这段中文翻译成英文" → ?
# B. "每天9点抓固定3个网页汇总成日报" → ?
# C. "帮我排查为什么服务器变慢并修好" → ?
#
# 参考答案:
# A = 一问一答(一步文字,不用动手/循环)
# B = workflow(步骤固定:抓A→抓B→抓C→汇总,写死即可,最稳)
# C = agent(下一步取决于查到什么,要动手、要看结果反复调整)
再挑一个你工作/生活里真实的重复任务,套今天的框架问自己:它更适合做成 workflow 还是 agent?要配齐哪四大零件?写三行笔记。这种"拿概念套现实"的练习,比背定义有用十倍。
明日预告 · Day 34:今天说主循环里每圈先"想"。明天把这个"想"拆开看它最经典的套路——ReAct(Reason + Act):让 Agent 把"思考(Thought)→行动(Action)→观察(Observation)"明明白白交替写出来。你会看到一条真实的 Agent 轨迹长什么样,也会明白"让它先想再做"为什么能大幅提升可靠性。