第 1 章 · Agent 的本质
从一个跨境卖家的日常说起
一个亚马逊卖家每天早上要做一件事:打开后台,看看昨天哪些产品的竞品改了价、哪些 Listing 的评分掉了、有没有需要回复的差评。这件事不难,但琐碎、重复、耗时。
他试过让 ChatGPT 帮忙。结果是:ChatGPT 能告诉他“你应该去后台查看竞品价格”,却查不了;能教他“差评应该礼貌回复并提供解决方案”,却回不了。它什么都懂,就是什么都做不了。
这位卖家真正需要的,是一个能替他把这套流程跑完的东西:自己登后台、自己抓数据、自己起草回复、把拿不准的差评标出来等他定夺。
能做到这件事的,才叫 Agent。这一章我们就把“能做事”和“只会说”之间的界线讲清楚。
会说话,和会做事
普通大模型本质是一个“文本函数”:给它一段文字,它还你一段文字。它的世界里只有文字,没有手、没有眼睛、也没有“做完一件事再看结果”的能力。
Agent 补上的,正是这三样:
- 它有眼睛和手——能查数据、能调接口、能执行操作,接触到文字之外的真实世界。
- 它有记性——记得住这次任务的目标,也记得住刚才每一步发生了什么。
- 它会自己往下走——做完一步,看一眼结果,再决定下一步,不用你一句句喂指令。
把这几样合起来,就得到一个最朴素但准确的说法:
一个 Agent,是让语言模型在一个“做—看—再做”的循环里,借助工具去达成目标的系统。用业界常见的公式说,就是 Agent = LLM + 工具(Tools)+ 循环(Loop)。这里最要紧的不是“语言模型”,而是那个循环——它把“只能想一次”变成了“能想很多次、每次都基于新看到的事实”。
确定性软件 vs Agent
值得停下来对比一下 Agent 和我们熟悉的传统软件,因为它们的思维方式完全不同。
传统软件是你把规则写死的:库存低于 10 就补货,这条规则今天这么跑、明天还这么跑,一万次都一样。它的好处是可预测,坏处是死板——没预设到的情况它就不会处理。
Agent 反过来。你给它的是目标(“盯住库存,快没货了就想办法补上”),怎么达成由它临场判断。它这次可能先查供应商,下次可能先看历史销量。好处是灵活,能应对没预设过的情况;代价是结果不再完全可预测——所以我们后面要花大量篇幅讲怎么给它套上“缰绳”(预算、确认、隔离)。
传统软件: 固定输入 → 写死的规则 → 固定输出(每次都一样)
Agent: 一个目标 → 边想边做的循环 → 达成目标(路径可能每次不同)
从“你替它想好每一步”到“你只给目标、它自己想每一步”——这个转变,是理解本书后面所有内容的基础。
一个具体的例子:让 Agent 分析一个开源项目
抽象说完了,看具体的。给它一个任务:“帮我搞清楚 pi 这个开源项目的架构,写份说明。”
如果是聊天机器人,它只能凭训练时见过的(也许过时、也许根本没有的)印象编一段——内容很可能不准。
而一个 Agent 会真的动起来:
想:先得把项目弄到手,看看它的目录长什么样
做:git clone 这个仓库,然后 ls 看结构
看:拿到了——有 agent、ai、orchestrator 等几个包
想:光看目录名不够,读 README 搞清每个包干嘛的
做:读 README.md
看:agent 是运行时,ai 管多模型,orchestrator 管多智能体……
想:核心是那个运行循环,我得看源码
做:读 packages/agent 里的循环实现
看:(拿到真实代码)
想:材料齐了,可以动笔了
答:产出一份基于真实源码、而非凭空想象的架构说明
区别一目了然:它的每一句结论,背后都有一次真实的“去看了”。这就是“能把事做完”的分量——结论建立在行动和观察上,而不是记忆和猜测上。
自主程度:L0 到 L5
“Agent”是个很宽的词,实际能力天差地别。业界常借用一套类似自动驾驶的 L0–L5 分级来描述 Agent 的自主程度——级别越高,你要盯它的力度越小。它不是严格的学术标准,但作为选型时的共同语言很好用:
| 级别 | 自主程度 | 你给什么 | 它做什么 | 典型例子 |
|---|---|---|---|---|
| L0 | 无自主 | 每一步指令 | 执行单个动作 | 翻译按钮、计算器 |
| L1 | 辅助 | 一问 | 一答,不主动行动 | 普通聊天机器人 |
| L2 | 部分自主 | 一个明确请求 | 自己调用工具完成 | “查这三个竞品今天的价” |
| L3 | 有条件自主 | 一个目标 | 自己拆解、多步执行 | “分析竞品并给定价建议” |
| L4 | 高度自主 | 一个复杂目标 | 多 Agent 分工协作 | 调研+分析+写报告的团队 |
| L5 | 完全自主 | 一个方向 | 长期无人值守地运营、自我改进 | 目前尚无可靠落地 |
对照理解:L0–L1 还称不上真正的 Agent(没有自主循环);L5 目前更多是愿景,营销话术里说的“全自主”多半要打折扣。
本书主要讲的是 L2–L4——它们既是今天技术能可靠做到的,也是真正能创造商业价值的区间。盯着这三档去设计,比追求“完全自主”实在得多。
什么活该交给它,什么活不该
比技术更重要的,是别把 Agent 用错地方。判断标准其实很朴素——问自己三个问题:
- 目标清楚吗? 你能说明白“做成什么样算完”吗?“把这批订单导成对账表”清楚,“帮我把生意做大”不清楚。
- 能验证对错吗? 做完之后,你(或程序、或测试)能判断它做得对不对吗?写代码有测试兜底,所以适合;一段品牌文案好不好,没有客观标准,就难。
- 错了要紧吗? 万一它做错,后果可承受、可回滚吗?整理一份草稿错了无所谓;未经确认就删库、就转账,错了要命——这类必须设人工确认(第 8 章)。
三个都是“是”,放心交给它;只要沾上“不可逆的高风险”,就务必在关键动作前留一道人工闸门。
用 pi 来讲:一个能承载 Agent 的运行时
本书自始至终用一个真实、开源、能读源码的项目来讲——pi。它是一个用 TypeScript 写的 agent 运行时(harness),把“跑一个 Agent 需要的零件”拆成了几块:
| pi 的包 | 管什么 | 对应本书 |
|---|---|---|
pi-ai | 统一对接各家大模型 | 第 34 章 |
pi-agent-core | 运行循环、工具调用、状态 | 本章、第 3 章 |
pi-orchestrator | 多 Agent 编排(实验性) | 第 5 部分 |
pi-coding-agent | 面向编码的 Agent 命令行 | 第 32 章 |
pi-tui | 终端界面 | 接口层 |
为什么用它、而不是教你从零造一个?因为“运行循环、工具调用、上下文管理、多模型适配”这些是又难又琐碎的活,成熟的运行时已经替你做好了。你的价值不在重造这些轮子,而在于在它之上,接入你自己的业务、写你自己的规则——这是全书的主线,也是最后一章的落点。
这里要点明一件事:这个“运行时/harness”就是本书标题里的 Harness,也是全书的主角。 一个 Demo 级的 Agent,你在自己电脑上随手就能拼一个;但一个企业级的 Agent——要控成本、要留审计、要隔离风险、要崩溃能恢复、要多个用户互不干扰——靠的从来不是模型有多强,而是它底下这层 Harness 有多扎实。本书后半部分(第 7–9 部分)几乎都在讲这件事:如何把一个能跑的 Agent,借助 Harness 这层基础设施,推到“企业敢用”的标准。所以每次我们打开 pi 的某块源码,本质上都是在拆解“一个企业级 Harness 该长什么样”。
动手看看
读真实代码,比读十遍讲解都管用。花几分钟:
git clone https://github.com/earendil-works/pi
cd pi && cat README.md # 先看整体有哪几块
然后打开 packages/agent 里的运行循环源码,别纠结细节,只找那个反复执行的循环结构,感受一下“调用模型 → 执行工具 → 再调用模型”的节奏。下一章我们会把它拆开细讲。
实战中的几个提醒
- 别把插件式聊天机器人当 Agent。 给聊天机器人挂几个功能按钮,和 Agent 有本质区别——后者的核心是那个“自己决定下一步”的循环,前者只是被动响应。
- 它是放大器,不是替代品。 现阶段最务实的定位,是让它接管重复劳动、把人腾出来做判断,而不是指望它全权做主。
- 自主不是越多越好。 自主性和可控性是一对矛盾。越是高风险的场景,越该收紧它的自主权、加密人工确认,而不是放手。
- 模型强 ≠ Agent 好。 模型只是大脑。工具设计、上下文管理、护栏、场景选择,每一样没做好都会让一个“聪明大脑”办砸事。
对比:其他框架
同样是“模型 + 工具 + 循环”,各家给你的抽象层次不同:
| 框架 | 核心抽象 | 定位 |
|---|---|---|
| LangGraph | 把 Agent 画成状态图(节点是步骤、边是流转) | 控制流最显式,适合复杂、要精确把控的流程 |
| CrewAI | 团队 + 角色,像组建一支有分工的小队 | 多 Agent 协作上手最直观 |
| PydanticAI | 类型安全 + 结构化输出,像写普通 Python | 适合“输出必须规整可靠”的场景 |
| Agno | 功能齐全的应用框架,记忆/知识库/团队内置 | 适合快速搭一个能用的助手 |
| pi | 运行时视角,注册工具、写扩展,在其之上构建 | 控制粒度细、能读源码 |
它们没有高下之分,只有场景之别。抓住“模型负责想、工具负责做、循环把两者串起来”这个内核,你看任何一个框架都不会迷路。
小结
- 会说话的模型和会做事的 Agent,差在那个“做—看—再做”的循环——它让结论建立在真实行动上,而非记忆猜测。
- Agent 靠眼手(工具)、记性(上下文/记忆)、自主(循环) 三样来做事,生产上还要加护栏。
- 用 L0–L5 分级理解自主程度,本书聚焦 L2–L4(能独立完成请求、能自己拆解目标、能多 Agent 协作)这三档。
- 选对场景是关键,用三问判断:目标清楚吗、能验证吗、错了要紧吗;沾上不可逆高风险就设人工闸门。
- 别从零造运行时,在成熟运行时(如 pi)之上构建你的业务——这是全书的主线。
下一章,我们把这颗“循环”的心脏拆开,看它到底怎么一拍一拍地跳动——这就是 ReAct。