惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
D
DataBreaches.Net
D
Docker
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
罗磊的独立博客
Martin Fowler
Martin Fowler
U
Unit 42
Engineering at Meta
Engineering at Meta
IT之家
IT之家
Vercel News
Vercel News
B
Blog RSS Feed
人人都是产品经理
人人都是产品经理
博客园 - Franky
博客园 - 【当耐特】
Stack Overflow Blog
Stack Overflow Blog
G
Google Developers Blog
MongoDB | Blog
MongoDB | Blog

卖坚果的怪叔叔

从 6 月 12 号到今天已经失业 85 天了。 卖坚果的怪叔叔 什么是 Skill? 失业在家,我给小朋友做了一个练字小程序! 上海九院口腔下颌骨囊肿手术小记 上线8年,15万用户的小程序,一共赚了多少钱? 糟糕的三月 还未见面的小狗,去天堂了。 快过年了!你们放假通知下来了吗? 免费领取一年Gemini Pro使用权益!! 2025年,如梦一场! 西安! WordPress评论留言通知推送插件! 初冬!暖日!东太湖慢行! H5在safari上fixed不触底bug? 2025年国庆的一些记录! 秋末的晚上 我用Trae做了一个一键同步热点要闻到公众号的工具 使用uview-plus遇到的一些问题! Nuxt3中的水合是什么?以及使用中的一些总结! Element Plus Upload 添加支持拖拽排序~ 夏日的周末! 腾讯视频VIP会员免费领取!3-31天。 七月已经到中旬了呀 周末了,但也过得太快了吧。 吐血收集的1000+九号电动车提示音,免费领取! Nuxt3中piana持久化处理! 生活中的突发事件 小毛驴历险记2 小毛驴历险记 QQ,你有多久没有打开啦!
什么是Agent?
坚果大叔 2026-08-15 23:49:12技术阅读 81 · 2026-08-15 · via 卖坚果的怪叔叔

很多人第一次听到 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