ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s

This commit is contained in:
2026-08-20 13:12:50 +00:00
commit b119135836
10275 changed files with 3284984 additions and 0 deletions
@@ -0,0 +1,121 @@
# AI 智能体入门
如果你使用 Cursor 编写代码,并观察它搜索代码库、编辑多个文件、重新运行测试直到通过,那么你已经使用过 AI 智能体。同样,如果你使用 Deep Research 通过反复搜索和阅读来调查某个主题,让 Manus 控制浏览器完成在线任务,要求豆包手机助手预订票务或发送消息,或者让松果 AI 协商降低电信费用,这些情况都属于 AI 智能体的应用。
这些产品形式各异,但它们有一个共同特点:不再是被动的“你问我答”对话。它们会规划自身的执行步骤,调用每个任务所需的工具,并根据结果调整策略。AI 智能体正在成为与计算机交互的新方式。
本章将从实际示例出发,逐步深入 AI 智能体的核心组成部分:读者将亲身体验现代智能体的功能,理解其背后的架构,并学习构建智能体系统的设计模式和最佳实践。
> **阅读建议**:本章是全书的概念地图:简明扼要地介绍了核心公式、运行循环、智能体工程框架和智能体设计模式。它建立了后续章节使用的共享术语和参考点。首次阅读时无需尝试记住每一个概念,把握大局即可。后续每章都会深入展开本章介绍的某一个方面,你可以在需要重新定位时回到本章。
---
## 现代智能体 = 大语言模型 + 上下文 + 工具
现代智能体系统的本质可以归纳为一个简洁的公式:**智能体 = 大语言模型(LLM) + 上下文 + 工具**。这个公式简单且实用——前提是对每个术语有广义的理解:
- **大语言模型是智能体的推理引擎**:它不仅仅是一组模型参数,还是智能体的决策核心,负责理解意图、推理、规划和判断。大语言模型的能力来源于在**预训练**中获取的世界知识和语言能力,以及通过**后训练**编码的决策策略(如监督微调和强化学习等技术将在第 7 章讨论)。
- **上下文是智能体的工作信息集**:不仅是输入模型的文本,还是智能体在每个决策点可用的信息集——包括环境、用户记忆、领域知识、自身状态和任务进度。就像一个人做决策时需要评估形势、回忆相关经验、查阅参考资料一样,智能体的上下文窗口包含了它当时可用的信息。
- **工具是智能体的行动接口**:不仅是少数可调用的 API 函数,还是智能体可以采取行动的全部方式——从预定义的工具调用到按需加载的智能体技能,从生成代码到动态创建新能力,从委派工作给子智能体到响应外部事件,再到与用户交互。
更直观的表述是:**智能体 = 推理引擎 + 工作上下文 + 行动接口**。模型负责推理和决策,上下文提供决策所依赖的信息集,工具则提供决策影响外部世界的接口。
这三个组成部分与强化学习(RL)中的三个核心概念完全对应(见第 7 章)。下表为**可选阅读**内容——如果你没有 RL 背景,可以跳过;后续内容不会依赖于它。它仅供已了解 RL 的读者将相关知识映射到本书的术语体系:
| 直观理解 | 智能体组件 | RL 概念(可选) | 角色 |
|----------|------------|----------------|------|
| **推理引擎** | LLM | **策略** | 决策逻辑,决定“下一步做什么”——基于当前信息,从所有可用选项中选择最合适的行动 |
| **工作上下文** | 上下文 | **观测空间** | 智能体可获取的所有信息——它能观测、阅读、记忆的内容,以及能访问的系统 |
| **行动接口** | 工具 | **动作空间** | 智能体可以执行的所有操作——可用的“手段”,从发送消息到执行代码,再到控制接口 |
---
### 观测空间与动作空间:模型与世界的接口
在经典教材《计算机体系结构:定量研究方法》中,Hennessy 和 Patterson 在第 1 章开头提出:“什么是计算机体系结构?”并将**指令集体系结构(ISA)** 确定为软件与硬件之间的接口[^ch1-agent-interface]。这个视角为我们理解智能体提供了有用的方式:**观测空间和动作空间共同构成了大语言模型与外部环境之间的接口**。观测空间将环境中的信息转换为模型可处理的上下文;动作空间将模型的决策转换为对外部世界的操作。观测空间之外的信息对模型而言实际上不存在。动作空间之外的操作仍然只能是模型用文字推荐,即使它清楚地知道应该做什么。
因此,**在基础模型保持不变的情况下,提升智能体性能的主要系统工程手段往往是重新定义或扩展其观测空间和动作空间**。用本书的术语来说,就是扩展上下文和工具。许多看似需要“更智能模型”的问题实际上是接口问题:将任务相关数据纳入上下文,或将所需操作暴露为工具,之前无法解决的任务可能无需重新训练模型就能解决。
**Manus:合并原本分离的空间。**
在 Manus 出现之前,生产环境中的智能体主要沿着三条独立轨道发展:深度研究、编码和计算机使用。Manus 是第一个广受影响的生产环境智能体,将这三者整合到一个系统中。网络扩展了其观测空间;文件系统和代码执行扩展了其动作空间;屏幕感知与点击和输入操作则将图形界面纳入两者之中。Manus 并非仅通过替换更强大的模型就成为通用智能体。它通过整合三类智能体的观测空间和动作空间,使单个智能体能够跨越之前的产品边界。
**OpenClaw:将接口扩展到用户的数字生活。**
OpenClaw 进一步扩展了这两个空间。它通过用户已使用的消息渠道(如 WhatsApp、Telegram、Slack、Discord、iMessage 等)接收任务并返回结果,因此智能体几乎可以在任何地方被访问。其本地优先的 Gateway 与授权工具、插件和智能体技能相结合,可以连接 Google Drive 和 Notion 等云应用,以及本地文件系统。因此,在获得用户明确授权后,分散在不同账户和设备中的文件可以进入一个智能体的观测空间,并被其工具操作。与最初以云沙盒为中心的 Manus 形式相比(文件通常需要上传或单独配置连接器),本地优先的 OpenClaw 覆盖了更广泛的数据边界。Manus 后来也添加了自己的 Google Drive 连接器和桌面访问本地文件的功能——这进一步验证了一个观点:产品演进往往正是通过扩展观测空间和动作空间来实现的[^ch1-agent-products]。
扩展并不意味着将所有可用的词元和工具一次性塞给模型。无关的上下文会增加噪声,而过多的工具会提高选择成本和安全风险。有效的扩展必须是**按需、相关且受控的**:检索应将正确的信息放入上下文,工具发现应仅暴露当前需要的操作,权限和结果验证应限制这些操作。后续章节将详细介绍这些技术。
[^ch1-agent-interface]: John L. Hennessy 和 David A. Patterson,《计算机体系结构:定量研究方法》,第 6 版,Morgan Kaufmann2019,第 1 章,“什么是计算机体系结构?”该书区分了指令集体系结构、计算机组成和硬件;ISA 特指软件与硬件之间的接口。见 https://shop.elsevier.com/books/computer-architecture/hennessy/978-0-12-811905-1
[^ch1-agent-products]: Manus 的官方资料将其最初的 Sandbox 描述为一个隔离的云虚拟机。在介绍其 Google Drive 连接器时,Manus 明确回顾了之前分散的工作流程,即手动在 Drive、桌面和 Manus 之间下载和上传文件。2026 年 3 月推出 My Computer 时,Manus 称重要工作通常存储在本地而非云端,这是云沙盒的根本局限性。OpenClaw 的官方 README 描述了一个本地优先、始终在线的个人助手,运行在用户自己的设备上,并列出了二十多个消息渠道;其工具和插件系统可以添加云集成和本地功能。见 https://manus.im/blog/manus-sandbox、https://manus.im/blog/manus-google-drive-connector、https://manus.im/blog/manus-my-computer-desktop、https://github.com/openclaw/openclaw 和 https://docs.openclaw.ai/tools
理解每个组成部分的作用及其相互配合方式,是构建有效智能体系统的基础。我们将从最具体的部分——工具(行动接口)开始,逐步深入到大语言模型和上下文。首先,以下是不同类型智能体在这三个维度上的对比:
| 智能体产品 | 工作上下文 | 行动接口 | 策略 |
|------------|------------|----------|------|
| **编码智能体(如 Cursor** | 需求文档、代码库、终端环境 | 开放式(内部推理、代码搜索、文件读写、命令执行等) | 增量开发:理解需求 → 搜索相关代码 → 编辑代码 → 测试验证 → 调试修复 |
| **搜索智能体(如 Deep Research** | 网络资源、学术数据库、本地文件 | 开放式(内部推理、搜索查询、网页阅读、摘要生成) | 迭代深化:根据现有信息调整搜索方向,逐渐综合完整报告 |
| **计算机控制智能体(如浏览器使用)** | 计算机屏幕、浏览器页面、文件系统 | 开放式(内部推理、点击、输入、滚动、截图、代码执行等) | 视觉感知 + 操作:观察屏幕 → 识别目标元素 → 执行操作 → 验证结果 |
| **手机助手智能体(如豆包)** | 手机屏幕、已安装应用 | 开放式(内部推理、点击、滑动、输入、打开应用等) | 意图理解 + 应用控制:理解用户需求 → 定位目标应用 → 执行操作 → 确认完成 |
| **个人任务智能体(如松果 AI** | 用户账户信息、历史账单、服务提供商知识库 | 开放式(内部推理、拨打电话、发送邮件、填写表单、与用户确认等) | 多步骤任务执行:收集信息 → 制定谈判策略 → 联系服务提供商 → 谈判 → 报告结果 |
这些系统有三个共同特点:**开放式动作空间**(不是从固定按钮中选择,而是生成任意自然语言和代码)、**内部推理**(行动前进行规划)以及**持续交互**(根据环境反馈调整策略)。这些能力正是推理引擎、工作上下文和行动接口(即大语言模型、上下文和工具)相互作用的结果。
---
### 工具:智能体的行动接口
工具是智能体通向外部世界的桥梁。它使智能体从被动的观察者转变为能够搜索、写入文件、运行代码、调用 API、发送消息或操作界面的主动系统。没有工具,智能体只能生成文本;有了工具,它就能对外部系统采取行动。
为了系统地讨论工具,我们可以根据智能体与世界交互的方向,将工具分为五种类型。在当前阶段,简要概述每种类型的代表性场景就足以建立整体认知;后续章节将深入探讨每种类型。
**感知工具**允许智能体访问信息:搜索引擎提供实时网络数据,文件系统读取本地文档,API 和数据库连接到外部服务和企业核心数据。
**执行工具**允许智能体对外部系统采取行动:代码执行、文件操作、系统命令和外部 API 调用将决策转化为具体行动。
**协作工具**允许智能体与其他智能体分工:将专业任务委派给子智能体、在关键决策点请求人类确认,或在多智能体系统中协调行动。
**事件触发工具**的调用方式与前三类根本不同:智能体不主动调用它们,而是作为外部输入触发智能体开始工作。例如,收到新邮件、到达预定时间,或其他系统触发 Webhook 回调;事件激活智能体并启动推理和行动。智能体永远不会主动调用这些工具,但它们仍然是智能体与外部世界交互的渠道,因此我们将其纳入广义的工具系统。
**用户通信工具**是智能体与用户沟通的渠道。执行工具改变外部世界,而通信工具传递信息——通过短信、语音通话、邮件等方式交付智能体的进度或主动检查。
第 4 章将全面介绍这五种类型的分类和设计原则。工具设计的质量直接决定了智能体能可靠完成的任务范围:如果接口定义模糊,模型会误用它们;如果错误处理不当,单个工具失败可能导致智能体卡住;如果权限范围过大,智能体的一个错误可能造成无法挽回的后果。随着 MCP(模型上下文协议)标准的普及,集成工具变得像安装插件一样简单——生态系统正在快速扩展,但设计原则不会过时。
**工具调用**(也称为函数调用)是现代大语言模型智能体的核心能力:它使模型能够以结构化方式调用外部工具,将大语言模型从纯文本生成器转变为能够通过外部接口采取行动的智能系统。本书全文使用“工具调用”这一术语。
工具调用分为四个步骤:首先,上下文告诉模型有哪些工具可用(名称、用途、参数);然后,模型自主决定是否调用工具、调用哪个工具以及使用什么参数;接下来,工具运行后,其结果会被追加到上下文中;最后,模型根据该结果决定下一步行动。这个循环是推理-行动循环(ReAct Loop)的基础,本章稍后会介绍。
对于天气查询,API 级别的四步流程简化表示如下:
```
步骤 1:声明工具 步骤 2:模型决定调用
tools: [{ assistant: {
name: "get_weather", tool_calls: [{
parameters: { function: "get_weather",
city: "string" arguments: {city: "Beijing"}
} }]
}] }
步骤 3:结果追加到上下文 步骤 4:模型根据结果响应
tool: { assistant: {
tool_call_id: "call_1", content: "今天北京:28°C,晴天。"
content: '{"temp":28,"sky":"clear"}' }
} }
```
开发者只需要定义工具并执行调用;模型自身决定是否调用、调用哪个工具以及传递什么参数。第 2 章将详细介绍这个 API 结构。
在为智能体设计工具时,应从任务所需的最小能力开始,随着任务复杂度的提高逐步扩展。如果任务只需要基本的算术运算,一个参数明确的计算器就足够了;当任务扩展到读取电子表格、清理缺失值、计算统计信息和绘制图表时,一个受限的 Python 代码解释器比不断增加专用工具更容易组合和探索。但通用性也会增加错误风险和攻击面:代码必须在隔离的沙盒中运行,默认禁用网络访问,无法访问授权工作目录之外的文件,并限制执行时间、CPU、内存和输出大小。
同样,单个日志工具适用于记录一次执行;对于需要运行数小时甚至数天的长时间任务,一个受控的虚拟工作目录可以保存计划、中间结果、执行日志和最终成果,使智能体能够跨多次运行恢复。该目录还应限制可读写路径、存储容量、文件类型,并防止路径遍历,而不是将整个主机文件系统暴露给智能体。
通用工具并不总是比专用工具更好。高风险操作或受严格业务约束的操作(如支付、数据删除、发送邮件和生产环境部署)仍应以专用工具的形式暴露,具有明确的参数、受限的权限和端到端的可审计性,并在必要时添加预览和人类确认。因此,工具设计的核心原则是:**使用通用基础能力进行组合和探索;使用专用工具来限制高风险操作并强制执行严格的业务规则**。
---
### 大语言模型:智能体的推理引擎
大语言模型(LLM)是智能体的决策核心。面对用户请求,它首先需要推断真实意图(用户说的往往不是他们实际想要的),然后将模糊或复杂的任务分解为可执行的步骤。在整个执行过程中,它不断做出决策:下一步做什么,是否调用工具,调用哪个工具,以及使用什么参数。这种理解–规划–执行的能力来源于预训练中积累的知识,它是工作流和自主智能体的基础。
现代大语言模型智能体的一个显著能力是**内部推理**——在采取行动之前,智能体可以规划并推理任务。这不会改变外部环境,但能显著改善后续行动。这种能力来源于预训练(在大量互联网文本上的初始训练,模型通过它学习语言模式和世界知识):模型利用人类知识中编码的推理模式,包括数学定律、因果关系和分解问题的策略。因此,智能体的推理并非盲目尝试,而是建立在结构化的知识体系之上。
这种结构化推理使大语言模型智能体能够处理全新的任务,无需先前示例——零样本和少样本两个概念说明了这一点。直接的体现是**零样本泛化**:面对从未见过的任务,智能体通过重新组合已有知识来处理它,无需示例。模型可能从未被明确教过写一首关于量子物理的诗,但它可以基于现有的语言和物理知识生成一首合理的诗作。
@@ -0,0 +1,86 @@
[
{
"en": "AI Agent",
"zh": "AI 智能体",
"pos": "noun",
"context": "A system that autonomously plans, executes, and adjusts actions using an LLM as its reasoning engine, context as its working information, and tools as its action interfaces. Examples include Cursor, Deep Research, Manus, and Pine AI."
},
{
"en": "LLM (Large Language Model)",
"zh": "大语言模型",
"pos": "noun",
"context": "The reasoning engine of an AI Agent, responsible for understanding intent, planning, decision-making, and judgment. Enhanced through pre-training (world knowledge) and post-training (e.g., supervised fine-tuning, reinforcement learning)."
},
{
"en": "Context",
"zh": "上下文",
"pos": "noun",
"context": "The working set of information available to an Agent at each decision point, including system prompts, tool definitions, user messages, assistant messages, tool results, and dynamic state (e.g., Agent Status Bar). Determines the ceiling of Agent capability."
},
{
"en": "Tools",
"zh": "工具",
"pos": "noun",
"context": "The action interfaces of an Agent, enabling it to interact with external systems (e.g., APIs, file systems, browsers). Includes perception tools, execution tools, collaboration tools, event trigger tools, and user communication tools."
},
{
"en": "ReAct Loop",
"zh": "推理-行动循环",
"pos": "noun",
"context": "The core operational loop of an Agent: Reason → Act (tool call) → Observe (tool result) → Reason → Act → Observe. Repeats until the task is complete. Forms the foundation of Agent autonomy."
},
{
"en": "Harness Engineering",
"zh": "智能体工程框架",
"pos": "noun",
"context": "The engineering infrastructure surrounding the LLM in an Agent system, including context management, tool interfaces, safety constraints (Constrain), verification (Verify), and error recovery (Correct). Formula: Agent = Model + Harness."
},
{
"en": "Agent Status Bar",
"zh": "智能体状态栏",
"pos": "noun",
"context": "A mechanism that injects dynamic meta-information (e.g., task progress, tool call counts, environment state) at the end of the context to help the model track implicit states explicitly. Analogous to a phone's status bar (time, battery, etc.)."
},
{
"en": "KV Cache",
"zh": "键值缓存",
"pos": "noun",
"context": "An optimization in LLM inference that caches intermediate key-value states of processed tokens to avoid redundant computation. Requires a stable prefix (e.g., system prompt, tool definitions) for reuse across requests."
},
{
"en": "Prompt Injection",
"zh": "提示注入",
"pos": "noun",
"context": "A security threat where malicious instructions are embedded in external content (e.g., web pages, documents) to hijack an Agent's behavior. Mitigated via source tagging, structured roles, and input sanitization."
},
{
"en": "Agent Skills",
"zh": "智能体技能",
"pos": "noun",
"context": "Modular, loadable knowledge packages that provide specialized domain guidance (e.g., document processing, coding standards). Uses progressive disclosure: metadata is loaded first, full content is fetched on demand via a dedicated tool."
},
{
"en": "token",
"zh": "词元",
"pos": "名词",
"context": "编辑部指定术语"
},
{
"en": "prompt",
"zh": "提示词",
"pos": "名词",
"context": "编辑部指定术语"
},
{
"en": "latency",
"zh": "时延",
"pos": "名词",
"context": "编辑部指定术语"
},
{
"en": "embedding",
"zh": "嵌入向量",
"pos": "名词",
"context": "编辑部指定术语"
}
]