跳到主内容
AI更新于 2026 年 9 月 24 日约 2 分钟

AI Agent 到底是什么?

从「会聊天的模型」到「会干活的系统」,我理解的 Agent 关键差异,以及几个实践里踩过的坑。

本文目录7 节

过去两年,我们和 AI 的交互方式基本是「你问我答」:把问题写清楚,模型给一段文字。它能帮你写邮件、改代码、解释概念,但主动权始终在你手上——你不动,它不动。

从去年开始,一个新词被反复提起:Agent。

Chatbot 和 Agent 的区别

如果只用一句话概括,我会说:

Chatbot 的目标是「回答得对」,Agent 的目标是「把事情做完」。

这里的差别不只是模型变聪明了,而是整个系统的形态变了。一个能称之为 Agent 的系统,通常至少具备三件事:

  1. 目标:给它一个任务,而不是一个问题。
  2. 工具:它能调用搜索、代码执行、文件读写、API 等外部能力。
  3. 循环:它能观察结果、判断是否达成目标,然后决定下一步。

第三点最容易被人忽略,但它其实是核心。没有循环,就只是「模型 + 插件」;有了循环,系统才开始有自主性。

一个最小可用的循环

抛开框架,Agent 的骨架其实非常朴素:

def run_agent(task: str, tools: list, max_steps: int = 10):
    """最小 Agent 循环:观察 → 决策 → 执行 → 再观察"""
    history = [{"role": "user", "content": task}]

    for step in range(max_steps):
        # 1. 让模型决定下一步做什么(可能直接给答案,也可能调用工具)
        action = llm(history, tools=tools)

        if action.type == "final":
            return action.content

        # 2. 执行工具,把结果写回上下文
        result = call_tool(action.name, action.arguments)
        history.append({"role": "assistant", "content": action})
        history.append({"role": "tool", "content": result})

    raise RuntimeError("达到最大步数仍未完成,需要人工介入")

真正的工程复杂度,全在这个循环的边界条件里:怎么限制步数、工具报错怎么办、上下文的记忆谁来管、什么时候判定「做完了」。

实践中的三个提醒

一、任务的可验证性决定了上限

Agent 最适合的场景,是结果可以被自动检查的任务。写代码能跑测试,字段抽取能比对答案,数据清洗能校验行数。反过来,让 Agent 做「帮我想个品牌名」这类主观判断,它只能给你一堆漂亮的废话——因为它无法判断自己做得对不对。

二、把不确定的部分关在笼子里

我倾向于这样设计:模型只负责决策,所有副作用(写数据库、发邮件、改文件)都走一层显式的工具接口,并且加白名单和确认环节。这样即使模型判断错了,损失也是可控的。

三、上下文不是越大越好

把所有历史、所有文档都塞进上下文,效果往往更差:无关信息会稀释注意力,成本还高。真正有效的是按需检索:先让模型知道自己有哪些工具和资料可以使用,需要时再取。

我会怎么用它

对我自己来说,Agent 的价值不在「自动帮我写完一篇文章」,而在于承担那些重复、可校验、有明确完成标准的杂活:整理笔记、生成摘要、把一堆杂乱文件归到该去的地方。

至于判断和表达,我还是想自己来。

相关阅读:[[我为什么开始建立自己的 AI 知识库]] 里记录了我是怎么把这套东西落到日常的。