Hello-Agents 720 页拆一条线:同一个循环,三次搬家

深度解读 Datawhale 开源书《Hello-Agents 从零开始构建智能体》(V1.0.3,720 页 16 章):ReAct 循环先活在提示词里(第四章三大范式),再固化成框架代码(第七章 HelloAgents 自研框架的"万物皆为工具"),最后被 GRPO 训进模型权重(第十一章,Qwen3-0.6B 在 GSM8K 上 5%→40-50%→60-70%)——评估(第十二章)则是跨载体的账本。附全书地图、GRPO/PPO 对照、记忆评分公式与已核实的论文清单。

一本 720 页的智能体教程,真正教的东西可以压缩成一句话:同一个”思考→行动→观察”循环,先写在提示词里,再固化成框架代码,最后训练进模型权重——能力在三种载体之间搬家,而评估是唯一能告诉你”能力现在住在哪”的账本。 这篇把 Datawhale 的《Hello-Agents 从零开始构建智能体》按这条线拆开。

0. 这本书是什么,我怎么读的

《Hello-Agents》是 Datawhale 社区的开源智能体教程,我读的版本是 V1.0.3(2026-07-17 构建,720 页,16 章,五个部分)——页数和章节结构是我用 pdfinfo 和目录逐条核对的;封面口径为 GitHub 67k stars(书中数字,未另行核实)。项目开篇给自己的定位很直接:市面上 Agent 构建分两派,一派是 Dify/Coze/n8n 这类”流程驱动、LLM 当后端”的软件工程派,另一派是 AI 原生派——这本书教后者。

全书地图(五部分的功能,我的概括):

部分章节在”搬家”主线上的位置
一、基础1-3 章:定义、历史、LLM 基础讲清循环的”宿主”——LLM 本身
二、构建4-7 章:三大范式 → 低代码 → 框架 → 自研框架载体一(提示词)→ 载体二(代码)
三、高级8-12 章:记忆/RAG、上下文、协议、Agentic-RL、评估数据面、互操作层、载体三(权重)、账本
四、案例13-15 章:旅行助手、DeepResearch、赛博小镇三种载体的组合应用
五、毕设16 章交作业

一个细节能看出这本书的教学策略:第一章不讲任何框架,直接用裸 API 写一个”天气→景点”的旅行助手,Thought→Action→Observation 手动循环 3 轮;第二章则回头写一个 1966 年风格的 ELIZA 规则聊天机器人,让你亲手撞上规则系统的组合爆炸。先让你造最小的轮子,再让你理解为什么旧轮子会翻车——这和常见的”第一页就 pip install langchain”的教程是反着来的。

下面按三次搬家的顺序走。

flowchart LR
    subgraph C1["载体一:提示词(第4章)"]
        A["ReAct / Plan-and-Solve / Reflection<br/>范式 = 提示词模板 + 解析器"]
    end
    subgraph C2["载体二:框架代码(第6-7章)"]
        B["HelloAgents 自研框架<br/>Agent 基类 + ToolRegistry<br/>『万物皆为工具』"]
    end
    subgraph C3["载体三:模型权重(第11章)"]
        C["SFT 立形 + GRPO 传神<br/>Qwen3-0.6B: 5%→40-50%→60-70%"]
    end
    A -->|"循环逻辑固化为代码"| B
    B -->|"轨迹变成训练数据"| C
    D["评估(第12章)<br/>BFCL / GAIA / LLM-as-a-Judge"] -.->|"账本:能力住在哪一层?"| A
    D -.-> B
    D -.-> C

1. 载体一:活在提示词里的循环(第四章)

第四章手写三个经典范式,全部不依赖框架。三者的形式化和失败模式,书里给得很清楚:

ReAct(Yao et al., arXiv:2210.03629):循环体是 (thought_t, a_t) = π(q, (a_1,o_1),...,(a_{t-1},o_{t-1})),动作格式约定为 ToolName[ToolInput],用正则从自由文本里抠出来。书中列的失败模式值得抄下来:对模型格式能力强依赖(格式崩则循环断)、多次调用的延迟成本、提示词脆弱、缺全局规划导致原地打转

Plan-and-Solve(Wang et al., arXiv:2305.04091):先由规划器 P = π_plan(q) 产出完整计划(书中强制输出 Python 列表格式),再逐步执行 s_i = π_solve(q, P, (s_1,...,s_{i-1}))。结构性强、可预测,代价是死抱初始计划。

Reflection(对应 Reflexion, Shinn et al., arXiv:2303.11366):执行→反思→优化三段循环,反思提示词要求模型扮演”极其严格的代码评审专家”。书中明说代价:模型调用成本翻倍、延迟显著上升,适合关键业务代码这类”对准确性的要求值得为之付费”的场景。

我认为这一章最有价值的不是三个模板本身,而是它强迫你亲手处理”输出解析、失败重试、防死循环”这些框架替你藏起来的脏活——这正是我在《什么才是好的 Harness》里说的”判断归模型,物理归代码”的物理部分。工具调用为什么发生,可以回看《LLM 为什么伸手拿工具》

2. 载体二:固化成代码(第六、七章)

2.1 四个框架,两种哲学

第六章对比 AutoGen、AgentScope、CAMEL、LangGraph,书中的对比可以压成一个轴:协作是”涌现”出来的,还是”显式编排”出来的

框架协作机制代价(书中口径)
AutoGen 0.7.4对话驱动,RoundRobinGroupChat 轮询 + 终止词对话本质不确定,“调试拿到的是一长串聊天记录而非堆栈”
CAMEL双角色 + 引导性提示(Inception Prompting)高度依赖提示质量,双智能体为主
AgentScope消息驱动(Msg + MsgHub + Pipeline),工程化优先异步范式学习成本,简单场景过度工程
LangGraphState + Nodes + 条件边的显式状态机,原生支持环前期样板代码多,缺少涌现动态

这个”涌现 vs 显式控制”的对立,我在《Agent 循环与图:两种控制流》里从控制流角度写过,书里的框架对比正好给那篇补了四个具体标本。

2.2 自研框架的一个激进决定:万物皆为工具

第七章从零写 HelloAgents 框架,四层结构(core/agents/tools/builtin)。最值得记的是它的核心简化:除 Agent 基类外,一切皆为工具——Memory、RAG、MCP 全部抽象成 Tool。Agent 基类只保留 run() 抽象方法加消息历史管理;工具统一 run(parameters) -> str + get_parameters(),注册进 ToolRegistry,由后者生成提示词描述或 OpenAI schema。

这个设计和第十章的协议观是自洽的:书中说 Function Calling 与 MCP 不是竞争关系——前者是模型能力(何时调、参数怎么生成),后者是工程基础设施(工具怎么连接),类比”学会打电话”与”全球统一的电话通信标准”。既然一切外设都是工具,那协议层要标准化的就只有工具的发现与传输,这条线在 MCP 的 Host-Client-Servers 架构里走到头。

2.3 数据面:给记忆装打分器

第八章的记忆系统按”工作/情景/语义/感知”四层拆分,每层配不同存储(内存 / SQLite+Qdrant / Neo4j+Qdrant / 模态分离 Qdrant)和不同检索评分。书中的工作记忆评分公式:

score = (向量相似度 × 0.7 + 关键词相似度 × 0.3) × 时间衰减 × (0.8 + 重要性 × 0.4)

四层的公式结构相同,只换权重和衰减项(情景记忆用 0.8/0.2 加 24 小时近因保护,语义记忆混入图相似度 0.3)。这些权重书中未给消融依据,我把它们读作”可调的起点”而不是结论。RAG 侧给了两个提升召回的技巧:多查询扩展(MQE,书中口径召回率提升 30%-50%,未独立核实)和 HyDE(“用假设答案找答案”)。向量库与记忆的基础,可回看《RAG、记忆与向量数据库》

第九章把上下文工程总结成 GSSC 流水线(Gather→Select→Structure→Compress),选择阶段就是”相关性 × 权重 + 新近性 × 权重”的贪心装包,直到 token 预算耗尽。这与我在《按场景选:提示工程还是上下文工程》里的框架互补——那篇讲何时需要上下文工程,这本书给了一个能跑的最小实现。

3. 载体三:训进权重(第十一章)

这是全书跨度最大的一章:同一个 GSM8K 数学任务(Cobbe et al., arXiv:2110.14168,7,473 训练 / 1,319 测试),把 Qwen3-0.6B 从裸模型一路训到 GRPO。书中的三级数字:

阶段GSM8K 准确率(书中口径)学到了什么
预训练裸模型~5%无结构化输出能力
SFT 之后40-50%格式与初步推理(“立形”)
GRPO 之后60-70%策略优化(“传神”)

数据构造的细节暴露了 SFT 与 RL 的本质分工:SFT 格式保留完整推理链作监督,RL 格式只留最终答案当 ground truth——奖励只看结果,推理路径逼模型自己找。这与我在《SFT 是解锁器,不是灌装机》里的判断一致。

GRPO(DeepSeekMath, Shao et al., arXiv:2402.03300)相对 PPO(Schulman et al., arXiv:1707.06347)的差异,书中表格的关键行:PPO 要四个模型(Policy/Reference/Value/Reward),GRPO 砍到两个——用组内相对奖励 r - r̄_group 替代价值函数估计的优势。这条线的原理展开在《LLM 为什么需要强化学习》《PPO 训练循环解剖》

训练用 TRL + LoRA(Hu et al., arXiv:2106.09685)。书中给的参数量对比我验算过:d=4096 的单个投影矩阵,全量微调 4096² = 16,777,216 个参数,LoRA r=8 时 2×4096×8 = 65,536 个,恰好 1/256(一行 Python 可复验)。LoRA 的秩怎么选,见《LoRA 秩的数学》

书中另一个值得抄的工程提醒(11.4.3 节):KL 散度失控导致的格式崩坏比准确率下降更危险——一个”准确率看着还行但输出畸形”的模型是完全不可用的,所以 kl_coef(书中建议 0.05-0.1)不是锦上添花的正则项,是保命阀。

4. 账本:评估告诉你能力住在哪(第十二章)

第十二章的框架:不同 benchmark 度量不同载体上的能力。

案例部分(13-15 章)可以一句话带过:旅行助手是”四个 SimpleAgent + 共享一个 MCP 工具实例”的多智能体分工;DeepResearch 复现是”TODO 规划器→逐任务搜索总结→报告生成”的顺序流水线;赛博小镇用”批量后台生成背景对话 + 玩家靠近才即时推理”的混合模式压成本——最后这个成本技巧是三章里我认为最值得偷的一个,它对应的学术源头是斯坦福小镇(Generative Agents, Park et al., arXiv:2304.03442)里记忆流驱动的 NPC。

5. 带得走的表:能力选载体

把全书压成一个可复用的判断框架(我的提炼,非书中原表):

能力选载体,看三个变量——变化频率、可靠性要求、边际成本。

载体修改成本可靠性适合放什么
提示词(范式)分钟级最低(格式崩、原地打转)快速实验、业务规则草稿
框架代码天级中(确定性解析、防死循环)循环控制、工具注册、记忆评分
模型权重(SFT/RL)周级 + GPU最高(内化为原生能力)高频稳定的技能(格式、工具调用)

书的十六章其实就是沿这张表从上往下走了一遍,评估章教你查账:benchmark 分数涨了,要能说清是哪一层涨的

诚实的提醒

  • 书中的实验数字(GSM8K 5%→40-50%→60-70%、MQE 召回率 +30-50%、记忆评分权重)均为书中口径,我未亲手复现;LoRA 参数量 1/256 和 GSM8K 数据集规模是我独立验算/核对过的。
  • 本文引用的 arXiv 编号(ReAct 2210.03629、Plan-and-Solve 2305.04091、Reflexion 2303.11366、DeepSeekMath 2402.03300、GSM8K 2110.14168、LoRA 2106.09685、PPO 1707.06347、Gorilla 2305.15334、GAIA 2311.12983、AgentBench 2308.03688、WebArena 2307.13854、Generative Agents 2304.03442)已于 2026-08-13 通过 arXiv API 逐一核实标题匹配。
  • 成本最低的亲手验证实验:不用跑训练——从 GSM8K 测试集抽 10 道题,分别丢给一个未微调的 0.6B 级本地模型和任一对齐后的模型,数一数前者有几道能给出可解析的最终答案。你会在 10 分钟内直观看到”载体三缺位”是什么样子,也就理解了为什么书中坚持”先 SFT 立形”。

参考来源

一手资料

arXiv 论文(均已核实)

本站相关旧文