Ver Fonte

docs: add exercise in chapter8to12 && add chapter16 && add Co-creation-projects

jjyaoao há 7 meses atrás
pai
commit
a95b995eeb

+ 112 - 0
Co-creation-projects/README.md

@@ -0,0 +1,112 @@
+# Hello-Agents 共创项目
+
+欢迎来到Hello-Agents共创项目区!这里是学习者展示自己多智能体应用的地方。
+
+## 📚 项目列表
+
+以下是社区成员贡献的优秀项目:
+
+<!-- 项目列表将在这里自动更新 -->
+
+### 示例项目
+
+- **EXAMPLE-ProjectTemplate**:项目模板,展示标准的项目结构和文档规范
+
+## 🚀 如何贡献你的项目
+
+### 1. 项目命名规范
+
+项目文件夹命名格式:`{GitHub用户名}-{项目名称}`
+
+示例:
+- `jjyaoao-CodeReviewAgent`
+- `zhangsan-StudyBuddy`
+- `lisi-DataAnalyst`
+
+### 2. 项目结构要求
+
+每个项目至少应包含:
+
+```
+你的用户名-项目名称/
+├── README.md              # 项目说明文档(必需)
+├── requirements.txt       # Python依赖列表(必需)
+├── main.ipynb            # 主要的Jupyter Notebook(必需)
+└── ...                   # 其他文件(可选)
+```
+
+### 3. README要求
+
+README.md应包含以下内容:
+
+- 项目简介
+- 核心功能
+- 技术栈
+- 快速开始(安装、配置、运行)
+- 使用示例
+- 作者信息
+
+详细的README模板请参考:[项目模板](./EXAMPLE-ProjectTemplate/README.md)
+
+### 4. 提交流程
+
+1. Fork Hello-Agents仓库
+2. 在`Co-creation-projects`目录下创建你的项目文件夹
+3. 完成项目开发和文档编写
+4. 提交Pull Request
+
+详细的提交指南请参考:[第十六章 毕业设计](../docs/chapter16/第十六章%20毕业设计.md)
+
+## 📋 项目分类
+
+### 生产力工具
+
+- 代码审查助手
+- 文档生成器
+- 会议助手
+- 邮件助手
+
+### 学习辅助
+
+- 学习伙伴
+- 论文助手
+- 编程导师
+- 语言学习助手
+
+### 创意娱乐
+
+- 故事生成器
+- 游戏NPC
+- 音乐推荐
+- 菜谱助手
+
+### 数据分析
+
+- 数据分析师
+- 股票分析
+- 舆情监控
+- 竞品分析
+
+### 生活服务
+
+- 健康助手
+- 理财助手
+- 购物助手
+- 家居控制
+
+## 💬 交流与反馈
+
+- 在GitHub Issue中提问
+- 加入Datawhale社区讨论
+- 参与项目Review
+
+## 📄 许可证
+
+所有共创项目遵循CC BY-NC-SA 4.0 License,欢迎学习和共创。
+
+---
+
+<div align="center">
+  <strong>期待看到你的精彩作品!🎉</strong>
+</div>
+

+ 36 - 0
docs/chapter10/第十章 智能体通信协议.md

@@ -2392,7 +2392,43 @@ agent.add_tool(ANPTool(...))
 
 你现在已经掌握了智能体通信协议的核心知识。继续加油!🚀
 
+## 习题
 
+> <strong>提示</strong>:部分习题没有标准答案,重点在于培养学习者对智能体通信协议的综合理解和实践能力。
+
+1. 本章介绍了三种智能体通信协议:MCP、A2A和ANP。请分析:
+
+   - 在10.1.2节中对比了三种协议的设计理念。请深入分析:为什么MCP强调"上下文共享",A2A强调"对话式协作",而ANP强调"网络拓扑"?这些设计理念分别解决了什么核心问题?
+   - 假设你要构建一个"智能客服系统",需要以下功能:(1)访问客户数据库和订单系统;(2)多个专业客服智能体协作处理复杂问题;(3)支持大规模并发用户请求。请为每个功能选择最合适的协议,并说明理由。
+   - 三种协议是否可以组合使用?请设计一个实际应用场景,展示如何同时使用MCP、A2A和ANP来构建一个完整的智能体系统。画出系统架构图并说明各协议的职责。
+
+2. MCP(Model Context Protocol)是智能体与工具通信的标准协议。基于10.2节的内容,请深入思考:
+
+   > <strong>提示</strong>:这是一道动手实践题,建议实际操作
+
+   - 在10.2.3节的MCP服务器实现中,我们定义了`list_tools`、`call_tool`等核心方法。请扩展这个实现,添加一个新的MCP服务器,提供以下工具:(1)数据库查询工具;(2)数据可视化工具;(3)报表生成工具。要求工具之间能够协作完成复杂的数据分析任务。
+   - MCP协议支持"资源"(Resources)和"提示"(Prompts)两个重要概念,但本章主要聚焦于"工具"(Tools)。请查阅MCP官方文档,了解Resources和Prompts的设计目的,并设计一个应用场景,展示如何利用这三个核心概念构建更强大的智能体系统。
+   - MCP使用JSON-RPC 2.0作为底层通信协议,通过stdio进行进程间通信。请分析:这种设计有什么优势和局限性?如果需要支持远程MCP服务器(通过HTTP/WebSocket访问),应该如何扩展当前的实现?
+
+3. A2A(Agent-to-Agent Protocol)支持智能体间的对话式协作。基于10.3节的内容,请完成以下扩展实践:
+
+   > <strong>提示</strong>:这是一道动手实践题,建议实际操作
+
+   - 在10.3.4节的"研究团队"案例中,研究员和撰写员通过A2A协议协作完成论文写作。请扩展这个案例,添加第三个智能体"审稿人"(Reviewer),它能够评审论文质量并提出修改建议。设计三个智能体之间的协作流程,并实现完整的代码。
+   - A2A协议定义了`task`、`task_result`等消息类型。请分析:如果协作过程中出现冲突(如两个智能体对同一问题有不同意见),应该如何设计冲突解决机制?请扩展A2A协议,添加"协商"(negotiation)和"投票"(voting)等消息类型。
+   - 对比A2A协议与第六章介绍的AutoGen、CAMEL等多智能体框架:A2A作为标准协议,与这些框架的关系是什么?它们能否互相替代?请设计一个方案,让基于A2A协议的智能体能够与AutoGen框架中的智能体进行通信。
+
+4. ANP(Agent Network Protocol)支持大规模智能体网络。基于10.4节的内容,请深入分析:
+
+   - 在10.4.2节中介绍了ANP的网络拓扑设计,包括星型、网状、分层等结构。请分析:在什么场景下应该选择哪种拓扑结构?如果网络规模从10个智能体扩展到1000个智能体,拓扑结构应该如何演进?
+   - ANP协议支持"路由"(routing)和"发现"(discovery)机制,让智能体能够动态找到合适的协作伙伴。请设计一个"智能路由算法":根据任务类型、智能体能力、网络负载等因素,自动选择最优的消息路由路径。
+   - 在10.4.4节的"智能城市"案例中,多个智能体协作管理城市系统。请思考:如果某个关键智能体(如交通管理智能体)出现故障,整个系统应该如何应对?请设计一个"容错机制",包括故障检测、备份切换、状态恢复等功能。
+
+5. 智能体通信协议的安全性和隐私保护是实际应用中的关键问题。请思考:
+
+   - 在10.2.4节的MCP客户端实现中,智能体可以调用MCP服务器提供的任何工具。请分析:这种设计存在什么安全风险?如果MCP服务器提供了危险操作(如删除文件、执行系统命令),应该如何设计权限控制机制?
+   - A2A和ANP协议涉及多个智能体之间的通信,可能包含敏感信息(如用户隐私数据、商业机密)。请设计一个"端到端加密"方案:确保消息在传输过程中不被窃听或篡改,同时支持智能体身份认证和访问控制。
+   - 在大规模智能体网络中,恶意智能体可能会发送虚假信息、发起拒绝服务攻击或窃取其他智能体的数据。请设计一个"信任评估系统":根据智能体的历史行为、协作质量、社区评价等因素,动态评估每个智能体的可信度,并据此调整通信策略。
 
 ## 参考文献
 

+ 38 - 0
docs/chapter11/第十一章 Agentic-RL.md

@@ -2647,3 +2647,41 @@ Agentic RL旨在提升智能体的六大核心能力:
 
 [15] Ziegler, D. M., Stiennon, N., Wu, J., Brown, T. B., Radford, A., Amodei, D., ... & Irving, G. (2019). Fine-Tuning Language Models from Human Preferences. *arXiv preprint arXiv:1909.08593*.
 
+## 习题
+
+> <strong>提示</strong>:部分习题没有标准答案,重点在于培养学习者对Agentic RL和智能体训练的综合理解和实践能力。
+
+1. 本章介绍了从LLM训练到Agentic RL的演进过程。请分析:
+
+   - 在11.1.3节的表11.1中,对比了PBRFT(基于偏好的强化微调)和Agentic RL在MDP框架下的差异。请深入解释:为什么Agentic RL的状态空间 $s_t = (\text{prompt}, o_1, o_2, ..., o_t)$ 包含历史观察,而PBRFT的状态 $s_0 = \text{prompt}$ 只包含初始提示?这种差异对训练过程和最终效果有什么影响?
+   - 假设你要训练一个"智能代码调试助手",它需要:(1)分析代码找出bug;(2)查阅文档了解API用法;(3)修改代码;(4)运行测试验证修复效果。请将这个任务映射到强化学习框架,明确定义状态空间、行动空间、奖励函数和状态转移函数。
+   - 在11.1.1节中提到,传统监督学习存在"难以优化长期目标"的局限。请设计一个具体的多步推理任务(如数学证明、复杂问题求解),展示为什么监督学习难以优化中间步骤,而强化学习可以通过延迟奖励来解决这个问题。
+
+2. SFT(监督微调)和GRPO(群组相对策略优化)是本章的两个核心训练方法。基于11.2节和11.3节的内容,请深入思考:
+
+   > <strong>提示</strong>:这是一道动手实践题,建议实际操作
+
+   - 在11.2.4节的SFT训练代码中,我们使用了LoRA(低秩适配)技术来减少训练参数。请分析:LoRA的核心思想是什么?为什么它能够用少量参数(如0.16%)实现接近全参数微调的效果?在什么情况下应该选择LoRA而不是全参数微调?
+   - GRPO算法(11.3节)相比传统的PPO算法有什么优势?请对比两者的训练流程,分析GRPO如何通过"群组相对奖励"来简化训练过程并提升稳定性。如果要将GRPO应用到其他任务(如代码生成、对话优化),需要做哪些调整?
+   - 请基于11.2.5节的代码,扩展SFT训练流程,添加以下功能:(1)支持多轮对话数据的训练;(2)添加数据增强策略(如同义改写、难度调整);(3)实现训练过程的可视化监控(如loss曲线、样本质量评估)。
+
+3. 奖励函数设计是Agentic RL的核心挑战。基于11.3.3节的内容,请完成以下扩展实践:
+
+   > <strong>提示</strong>:这是一道动手实践题,建议实际操作
+
+   - 在11.3.3节中,我们为GSM8K数学问题设计了简单的二元奖励(正确+1,错误0)。请设计一个更精细的奖励函数,能够:(1)对部分正确的答案给予部分奖励;(2)对推理过程的合理性进行评分;(3)惩罚过于冗长或低效的解题路径。这个奖励函数应该如何实现?
+   - 奖励函数的设计往往需要领域知识。请为以下三个不同的智能体任务设计奖励函数:(1)代码生成助手(需要考虑代码正确性、可读性、效率);(2)客服对话智能体(需要考虑问题解决率、用户满意度、响应时间);(3)游戏AI(需要考虑胜率、策略多样性、对抗鲁棒性)。
+   - 在实际应用中,奖励函数可能存在"奖励黑客"(reward hacking)问题:智能体找到了获得高奖励的捷径,但并没有真正完成任务。请举例说明这种现象,并设计防御机制来避免奖励黑客。
+
+4. 在11.4节的"数学推理智能体训练"案例中,我们看到了完整的训练流程。请深入分析:
+
+   - 案例中使用了GSM8K数据集进行训练和评估。请分析:这个数据集的特点是什么?它适合训练什么类型的推理能力?如果要训练一个能够处理更复杂数学问题(如高等数学、数学证明)的智能体,应该如何扩展数据集和训练方法?
+   - 在11.4.3节的训练结果中,我们观察到模型在训练集上的准确率提升,但可能存在过拟合风险。请设计一个"泛化能力评估"方案:如何测试模型是否真正学会了数学推理,而不是记住了训练数据?如何通过正则化、数据增强等技术提升泛化能力?
+   - 案例中的训练是离线的(使用预先收集的数据集)。请设计一个"在线学习"方案:智能体在实际使用过程中持续收集用户反馈,并自动更新模型。这个方案需要考虑哪些技术挑战(如数据质量控制、灾难性遗忘、安全性保障)?
+
+5. Agentic RL的一个重要应用是让智能体学会使用工具。请思考:
+
+   - 在11.1.3节中提到,Agentic RL适合优化"需要多步推理、工具使用、长期规划"的任务。请设计一个"工具学习"训练方案:给定一组工具(如搜索引擎、计算器、代码执行器),如何训练智能体学会在合适的时机选择合适的工具?奖励函数应该如何设计?
+   - 工具使用往往涉及复杂的依赖关系(如"必须先调用工具A获取信息,才能调用工具B")。请设计一个"分层强化学习"方案:高层策略负责任务规划,低层策略负责工具调用。这种分层结构如何训练?如何协调高层和低层的优化目标?
+   - 在实际应用中,工具的数量可能非常多(如50+个API),直接训练可能面临"探索效率低"的问题。请设计一个"课程学习"(curriculum learning)方案:从简单任务(使用少量工具)开始训练,逐步增加任务难度和工具数量。这个方案应该如何设计课程顺序?如何评估智能体是否准备好进入下一阶段?
+

+ 36 - 0
docs/chapter12/第十二章 智能体性能评估.md

@@ -2683,7 +2683,43 @@ python data_generation/run_complete_evaluation.py 30 3.0
 
 <strong>继续加油!</strong> 💪
 
+## 习题
 
+> <strong>提示</strong>:部分习题没有标准答案,重点在于培养学习者对智能体性能评估的综合理解和实践能力。
+
+1. 本章介绍了多个智能体评估基准。请分析:
+
+   - 在12.1.2节中介绍了BFCL、GAIA、AgentBench等评估基准。请对比BFCL和GAIA:它们分别评估智能体的哪些核心能力?为什么BFCL使用AST匹配算法,而GAIA使用准精确匹配(Quasi Exact Match)?这两种评估方法各有什么优缺点?
+   - 假设你要构建一个"智能客服系统",需要评估以下能力:(1)理解用户意图的准确性;(2)调用后台API的正确性;(3)回答的友好性和专业性;(4)处理异常情况的鲁棒性。请为每个能力选择或设计合适的评估指标和方法。
+   - 在12.1.1节中提到,智能体评估面临"输出不确定性"、"评估标准多样性"、"评估成本高昂"三大挑战。请针对每个挑战提出具体的解决方案,并分析方案的可行性和局限性。
+
+2. BFCL(Berkeley Function Calling Leaderboard)是评估工具调用能力的重要基准。基于12.2节的内容,请深入思考:
+
+   > <strong>提示</strong>:这是一道动手实践题,建议实际操作
+
+   - 在12.2.3节的AST匹配算法中,我们通过比较抽象语法树来判断函数调用是否正确。请分析:为什么AST匹配比简单的字符串匹配更合适?在什么情况下AST匹配可能会产生误判(假阳性或假阴性)?如何改进AST匹配算法来提高准确性?
+   - BFCL数据集包含simple、multiple、parallel、irrelevance四个类别。请为每个类别设计2-3个新的测试样本,要求能够测试智能体在该类别下的边界情况或容易出错的场景。
+   - 请基于12.2.4节的代码,扩展BFCL评估器,添加以下功能:(1)支持评估工具调用的执行顺序(对于有依赖关系的多个工具调用);(2)评估工具调用的效率(如是否使用了最少的调用次数);(3)生成详细的错误分析报告(如哪些类型的错误最常见)。
+
+3. GAIA(General AI Assistants)评估智能体的综合能力。基于12.3节的内容,请完成以下扩展实践:
+
+   > <strong>提示</strong>:这是一道动手实践题,建议实际操作
+
+   - 在12.3.2节中介绍了GAIA的三个难度级别(Level 1/2/3)。请分析:这三个级别在任务复杂度、所需能力、评估标准等方面有什么差异?如果要设计Level 4(超高难度),应该包含什么类型的任务?
+   - GAIA使用"准精确匹配"算法来评估答案的正确性。请分析:这种方法如何处理答案的多样性(如"42"、"四十二"、"42.0"都应该被认为是正确的)?在什么情况下准精确匹配可能不够用?请设计一个更智能的答案匹配算法,能够处理语义等价的答案。
+   - 请基于12.3.4节的代码,实现一个"自定义GAIA评估集":选择一个特定领域(如医疗、法律、金融),设计10个真实世界问题,并实现完整的评估流程。要求问题涵盖不同难度级别,并提供标准答案和评分标准。
+
+4. LLM Judge是使用大语言模型进行评估的新兴方法。基于12.4节的内容,请深入分析:
+
+   - 在12.4.2节中,我们使用GPT-4作为评判者来评估智能体的回答质量。请分析:LLM Judge相比传统的规则匹配或指标计算有什么优势?它存在哪些潜在的偏见或局限性(如对某些回答风格的偏好、对长度的敏感性)?
+   - LLM Judge的评分标准设计至关重要。请为以下三个不同的评估场景设计详细的评分标准(包括评分维度、权重、示例):(1)代码生成质量评估;(2)创意写作质量评估;(3)技术文档质量评估。
+   - 在12.4.3节中提到,可以使用多个LLM Judge进行"评审团"式评估。请设计一个"多评委评估系统":使用3-5个不同的LLM(如GPT-4、Claude、Qwen)作为评委,如何聚合它们的评分?如何处理评委之间的分歧?如何检测和过滤异常评分?
+
+5. 智能体评估的实践应用需要考虑多个方面。请思考:
+
+   - 在实际项目中,评估往往需要在"评估成本"和"评估质量"之间权衡。请设计一个"分层评估策略":(1)快速评估(低成本,用于日常开发迭代);(2)标准评估(中等成本,用于版本发布前);(3)全面评估(高成本,用于重大更新或对外发布)。每层应该包含哪些评估项目?如何设计评估流程?
+   - 智能体的性能可能随时间变化(如依赖的外部API变化、用户需求变化)。请设计一个"持续评估系统":能够定期自动运行评估,监控智能体性能的变化趋势,并在性能下降时及时告警。这个系统应该包含哪些组件?如何设计告警规则?
+   - 评估结果需要以清晰的方式呈现给不同的受众(如开发者、产品经理、用户)。请设计一个"评估报告生成系统":能够根据受众类型自动生成不同详细程度的报告。开发者报告应该包含哪些技术细节?产品经理报告应该突出哪些业务指标?用户报告应该如何简化和可视化?
 
 ## 参考文献
 

+ 974 - 2
docs/chapter16/第十六章 毕业设计.md

@@ -1,3 +1,975 @@
-# 第十六章 毕业设计
+# 第十六章 毕业设计:构建属于你的多智能体应用
+
+恭喜你来到Hello-Agents教程的最后一章!在前面的15章中,我们从零开始构建了HelloAgents框架,学习了智能体的核心概念、多种范式、工具系统、记忆机制、通信协议、强化学习训练和性能评估等知识。在第13-15章中,我们还通过三个完整的实战项目(智能旅行助手、自动化深度研究智能体、赛博小镇)展示了如何将所学知识融会贯通。
+
+现在,是时候让你成为真正的智能体系统构建者了!本章将指导你<strong>构建属于你自己的多智能体应用</strong>,并通过开源协作的方式与社区分享你的成果。
+
+## 16.1 毕业设计的意义
+
+### 16.1.1 为什么要做毕业设计
+
+学习技术最好的方式不是看教程,而是<strong>动手实践</strong>。通过前面章节的学习,你已经掌握了构建智能体系统的理论知识和技术工具。但是,真正的挑战在于:<strong>如何将这些知识应用到实际问题中?如何设计一个完整的系统?如何处理各种边界情况和异常?</strong>
+
+毕业设计的核心价值在于培养你的综合应用能力,将前面学到的所有知识(智能体范式、工具系统、记忆机制、通信协议等)选择性的整合到一个完整的项目中。
+
+通过本章的学习和实践,希望你能够独立设计并实现一个完整的智能体应用,熟练使用HelloAgents框架的各种功能,掌握Git和GitHub的基本操作,学会编写清晰的项目文档,参与开源社区的协作开发,最终获得一个可以展示的技术作品。
+
+### 16.1.2 毕业设计的形式
+
+你的毕业设计将以<strong>开源项目</strong>的形式提交到Hello-Agents的共创项目仓库(`Co-creation-projects`目录)。具体要求如下:
+
+1. <strong>项目命名</strong>:使用`{你的GitHub用户名}-{项目名称}`的格式,例如`jjyaoao-CodeReviewAgent`
+
+2. <strong>项目内容</strong>:
+   - 一个可运行的Jupyter Notebook(`.ipynb`文件)或Python脚本
+   - 完整的依赖列表(`requirements.txt`)
+   - 清晰的README文档(`README.md`)
+   - 可选:演示视频、截图、数据集等
+
+3. <strong>提交方式</strong>:通过GitHub的Pull Request(PR)提交
+
+4. <strong>评审流程</strong>:社区成员会review你的代码,提出改进建议,通过后合并到主仓库
+
+## 16.2 项目选题指南
+
+### 16.2.1 选题原则
+
+一个好的毕业设计项目应该具有实用性,解决真实的问题而不是为了技术而技术,我们需要追求在有限的时间和资源内可以完成,并且能够清晰地展示你的技术能力。
+
+### 16.2.2 推荐选题方向
+
+以下是一些推荐的项目方向,你可以选择其中一个,也可以自己提出新的想法:
+
+<strong>(1)生产力工具类</strong>
+
+- <strong>智能代码审查助手</strong>:自动分析代码质量、发现潜在bug、提出优化建议
+- <strong>智能文档生成器</strong>:根据代码自动生成API文档、用户手册
+- <strong>智能会议助手</strong>:记录会议内容、生成会议纪要、提取行动项
+- <strong>智能邮件助手</strong>:自动分类邮件、生成回复草稿、提醒重要事项
+
+<strong>(2)学习辅助类</strong>
+
+- <strong>智能学习伙伴</strong>:根据学习进度推荐学习资源、生成练习题、答疑解惑
+- <strong>智能论文助手</strong>:帮助查找文献、总结论文、生成引用
+- <strong>智能编程导师</strong>:提供编程练习、代码review、学习路径规划
+- <strong>智能语言学习助手</strong>:提供对话练习、语法纠错、词汇扩展
+
+<strong>(3)创意娱乐类</strong>
+
+- <strong>智能故事生成器</strong>:根据用户输入生成小说、剧本、诗歌
+- <strong>智能游戏NPC</strong>:创建有个性的游戏角色,能够与玩家自然对话
+- <strong>智能音乐推荐</strong>:根据心情、场景推荐音乐,生成播放列表
+- <strong>智能菜谱助手</strong>:根据食材、口味推荐菜谱,生成购物清单
+
+<strong>(4)数据分析类</strong>
+
+- <strong>智能数据分析师</strong>:自动分析数据、生成可视化图表、撰写分析报告
+- <strong>智能股票分析</strong>:分析股票数据、新闻舆情,提供投资建议
+- <strong>智能舆情监控</strong>:监控社交媒体、新闻网站,分析舆情趋势
+- <strong>智能竞品分析</strong>:收集竞品信息、对比分析、生成报告
+
+<strong>(5)生活服务类</strong>
+
+- <strong>智能健康助手</strong>:记录健康数据、提供健康建议、制定运动计划
+- <strong>智能理财助手</strong>:记录收支、分析消费习惯、提供理财建议
+- <strong>智能购物助手</strong>:比价、推荐商品、生成购物清单
+- <strong>智能家居控制</strong>:通过自然语言控制智能家居设备
+
+### 16.2.3 选题示例
+
+让我们通过一个具体的例子来说明如何选题和设计项目。
+
+<strong>项目名称</strong>:智能代码审查助手(CodeReviewAgent)
+
+<strong>问题分析</strong>:代码审查是软件开发中的重要环节,但人工审查耗时且容易遗漏问题。现有的静态分析工具只能发现语法错误,无法理解代码逻辑,因此需要一个能够理解代码语义、提供深度分析的智能助手。
+
+<strong>核心功能</strong>:该项目将实现代码质量分析(检查代码风格、命名规范、注释完整性)、潜在bug检测(发现逻辑错误、边界条件问题、资源泄漏)、性能优化建议(识别性能瓶颈、提出优化方案)、安全漏洞扫描(检测SQL注入、XSS等安全问题)以及最佳实践推荐(根据语言特性和设计模式提出改进建议)。
+
+<strong>预期成果</strong>:最终将交付一个可运行的Jupyter Notebook展示完整的审查流程,支持Python、JavaScript等主流语言,能够生成结构化的Markdown格式审查报告,并提供具体的代码示例和改进建议。
+
+## 16.3 开发环境准备
+
+### 16.3.1 安装必要工具
+
+在开始开发之前,请确保你的开发环境已经安装了以下工具:
+
+<strong>(1)Python环境</strong>
+
+```bash
+# 安装HelloAgents
+pip install "hello-agents[all]"
+```
+
+<strong>(2)Git和GitHub</strong>
+
+```bash
+# 检查Git版本
+git --version
+
+# 配置Git用户信息
+git config --global user.name "你的名字"
+git config --global user.email "你的邮箱"
+
+# 配置GitHub SSH密钥(推荐)
+# 1. 生成SSH密钥
+ssh-keygen -t ed25519 -C "你的邮箱"
+
+# 2. 将公钥添加到GitHub
+# 复制 ~/.ssh/id_ed25519.pub 的内容
+# 在GitHub Settings > SSH and GPG keys 中添加
+
+# 3. 测试连接
+ssh -T git@github.com
+```
+
+<strong>(3)Jupyter Notebook</strong>
+
+```bash
+# 安装Jupyter
+pip install jupyter notebook
+
+# 或者使用JupyterLab(推荐)
+pip install jupyterlab
+
+# 启动Jupyter
+jupyter lab
+```
+
+### 16.3.2 Fork项目仓库
+
+<strong>步骤1:Fork仓库</strong>
+
+1. 访问Hello-Agents仓库:https://github.com/datawhalechina/Hello-Agents
+2. 点击右上角的"Fork"按钮,如图16.1红色方框位置
+3. 选择你的GitHub账号,创建Fork
+
+<div align="center">
+  <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/16-figures/16-1.png" alt="" width="85%"/>
+  <p>图 16.1 Fork仓库步骤</p>
+</div>
+
+<strong>步骤2:克隆到本地</strong>
+
+```bash
+# 如图16.2所示,克隆你Fork的仓库
+git clone git@github.com:你的用户名/Hello-Agents.git
+
+# 进入项目目录
+cd Hello-Agents
+
+# 添加上游仓库(用于同步更新)
+git remote add upstream https://github.com/datawhalechina/Hello-Agents.git
+
+# 查看远程仓库
+git remote -v
+```
+
+<div align="center">
+  <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/16-figures/16-2.png" alt="" width="85%"/>
+  <p>图 16.2 克隆仓库到本地</p>
+</div>
+
+<strong>步骤3:创建开发分支</strong>
+
+```bash
+# 创建并切换到新分支
+git checkout -b feature/你的项目名称
+
+# 例如:
+git checkout -b feature/code-review-agent
+```
+
+
+### 16.3.3 项目目录结构
+
+在`Co-creation-projects`目录下创建你的项目文件夹:
+
+```bash
+# 进入共创项目目录
+cd Co-creation-projects
+
+# 创建项目文件夹(格式:GitHub用户名-项目名称)
+mkdir 你的用户名-项目名称
+
+# 例如:
+mkdir jjyaoao-CodeReviewAgent
+
+# 进入项目目录
+cd jjyaoao-CodeReviewAgent
+```
+
+推荐的项目结构:
+
+```
+jjyaoao-CodeReviewAgent/
+├── README.md              # 项目说明文档
+├── requirements.txt       # Python依赖列表
+├── main.ipynb            # 主要的Jupyter Notebook
+├── data/                 # 数据文件(可选)
+│   ├── sample_code.py
+│   └── test_cases.json
+├── outputs/              # 输出结果(可选)
+│   ├── review_report.md
+│   └── screenshots/
+├── src/                  # 源代码(可选,如果代码较多)
+│   ├── agents/
+│   ├── tools/
+│   └── utils/
+└──
+```
+
+## 16.4 项目开发指南
+
+### 16.4.1 编写README文档
+
+README是项目的门面,一个好的README应该包含以下内容:
+
+```markdown
+# 项目名称
+
+> 一句话描述你的项目
+
+## 📝 项目简介
+
+详细介绍你的项目:
+- 解决什么问题?
+- 有什么特色功能?
+- 适用于什么场景?
+
+## ✨ 核心功能
+
+- [ ] 功能1:描述
+- [ ] 功能2:描述
+- [ ] 功能3:描述
+
+## 🛠️ 技术栈
+
+- HelloAgents框架
+- 使用的智能体范式(如ReAct、Plan-and-Solve等)
+- 使用的工具和API
+- 其他依赖库
+
+## 🚀 快速开始
+
+### 环境要求
+
+- Python 3.10+
+- 其他要求
+
+### 安装依赖
+
+\`\`\`bash
+pip install -r requirements.txt
+\`\`\`
+
+### 配置API密钥
+
+\`\`\`bash
+# 创建.env文件
+cp .env.example .env
+
+# 编辑.env文件,填入你的API密钥
+\`\`\`
+
+### 运行项目
+
+\`\`\`bash
+# 启动Jupyter Notebook
+jupyter lab
+
+# 打开main.ipynb并运行
+\`\`\`
+
+## 📖 使用示例
+
+展示如何使用你的项目,最好包含代码示例和运行结果。
+
+## 🎯 项目亮点
+
+- 亮点1:说明
+- 亮点2:说明
+- 亮点3:说明
+
+## 📊 性能评估
+
+如果有评估结果,展示在这里:
+- 准确率:XX%
+- 响应时间:XX秒
+- 其他指标
+
+## 🔮 未来计划
+
+- [ ] 待实现的功能1
+- [ ] 待实现的功能2
+- [ ] 待优化的部分
+
+## 🤝 贡献指南
+
+欢迎提出Issue和Pull Request!
+
+## 📄 许可证
+
+MIT License
+
+## 👤 作者
+
+- GitHub: [@你的用户名](https://github.com/你的用户名)
+- Email: 你的邮箱(可选)
+
+## 🙏 致谢
+
+感谢Datawhale社区和Hello-Agents项目!
+```
+
+### 16.4.2 编写requirements.txt
+
+列出项目所需的所有Python依赖:
+
+```txt
+# 核心依赖
+hello-agents[all]>=0.2.7
+
+# 可视化(如果需要)
+matplotlib>=3.7.0
+plotly>=5.14.0
+
+# Web框架(如果需要)
+fastapi>=0.109.0
+uvicorn>=0.27.0
+```
+
+### 16.4.3 开发Jupyter Notebook
+
+<strong>(1)Notebook结构建议</strong>
+
+一个好的Jupyter Notebook应该包含以下部分:
+
+```python
+# ========================================
+# 第1部分:项目介绍
+# ========================================
+
+"""
+# 项目名称
+
+## 项目简介
+简要介绍项目的目标和功能
+
+## 作者信息
+- 姓名:XXX
+- GitHub:@XXX
+- 日期:2025-XX-XX
+"""
+
+# ========================================
+# 第2部分:环境配置
+# ========================================
+
+# 安装依赖
+!pip install -q hello-agents[all]
+
+# 导入必要的库
+from hello_agents import SimpleAgent, HelloAgentsLLM
+from hello_agents.tools import BaseTool
+import os
+from dotenv import load_dotenv
+
+# 加载环境变量
+load_dotenv()
+
+# ========================================
+# 第3部分:工具定义
+# ========================================
+
+class CustomTool(BaseTool):
+    """自定义工具类"""
+
+    name = "tool_name"
+    description = "工具描述"
+
+    def run(self, query: str) -> str:
+        """工具执行逻辑"""
+        # 实现你的工具逻辑
+        return "结果"
+
+# ========================================
+# 第4部分:智能体构建
+# ========================================
+
+# 创建LLM
+llm = HelloAgentsLLM()
+
+# 创建智能体
+agent = SimpleAgent(
+    name="智能体名称",
+    llm=llm,
+    system_prompt="系统提示词"
+)
+
+# 添加工具
+agent.add_tool(CustomTool())
+
+# ========================================
+# 第5部分:功能演示
+# ========================================
+
+# 示例1:基础功能
+print("=== 示例1:基础功能 ===")
+result = agent.run("用户输入")
+print(result)
+
+# 示例2:复杂场景
+print("\n=== 示例2:复杂场景 ===")
+result = agent.run("复杂的用户输入")
+print(result)
+
+# ========================================
+# 第6部分:性能评估(可选)
+# ========================================
+
+# 评估代码
+# ...
+
+# ========================================
+# 第7部分:总结与展望
+# ========================================
+
+"""
+## 项目总结
+
+### 实现的功能
+- 功能1
+- 功能2
+
+### 遇到的挑战
+- 挑战1及解决方案
+- 挑战2及解决方案
+
+### 未来改进方向
+- 改进1
+- 改进2
+"""
+```
+
+### 16.4.4 测试你的项目
+
+在提交之前,可以使用测试清单来判断自己的项目是否满足提交要求:
+
+```markdown
+- [ ] 代码能够正常运行,没有报错
+- [ ] README文档完整,说明清晰
+- [ ] requirements.txt包含所有依赖
+- [ ] 有清晰的使用示例
+- [ ] 代码有适当的注释
+- [ ] 输出结果符合预期
+- [ ] 处理了常见的异常情况
+- [ ] 项目结构清晰,文件命名规范
+- [ ] 大文件已妥善处理(见下节)
+```
+
+### 16.4.5 大文件处理指南
+
+<strong>⚠️ 重要:避免主仓库过大</strong>
+
+为了保持Hello-Agents主仓库的轻量化,请遵循以下大文件处理规范:
+
+<strong>(1)文件大小限制</strong>
+
+- **项目总大小**: 不超过5MB
+- **禁止直接提交**: 视频文件、大型数据集、模型文件
+
+<strong>(2)大文件处理方案</strong>
+
+如果你的项目包含大文件(数据集、视频、模型等),请使用以下方案:
+
+**方案1:使用外部链接(推荐)**
+
+将大文件上传到外部平台,在README中提供下载链接:
+
+```markdown
+## 数据集
+
+本项目使用的数据集较大,请从以下链接下载:
+
+- 数据集1: [百度网盘](链接) 提取码: xxxx
+- 数据集2: [Google Drive](链接)
+- 演示视频: [B站](链接) / [YouTube](链接)
+```
+
+推荐的外部平台:
+- **数据集**: 百度网盘、Google Drive、Kaggle、HuggingFace Datasets
+- **视频**: B站、YouTube、腾讯视频
+- **模型**: HuggingFace Models、ModelScope
+- **图片**: GitHub Issues、图床服务
+
+**方案2:创建独立仓库**
+
+如果项目资源较多,建议创建独立的数据仓库:
+
+```markdown
+## 项目资源
+
+由于项目包含大量数据和演示资源,已单独创建资源仓库:
+
+- 资源仓库: https://github.com/你的用户名/项目名称-resources
+- 包含内容: 数据集、演示视频、模型文件、测试数据等
+
+### 使用方法
+
+\`\`\`bash
+# 克隆资源仓库
+git clone https://github.com/你的用户名/项目名称-resources.git
+
+# 将数据放到项目目录
+cp -r 项目名称-resources/data ./data
+\`\`\`
+```
+
+**方案3:使用示例数据**
+
+在主仓库中只提供小规模的示例数据:
+
+```python
+# 在README中说明
+## 数据说明
+
+- `data/sample.csv`: 示例数据(100条记录)
+- 完整数据集(10万条记录)请从[这里](链接)下载
+```
+
+<strong>(3)最佳实践示例</strong>
+
+```
+你的用户名-项目名称/
+├── README.md              # 包含外部资源链接
+├── requirements.txt
+├── main.ipynb
+├── .gitignore            # 忽略大文件
+├── data/
+│   └── sample.csv        # 仅示例数据(<1MB)
+└── outputs/
+    └── demo_result.png   # 仅演示结果(<1MB)
+```
+
+README中的说明:
+
+```markdown
+## 数据和资源
+
+### 示例数据
+项目包含小规模示例数据用于快速测试(位于`data/sample.csv`)
+
+### 完整数据集
+完整数据集(500MB)请从以下链接下载:
+- 百度网盘: [链接] 提取码: xxxx
+- 下载后解压到`data/`目录
+
+### 演示视频
+- B站: [项目演示视频](链接)
+- YouTube: [Demo Video](链接)
+```
+
+## 16.5 提交Pull Request
+
+### 16.5.1 提交代码到GitHub
+
+<strong>步骤1:检查修改</strong>
+
+```bash
+# 查看修改的文件
+git status
+```
+
+<strong>步骤2:添加文件</strong>
+
+```bash
+# 添加所有修改的文件
+git add .
+
+# 或者添加特定文件
+git add Co-creation-projects/你的用户名-项目名称/
+```
+
+<strong>步骤3:提交修改</strong>
+
+提交信息应遵循以下格式:
+
+```bash
+# 格式:类型: 简短描述
+git commit -m "feat: 添加XXX毕业设计项目"
+```
+
+<strong>提交类型规范:</strong>
+
+- `feat`: 新增功能或项目(毕业设计项目使用此类型)
+- `fix`: 修复bug
+- `docs`: 文档更新
+- `style`: 代码格式调整(不影响功能)
+- `refactor`: 代码重构
+- `test`: 测试相关
+- `chore`: 其他修改(如依赖更新)
+
+<strong>步骤4:推送到GitHub</strong>
+
+```bash
+# 推送到你的Fork仓库
+git push origin feature/你的项目名称
+```
+
+### 16.5.2 创建Pull Request
+
+<strong>步骤1:访问GitHub</strong>
+
+1. 访问你Fork的仓库:`https://github.com/你的用户名/Hello-Agents`
+2. 点击"Pull requests"标签,如图16.3所示
+3. 点击"New pull request"按钮
+
+<div align="center">
+  <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/16-figures/16-4-create-pr.png" alt="" width="85%"/>
+  <p>图 16.3 创建Pull Request</p>
+</div>
+
+
+<strong>步骤2:选择分支</strong>
+
+- 完整过程可参考图16.4。
+- Base repository: `datawhalechina/Hello-Agents`
+- Base branch: `main`
+- Head repository: `你的用户名/Hello-Agents`
+- Compare branch: `feature/你的项目名称`
+
+<div align="center">
+  <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/16-figures/16-5-select-branch.png" alt="" width="85%"/>
+  <p>图 16.4 选择分支</p>
+</div>
+
+
+<strong>步骤3:填写PR信息</strong>
+
+<strong>⚠️ 重要:PR标题统一格式</strong>
+
+为了便于管理和检索,所有毕业设计项目的PR标题必须遵循以下格式:
+
+```
+[毕业设计] 项目名称 - 简短描述
+```
+
+示例:
+- `[毕业设计] CodeReviewAgent - 智能代码审查助手`
+- `[毕业设计] StudyBuddy - AI学习伙伴`
+- `[毕业设计] DataAnalyst - 智能数据分析师`
+
+<strong>PR描述模板:</strong>
+
+```markdown
+## 项目信息
+
+- **项目名称**:XXX
+- **作者**:@你的用户名
+- **项目类型**:生产力工具/学习辅助/创意娱乐/数据分析/生活服务
+
+## 项目简介
+
+简要描述你的项目(2-3句话)
+
+## 核心功能
+
+- [ ] 功能1
+- [ ] 功能2
+- [ ] 功能3
+
+## 技术亮点
+
+- 使用了XXX范式
+- 实现了XXX功能
+- 优化了XXX性能
+
+## 演示效果
+
+(可选)添加截图或GIF展示项目效果
+
+## 自检清单
+
+- [ ] 代码能够正常运行
+- [ ] README文档完整
+- [ ] requirements.txt完整
+- [ ] 有清晰的使用示例
+- [ ] 代码有适当的注释
+
+## 其他说明
+
+(可选)其他需要说明的内容
+```
+
+<strong>步骤4:提交PR</strong>
+
+点击"Create pull request"按钮提交。
+
+<div align="center">
+  <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/16-figures/16-6-submit-pr.png" alt="" width="85%"/>
+  <p>图 16.6 提交Pull Request</p>
+</div>
+
+### 16.5.3 响应Review意见
+
+提交PR后,社区成员会review你的代码并提出建议。请及时响应:
+
+1. <strong>查看评论</strong>:在PR页面查看reviewer的评论
+2. <strong>修改代码</strong>:根据建议修改代码
+3. <strong>提交更新</strong>:
+   ```bash
+   git add .
+   git commit -m "fix: 根据review意见修改XXX"
+   git push origin feature/你的项目名称
+   ```
+4. <strong>回复评论</strong>:在GitHub上回复reviewer,说明你的修改
+
+<div align="center">
+  <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/16-figures/16-7-review-comments.png" alt="" width="85%"/>
+  <p>图 16.7 响应Review意见</p>
+</div>
+
+常见的review意见:
+- 代码规范问题
+- 文档不够清晰
+- 缺少错误处理
+- 性能优化建议
+- 功能改进建议
+
+## 16.6 示例项目展示
+
+为了帮助你更好地理解毕业设计的要求,这里展示一个完整的示例项目,请别担心,小的创意同样可以被收录,只需要动手实践都是值得珍惜的。
+
+<strong>项目信息</strong>
+
+- **项目名称**:CodeReviewAgent
+- **作者**:@jjyaoao
+- **项目路径**:`Co-creation-projects/jjyaoao-CodeReviewAgent/`
+
+<strong>项目结构</strong>
+
+```
+jjyaoao-CodeReviewAgent/
+├── README.md
+├── requirements.txt
+├── main.ipynb
+├── demo.ipynb
+├── data/
+│   └── sample_code.py
+└── outputs/
+    └── review_report.md
+```
+
+<strong>核心代码片段(main.ipynb)</strong>
+
+```python
+# ========================================
+# 智能代码审查助手
+# ========================================
+
+from hello_agents import SimpleAgent, HelloAgentsLLM
+from hello_agents.tools import BaseTool
+import ast
+import os
+
+# ========================================
+# 1. 定义代码分析工具
+# ========================================
+
+class CodeAnalysisTool(BaseTool):
+    """代码静态分析工具"""
+
+    name = "code_analysis"
+    description = "分析Python代码的结构、复杂度和潜在问题"
+
+    def run(self, code: str) -> str:
+        """分析代码并返回结果"""
+        try:
+            tree = ast.parse(code)
+
+            # 统计信息
+            functions = [node for node in ast.walk(tree) if isinstance(node, ast.FunctionDef)]
+            classes = [node for node in ast.walk(tree) if isinstance(node, ast.ClassDef)]
+
+            result = {
+                "函数数量": len(functions),
+                "类数量": len(classes),
+                "代码行数": len(code.split('\n')),
+                "函数列表": [f.name for f in functions],
+                "类列表": [c.name for c in classes]
+            }
+
+            return str(result)
+        except SyntaxError as e:
+            return f"语法错误:{str(e)}"
+
+class StyleCheckTool(BaseTool):
+    """代码风格检查工具"""
+
+    name = "style_check"
+    description = "检查代码是否符合PEP 8规范"
+
+    def run(self, code: str) -> str:
+        """检查代码风格"""
+        issues = []
+
+        lines = code.split('\n')
+        for i, line in enumerate(lines, 1):
+            # 检查行长度
+            if len(line) > 79:
+                issues.append(f"第{i}行:超过79个字符")
+
+            # 检查缩进
+            if line.startswith(' ') and not line.startswith('    '):
+                if len(line) - len(line.lstrip()) not in [0, 4, 8, 12]:
+                    issues.append(f"第{i}行:缩进不规范")
+
+        if not issues:
+            return "代码风格良好,符合PEP 8规范"
+        return "发现以下问题:\n" + "\n".join(issues)
+
+# ========================================
+# 2. 创建智能体
+# ========================================
+
+llm = HelloAgentsLLM()
+
+system_prompt = """你是一位经验丰富的代码审查专家。你的任务是:
+
+1. 使用code_analysis工具分析代码结构
+2. 使用style_check工具检查代码风格
+3. 基于分析结果,提供详细的审查报告
+
+审查报告应包括:
+- 代码结构分析
+- 风格问题
+- 潜在bug
+- 性能优化建议
+- 最佳实践建议
+
+请以Markdown格式输出报告。"""
+
+agent = SimpleAgent(
+    name="代码审查助手",
+    llm=llm,
+    system_prompt=system_prompt
+)
+
+agent.add_tool(CodeAnalysisTool())
+agent.add_tool(StyleCheckTool())
+
+# ========================================
+# 3. 运行示例
+# ========================================
+
+# 读取示例代码
+with open("data/sample_code.py", "r", encoding="utf-8") as f:
+    sample_code = f.read()
+
+print("=== 待审查的代码 ===")
+print(sample_code)
+print("\n" + "="*50 + "\n")
+
+# 执行代码审查
+print("=== 开始代码审查 ===")
+review_result = agent.run(f"请审查以下Python代码:\n\n```python\n{sample_code}\n```")
+
+print(review_result)
+
+# 保存审查报告
+with open("outputs/review_report.md", "w", encoding="utf-8") as f:
+    f.write(review_result)
+
+print("\n审查报告已保存到 outputs/review_report.md")
+```
+
+<strong>README.md示例</strong>
+
+```markdown
+# CodeReviewAgent - 智能代码审查助手
+
+> 基于HelloAgents框架的智能代码审查工具
+
+## 📝 项目简介
+
+CodeReviewAgent是一个智能代码审查助手,能够自动分析Python代码的质量、发现潜在问题并提供优化建议。
+
+### 核心功能
+
+- ✅ 代码结构分析:统计函数、类、代码行数等
+- ✅ 风格检查:检查是否符合PEP 8规范
+- ✅ 智能建议:基于LLM提供深度分析和优化建议
+- ✅ 报告生成:生成Markdown格式的审查报告
+
+## 🛠️ 技术栈
+
+- HelloAgents框架(SimpleAgent)
+- Python AST模块(代码解析)
+- OpenAI API(智能分析)
+
+## 🚀 快速开始
+
+### 安装依赖
+
+\`\`\`bash
+pip install -r requirements.txt
+\`\`\`
+
+### 配置API密钥
+
+\`\`\`bash
+# 创建.env文件
+echo "OPENAI_API_KEY=your_key_here" > .env
+\`\`\`
+
+### 运行项目
+
+\`\`\`bash
+jupyter lab
+# 打开main.ipynb并运行所有单元格
+\`\`\`
+
+## 📖 使用示例
+
+1. 将待审查的代码放入`data/sample_code.py`
+2. 运行`main.ipynb`
+3. 查看生成的审查报告`outputs/review_report.md`
+
+## 🎯 项目亮点
+
+- **自动化**:无需人工逐行检查,自动发现问题
+- **智能化**:利用LLM理解代码语义,提供深度建议
+- **可扩展**:易于添加新的检查规则和工具
+
+## 👤 作者
+
+- GitHub: [@jjyaoao](https://github.com/jjyaoao)
+- 项目链接:[CodeReviewAgent](https://github.com/datawhalechina/Hello-Agents/tree/main/Co-creation-projects/jjyaoao-CodeReviewAgent)
+
+## 🙏 致谢
+
+感谢Datawhale社区和Hello-Agents项目!
+```
+
+
+
+## 16.7 总结与展望
+
+通过完成毕业设计,你应该已经掌握了智能体系统设计的完整流程。从需求出发设计系统架构,熟练使用HelloAgents框架的各种功能和组件,开发自定义工具扩展智能体能力,完成从需求分析到代码实现的完整项目开发,学会使用Git和GitHub进行开源协作,以及编写清晰的技术文档。
+
+完成毕业设计只是开始,你可以继续深入学习更多智能体范式和算法、提示工程和上下文工程、多智能体协作机制等理论知识;也可以扩展技术栈,学习Web开发构建完整的应用、学习数据库实现数据持久化、学习部署将应用上线;还可以持续优化你的项目,添加更多功能、优化性能和用户体验、完善测试和文档;更重要的是,积极参与社区贡献,帮助其他学习者、参与Hello-Agents框架开发、分享你的经验和心得。
+
+从第一章的简单智能体,到现在能够独立构建完整的多智能体应用,你已经走过了一段精彩的学习旅程。但这不是终点,而是新的起点。
+
+AI技术日新月异,智能体领域更是充满无限可能。希望你能够保持好奇心持续学习新技术,勇于用AI技术解决实际问题创造价值,乐于将你的经验和成果分享给社区,不断打磨你的作品追求卓越。
+
+<strong>记住:最好的学习方式就是动手实践!</strong>
+
+现在,开始构建属于你的智能体应用吧!我们期待在Co-creation-projects目录中看到你的精彩作品!
+
+如果你觉得Hello-Agents项目对你有帮助,请给我们一个⭐Star!
+
+---
+<div align="center">
+  <strong>🎓 恭喜你完成了Hello-Agents教程的学习!🎉</strong>
 
-本章内容待补充...

+ 3 - 2
docs/chapter7/第七章 构建你的Agent框架.md

@@ -137,7 +137,8 @@ print(response)
 # 添加工具功能(可选)
 from hello_agents.tools import CalculatorTool
 calculator = CalculatorTool()
-agent.add_tool(calculator)
+# 需要实现7.4.1的MySimpleAgent进行调用,后续章节会支持此类调用方式
+# agent.add_tool(calculator)
 
 # 现在可以使用工具了
 response = agent.run("请帮我计算 2 + 3 * 4")
@@ -2048,7 +2049,7 @@ async def test_parallel_execution():
 
    - 参考7.2.1节的示例,尝试为 `HelloAgentsLLM` 添加一个新模型供应商的支持(如`Gemini`、`Anthropic`、`Kim`)。要求通过继承方式实现,并能够自动检测该提供商的环境变量。
    - 在7.2.3节中介绍了自动检测机制的三个优先级。请分析:如果同时设置了 `OPENAI_API_KEY` 和 `LLM_BASE_URL="http://localhost:11434/v1"`,框架最后会选择哪个提供商?这种优先级设计是否合理?
-   - `VLLM`,`SGLang` 和  `Ollama` 都提供了本地模型的部署和推理方案。请对比它们各自在易用性、资源占用、推理速度、推理精度等方面的优劣。
+   - 除了本章介绍的 `VLLM` 和 `Ollama`,还有 `SGLang` 等其他本地模型部署方案。请先搜索并了解 `SGLang` 的基本信息和特点,然后对比 `VLLM`、`SGLang` 和 `Ollama` 这三者在易用性、资源占用、推理速度、推理精度等方面的优劣。
 
 3. 在7.3节中,我们实现了 `Message` 类、`Config` 类和 `Agent` 基类。请分析:
 

+ 36 - 0
docs/chapter8/第八章 记忆与检索.md

@@ -2034,7 +2034,43 @@ def generate_report(self, save_to_file: bool = True) -> Dict[str, Any]:
 
 在下一章中,我们将继续探索如何通过上下文工程进一步提升智能体的对话质量和用户体验,敬请期待!
 
+## 习题
 
+> <strong>提示</strong>:部分习题没有标准答案,重点在于培养学习者对记忆系统和RAG技术的综合理解和实践能力。
+
+1. 本章介绍了四种记忆类型:工作记忆、情景记忆、语义记忆和感知记忆。请分析:
+
+   - 在8.2.5节中,每种记忆类型都有独特的评分公式。请对比情景记忆和语义记忆的评分机制,解释为什么情景记忆更强调"时间近因性"(权重0.2),而语义记忆更强调"图检索"(权重0.3)?
+   - 如果要设计一个"个人健康管理助手"(需要记录用户的饮食、运动、睡眠数据,并提供健康建议),你会如何组合使用这四种记忆类型?请为每种记忆类型设计具体的应用场景。
+   - 工作记忆采用TTL(Time To Live)机制自动清理过期数据。请思考:在什么情况下,重要的工作记忆应该被"整合"(consolidate)为长期记忆?如何设计一个自动整合的触发条件?
+
+2. 在8.3节的RAG系统中,我们使用MarkItDown将各种格式文档统一转换为Markdown。请深入思考:
+
+   > <strong>提示</strong>:这是一道动手实践题,建议实际操作
+
+   - 当前的智能分块策略基于Markdown的标题层次(#、##、###)进行分割。如果处理的是没有明确标题结构的文档(如小说、法律条文),应该如何优化分块策略?请尝试实现一个基于"语义边界"的分块算法。
+   - 在8.3.5节中介绍了MQE(多查询扩展)和HyDE(假设文档嵌入)两种高级检索策略。请选择一个实际场景(如技术文档问答、医疗知识检索),对比基础检索、MQE和HyDE三种方法的效果差异,并分析各自的适用场景。
+   - RAG系统的检索质量很大程度上取决于嵌入模型的选择。请对比本章提到的三种嵌入方案(百炼API、本地Transformer、TF-IDF),从准确性、速度、成本、离线部署等维度进行评估,并给出选型建议。
+
+3. 记忆系统的"遗忘"机制是模拟人类认知的重要设计。基于8.2.3节的MemoryTool,请完成以下扩展实践:
+
+   > <strong>提示</strong>:这是一道动手实践题,建议实际操作
+
+   - 当前提供了三种遗忘策略:基于重要性、基于时间、基于容量。请设计并实现一个"智能遗忘"策略,综合考虑重要性、访问频率、时间衰减等多个因素,使用加权评分来决定哪些记忆应该被遗忘。
+   - 在长期运行的智能体系统中,记忆数据库可能会积累大量数据。请设计一个"记忆归档"机制:将长期不用但可能有价值的记忆转移到冷存储,需要时再恢复。这个机制应该如何与现有的四种记忆类型集成?
+   - 思考:如果智能体需要"忘记"某些敏感信息(如用户隐私数据),仅仅从数据库删除是否足够?在使用向量数据库和图数据库的情况下,如何确保数据被彻底清除?
+
+4. 在8.4节的"智能学习助手"案例中,我们结合了MemoryTool和RAGTool。请深入分析:
+
+   - 案例中的`ask_question()`方法同时使用了RAG检索和记忆检索。请分析:在什么情况下应该优先使用RAG?在什么情况下应该优先使用Memory?如何设计一个"智能路由"机制来自动选择最合适的检索方式?
+   - 当前的学习报告(`generate_report()`)只包含统计信息。请扩展这个功能,设计一个更智能的学习报告生成器:能够分析用户的学习轨迹、识别知识盲点、推荐下一步学习内容。这需要用到哪些记忆类型和检索策略?
+   - 假设你要将这个学习助手部署为多用户的Web服务,每个用户都有独立的记忆和知识库。请设计数据隔离方案:如何在Qdrant和Neo4j中实现用户级别的数据隔离?如何优化多用户场景下的检索性能?
+
+5. 语义记忆使用了Neo4j图数据库来存储知识图谱。请思考:
+
+   - 在8.2.5节的语义记忆实现中,系统会自动提取实体和关系构建知识图谱。请分析:这种自动提取的准确性如何?在什么情况下可能会提取出错误的实体或关系?如何设计一个"知识图谱质量评估"机制?
+   - 知识图谱的一个重要优势是支持复杂的关系推理。请设计一个查询场景,充分利用Neo4j的图查询能力(如多跳关系、路径查找),实现纯向量检索无法完成的任务。
+   - 对比语义记忆的"向量检索+图检索"混合策略与纯向量检索:在什么类型的查询中,图检索能够带来显著的性能提升?请用具体例子说明。
 
 ## 参考文献
 

+ 38 - 0
docs/chapter9/第九章 上下文工程.md

@@ -2847,6 +2847,44 @@ TerminalTool 支持灵活的代码探索:
 
 在下一章中,我们将探讨智能体通信协议,学习如何让智能体与外部世界进行更广泛的交互。
 
+## 习题
+
+> <strong>提示</strong>:部分习题没有标准答案,重点在于培养学习者对上下文工程和长时程任务管理的综合理解和实践能力。
+
+1. 本章介绍了上下文工程与提示工程的区别。请分析:
+
+   - 在9.1节中提到"上下文必须被视作一种有限资源,且具有边际收益递减"。请解释什么是"上下文腐蚀"(context rot)现象?为什么即使模型支持100K甚至200K的上下文窗口,我们仍然需要谨慎管理上下文?
+   - 假设你要构建一个"代码审查助手",需要分析一个包含50个文件的代码库。请对比两种策略:(1)一次性将所有文件内容加载到上下文中;(2)使用JIT(Just-in-time)上下文,通过工具按需检索文件。分析各自的优缺点和适用场景。
+   - 在9.2.1节中提到系统提示的两个极端误区:"过度硬编码"和"过于空泛"。请各举一个实际例子,并说明如何找到合适的平衡点。
+
+2. GSSC(Gather-Select-Structure-Compress)流水线是本章的核心技术。请深入思考:
+
+   > <strong>提示</strong>:这是一道动手实践题,建议实际操作
+
+   - 在9.3节的ContextBuilder实现中,四个阶段各有不同的职责。请分析:如果某个阶段失效(如Select阶段选择了不相关的信息,或Compress阶段过度压缩导致信息丢失),会对最终的智能体表现产生什么影响?
+   - 请基于9.3.4节的代码,为ContextBuilder添加一个"上下文质量评估"功能:在每次构建上下文后,自动评估上下文的信息密度、相关性和完整性,并给出优化建议。
+   - GSSC流水线中的"压缩"阶段使用了LLM进行智能摘要。请思考:在什么情况下,简单的截断(truncation)或滑动窗口(sliding window)策略可能比LLM摘要更合适?设计一个混合压缩策略,结合多种压缩方法的优势。
+
+3. NoteTool和TerminalTool是支持长时程任务的关键工具。基于9.4节和9.5节的内容,请完成以下扩展实践:
+
+   > <strong>提示</strong>:这是一道动手实践题,建议实际操作
+
+   - NoteTool使用了分层笔记系统(项目笔记、任务笔记、临时笔记)。请设计一个"笔记自动整理"机制:当临时笔记积累到一定数量时,智能体能够自动分析这些笔记,将重要信息提升为任务笔记或项目笔记,并清理冗余内容。
+   - TerminalTool提供了文件系统操作能力,但在9.5.2节中强调了安全性设计。请分析:当前的安全机制(路径验证、命令白名单、权限检查)是否足够?如果智能体需要访问敏感文件或执行危险操作,应该如何设计一个"人机协作审批"流程?
+   - 结合NoteTool和TerminalTool,设计一个"智能代码重构助手":能够分析代码库结构、记录重构计划、逐步执行重构操作,并在笔记中追踪进度和遇到的问题。请画出完整的工作流程图。
+
+4. 在9.6节的"长时程任务管理"案例中,我们看到了上下文工程在实际应用中的价值。请深入分析:
+
+   - 案例中使用了"分层上下文管理"策略:即时访问(TerminalTool)+ 会话记忆(MemoryTool)+ 持久笔记(NoteTool)。请分析:这三层之间应该如何协调?什么信息应该放在哪一层?如何避免信息冗余和不一致?
+   - 假设任务执行过程中发生了中断(如系统崩溃、网络断开),智能体需要从笔记中恢复状态并继续执行。请设计一个"断点续传"机制:如何在笔记中记录足够的状态信息?如何验证恢复后的状态是否正确?
+   - 长时程任务往往涉及多个子任务的并行或串行执行。请设计一个"任务依赖管理"系统:能够表达任务之间的依赖关系(如"任务B必须在任务A完成后执行"),并自动调度任务执行顺序。这个系统应该如何与NoteTool集成?
+
+5. 本章多次提到"渐进式披露"(progressive disclosure)的概念。请思考:
+
+   - 在9.2.2节中,渐进式披露被描述为"每一步交互都会产生新的上下文,反过来指导下一步决策"。请设计一个具体的应用场景(如学术论文写作、复杂问题调试),展示渐进式披露如何帮助智能体更高效地完成任务。
+   - 渐进式披露的一个潜在风险是"探索效率低下":智能体可能会在不重要的细节上浪费时间,或者错过关键信息。请设计一个"探索引导"机制:通过启发式规则或元认知策略,帮助智能体更聪明地决定"下一步应该探索什么"。
+   - 对比"渐进式披露"与传统的"一次性加载所有上下文":在什么类型的任务中,前者有明显优势?在什么类型的任务中,后者可能更合适?请给出至少3个不同类型的任务示例。
+
 ## 参考文献
 
 [1] Anthropic. Effective Context Engineering for AI Agents. `https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents`

BIN
docs/images/16-figures/16-1.png


BIN
docs/images/16-figures/16-2.png