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,142 @@
# Cursor Chat: ai-agent-book
## Metadata
- **Project**: ai-agent-book
- **Path**: `/Users/boj`
- **Date**: 2025-10-16 22:38:05
- **Session ID**: `1390e6bd-55fd-4ce0-a483-2b68ffc157ec`
## Conversation
### 👤 You
#### 案例 2:生成 SQL 查询
数据库查询是另一个代码生成能够显著提升交互体验的场景。传统的数据库访问依赖 GUI 工具或手写 SQL,前者操作繁琐,后者要求用户具备专业知识。
Agent 可以将自然语言查询转换为 SQL,但这里存在一个关键的设计选择:是让 Agent 执行 SQL、获取结果、然后用自然语言向用户描述结果,还是让 Agent 直接将查询结果以结构化形式返回给前端?
第一种方案看似更"智能",但效率极低。数据库查询的结果可能是包含数千行的大表格,如果让 LLM 阅读这个表格然后用文字描述,不仅消耗大量 token、耗时很长,更严重的是 LLM 在"抄写"数据时非常容易出错。
更好的方案是让 Agent 生成 SQL 代码,但不由 Agent 自己执行和解释,而是将 SQL 代码作为工具调用的返回值,由前端系统直接执行并以表格形式呈现结果。这种设计使数据从数据库到用户界面的传递路径最短,避免了 LLM 这个"中间人"带来的开销和错误。
更进一步,Agent 不仅可以生成查询的 SQL,还可以根据查询的性质生成可视化代码。例如,当用户询问"各部门的平均工资对比"时,除了返回数据表格,Agent 还可以生成一段前端代码,把查询结果渲染成柱状图或饼图。前端系统动态执行这段可视化代码,用户不仅能看到数字,更能直观地理解数据的分布和对比关系。
--
这里的要点是生成的是 artifact,LLM 生成 SQL 代码和解析、可视化显示 SQL 查询结果的代码,然后直接作为 artifact 执行。SQL 代码执行之后的结果,直接送到可视化的前端代码来显示。
---
### 🤖 Cursor Assistant
您的理解完全正确!这是一个非常重要的架构设计原则。让我总结一下这个 artifact-based 的设计模式:
## 核心要点
**数据流路径:**
```
用户自然语言查询
→ Agent 生成 SQL 代码(artifact 1
→ 前端执行 SQL,获取结果数据
→ Agent 生成可视化代码(artifact 2
→ 前端执行可视化代码,直接渲染结果
```
**关键优势:**
1. **避免 LLM 成为数据瓶颈**:数据不经过 LLM 的"转述",直接从数据库流向前端
2. **降低成本和延迟**:不需要 LLM 处理和描述大量表格数据
3. **提高准确性**:避免 LLM 在"抄写"数据时的错误
4. **更好的用户体验**:结构化数据以表格、图表等原生形式呈现
## 文字建议
您现有的文字已经很清晰了。如果想让这个要点更突出,可以考虑:
1. **添加一个对比示意图**,展示两种方案的数据流:
- ❌ 反模式:数据库 → LLM(解读)→ 文字描述 → 用户
- ✅ 推荐:数据库 → SQL artifact → 前端 → 可视化 artifact → 用户
2. **在文末添加一个实际例子**,比如:
```python
# Agent 返回的 artifacts
{
"sql": "SELECT department, AVG(salary) FROM employees GROUP BY department",
"visualization": {
"type": "bar_chart",
"x_axis": "department",
"y_axis": "avg_salary"
}
}
```
3. **强调这是 "代码即接口" 的理念**:Agent 的输出不是对结果的描述,而是可执行的代码,这些代码本身就是清晰的、可验证的接口。
这个设计模式在 Claude 的 Artifacts、Cursor 的代码生成等场景中都有体现,是现代 AI Agent 架构的重要原则。
---
### 👤 You
不要添加代码例子,修改内容,让它更清晰。“而是将 SQL 代码作为工具调用的返回值” 是错误的,Agent 的工具是 build artifact,代码(SQL + 可视化代码)是参数
---
### 🤖 Cursor Assistant
明白了!让我修改这段内容,纠正概念错误并使其更清晰:
---
### 🤖 Cursor Assistant
已完成修改!主要改进点:
1. **纠正概念错误**:明确 SQL 代码是作为 `build_artifact` 工具的**参数**,而不是返回值
2. **突出 artifact 模式**:用加粗强调这是一种设计模式,不是偶然的技术选择
3. **清晰的数据流描述**
- 第一个 artifactSQL):Agent 生成 → 前端执行 → 获得查询结果
- 第二个 artifact(可视化):Agent 生成 → 前端执行(输入是 SQL 结果)→ 渲染图表
- 强调数据"直达",LLM 不参与数据传递
4. **点明设计精髓**:最后一句总结"LLM 只负责生成代码,不参与数据的读取、传递或转换,这正是代码生成作为接口的精髓所在"
5. **强化对比**:更清晰地对比了让 LLM 转述数据(低效)vs 让 LLM 生成代码、数据直达(高效)
这样的描述避免了技术细节的代码示例,而是从架构设计的角度阐明了核心原则。
---
### 👤 You
实验 5.11:动态表单生成的意图澄清系统
增加一个验收标准,例子是一个需要订机票的例子,需要弹表单问问题
---
### 🤖 Cursor Assistant
已完成!为实验 5.11 添加了**验收标准**部分,包含了一个完整的订机票场景示例。
主要内容包括:
1. **具体场景**:用户输入模糊的"我想订一张去北京的机票"
2. **表单字段设计**
- 必填字段:出发城市、出发日期、旅行类型、舱位等级、乘客人数
- 可选字段:返程日期、是否需要托运行李
- 不同的输入控件类型:文本、日期选择器、单选、下拉菜单、数字输入、复选框
3. **级联逻辑示例**:旅行类型选择"往返"时才显示"返程日期"字段,这展示了动态表单的核心价值
4. **强调对比优势**:明确指出这种方式"只需一次交互",优于"多轮对话逐一回答问题"
这个验收标准清晰地展示了动态表单生成如何提升用户体验,同时也为实现者提供了具体的参考场景。
---
*Exported from [Cursor View](https://github.com/saharmor/cursor-view)*