读《Hello-Agents》:从零搭智能体,我提炼的六条工程判断
读完 Datawhale《Hello-Agents》,我把「从零搭智能体」这件事,提炼成了六条工程判断。它不是又一篇 ReAct 科普——而是把「智能体到底由哪几块拼成、每块该怎么取舍」讲透了。
下面是我读完后留下的判断,不是章节复述。每条都尽量回答一个问题:真要做一个能跑、能长期跑的 Agent,这一块该怎么选。
一、四种基本范式,到底什么时候用哪个
入门最容易卡在「范式选择」。书里讲了三种经典范式,我把选择标准压成一张表:
ReAct(思考-行动-观察):想一步、调一次工具、看结果、再想,直到给出答案。它的精髓是强制结构化输出——让模型把「我要搜什么」写成固定格式,代码才能精准解析意图。适合环境不确定、需要靠工具结果边走边修的活。
Plan-and-Solve(先规划后执行):先把任务拆成完整的步骤清单,再一步步照做。和 ReAct 的根本区别是:ReAct 是侦探,走一步看一步;Plan-and-Solve 是建筑师,先画完整图纸再施工。适合结构清晰、能预先拆解的任务。
Reflection(反思):执行 → 自我批判 → 改写,循环。它专治「能用但不够好」。代价是每轮要多花两次以上的模型调用,所以只在「质量远比速度重要」时才开。
一句判断:环境不确定就用 ReAct,结构已知就用 Plan-and-Solve,质量至上且不赶时间就用 Reflection。而且它们可以混着用——先规划出策略,每一步用 ReAct 执行,最后用 Reflection 收尾优化。
二、自建框架的核心,是「一切皆工具」
书里带着从零写了一个极简框架,最值得抄的不是代码,是它的一条设计哲学:Everything is a tool。
记忆、检索、外部协议,全都抽象成「工具」注册进去。这样核心的智能体逻辑就只剩一句话:观察输入 → 挑工具 → 执行 → 重复。新能力靠「注册一个工具」加进来,而不是重构架构。
配套的还有统一的 Agent 基类、四种角色的消息体、能自动探测服务商的模型客户端、从环境变量读配置。这些都不花哨,但它们让框架「加东西不动核心」。
还有一条容易被忽略的告诫:工具不是越多越好。单一职责、描述无歧义的「最小可用工具集」,往往比一大堆功能重叠的工具更稳。原话很扎心——「如果人类工程师都分不清该用哪个工具,别指望模型能分清」。
三、记忆不是「存下来」就完事,它有完整生命周期
很多人以为给 Agent 加记忆,就是把对话塞进数据库。书里把记忆拆成了四层:工作记忆、情景记忆(带时间的具体事件)、语义记忆(抽象知识)、感知记忆(多模态)。
更关键的是记忆的完整生命周期,缺一块都不行:
- 写入:存的时候自动打上时间戳和重要性分数(0 到 1)。
- 巩固:重要的短期记忆,达到阈值就升级成长期记忆。
- 遗忘:按重要性、时间、容量三种策略主动删除。记忆会「忘」,和会「记」一样重要。
- 检索:不是单纯查相似度,而是混合打分。
检索的打分思路很值得借鉴:把语义相似度、时间新近度、重要性三者加权组合。时间用指数衰减——越久远的记忆,权重掉得越快。这样检索出来的,才是「既相关又新鲜又重要」的内容,而不是一堆陈年噪音。
至于 RAG,两个进阶检索技巧值得记:一是让模型把同一个问题改写成多个等价问法并行查(提升召回),二是让模型先「编」一段假想的答案,再拿这段去检索——用来跨越「问题措辞」和「文档措辞」之间的语义鸿沟。
四、上下文工程,才是长期 Agent 的真功夫
如果只能读一章,我选这一章。它讲的是从「prompt engineering」到「context engineering」的升级——前者关心怎么写好一句提示词,后者关心在每一次推理时,维护一个最优的信息集。
核心反直觉的一点叫 Context Rot(上下文腐烂):上下文里 token 越多,模型从中精准回忆信息的能力反而下降。窗口大不等于能力强。所以要把 token 当成稀缺的注意力预算,而不是无限的容量。配套现象是「中间信息易丢失」——高价值的内容要放在上下文的首尾,别埋在中间。
那长任务怎么办?书里给了几招特别实用的:
- 压缩:接近窗口上限时,做一次高保真摘要,然后开个新窗口,只带着摘要和最近的产物继续。
- 结构化笔记:把关键信息(待办、关键决策)写到上下文之外的持久存储里,要用的时候再取回来。
- 子智能体隔离:主智能体负责高层规划,把具体的探索丢给子智能体在干净的上下文里做,子智能体只回传一份高度浓缩的摘要。
- 即时加载(JIT):不预先把所有数据塞进去,只保留轻量引用(路径、查询、链接),运行时用工具动态拉取。
这一章的价值在于:它把「Agent 为什么跑着跑着就变笨、变贵、跑偏」讲清楚了,并且给出的解法不是「等更大的窗口」,而是「主动管理信息的进出」。子智能体隔离 + 结构化笔记 + 即时加载,这套组合是长期 Agent 的标配。
五、通信协议:MCP、A2A、ANP,各管一层
当 Agent 要和外界、和其他 Agent 打交道,就需要协议。书里讲的三个,刚好是从小到大的三层:
- MCP:解决「Agent 怎么用外部工具」。三层架构(宿主 / 客户端 / 服务端),提供工具、资源、提示模板三种能力。这是给单个 Agent 扩能力用的。
- A2A:解决「Agent 之间怎么对话」。把协作抽象成任务(Task)和产物(Artifact),支持发现、协商、委派的完整任务状态机。适合一个小团队的多个 Agent 协同。
- ANP:解决「成百上千个 Agent 怎么组网」。服务注册、发现、去中心化身份。这是生态级的事。
选型很简单:要接外部服务用 MCP,要几个 Agent 直接协作用 A2A,要做开放的大规模 Agent 网络才上 ANP。绝大多数项目,MCP 加一点轻量的任务状态通道就够了。
六、没有评估集的 Agent,是在蒙
最后一块最容易被跳过,但它决定了你的 Agent 能不能「持续变好」。书里把评估拆成五个维度:工具调用准确率、通用问题解决、回答质量、效率(时延和 token)、鲁棒性(出错后能不能恢复)。
方法上,有几个判断值得记:
- 过程评估和结果评估要分开。只看「最后答得对不对」(outcome)不够,还要看「中间的决策路径对不对」(trajectory)。
- 建一个 golden set(黄金测试集),改 prompt 前先跑一遍。命中率不掉,才允许上线。这是防止「越改越蠢」的唯一办法。
- 评估要渐进:先用 5 个样本验证管线通不通,再用 50 个建立信心,最后才全量跑。别一上来就全量。
- LLM-as-judge(让模型当裁判打分)+ 人工抽检结合,比纯人工或纯自动都靠谱。
写在最后
读完《Hello-Agents》,我最大的收获不是学会了某个新范式,而是拿到了一套审视自己 Agent 的工程语言:
范式决定「怎么思考」,记忆决定「记住什么、忘掉什么」,上下文工程决定「每一步喂进去什么」,协议决定「怎么和外界协作」,评估决定「能不能持续变好」。
其中,上下文工程是分水岭。能不能把 token 当稀缺资源来经营,决定了一个 Agent 是「能跑个 demo」还是「能长期稳定地跑」。
这本书完全开源免费,仓库在 github.com/datawhalechina/hello-agents,想从零理解智能体的,值得读。