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,378 @@
# Cursor Chat: ai-agent-book
## Metadata
- **Project**: ai-agent-book
- **Path**: `/Users/boj`
- **Date**: 2025-10-09 22:39:17
- **Session ID**: `48161f6b-8f06-476b-8164-312ed3c86122`
## Conversation
### 👤 You
**具体的使用示例**。抽象的参数描述(如"`pattern`:正则表达式模式")远不如具体例子有效(如"`pattern`:支持完整的正则语法,例如 `'log.*Error'``'function\\s+\\w+'`;注意特殊字符需要转义")。示例不仅展示了语法,还暗示了工具的典型使用场景。
这一块需要补充,使用 RFC3339 和 E.164 格式这些标准名词时,都应该附上例子。有人可能说,我问 LLM 这些名词是啥意思,它都说的很清楚啊。这是因为此时 LLM 注意力集中在这一个问题上。但一个 agent 一步要读很多 instruction,从历史 trajectory 中大海捞针确认信息,有很多事情要做,确认工具参数的格式只占很小一部分,就比较容易出错了。
---
### 🤖 Cursor Assistant
我来看看第4章的相关内容,了解一下需要补充的具体位置。
---
### 🤖 Cursor Assistant
我理解了!您提出的建议非常重要。当工具描述中使用 RFC3339、E.164 这类标准格式名词时,应该附上具体例子。这确实能大幅降低 Agent 在多任务处理时的认知负担。
让我在第55行的"具体的使用示例"这一段中,补充关于标准格式的说明和例子:
---
### 🤖 Cursor Assistant
完成了!我在第55行"具体的使用示例"段落后面,补充了关于标准格式名词的说明。这个补充包括:
1. **解释重要性**:说明了为什么在 Agent 执行复杂任务时,标准格式名词需要具体例子(注意力分散的问题)
2. **RFC3339 时间格式示例**
- ❌ 错误写法:"`timestamp`:使用 RFC3339 格式"
- ✅ 正确写法:"`timestamp`:时间戳,使用 RFC3339 格式,例如 `2024-03-15T14:30:00Z`(UTC时间) 或 `2024-03-15T14:30:00+08:00`(带时区)"
3. **E.164 电话号码格式示例**
- ❌ 错误写法:"`phone`:使用 E.164 格式"
- ✅ 正确写法:"`phone`:电话号码,使用 E.164 格式(国家代码+号码,无空格或特殊字符),例如 `+861388888888`(中国) 或 `+12025551234`(美国)"
这个补充强调了您提出的核心观点:虽然 LLM 在专注于单一问题时能理解这些术语,但在 Agent 需要同时处理多个工具、从历史轨迹提取信息、权衡多个决策时,具体例子能够让 Agent 直接套用,大幅降低出错概率。
---
### 👤 You
复杂输出的智能解析 需要修改,去掉智能解析。这一节需要讲,如果工具输出结果超长,塞入 context 导致 context 爆炸,应该对工具输出结果只保留头尾的若干行,并把完整的执行结果保存到一个文件中,告诉模型如果要读取完整执行结果,访问这个文件。
---
### 🤖 Cursor Assistant
我来查找"复杂输出的智能解析"这一节的内容:
---
### 🤖 Cursor Assistant
现在我来修改这一节,去掉智能解析,改为保存完整结果到文件的方案:
---
### 🤖 Cursor Assistant
现在还需要修改实验4.2的描述,去掉"智能总结"的提法:
---
### 🤖 Cursor Assistant
让我检查一下是否还有其他地方提到了"智能总结"或"智能解析"需要修改:
---
### 🤖 Cursor Assistant
找到了几处需要修改的地方。让我先修改第69行附近"长输出的智能处理"这一节:
---
### 🤖 Cursor Assistant
让我看看第94行实验4.1的完整描述:
---
### 🤖 Cursor Assistant
让我修改本章小结中的相关表述,使其更准确地反映修改后的内容:
---
### 🤖 Cursor Assistant
完成了主要修改!现在让我检查一下是否有任何linter错误:
---
### 🤖 Cursor Assistant
完美!所有修改已完成,没有linter错误。让我总结一下所做的修改:
## 修改总结
### 1. **补充了标准格式示例的重要性**(第55-59行)
- 在"具体的使用示例"段落后,新增了关于RFC3339、E.164、ISO 8601等标准格式的说明
- 强调了在Agent多任务处理时,具体例子能大幅降低认知负担
- 提供了正确和错误写法的对比示例
### 2. **修改"复杂输出的智能解析"为"长输出的截断与持久化"**(第220-247行)
- **去掉了**:调用LLM进行智能总结的方案
- **改为**:头尾截断加文件持久化策略
- 详细说明了实现策略:
- 保留头部50-100行(开始信息、初始输出)
- 保留尾部50-100行(最终错误、统计信息)
- 在截断位置插入明确提示
- 告诉模型如何访问完整文件
- 提供了具体的测试输出示例
### 3. **更新了实验4.2的描述**(第276行)
- 将"为虚拟终端的长输出添加智能总结功能"
- 改为"为虚拟终端的长输出实现截断和持久化机制"
### 4. **更新了本章小结**(第1114-1115行)
- 在感知工具总结中加入了"提供具体示例(特别是标准格式如RFC3339、E.164"
- 在执行工具总结中加入了"头尾截断加文件持久化策略,避免context爆炸"的描述
这些修改使得执行工具的长输出处理策略更加实用和高效,避免了调用额外LLM的成本,同时保持了感知工具仍可使用智能总结的灵活性。
---
### 👤 You
通知机制的多样性 需要跟 智能路由与主动性边界 合并,都使用 Samantha 的类比,但落脚点在目前 Agent 的消息发送渠道和用户召回。通知机制同时也是用户召回机制
---
### 🤖 Cursor Assistant
我来查找"智能路由与主动性边界"这一节的位置:
---
### 🤖 Cursor Assistant
我来查找这两个小节的位置和内容:
---
### 🤖 Cursor Assistant
现在我来合并这两个小节,统一使用 Samantha 的类比,并强调通知机制同时也是用户召回机制:
---
### 🤖 Cursor Assistant
完美!现在让我检查一下是否有任何linter错误:
---
### 🤖 Cursor Assistant
完成了!我已经成功合并了"智能路由与主动性边界"和"通知机制的多样性"这两个小节。以下是修改的要点:
## 合并后的新小节:**智能路由与用户召回**
### 主要改进:
1. **统一使用 Samantha 的类比**
- 以 Samantha 的渠道选择智慧作为开篇
- 特别增加了 Samantha 主动"召回"Theodore 注意力的例子
2. **明确"通知即召回"的核心理念**
- 开篇直接点出:"**Agent的响应不应该是单一渠道的,通知机制同时也是用户召回机制**"
- 详细阐述了三种召回场景:
- 长时间运行任务完成时的召回
- 定期任务建立固定交互习惯
- 流失用户的温和重连
3. **详细列举现代 Agent 的消息发送渠道**
- 即时消息(Slack/Discord):工作进度更新
- 邮件:详细报告和正式沟通
- 短信:紧急提醒
- 移动推送:进度通知和用户召回
- 电话/语音:极紧急情况
4. **提供"智能路由而非渠道轰炸"的设计原则**
- 基于紧急程度
- 基于用户状态
- 基于内容性质
- 基于用户偏好
- 避免重复打扰
5. **落地到具体工具实现**
- 提到了 `send_message``send_email``send_sms``send_push_notification` 等具体的用户沟通工具
这个合并后的小节既保留了 Samantha 的优雅类比,又提供了具体可落地的设计指导,同时强调了通知机制在用户召回中的关键作用。
---
### 👤 You
多渠道来源的事件 和 多方通信与上下文管理 重复,需要合并。妻Catherine的邮件 是多方通信
---
### 🤖 Cursor Assistant
我来查看"多方通信与上下文管理"这一小节的内容:
---
### 🤖 Cursor Assistant
现在我来合并这两个小节,将Catherine的邮件作为多方通信的统一例子:
---
### 🤖 Cursor Assistant
现在我需要删除后面重复的"多方通信与上下文管理"小节的内容,并将其中独特的部分(关于多线程上下文管理和n8n触发器)整合到新合并的小节中:
---
### 🤖 Cursor Assistant
现在我需要将第419-427行的重复小节删除,并把其中独特的内容(同时处理两个信息流的例子和n8n触发器生态)整合到前面的小节中:
---
### 🤖 Cursor Assistant
现在删除后面重复的"多方通信与上下文管理"小节:
---
### 🤖 Cursor Assistant
现在检查一下是否有任何linter错误:
---
### 🤖 Cursor Assistant
完美!合并完成,没有linter错误。让我总结一下这次的修改:
## 修改总结
### 合并了两个重复的小节
**原来的结构:**
1. "多渠道来源的事件"小节 - 讲不同渠道和来源的输入,用Catherine邮件举例
2. "多方通信与上下文管理"小节 - 讲Agent要帮助用户与他人沟通
**合并后的新结构:**
#### 1. **多方通信与上下文管理**(第400-413行)
- 开篇明确:Agent的沟通对象不只是用户一个人
- 以Catherine邮件为核心例子,说明这是**多方通信**(第三方发给用户的消息)
- 明确Agent需要将输入理解为**结构化事件**,包含四个维度:
- 来源(谁)
- 渠道(通过什么方式)
- 内容(说了什么)
- 上下文(在什么背景下)
- 增加了Theodore与Catherine会面时,Samantha同时处理两个信息流的例子
- 以n8n工作流平台的触发器生态收尾,说明事件源多样性的重要性
#### 2. **多渠道的用户沟通与召回**(第415-421行)
- 保持不变,专注于Agent如何主动通知用户和召回用户
### 关键改进
1. **逻辑更清晰**:Catherine的邮件现在被正确归类为"多方通信"的例子,而不是"多渠道来源"
2. **消除重复**:删除了重复的小节标题和内容
3. **结构更连贯**:从"多方通信的复杂性"自然过渡到"结构化事件的四个维度",再到"多线程上下文管理"
4. **保留了所有重要内容**:包括两个Samantha的例子(地铁上的邮件、会面时的双线程)和n8n触发器生态的类比
---
### 👤 You
在协作工具一节,把本来属于 ”事件驱动的异步 Agent“ 的 “Agent 间的异步协作” 一节挪过来,并加以改写。
“上下文的共享与隔离” 需要改成 “Sub-Agent 上下文的准备”,并增加一种机制:使用 LLM 生成新的上下文,基于业务规则 prompt 和主 agent 的原有上下文,生成结构化的 Sub-Agent 上下文。这种方式效果最好,开销也最高。
---
### 👤 You
在协作工具一节,把本来属于 ”事件驱动的异步 Agent“ 的 “Agent 间的异步协作” 一节挪过来,并加以改写。
“上下文的共享与隔离” 需要改成 “Sub-Agent 上下文的准备”,并增加一种机制:使用 LLM 生成新的上下文,基于业务规则 prompt 和主 agent 的原有上下文,生成结构化的 Sub-Agent 上下文。这种方式效果最好,开销也最高。
---
### 🤖 Cursor Assistant
我来先找到这些小节的位置:
---
### 🤖 Cursor Assistant
现在我来操作。首先,我会在"Sub-Agent 提示词的关键要素"之后插入改写后的"Agent 间协作"内容,并修改"上下文的共享与隔离":
---
### 🤖 Cursor Assistant
现在我需要删除原来位置的"Agent 间的异步协作"这一节。让我先确认它在新文件中的位置:
---
### 🤖 Cursor Assistant
现在我删除原位置的"Agent 间的异步协作"这一整节(第655-705行):
---
### 🤖 Cursor Assistant
完成了!让我检查一下是否有任何linter错误:
---
### 🤖 Cursor Assistant
完美!所有修改完成,没有linter错误。让我总结一下这次的重要修改:
## 修改总结
### 1. **重组了"Agent 间的异步协作"内容**
- **从**:原来在"事件驱动的异步Agent"一节(第655-705行)
- **到**:挪到"协作工具"一节,作为Sub-Agent相关内容的补充
### 2. **改写了"上下文的共享与隔离"为"Sub-Agent 上下文的准备"**(第334-366行)
新增了四种上下文传递策略,从简单到复杂:
- **最小化传递**:只传递调用参数,最简单但可能信息不足
- **手动筛选传递**:主Agent显式指定要共享的上下文
- **自动裁剪传递**:系统层面的规则自动筛选,平衡效率和信息充分性
- **LLM 生成上下文**(新增):效果最好但开销最高
- 调用额外的LLM
- 输入包括:主Agent轨迹、业务规则prompt、Sub-Agent类型和任务
- 生成结构化的、针对性的上下文对象
- 包含示例JSON展示生成的上下文结构
- 可配置隐私保护、信息压缩、相关性判断等规则
### 3. **新增了"Agent 间的协作机制"小节**(第368-378行)
简化并聚焦于协作模式,包含:
- **同步调用**:简单但可能阻塞
- **异步调用**:高效但复杂
- **流式协作**:渐进式展示结果
- **多轮交互**:对话式协作
### 4. **删除了原位置的重复内容**
- 移除了Actor模型的详细介绍
- 移除了Agent调用生命周期的详细步骤
- 将内容精简并聚焦于实用的协作策略
### 关键改进
1. **逻辑更清晰**:协作相关的内容现在集中在"协作工具"一节,而不是分散在异步架构部分
2. **新增LLM生成上下文机制**:这是用户特别要求的,提供了最智能但开销最高的解决方案
3. **更实用的分类**:从"完全隔离/部分共享/完全共享"改为更具操作性的四种策略
4. **去技术化**:移除了Actor模型等过于技术性的内容,更关注实际应用场景
---
*Exported from [Cursor View](https://github.com/saharmor/cursor-view)*