卖坚果的怪叔叔 卖坚果的怪叔叔
  • 首页
  • 生活
  • 技术
  • 记录
  • 工具箱
  • 关于我
首页 › 技术 › 什么是Agent?

什么是Agent?

坚果大叔
2026-08-15 23:49:12技术阅读 71

很多人第一次听到 Agent,会以为它是「更聪明的聊天机器人」。其实不是那么回事。Agent 是一套能自己定计划、调工具、看结果、再调整,直到把事干完的系统——它有关键的「行动」和「循环」,而不只是动嘴。

先说清楚它到底是什么

IBM、DeepMind、OpenAI 给 Agent 的共识定义是:一个能持续感知环境、自主推理、调用工具做事,并根据反馈不断调整,直到目标达成的系统。

光背定义没用,看它跟普通聊天机器人差在哪:

  • 你跟普通聊天机器人说「帮我订明天去北京的高铁」,它要么跟你聊两句,要么直接编一段列车时刻表——因为它没有手。
  • 你跟 Agent 说同样的话,它会真的去查 12306、比价、挑座位、下单(或者把订单交给你确认)。差别就在:它有「手」(工具)和「脑子里的循环」(想—做—看—再想)。

这里有个绕不开的词:ReAct,就是 Reason(想)+ Act(做)。现在主流 Agent 基本都按这个圈转:

什么是Agent?-卖坚果的怪叔叔

想 → 做 → 看结果 → 再想,没干完就回到「想」,一直转到目标达成,或者踩到停止条件(任务完成 / 步数到上限 / 遇到解决不了的错误)。

把它当成一个自动驾驶系统

写前端这么多年,我觉得 Agent 最像的是自动驾驶,而不是某个具体的人。

你调一个普通 LLM,就像调用一个纯函数:传进去 prompt,返回一段 text,调用结束,状态清空。Agent 更像一套自动驾驶:你只设终点(目标),它自己感知路况(环境信息)、决策(下一步往哪走)、执行(打方向盘 / 调接口)、再根据导航反馈修正路线。你不用每一步都喊「现在左转」,你只管说去哪,剩下的它自己跑完。

还是拿那个高铁的例子:普通模型给你一段文字就结束了;Agent 会自己拆出「查车次 → 比价 → 选座 → 下单 / 让你确认」这一串动作,中间某个车次没票了,它自己换方案继续,而不是卡住问你。

它到底帮我解决了哪些麻烦

Agent 适合「步骤多、要临场判断、还得拉外部数据」的活。说几个我实际用上的,都是以前得人肉盯的事:

1. 自动盯线上,省掉人工巡检

以前线上报错靠人刷监控面板,漏了就背锅。现在 Agent 定时拉报错日志、做归类、做限频,严重的直接建 Jira 单并 @ 对应人。人不用来回切好几个系统当传声筒。

2. 让模型知道「今天」发生了什么

大模型有知识截止日期,不懂今天股价、今天天气、今天你们仓库的最新提交。Agent 通过工具实时去拉,把这块短板补上。比如问「我们这个接口今天超时了多少次」,它能真去查监控再答。

3. 把一串互不相通的工具串成一条流水线

像「抓某个领域的最新文章 → 过滤 → 生成摘要 → 发邮件」,每一步都是不同系统。Agent 自己把它们连起来,中间不用人把 A 的输出复制粘贴进 B。

4. 接得住模糊需求

你不用把每一步写死。「帮我把这个落地页转化率低的问题查一下」,Agent 会先抓数据、再看热力图、再判断是文案问题还是加载问题,而不是等你给标准答案才动。

顺手厘清几个绕口的词

Agent 相关文章里老冒出来几个词,先认个脸,免得后面看懵:

  • Function Calling:模型把「要调哪个工具、参数是啥」以 JSON 形式吐出来,执行器去真调。它是 Agent 的工具接口,但不是 Agent 的全部。
  • ReAct:上面讲过了,就是想—做—看的循环框架。
  • RAG(检索增强生成):Agent 先从知识库 / 向量库检索相关文档,再让模型作答。企业私有问答常用。
  • MCP:上一篇讲 Skill 时提过,是 Agent 连外部工具的通用协议,相当于 USB-C。
  • 向量数据库:把文档、代码转成向量,方便做语义检索。常见的如 Pinecone、Milvus、Qdrant。
  • HITL(Human-in-the-loop):关键动作让人拍板。生产环境里尤其重要,比如你肯定不想让 Agent 自己转账或删库。

动手写一个能跑的 Agent

落到代码上。一个最小可用 Agent,抽象出来就是下面这个循环:

import openai

def run_agent(user_goal, tools, max_steps=10):
    messages = [{"role": "user", "content": user_goal}]
    for step in range(max_steps):
        # 1. 大模型决定:直接回答,还是调用工具
        response = openai.chat.completions.create(
            model="gpt-4o",
            messages=messages,
            tools=tools,
        )
        msg = response.choices[0].message

        # 2. 如果直接回答,任务结束
        if not msg.tool_calls:
            return msg.content

        # 3. 执行工具,并把结果送回上下文
        for call in msg.tool_calls:
            result = execute_tool(call.function.name,
                                  json.loads(call.function.arguments))
            messages.append({
                "role": "tool",
                "tool_call_id": call.id,
                "content": json.dumps(result),
            })

        # 4. 继续下一轮思考

这个循环就是 Agent 的骨架。工程里真要用起来,还得补几块:

先把目标钉死

别给「把代码变好」这种虚词。改成「检查这个 React 组件有没有多余的 re-render,并给出修改方案」。目标越具体,Agent 越不容易跑偏。

挑个会思考的大脑

负责规划和推理的模型(GPT-4o、Claude Sonnet、DeepSeek-V3 这类)更适合当 Agent 的脑子。便宜的小模型适合做后面那些确定性处理,比如格式化、校验。

给它一点记忆

  • 短期记忆:当前这轮对话的上下文;
  • 长期记忆:用户偏好、项目结构、历史决策,丢进向量库或文件里;
  • 任务记忆:当前执行到哪一步了,防止走着走着迷路。

把工具说明书写清楚

工具描述要写得像给同事看的 API 文档:名字、干啥的、参数、返回值、会怎么报错。Agent 全靠这些描述决定要不要调、怎么调。

让它先列个计划再干

简单任务可以「一步一想一调」。复杂任务建议先让模型输出一份计划清单,再按计划执行,中途失败了再重排,比走到哪算哪稳得多。

最后套上安全带

  • 敏感操作必须走 HITL 确认;
  • 单步和总步数都设上限,防死循环;
  • 工具调用失败要有重试和兜底;
  • 全程留日志,方便查问题。

动手案例:搭一个「每日热点日报」Agent

前面讲的都是原理,这里我拿一件自己真的会想偷懒的事,把它完整跑一遍:每天帮我从各大平台抓热点,挑出真正值得看的,再用人话解读一遍,最后打包成一份日报发到我邮箱。

这活纯靠人,每天手动刷微博、知乎、新闻 App 再整理,半小时打底,还容易漏。但它又不是「一次性任务」——有明确目标、要调好几个外部源、中间还得判断「这条值不值得收」,正好是 Agent 的菜。

它到底怎么转起来

![每日热点日报 Agent 的工作流]](https://blogimg.lieme.cn/2026/08/2026081515470799.png)
拆开看是这么一条流程:

  • ① 抓取:定时去拉多个源——微博热搜、知乎热榜、几个新闻站点的 RSS、GitHub Trending。每个源一个工具函数,统一返回「标题 / 链接 / 热度 / 来源」。
  • ② 聚合去重:不同平台经常撞同一条新闻。按标题相似度加语义向量聚类,把重复的并成一条,顺手标个「3 个平台都在聊」。
  • ③ AI 解读:对留下来的每条热点,调模型产出三样东西——一句话说清发生了什么、为什么重要、跟咱们行业有啥关系。这一步,就是 Agent 比「纯爬虫脚本」多出来的那点脑子。
  • ④ 生成日报:把解读按板块(科技 / 财经 / 社会 / 开发圈)排好,拼成一份 Markdown,带上原文链接。
  • ⑤ 推送:发邮件、推飞书、或者存成公众号草稿,看你喜欢。

整个流程每天定时跑一轮,所以流程图右边画了个回头箭头——它不是跑一次就完,而是「日更」的循环。

工具清单(给 Agent 的「手」)

tools = [
    fetch_weibo_hot(),    # 拉微博热搜
    fetch_zhihu_hot(),    # 拉知乎热榜
    fetch_news_rss(),     # 拉新闻 RSS
    dedup_and_cluster(),  # 去重 + 语义聚类
    llm_summarize(),      # AI 解读单条热点
    render_digest(),      # 拼成 Markdown 日报
    send_email(),         # 发到邮箱
]

每个工具都要写清「干啥、入参、返回啥、失败了咋办」——前面说的「把工具说明书写清楚」就是在这儿用的。模型看不到你的代码,它只靠这些描述决定先调哪个。

核心循环:跟前面那套骨架一模一样

def run_daily_digest(tools, max_steps=20):
    goal = "产出今日热点日报并发送到邮箱"
    messages = [
        {"role": "system", "content": SYSTEM_PROMPT},
        {"role": "user",   "content": goal},
    ]
    for step in range(max_steps):
        resp = llm(messages, tools=tools)   # 思考
        if not resp.tool_calls:             # 没工具要调 = 干完了
            return resp.content
        for call in resp.tool_calls:        # 行动
            result = execute(call)          # 调工具
            messages.append(tool_result(call, result))  # 观察 → 再思考

你会发现,这就是前面那个最小骨架,只是 tools 换成了日报专用的几个函数。Agent 抽象出来就这么点东西,难的从来不在循环,在「工具写得稳不稳、护栏全不全」。

对照前面那几条「安全准则」

  • 目标钉死:不是「看看今天有啥新闻」,而是「抓 4 个源、去重后挑前 15 条、每条配一句话解读、发邮件」。越具体,越不容易跑偏。
  • 给它记忆:昨天发过的热点今天不重复推(短期去重);你常瞄「开发圈」板块就多留几条(长期偏好)。
  • 套安全带:抓取失败有重试,单个源挂了不影响其它源;日报生成后先存草稿人工过目再群发,别让 Agent 直接对全员推送(HITL)。

跑通这一版,你基本就把「Agent = 会自己定计划 + 调工具 + 看结果再调整」这句话,从概念变成了每天真给你发邮件的东西。

最后说点实在的

Agent 没那么玄。它就是把「模型会想」+「工程上管状态」+「能调外部工具」这三件事拧成一圈循环。

站在前端角度,你可以把它当成一套更猛的异步工作流:以前我们用 Promise 和状态机管用户操作,现在用 Agent 管 AI 的自主执行。

别一上来就想着造个全能管家。先用 LangGraph、CrewAI、Anthropic Agent SDK 或 OpenAI Assistants 跑通一个具体例子——比如「追踪你关注领域的最新动态,每周自动出一份汇总」。跑通了,再慢慢加记忆、加工具、加护栏。

下一篇聊聊一个和 Agent 强相关的新岗位:FDE。

赞赏 赞(0)
什么是 Skill?
上一篇
在小程序中查看

这是个😊,挣点服务器费用😜

再想想
暂无评论
热门文章
那些简单实用让你眼前一亮的鼠标滑过样式!
清明假期~
隔离第12天。
ES6入门之字符串的扩展
生活中的突发事件
Python定时发送信息到微信
专题标签
agent (1) CSS (15) dom (1) Es6入门系列 (14) Git (3) html (1) iview (1) JavaScript (9) js (4) Lif (1) Node (4) pyecharts (1) Python (10) ref (1) scriptable (1) Skill (1) vsCode (1) vue (4) wordpress (2) 三月 (1) 上海 (1) 假期 (1) 其他分享 (3) 前端两三问 (15) 古镇 (1) 外滩 (1) 对象 (1) 小程序 (5) 年度总结 (6) 年终总结 (1) 微信机器人 (4) 打字机 (1) 技术 (1) 日常问题 (8) 日常问题记录 (1) 春天 (2) 服务器 (2) 海族馆 (1) 生活 (8) 网上国网 (1) 记录 (3) 通勤 (1) 重学JavaScript (11) 面试题 (10) 🌸 (1)
什么是 Skill?
2026-08-12 21:32:42
204 1 0
失业在家,我给小朋友做了一个练字小程序!
2026-08-07 16:21:52
419 8 1
上线8年,15万用户的小程序,一共赚了多少钱?
2026-05-30 18:01:24
4,563 4 0
WordPress评论留言通知推送插件!
2025-12-13 17:22:36
3,668 3
  • 0
  • 0
博主

一位佛系的前端开发者,略通摄影,乐于尝试新事物,热衷于美食。

友链
故事胶片
公众号
坚果大叔 执行上下文 卖坚果的怪叔叔 Dacking
Copyright © 2017-2026 卖坚果的怪叔叔

开往-友链接力

萌ICP备20230818号

苏ICP备18048410号-3
  • 首页
  • 生活
  • 技术
  • 记录
  • 工具箱
  • 关于我
# CSS # # JavaScript # # vue # # 微信 # # 生活 #
坚果大叔
345
文章
170
评论
430
喜欢