Chapter 8: 依赖管理
从安全防护罩到工具箱:如何管理代理需要的“工具包”?
在上一章工作区安全,我们学会了为代理设置权限边界。但就像超级英雄需要可靠的装备库一样,代理也需要一个稳定的“工具包”来管理所有需要的库和依赖项。本章将教你如何通过依赖管理确保代理运行所需的工具和库始终保持最新!
核心使命:让代理的“工具箱”永不生锈
想象你的代理需要调用网络搜索功能:
- 你安装了
requests
库,但版本过旧无法支持HTTPS - 团队成员开发时使用不同版本的库,导致代码无法协同工作
- 新依赖项安装时覆盖了现有配置,导致系统崩溃
依赖管理就是这个“智能工具箱”:
✅ 自动安装所有必需的库
✅ 确保所有开发者使用相同版本
✅ 自动执行代码规范检查
关键概念拆解:工具箱的三大支柱
1. 依赖声明(Dependency Declaration)
作用:像购物清单,记录需要的工具和版本
示例文件:# poetry.lock文件片段 [tool.poetry.dependencies] python = "^3.10" requests = "^2.31.0"
2. 版本控制(Version Control)
作用:像库存管理系统,精确控制库的版本
版本规则:# ^2.31.0 表示允许2.x.x的任何新版本,但不超过3.0.0 requests = "^2.31.0"
3. 预提交检查(Pre-Commit Hooks)
作用:像安检通道,在代码提交前自动检查
检查项目:
- 代码格式是否规范
- 是否包含敏感信息
- 依赖项是否最新
实战演练:为代理配置“工具箱”
目标:安装网络请求工具并保持代码整洁
我们将使用Poetry管理依赖,并通过pre-commit自动执行格式化和检查。
步骤1:创建依赖清单
在项目根目录运行:
poetry init
交互过程示例:
这是你的新 pyproject.toml 文件:
[tool.poetry]
name = "my-agent"
version = "0.1.0"
description = "输入代理描述..."
authors = ["你 <your@email.com>"]
添加 requests 库:
Would you like to define your dependencies interactively? (y/n) y
Package requests?
作者: Kenneth Reitz 等
版本: ^2.31.0
是否添加? yes
步骤2:配置预提交检查
编辑.pre-commit-config.yaml
文件:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: check-added-large-files # 检查文件大小
- id: trailing-whitespace # 移除行尾空格
- repo: https://github.com/psf/black
rev: 24.10.0
hooks:
- id: black # 自动格式化代码
步骤3:安装预提交钩子
pre-commit install
验证效果
尝试提交代码时:
[INFO] Auto formatting with Black...
[INFO] Removing trailing whitespace...
Everything looks good!
内部运作:工具箱如何自动维护?
以安装依赖为例,流程如下:
关键代码片段(来自pyproject.toml
)
# 定义开发依赖(如测试工具)
[tool.poetry.group.dev.dependencies]
pytest = "^7.0.0"
深度解析:版本号的魔法规则
版本规则示例:
语法 | 允许的版本范围 |
---|---|
^2.31.0 | ≥2.31.0 且 ❤️.0.0 |
~2.31.0 | ≥2.31.0 且 <2.32.0 |
>=1.0,<3.0 | 在1.0到3.0之间的任何版本 |
总结与展望
通过本章,你已掌握:
✅ 使用Poetry管理依赖项
✅ 通过pre-commit执行预提交检查
✅ 精确控制依赖库的版本
下一章我们将学习代理如何与其他系统通信——Agent协议实现,带你了解代理如何遵守“沟通规范”与其他程序协作!