Skip to content

第 1 章:Agent 到底是什么,不是什么

本章目标:先清理概念污染,建立后续全书都要使用的最小判断标准。
本章对应总纲:docs/ebook-outline.md 中“第 1 章正文写作提纲(2026-03-31 归档)”。


1.1 为什么“Agent”这个词被用滥了

这几年,“Agent”几乎成了 AI 圈最廉价的标签。只要一个系统接了大模型、能调用几个工具、再加一点自动执行逻辑,很多人就会立刻把它叫成 Agent。这个问题不是术语洁癖,而是工程判断会因此失真。

如果你连对象是什么都没定义清楚,后面谈架构、谈边界、谈能力,都会飘。把一个问答系统误当成 Agent,你会高估它的自主性;把一个固定工作流误当成 Agent,你会低估任务动态决策的重要性;把一个真正的 Agent 仅仅当成“更强的聊天机器人”,你就会错过它最关键的系统设计问题:状态、反馈、边界和执行闭环。

所以这一章的任务,不是给 Agent 贴金,也不是去唱反调,而是做一件更朴素的事:把概念边界拉清楚。只有这样,后面每一章讨论的东西才不会混成一锅粥。

常见的误称大概有三类:

  1. 把带工具调用的问答系统叫做 Agent
    这类系统能查资料、能执行几个动作,但本质上还是“问一次,答一次”,缺乏持续推进目标的能力。
  2. 把固定流程自动化叫做 Agent
    例如把一串预先写死的步骤包装起来,前面加个自然语言入口,就自称是智能体。其实那更像 workflow,不是 Agent。
  3. 把任何接了大模型的产品都叫 Agent
    这就更懒了。模型只是部件,不是系统定义。

真正该问的问题只有一个:

这个系统是不是在围绕一个目标,持续感知环境、做决策、采取行动、接收反馈,并根据反馈继续推进?

如果不是,那大概率还谈不上 Agent。


1.2 一个可工作的 Agent 定义应该包含什么

工程上没必要追求哲学上最完美的定义。我们只需要一个足够清楚、能指导系统设计、也能用来判断真假的定义。

本书采用一个非常务实的定义:

Agent 是一个围绕目标运行的系统。它能够根据当前环境与已有状态做决策,必要时调用外部能力采取行动,并根据行动结果继续调整后续行为,直到任务完成、失败或被中止。

这个定义里有五个关键点。

1.2.1 目标

Agent 不是为了“持续输出文本”而存在,而是为了推进某个目标。目标可以很小,比如“提交一个 commit”;也可以很大,比如“完成一次功能开发并通过测试”。

没有目标,系统就只是对话;有目标,系统才开始出现“下一步该做什么”的问题。

1.2.2 环境

Agent 不是在真空里工作。它总是在某个环境中运行:文件系统、代码仓库、命令行、浏览器、Issue/PR、外部 API、甚至人的反馈,都是环境的一部分。

环境决定了它能看见什么,也决定了它能影响什么。

1.2.3 动作

Agent 不只是“回答”,它还会采取动作。动作可能是:

  • 读取文件
  • 搜索代码
  • 执行命令
  • 发起网络请求
  • 调用其他 Agent
  • 请求人类确认

如果一个系统只能生成建议而不能真正推动任务前进,它的行动能力就仍然是弱的。

1.2.4 反馈

动作之后必须有反馈。否则系统不知道自己刚才做得对不对,也不知道是否要继续、修正还是停止。

反馈可能来自:

  • 工具执行结果
  • 编译/测试报错
  • 用户回复
  • 外部系统状态变化

没有反馈,所谓 Agent 只是在盲跑。

1.2.5 循环

最关键的是循环。Agent 不是一次推理,而是一轮又一轮的:

理解当前状态 -> 判断下一步 -> 采取动作 -> 读取反馈 -> 再判断

这就是它和普通问答系统最本质的区别。


1.3 Agent、Chatbot、Copilot、Workflow 的边界

说概念最好的办法,不是单独定义,而是拿相邻概念来切边界。

类型核心目标是否能行动是否围绕目标持续推进主要特点
Chatbot回答问题通常不能或很弱通常不持续以对话为中心
Copilot辅助人完成局部任务有限以建议和补全为中心
Workflow执行预定义流程能,但通常不动态以固定步骤为中心
Agent围绕目标持续推进任务能,而且会根据反馈调整以闭环决策为中心

1.3.1 Chatbot

Chatbot 的本质是对话系统。它擅长回答、解释、总结、改写,但通常不真正承担任务推进责任。你问,它答;你再问,它再答。它可以很聪明,但依然只是问答型系统。

1.3.2 Copilot

Copilot 比 Chatbot 更进一步。它通常嵌在某个工作环境里,比如编辑器,能根据上下文给你建议、补代码、补命令、补下一步操作。但它的重心依然是辅助人,而不是替人完整承担任务。

1.3.3 Workflow

Workflow 解决的是自动化问题。它把一串步骤预先定义好,然后按顺序执行。它很有用,但它并不天然具备动态决策能力。只要路径一变,它就容易卡住,或者需要大量额外分支逻辑。

1.3.4 Agent

Agent 的不同之处在于:它不只是按脚本跑,也不只是给建议,而是能在执行过程中根据环境和反馈不断调整路径。它是围绕目标推进,而不是围绕固定步骤执行。

这并不意味着 Agent 一定比 Workflow 更高级。很多场景下,Workflow 更可靠、更便宜、更容易维护。真正的判断标准不是“哪个听起来更高级”,而是:

  • 任务是否需要动态决策?
  • 环境是否经常变化?
  • 中途是否需要根据反馈改变路径?

如果答案都是“否”,那 Agent 可能根本不是必要方案。


1.4 Agent 的真正分水岭:行动闭环

现在可以把最重要的一句话说出来了:

Agent 的本质,不是更会说,而是能形成行动闭环。

这个闭环至少包含四步:

  1. 感知:读取当前状态与环境
  2. 决策:判断下一步最合适的动作
  3. 行动:调用能力改变外部世界或推进任务
  4. 反馈:读取行动结果,并把结果变成下一轮决策输入

这四步连起来,系统才真正具备“推进任务”的能力。

为了看得更直白,我们拿一个简单例子对比。

普通问答系统

用户说:

请帮我修复这个 TypeScript 报错。

普通问答系统可能会回答:

  • 这类错误通常是因为类型不匹配
  • 你可以检查一下参数类型
  • 试着加一个类型断言

这不是没用,但它仍然只是建议。

Agent 系统

同样一句话,一个 Agent 会做的事情可能是:

  • 先读取报错位置
  • 跳转类型定义
  • 查看相关调用链
  • 修改代码
  • 运行类型检查
  • 如果还有错,再继续修
  • 没错了才停

这就是闭环。它不是“更长的回答”,而是“更完整的系统行为”。

这也是为什么很多人会误判系统能力:他们看见模型输出很像“会做事”,就以为它已经是 Agent。其实不对。真正的分水岭不在文风,不在提示词,不在能不能说出计划,而在于它有没有把行动和反馈纳入同一个持续运行的结构里


1.5 用 Claude Code 看一个现实中的 Agent 样本

如果只讲抽象,很容易漂。这里用当前仓库里一个现实例子,把前面的定义落到地上。

plugins/README.md:6 先把 Claude Code 插件系统说得很直接:插件可以通过 custom commands、specialized agents、hooks、MCP servers 扩展系统能力。这个表述本身就在说明一件事:这里讨论的不是“一个更会聊天的模型”,而是一个由入口、执行角色、生命周期挂点和外部能力接口共同组成的系统

再往下看 plugins/README.md:48 的标准插件结构:

  • commands/
  • agents/
  • skills/
  • hooks/
  • .mcp.json

这套拆法很关键。它说明当前项目在设计上已经默认接受一个事实:Agent 不是单点能力,而是要靠多层结构把目标、动作、约束和外部能力焊起来。 如果系统本质只是问答器,根本没必要长出这么清楚的分层。

再看 plugins/README.md:16plugins/README.md:19,仓库里的 code-reviewfeature-devpr-review-toolkit 都不是“回答一下怎么做”,而是把审查、分析、架构设计、质量检查拆成多个执行角色。这进一步说明现实里的 Agent 关注的不是文本生成本身,而是任务如何被持续推进、分解和收敛

首页 index.md:23 也把这个项目的学习价值说得很明:每一章都对应真实代码,每一个设计决策都能在源码里找到答案。这里真正值得学的不是“agentic”这个词,而是背后的几条设计思路:

  • 能持续推进任务的系统,才值得叫 Agent,不是接了模型就算
  • 动作能力要显式挂在结构里,不要把“会做事”藏在宣传语里
  • 入口、执行、约束、扩展要分层,否则系统很快就会概念混乱
  • Agent 必然是混合系统,会和命令、Hook、工作流、权限控制缠在一起,不存在真空里的“纯 Agent 产品”

所以拿 Claude Code 当样本,最大的收获不是学到一个定义句,而是看清:一个现实 Agent 系统从第一天起就不是“模型 + 提示词”,而是“目标推进 + 动作接口 + 反馈回路 + 边界治理”这整套东西一起成立。

再往后看你还会发现:当一个系统把入口、执行角色、生命周期挂点和外部能力接口拆得越来越清楚时,它讨论的就不再只是“是不是 Agent”,而会自然走向平台化与扩展面设计。这也是为什么后面几章会继续把 Claude Code 当成结构样本,而不只是概念例子。


1.6 本章小结

这一章做的事情很简单,但非常关键:先把“Agent”这个词从噪音里救出来。

你现在应该记住四件事:

  1. Agent 不是一个营销标签,而是一类围绕目标运行的系统。
  2. 它和 Chatbot、Copilot、Workflow 有边界重叠,但不相同。
  3. 真正的分水岭不是更会说,而是有没有行动闭环。
  4. 理解 Agent,必须从系统视角看,而不是只盯模型输出。

下一章我们不再停留在概念层,而是把 Agent 拆成最小组成单元:模型、工具、记忆、规划、执行循环。到那时,你会更清楚地看到,为什么“只有一个强模型”永远不等于“已经有了一个完整 Agent 系统”。